diff --git a/greenmine/base/utils/slug.py b/greenmine/base/utils/slug.py index 96a55d17..877649d7 100644 --- a/greenmine/base/utils/slug.py +++ b/greenmine/base/utils/slug.py @@ -28,15 +28,15 @@ def ref_uniquely(p, seq_field, model, field='ref'): """ Returns a unique reference code based on base64 and time. """ - project = project.__class__.objects.select_for_update().get(pk=p.pk) + project = p.__class__.objects.select_for_update().get(pk=p.pk) ref = getattr(project, seq_field) + 1 while True: - params = {field: ref, 'project': _project} + params = {field: ref, 'project': project} if not model.objects.filter(**params).exists(): - setattr(_project, seq_field, ref) - _project.save(update_fields=[seq_field]) + setattr(project, seq_field, ref) + project.save(update_fields=[seq_field]) return ref time.sleep(0.0002) diff --git a/greenmine/scrum/management/commands/sample_data.py b/greenmine/scrum/management/commands/sample_data.py index 855264c1..e0f6ee09 100644 --- a/greenmine/scrum/management/commands/sample_data.py +++ b/greenmine/scrum/management/commands/sample_data.py @@ -103,6 +103,7 @@ class Command(BaseCommand): user_story=us, severity=Severity.objects.get(project=project, order=2), status=TaskStatus.objects.get(project=project, order=4), + priority=Priority.objects.get(project=project, order=3), ) # created unassociated uss. @@ -127,7 +128,9 @@ class Command(BaseCommand): for y in xrange(20): bug = Issue.objects.create( project=project, - severity=random.randint(1, 5), + severity=Severity.objects.get(project=project, order=2), + priority=Priority.objects.get(project=project, order=3), + type=IssueType.objects.get(project=project, order=1), subject=lorem_ipsum.words(random.randint(1, 5), common=False), description=lorem_ipsum.words(random.randint(1, 15), common=False), owner=project.owner, diff --git a/greenmine/scrum/models.py b/greenmine/scrum/models.py index 6b42d5c5..1617a6e1 100644 --- a/greenmine/scrum/models.py +++ b/greenmine/scrum/models.py @@ -1,8 +1,5 @@ # -*- coding: utf-8 -*- -import re - -from django.conf import settings from django.db import models from django.utils import timezone @@ -273,7 +270,7 @@ class UserStory(models.Model): return u"{0} ({1})".format(self.subject, self.ref) def save(self, *args, **kwargs): - if not self.ref: + if not self.ref and self.project: self.ref = ref_uniquely(self.project, "last_us_ref", self.__class__) super(UserStory, self).save(*args, **kwargs) @@ -313,6 +310,7 @@ class Task(models.Model): severity = models.ForeignKey("Severity", related_name="tasks") priority = models.ForeignKey("Priority", related_name="tasks") + status = models.ForeignKey("TaskStatus", related_name="tasks") milestone = models.ForeignKey('Milestone', related_name='tasks', null=True, default=None, blank=True) @@ -395,10 +393,10 @@ class Issue(models.Model): if not self.ref: self.ref = ref_uniquely(self.project, "last_issue_ref", self.__class__) - super(Task, self).save(*args, **kwargs) + super(Issue, self).save(*args, **kwargs) + # Model related signals handlers - @receiver(models.signals.post_save, sender=Project, dispatch_uid="project_post_save") def project_post_save(sender, instance, created, **kwargs): from greenmine.base.services import RoleGroupsService @@ -431,6 +429,9 @@ def project_post_save(sender, instance, created, **kwargs): for order, name in POINTS_CHOICES: Points.objects.create(project=instance, name=name, order=order) + for order, name in ISSUETYPES: + IssueType.objects.create(project=instance, name=name, order=order) + # Email alerts signals handlers # TODO: temporary commented (Pending refactor)