--- a
+++ b/OSSEval/methodology/models.py
@@ -0,0 +1,62 @@
+from django.db import models
+from entity.models import Entity
+
+    
+class Methodology(models.Model):
+    name = models.CharField(max_length=200)
+    description = models.CharField(max_length=2000,null=True,blank=True)
+    documentation = models.TextField(null=True,blank=True)
+    active = models.BooleanField(default=True)
+    # The entity type the methodology helps you assess
+    entity = models.ForeignKey(Entity)
+    def __unicode__(self):
+        return self.name
+
+class MethodologyVersion(models.Model):
+    number = models.IntegerField()
+    created = models.DateField() 
+    current = models.BooleanField(default=False)
+    methodology = models.ForeignKey(Methodology)
+    def __unicode__(self):
+        return self.methodology.name + " - " + str(self.number) + (" (Active version)" if self.current else "")
+
+class Page(models.Model):
+    name = models.CharField(max_length=200)
+    order = models.IntegerField(null=False,blank=False)
+    parent = models.ForeignKey('self',null=True,blank=True)
+    methodology_version = models.ForeignKey(MethodologyVersion)
+    def __unicode__(self):
+        return self.name
+    
+class QuestionType(models.Model):
+    name = models.CharField(max_length=200)
+
+class Question(models.Model):
+    page = models.ForeignKey(Page)
+    text = models.CharField(max_length=200)
+    eval_description = models.TextField(null=True,blank=True)
+    eval_value = models.TextField(null=True,blank=True)
+    question_type =  models.ForeignKey(QuestionType)
+    def __unicode__(self):
+        return self.page.name + " - " + self.text
+
+class Query(models.Model):
+    question = models.ForeignKey(Question)
+    eval_text = models.CharField(max_length=2000)
+    eval_site = models.CharField(max_length=2000)
+    eval_site_exclude = models.CharField(max_length=2000)
+
+class Choice(models.Model):
+    question = models.ForeignKey(Question)
+    order = models.IntegerField()
+    todo = models.CharField(max_length=2000)
+
+class WeightScenario(models.Model):
+    name = models.CharField(max_length=200)
+    methodology_version = models.ForeignKey(MethodologyVersion)
+    active = models.BooleanField(blank=False)
+
+class Weight(models.Model):
+    question = models.ForeignKey(Question)
+    weight = models.FloatField()
+    scenario = models.ForeignKey(WeightScenario)