From 2c8349f355b6f67a4a6db96e3c08be36f90b6ecf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9s=20Moya?= Date: Mon, 15 Jul 2013 11:00:13 +0200 Subject: [PATCH] Add notifications module (not finished) --- greenmine/base/models.py | 1 - greenmine/scrum/models.py | 36 +++++++++++++++++++++--------------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/greenmine/base/models.py b/greenmine/base/models.py index c4d0cfcf..91818a4b 100644 --- a/greenmine/base/models.py +++ b/greenmine/base/models.py @@ -30,7 +30,6 @@ def attach_uuid(sender, instance, **kwargs): instance.uuid = unicode(uuid.uuid1()) - class User(AbstractUser, WatcherMixin): color = models.CharField(max_length=9, null=False, blank=False, default="#669933", verbose_name=_('color')) diff --git a/greenmine/scrum/models.py b/greenmine/scrum/models.py index 9b4a60d1..39512a3c 100644 --- a/greenmine/scrum/models.py +++ b/greenmine/scrum/models.py @@ -233,9 +233,7 @@ class Project(models.Model, WatchedMixin): super(Project, self).save(*args, **kwargs) def _get_watchers_by_role(self): - return { - 'owner': self.owner, - } + return {'owner': self.owner} def _get_attributes_to_notify(self): return { @@ -263,28 +261,22 @@ class Project(models.Model, WatchedMixin): class Milestone(models.Model, WatchedMixin): - uuid = models.CharField( - max_length=40, unique=True, null=False, blank=True, - verbose_name=_('uuid')) - + uuid = models.CharField(max_length=40, unique=True, null=False, blank=True, + verbose_name=_('uuid')) name = models.CharField( max_length=200, db_index=True, null=False, blank=False, verbose_name=_('name')) - slug = models.SlugField(max_length=250, unique=True, null=False, blank=True, verbose_name=_('slug')) - owner = models.ForeignKey( 'base.User', null=True, blank=True, related_name='owned_milestones', verbose_name=_('owner')) - project = models.ForeignKey( 'Project', null=False, blank=False, related_name='milestones', verbose_name=_('project')) - estimated_start = models.DateField(null=True, blank=True, default=None, verbose_name=_('estimated start')) estimated_finish = models.DateField(null=True, blank=True, default=None, @@ -376,6 +368,20 @@ class Milestone(models.Model, WatchedMixin): points = [ us.points.value for us in user_stories ] return sum(points) + def _get_watchers_by_role(self): + return { + 'owner': self.owner, + 'project_owner': (self.project, self.project.owner), + } + + def _get_attributes_to_notify(self): + return { + 'name': self.name, + 'slug': self.slug, + 'owner': self.owner.get_full_name(), + 'modified_date': self.modified_date, + } + class UserStory(WatchedMixin, models.Model): uuid = models.CharField(max_length=40, unique=True, null=False, blank=True, @@ -640,6 +646,10 @@ class Issue(models.Model, WatchedMixin): super(Issue, self).save(*args, **kwargs) + @property + def is_closed(self): + return self.status.is_closed + def _get_watchers_by_role(self): return { 'owner': self.owner, @@ -648,10 +658,6 @@ class Issue(models.Model, WatchedMixin): 'project_owner': (self.project, self.project.owner), } - @property - def is_closed(self): - return self.status.is_closed - # Model related signals handlers