Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- from django.db import models
- from django.contrib.auth.models import User
- from template_utils.markup import formatter, MarkupFormatter, DEFAULT_MARKUP_FILTERS
- from tagging.fields import TagField
- PRIORITY_CHOICES = (
- (1,'Low'),
- (2,'Normal'),
- (3,'Medium'),
- (4,'High'),
- (5,'Urgent'),
- (6,'Defcon 4'),
- (7,'Enorder To Keep my Job'),
- )
- NOTIFY_CHOICES = (
- (5,'5 mins'),
- (10,'10 mins'),
- (15,'15 mins'),
- (20,'20 mins'),
- (25,'25 mins'),
- (30,'30 mins'),
- )
- MARKUP_FILTERS = (
- ('html', 'HTML'),
- ('textile', 'Textile'),
- ('markdown', 'Markdown'),
- ('restructuredtext', 'Restructured Text')
- )
- #Classes
- class ProjectManger(models.Manager):
- def get_query_set(self):
- return super(ProjectManager, self).get_query_set().filter(completed=False)
- class Project(models.Model):
- title = models.Charfield(max_length=255, unique=True)
- description = models.TextField()
- slug = models.SlugField(prepopulate_from=("title",),)
- completed = models.BooleanField(default=False)
- tags = TagField()
- filter = models.CharField(max_length=20, default='html', choices=MARKUP_FILTERS)
- des_display = models.TextField(editable=False)
- def __str__(self):
- return self.title
- class Meta:
- ordering = ['title']
- class Admin:
- pass
- def save(self):
- # save override for markup
- if self.filter in DEFAULT_MARKUP_FILTERS:
- self.des_display = formatter(self.description, filter_name=self.filter)
- else:
- self.des_display = self.description
- super(Project, self).save()
- class Task(models.Model):
- title = models.CharField(max_length=255)
- created_at = models.DateTimeField(default=datetime.datetime.now)
- priority = models.IntergerField(choices=PRIORITY_CHOICES, default=2)
- completed = models.BooleanField(default=False)
- belongs_to = models.ForeignKey(Project)
- percent_complete = models.FloatField(default=0)
- due_date = models.DateTimeField()
- author = models.ForeignKey(User)
- slug = models.SlugField(prepopluate_from("title",),)
- completed_on = models.DateTimeField(editable=False)
- completed_by = models.ForeignKey(User)
- notify_before = models.IntergerField(choices=NOTIFY_CHOICES, default=10)
- assigned_to = models.ForeignKey(User)
- tags = TagField()
- filter = models.CharField(max_length=20, default='html', choices=MARKUP_FILTERS)
- des_display = models.TextField(editable=False)
- def __str__(self):
- return self.title
- class Meta:
- ordering = ['-priority','due_date','title']
- class Admin:
- pass
- def save(self):
- if self.completed:
- self.completed_on = datetime.datetime.now
- done_project = self.belongs_to.task_set.filter(completed=False).count()
- if done_project == 0:
- self.belongs_to.completed = True
- self.belongs_to.save()
- if self.filter in DEFAULT_MARKUP_FILTERS:
- self.des_display = formatter(self.description, filter_name=self.filter)
- else:
- self.des_display = self.description
- super(Task, self).save()
- class TaskNote(models.Model):
- created_at = models.DateTimeField(default=datetime.datetime.now)
- author = models.ForeignKey(User)
- attached_to_task = models.ForeignKey(Task)
- notes = models.TextField()
- display_notes = models.TextField(editable=False)
- filter = models.CharField(max_legth=20, default='html', choices=MARKUP_FILTERS)
- class Meta:
- pass
- class Admin:
- pass
- def save(self):
- # save override for markup
- if self.filter in DEFAULT_MARKUP_FILTERS:
- self.display_notes = formatter(self.notes, filter_name=self.filter)
- else:
- self.display_notes = self.notes
- super(TaskNote, self).save()
- class ProjectNote(models.Model):
- create_at = models.DateTimeField(default=datetime.datetime.now)
- author = models.ForeignKey(User)
- attached_to_project = models.ForeignKey(Project)
- notes = models.TextField()
- display_notes = models.TextField(editable=False)
- filters = models.CharField(max_length=20, default='html',choices=MARKUP_FILTERS)
- class Meta:
- pass
- class Admin:
- pass
- def save(self):
- if self.filter in DEFAULT_MARKUP_FILTERS:
- self.display_notes = formatter(self.notes, filter_name=self.filter)
- else:
- self.display_notes = self.notes
- super(ProjectNote, self).save()
Add Comment
Please, Sign In to add comment