Switch to unified view

a/OSSEval/methodology/models.py b/OSSEval/methodology/models.py
...
...
9
    documentation = models.TextField(null=True,blank=True)
9
    documentation = models.TextField(null=True,blank=True)
10
    active = models.BooleanField(default=True)
10
    active = models.BooleanField(default=True)
11
    # The entity type the methodology helps you assess
11
    # The entity type the methodology helps you assess
12
    entity = models.ForeignKey(Entity)
12
    entity = models.ForeignKey(Entity)
13
    
13
    
14
    def __unicode__(self):
14
    def __str__(self):
15
        return self.name
15
        return self.name
16
    
16
    
17
    def from_xml(self, xmldoc, insert = True):
17
    def from_xml(self, xmldoc, insert = True):
18
        if not insert:
18
        if not insert:
19
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
19
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
...
...
38
    number = models.IntegerField()
38
    number = models.IntegerField()
39
    created = models.DateField() 
39
    created = models.DateField() 
40
    current = models.BooleanField(default=False)
40
    current = models.BooleanField(default=False)
41
    methodology = models.ForeignKey(Methodology)
41
    methodology = models.ForeignKey(Methodology)
42
    
42
    
43
    def __unicode__(self):
43
    def __str__(self):
44
        return self.methodology.name + " - " + str(self.number) + (" (Active version)" if self.current else "")
44
        return self.methodology.name + " - " + str(self.number) + (" (Active version)" if self.current else "")
45
45
46
    def from_xml(self, xmldoc, insert = True):
46
    def from_xml(self, xmldoc, insert = True):
47
        if not insert:
47
        if not insert:
48
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
48
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
...
...
88
    name = models.CharField(max_length=200)
88
    name = models.CharField(max_length=200)
89
    order = models.IntegerField(null=False,blank=False)
89
    order = models.IntegerField(null=False,blank=False)
90
    parent = models.ForeignKey('self',null=True,blank=True)
90
    parent = models.ForeignKey('self',null=True,blank=True)
91
    methodology_version = models.ForeignKey(MethodologyVersion,null=True,blank=True)
91
    methodology_version = models.ForeignKey(MethodologyVersion,null=True,blank=True)
92
    
92
    
93
    def questions(self):
94
        q = list(self.question_set.all())
95
        for p in self.page_set.all():
96
            q += p.questions()
97
        return q
98
    
93
    def __unicode__(self):
99
    def __str__(self):
94
        return self.name
100
        return self.name
95
    
101
    
96
    def from_xml(self, xmldoc, methodology_version, parent_page, insert = True):
102
    def from_xml(self, xmldoc, methodology_version, parent_page, insert = True):
97
        if not insert:
103
        if not insert:
98
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
104
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
...
...
156
    order = models.IntegerField()
162
    order = models.IntegerField()
157
    eval_description = models.TextField(null=True,blank=True)
163
    eval_description = models.TextField(null=True,blank=True)
158
    eval_value = models.TextField(null=True,blank=True)
164
    eval_value = models.TextField(null=True,blank=True)
159
    question_type =  models.ForeignKey(QuestionType)
165
    question_type =  models.ForeignKey(QuestionType)
160
    
166
    
161
    def __unicode__(self):
167
    def __str__(self):
162
        return self.page.name + " - " + self.text
168
        return self.page.name + " - " + self.text
163
    
169
    
164
    def from_xml(self, xmldoc, page, insert = True):
170
    def from_xml(self, xmldoc, page, insert = True):
165
        if not insert:
171
        if not insert:
166
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
172
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
...
...
168
        self.order = xmlMinidom.getNaturalAttribute(xmldoc, 'Order')
174
        self.order = xmlMinidom.getNaturalAttribute(xmldoc, 'Order')
169
        #Do so that QuestionType default is 1
175
        #Do so that QuestionType default is 1
170
        qt = QuestionType.objects.get(pk=1)
176
        qt = QuestionType.objects.get(pk=1)
171
        self.page = page
177
        self.page = page
172
        self.question_type = qt
178
        self.question_type = qt
179
        self.eval_description = xmlMinidom.getString(xmldoc, 'EvalDescription')
180
        self.eval_value = xmlMinidom.getString(xmldoc, 'EvalValue')
173
        self.save()
181
        self.save()
174
        # Queries
182
        # Queries
175
        xml_queries = xmldoc.getElementsByTagName('Query')
183
        xml_queries = xmldoc.getElementsByTagName('Query')
176
        for xml_query in xml_queries:
184
        for xml_query in xml_queries:
177
            q = Query()
185
            q = Query()
...
...
179
        # Choices
187
        # Choices
180
        xml_choices = xmldoc.getElementsByTagName('Choice')
188
        xml_choices = xmldoc.getElementsByTagName('Choice')
181
        for xml_choice in xml_choices:
189
        for xml_choice in xml_choices:
182
            c = Choice()
190
            c = Choice()
183
            c.from_xml(xml_choice, self, insert)
191
            c.from_xml(xml_choice, self, insert)
184
        self.eval_description = xmlMinidom.getString(xmldoc, 'EvalDescription')
185
        self.eval_value = xmlMinidom.getString(xmldoc, 'EvalValue')
186
        
192
        
187
    def to_xml(self):
193
    def to_xml(self):
188
        str_xml = "<EvalDescription>" + ("" if self.eval_description is None else self.eval_description) + "</EvalDescription>"
194
        str_xml = "<EvalDescription><![CDATA[" + ("" if self.eval_description is None else self.eval_description) + "]]></EvalDescription>"
189
        str_xml += "<EvalValue>" + ("" if self.eval_value is None else self.eval_value) + "</EvalValue>"
195
        str_xml += "<EvalValue><![CDATA[" + ("" if self.eval_value is None else self.eval_value) + "]]></EvalValue>"
190
#         We do not use question_type at the moment as we have just one type
196
#         We do not use question_type at the moment as we have just one type
191
#         str_xml += self.question_type.to_xml()
197
#         str_xml += self.question_type.to_xml()
192
        str_xml += "<Queries>"
198
        str_xml += "<Queries>"
193
        for query in self.query_set.all():
199
        for query in self.query_set.all():
194
            str_xml += query.to_xml()
200
            str_xml += query.to_xml()
...
...
215
        if not insert:
221
        if not insert:
216
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
222
            self.id = xmlMinidom.getNaturalAttribute(xmldoc, 'Id')
217
        self.question = question
223
        self.question = question
218
        self.eval_text = xmlMinidom.getString(xmldoc, 'EvalText')
224
        self.eval_text = xmlMinidom.getString(xmldoc, 'EvalText')
219
        self.eval_site = xmlMinidom.getString(xmldoc, 'EvalSite')
225
        self.eval_site = xmlMinidom.getString(xmldoc, 'EvalSite')
220
        self.eval_site_exclude = xmlMinidom.getString(xmldoc, 'EvalSiteExclude')
226
        self.eval_site_exclude = ""
221
        self.save()
227
        self.save()
222
        
228
        
223
    def to_xml(self):
229
    def to_xml(self):
224
        str_xml = "<EvalText>" + self.eval_text + "</EvalText>"
230
        str_xml = "<EvalText><![CDATA[" + self.eval_text + "]]></EvalText>"
225
        str_xml += "<EvalSite>" + self.eval_site + "</EvalSite>"
231
        str_xml += "<EvalSite><![CDATA[" + self.eval_site + "]]></EvalSite>"
226
        str_xml += "<EvalSiteExclude>" + self.eval_site_exclude + "</EvalSiteExclude>"
227
        return '<Query Id="' + str(self.id) + '">' + str_xml + '</Query>'
232
        return '<Query Id="' + str(self.id) + '">' + str_xml + '</Query>'
228
233
229
class Choice(models.Model):
234
class Choice(models.Model):
230
    '''
235
    '''
231
    '''
236
    '''
...
...
263
        str_xml = "<Weights>"
268
        str_xml = "<Weights>"
264
        for weight in self.weight_set.all():
269
        for weight in self.weight_set.all():
265
            str_xml += weight.to_xml()
270
            str_xml += weight.to_xml()
266
        str_xml += "</Weights>"
271
        str_xml += "</Weights>"
267
        return '<WeightScenario Id="' + str(self.id) + '" Name="' + self.name + '" Active="' + str(self.active) + '">' + str_xml + '</WeightScenario>'
272
        return '<WeightScenario Id="' + str(self.id) + '" Name="' + self.name + '" Active="' + str(self.active) + '">' + str_xml + '</WeightScenario>'
273
274
    def __str__(self):
275
        return self.name
268
276
269
class Weight(models.Model):
277
class Weight(models.Model):
270
    question = models.ForeignKey(Question)
278
    question = models.ForeignKey(Question)
271
    weight = models.FloatField()
279
    weight = models.FloatField()
272
    scenario = models.ForeignKey(WeightScenario)
280
    scenario = models.ForeignKey(WeightScenario)