Guest User

Untitled

a guest
May 15th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.18 KB | None | 0 0
  1. class Company(models.Model):
  2.     name = models.CharField(max_length=25)
  3.     is_deleted = models.BooleanField(default=False)
  4.  
  5.     def __unicode__(self):
  6.         return self.name
  7.  
  8.     class Meta:
  9.         verbose_name_plural = "companies"
  10.  
  11. class Category(models.Model):
  12.     name = models.CharField(max_length=25, unique=True)
  13.     is_deleted = models.BooleanField(default=False)
  14.  
  15.     def __unicode__(self):
  16.         return self.name
  17.  
  18.     class Meta:
  19.         verbose_name_plural = "categories"
  20.  
  21. class Question(models.Model):
  22.     question = models.CharField(max_length=200)
  23.     category = models.ManyToManyField('Category')
  24.     type = models.CharField(max_length=1, choices=QUESTION_TYPES)
  25.     is_deleted = models.BooleanField(default=False)
  26.  
  27.     def __unicode__(self):
  28.         return self.question
  29.  
  30. class QuestionChoice(models.Model):
  31.     question = models.ForeignKey('Question')
  32.     choice = models.CharField(max_length=100)
  33.     is_correct = models.BooleanField()
  34.  
  35.     def __unicode__(self):
  36.         return self.choice
  37.  
  38.     class Meta:
  39.         verbose_name_plural = "questions choices"
  40.  
  41. class UserAnswer(models.Model):
  42.     user = models.ForeignKey(User)
  43.     assessment = models.ForeignKey('Assessment')
  44.     date = models.DateTimeField()
  45.     answer = models.ManyToManyField('QuestionChoice')
  46.  
  47.     def __unicode__(self):
  48.         return self.user.username
  49.  
  50.     class Meta:
  51.         verbose_name_plural = "users answers"
  52.  
  53. class AssessmentQuestion(models.Model):
  54.     assessment = models.ForeignKey('Assessment')
  55.     question = models.ForeignKey('Question')
  56.     order = models.IntegerField()
  57.  
  58.     def __unicode__(self):
  59.         return self.order
  60.  
  61.     class Meta:
  62.         verbose_name_plural = "assessments questions"
  63.  
  64. class Assessment(models.Model):
  65.     name = models.CharField(max_length=50)
  66.     course = models.ForeignKey('Course')
  67.     questions = models.ManyToManyField('Question', through='AssessmentQuestion')
  68.  
  69.     def __unicode__(self):
  70.         return self.name
  71.  
  72. class CompanyCourse(models.Model):
  73.     course = models.ForeignKey('Course')
  74.     company = models.ForeignKey('Company')
  75.     start_date = models.DateField()
  76.     end_date = models.DateField()
  77.  
  78.     def __unicode__(self):
  79.         return 'date range: %s - %s' % (self.start_date, self.end_date)
  80.  
  81.     class Meta:
  82.         verbose_name_plural = "companies courses"
  83.  
  84. class Course(models.Model):
  85.     name = models.CharField(max_length=50, unique=True)
  86.     company = models.ManyToManyField(Company, through='CompanyCourse')
  87.     course_page = models.ForeignKey(Page) # reference to the top page of the course
  88.  
  89.     def save(self, *args, **kwargs):
  90.         obj = super(Course, self).save(*args, **kwargs)
  91.         parent = Title.objects.get(slug=settings.CMS_COURSES_SLUG).page
  92.         author = User.objects.all()[0]
  93.         page = Page(author=author, parent=parent)
  94.         page.save()
  95.         title = Title.objects.create(language='en', title=self.name,
  96.                                      slug=self.slug, path='/%s/' % self.slug, page=page)
  97.         return obj
  98.  
  99.     def delete(self):
  100.         page = Title.objects.get(slug=self.slug).page
  101.         page.delete()
  102.         super(Course, self).delete()
  103.  
  104.     @property
  105.     def slug(self):
  106.         return re.sub('[^a-zA-Z-]', '-', self.name)
  107.  
  108.     def __unicode__(self):
  109.         return self.name
  110.  
  111. class CourseUser(models.Model):
  112.     user = models.ForeignKey(User)
  113.     course = models.ForeignKey('Course')
  114.     next_slide = models.ForeignKey(Page, null=True, blank=True)
  115.     start_datetime = models.DateTimeField(null=True, blank=True)
  116.     finish_datetime = models.DateTimeField(null=True, blank=True)
  117.  
  118.     def get_status(self):
  119.         if not self.start_datetime:
  120.             return 'new'
  121.         if self.finish_datetime:
  122.             return 'finished'
  123.         else:
  124.             return 'in-progress'
  125.  
  126.     def __unicode__(self):
  127.         return "%s - %s" % (self.user, self.course)
  128.  
  129.  
  130. class SlideVisit(models.Model):
  131.     user = models.ForeignKey(User)
  132.     course = models.ForeignKey('Course')
  133.     slide = models.ForeignKey(Page)
  134.     visited = models.DateTimeField(null=True, blank=True)
  135.  
  136.     def __unicode__(self):
  137.         return "%s - %s" % (self.slide, self.visited)
Advertisement
Add Comment
Please, Sign In to add comment