Switch to unified view

a/OSSEval/analysis/models.py b/OSSEval/analysis/models.py
...
...
11
    visible = models.BooleanField(default=True)
11
    visible = models.BooleanField(default=True)
12
    weight_scenario = models.ForeignKey(WeightScenario)
12
    weight_scenario = models.ForeignKey(WeightScenario)
13
    protected = models.BooleanField(default=False)
13
    protected = models.BooleanField(default=False)
14
    def __unicode__(self):
14
    def __unicode__(self):
15
        return self.name
15
        return self.name
16
    def from_xml(self, xmldoc, insert = True):
17
        #All but the MethodologyVersion so that we can independently import from xml MethodologyVersion and Analysis
18
        pass
19
    def to_xml(self):
20
        str_xml = "<Id>" + str(self.id) + "</Id>"
21
        str_xml += "<Name>" + self.name + "</Name>"
22
        str_xml += "<Description>" + self.description + "</Description>"
23
        str_xml += "<Comment>" + self.comment + "</Comment>"
24
        str_xml += "<Created>" + str(self.created) + "</Created>"
25
        str_xml += "<UserLogin>" + self.user_login + "</UserLogin>"
26
        str_xml += self.weight_scenario.to_xml()
27
        str_xml += "<Instances>"
28
        for instance in self.instance_set.all():
29
            str_xml += instance.to_xml()
30
        str_xml += "</Instances>"
31
             
32
        return "<Analysis>" + str_xml + "</Analysis>"
16
    
33
    
17
class Instance(models.Model):
34
class Instance(models.Model):
18
    """
35
    """
19
    It represents one of the entities we evaluate in the assessment
36
    It represents one of the entities we evaluate in the assessment
20
    """
37
    """
21
    name = models.CharField(max_length=200)
38
    name = models.CharField(max_length=200)
22
    name_for_search = models.CharField(max_length=200, default="")
39
    name_for_search = models.CharField(max_length=200, default="")
23
    analysis = models.ForeignKey(Analysis)
40
    analysis = models.ForeignKey(Analysis)
24
    def __unicode__(self):
41
    def __unicode__(self):
25
        return self.name + " - " + self.name_for_search
42
        return self.name + " - " + self.name_for_search
43
    def from_xml(self, xmldoc, insert = True):
44
        pass
45
    def to_xml(self):
46
        str_xml = "<Id>" + str(self.id) + "</Id>"
47
        str_xml += "<Name>" + self.name + "</Name>"
48
        str_xml += "<NameForSearch>" + self.name_for_search + "</NameForSearch>"
49
        str_xml += "<Answers>"
50
        for answer in self.answer_set.all():
51
            str_xml += answer.to_xml()
52
        str_xml += "</Answers>"
53
             
54
        return "<Instance>" + str_xml + "</Instance>"
26
    
55
    
27
class Answer(models.Model):
56
class Answer(models.Model):
28
    """
57
    """
29
    
58
    
30
    """
59
    """
31
    instance = models.ForeignKey(Instance)
60
    instance = models.ForeignKey(Instance)
32
    question = models.ForeignKey('methodology.Question')
61
    question = models.ForeignKey('methodology.Question')
33
    value_integer = models.IntegerField()
62
    value_integer = models.IntegerField()
34
    notes = models.CharField(max_length=2000)
63
    notes = models.CharField(max_length=2000)
64
    def from_xml(self, xmldoc, insert = True):
65
        pass
66
    def to_xml(self):
67
        str_xml = "<Id>" + str(self.id) + "</Id>"
68
        str_xml += "<ValueInteger>" + self.value_integer + "</ValueInteger>"
69
        str_xml += "<Notes>" + self.notes + "</Notes>"
70
        str_xml += "<Question><Id>" + str(self.question.id) + "</Id></Question>"
71
             
72
        return "<Answer>" + str_xml + "</Answer>"
35
73
74
class UploadedFile(models.Model):
75
    '''
76
    Used to save uploaded xml file so that it can be later retrieved and imported
77
    '''
78
    docfile = models.FileField(upload_to='documents/%Y/%m/%d')