Guest User

Untitled

a guest
Apr 20th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.14 KB | None | 0 0
  1. import datetime
  2. from django.db import models
  3. from django.contrib.auth.models import User
  4. from template_utils.markup import formatter, MarkupFormatter, DEFAULT_MARKUP_FILTERS
  5. from tagging.fields import TagField
  6.  
  7. PRIORITY_CHOICES = (
  8. (1,'Low'),
  9. (2,'Normal'),
  10. (3,'Medium'),
  11. (4,'High'),
  12. (5,'Urgent'),
  13. (6,'Defcon 4'),
  14. (7,'Enorder To Keep my Job'),
  15. )
  16.  
  17. NOTIFY_CHOICES = (
  18. (5,'5 mins'),
  19. (10,'10 mins'),
  20. (15,'15 mins'),
  21. (20,'20 mins'),
  22. (25,'25 mins'),
  23. (30,'30 mins'),
  24. )
  25.  
  26. MARKUP_FILTERS = (
  27. ('html', 'HTML'),
  28. ('textile', 'Textile'),
  29. ('markdown', 'Markdown'),
  30. ('restructuredtext', 'Restructured Text')
  31. )
  32.  
  33. #Classes
  34. class ProjectManger(models.Manager):
  35. def get_query_set(self):
  36. return super(ProjectManager, self).get_query_set().filter(completed=False)
  37.  
  38. class Project(models.Model):
  39. title = models.Charfield(max_length=255, unique=True)
  40. description = models.TextField()
  41. slug = models.SlugField(prepopulate_from=("title",),)
  42. completed = models.BooleanField(default=False)
  43. tags = TagField()
  44. filter = models.CharField(max_length=20, default='html', choices=MARKUP_FILTERS)
  45. des_display = models.TextField(editable=False)
  46.  
  47. def __str__(self):
  48. return self.title
  49.  
  50. class Meta:
  51. ordering = ['title']
  52.  
  53. class Admin:
  54. pass
  55.  
  56. def save(self):
  57. # save override for markup
  58. if self.filter in DEFAULT_MARKUP_FILTERS:
  59. self.des_display = formatter(self.description, filter_name=self.filter)
  60. else:
  61. self.des_display = self.description
  62. super(Project, self).save()
  63.  
  64. class Task(models.Model):
  65. title = models.CharField(max_length=255)
  66. created_at = models.DateTimeField(default=datetime.datetime.now)
  67. priority = models.IntergerField(choices=PRIORITY_CHOICES, default=2)
  68. completed = models.BooleanField(default=False)
  69. belongs_to = models.ForeignKey(Project)
  70. percent_complete = models.FloatField(default=0)
  71. due_date = models.DateTimeField()
  72. author = models.ForeignKey(User)
  73. slug = models.SlugField(prepopluate_from("title",),)
  74. completed_on = models.DateTimeField(editable=False)
  75. completed_by = models.ForeignKey(User)
  76. notify_before = models.IntergerField(choices=NOTIFY_CHOICES, default=10)
  77. assigned_to = models.ForeignKey(User)
  78. tags = TagField()
  79. filter = models.CharField(max_length=20, default='html', choices=MARKUP_FILTERS)
  80. des_display = models.TextField(editable=False)
  81.  
  82. def __str__(self):
  83. return self.title
  84.  
  85. class Meta:
  86. ordering = ['-priority','due_date','title']
  87.  
  88. class Admin:
  89. pass
  90.  
  91. def save(self):
  92. if self.completed:
  93. self.completed_on = datetime.datetime.now
  94. done_project = self.belongs_to.task_set.filter(completed=False).count()
  95. if done_project == 0:
  96. self.belongs_to.completed = True
  97. self.belongs_to.save()
  98. if self.filter in DEFAULT_MARKUP_FILTERS:
  99. self.des_display = formatter(self.description, filter_name=self.filter)
  100. else:
  101. self.des_display = self.description
  102. super(Task, self).save()
  103.  
  104. class TaskNote(models.Model):
  105. created_at = models.DateTimeField(default=datetime.datetime.now)
  106. author = models.ForeignKey(User)
  107. attached_to_task = models.ForeignKey(Task)
  108. notes = models.TextField()
  109. display_notes = models.TextField(editable=False)
  110. filter = models.CharField(max_legth=20, default='html', choices=MARKUP_FILTERS)
  111.  
  112. class Meta:
  113. pass
  114.  
  115. class Admin:
  116. pass
  117.  
  118. def save(self):
  119. # save override for markup
  120. if self.filter in DEFAULT_MARKUP_FILTERS:
  121. self.display_notes = formatter(self.notes, filter_name=self.filter)
  122. else:
  123. self.display_notes = self.notes
  124. super(TaskNote, self).save()
  125.  
  126. class ProjectNote(models.Model):
  127. create_at = models.DateTimeField(default=datetime.datetime.now)
  128. author = models.ForeignKey(User)
  129. attached_to_project = models.ForeignKey(Project)
  130. notes = models.TextField()
  131. display_notes = models.TextField(editable=False)
  132. filters = models.CharField(max_length=20, default='html',choices=MARKUP_FILTERS)
  133.  
  134. class Meta:
  135. pass
  136.  
  137. class Admin:
  138. pass
  139.  
  140. def save(self):
  141. if self.filter in DEFAULT_MARKUP_FILTERS:
  142. self.display_notes = formatter(self.notes, filter_name=self.filter)
  143. else:
  144. self.display_notes = self.notes
  145. super(ProjectNote, self).save()
Add Comment
Please, Sign In to add comment