|
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)
|