Created necessary RolePoint objects at UserStory post_save signal and cleaned the sample_data command

remotes/origin/enhancement/email-actions
David Barragán Merino 2013-10-16 18:23:01 +02:00
parent cfc4087526
commit f52905dba9
2 changed files with 36 additions and 41 deletions

View File

@ -22,7 +22,7 @@ from greenmine.projects.documents.models import *
from greenmine.projects.wiki.models import * from greenmine.projects.wiki.models import *
subjects = [ SUBJECT_CHOICES = [
"Fixing templates for Django 1.2.", "Fixing templates for Django 1.2.",
"get_actions() does not check for 'delete_selected' in actions", "get_actions() does not check for 'delete_selected' in actions",
"Experimental: modular file types", "Experimental: modular file types",
@ -93,40 +93,33 @@ class Command(BaseCommand):
def create_question(self, project): def create_question(self, project):
question = Question.objects.create( question = Question.objects.create(
project=project, project=project,
subject=self.sd.words(1,5), subject=self.sd.choice(SUBJECT_CHOICES),
content=self.sd.paragraph(), content=self.sd.paragraph(),
owner=project.owner, owner=project.owner,
status=self.sd.db_object_from_queryset(QuestionStatus.objects.filter(project=project)), status=self.sd.db_object_from_queryset(project.question_status.all()),
tags=[], tags=self.sd.words(1,5).split(" "),
) )
for tag in self.sd.words(1,5).split(" "): return question
question.tags.append(tag)
question.save()
def create_bug(self, project): def create_bug(self, project):
bug = Issue.objects.create( bug = Issue.objects.create(
project=project, project=project,
subject=self.sd.words(1, 5), subject=self.sd.choice(SUBJECT_CHOICES),
description=self.sd.paragraph(), description=self.sd.paragraph(),
owner=project.owner, owner=project.owner,
severity=self.sd.db_object_from_queryset(Severity.objects.filter(project=project)), severity=self.sd.db_object_from_queryset(Severity.objects.filter(project=project)),
status=self.sd.db_object_from_queryset(IssueStatus.objects.filter(project=project)), status=self.sd.db_object_from_queryset(IssueStatus.objects.filter(project=project)),
priority=self.sd.db_object_from_queryset(Priority.objects.filter(project=project)), priority=self.sd.db_object_from_queryset(Priority.objects.filter(project=project)),
type=self.sd.db_object_from_queryset(IssueType.objects.filter(project=project)), type=self.sd.db_object_from_queryset(IssueType.objects.filter(project=project)),
tags=[], tags=self.sd.words(1, 5).split(" "),
) )
for tag in self.sd.words(1, 5).split(" "):
bug.tags.append(tag)
bug.save()
return bug return bug
def create_task(self, project, milestone, us, min_date, max_date, closed=False): def create_task(self, project, milestone, us, min_date, max_date, closed=False):
task = Task( task = Task(
subject="Task {0}".format(self.sd.words(3,4)), subject=self.sd.choice(SUBJECT_CHOICES),
description=self.sd.paragraph(), description=self.sd.paragraph(),
project=project, project=project,
owner=self.sd.choice(self.users), owner=self.sd.choice(self.users),
@ -135,9 +128,9 @@ class Command(BaseCommand):
finished_date=None, finished_date=None,
) )
if closed: if closed:
task.status = TaskStatus.objects.get(project=project, order=4) task.status = project.task_statuses.get(order=4)
else: else:
task.status = self.sd.db_object_from_queryset(TaskStatus.objects.filter(project=project)) task.status = self.sd.db_object_from_queryset(project.task_statuses.all())
if task.status.is_closed: if task.status.is_closed:
task.finished_date = self.sd.datetime_between(min_date, max_date) task.finished_date = self.sd.datetime_between(min_date, max_date)
@ -146,39 +139,34 @@ class Command(BaseCommand):
return task return task
def create_us(self, project, milestone=None): def create_us(self, project, milestone=None):
us = UserStory( us = UserStory.objects.create(
subject=self.sd.words(4,9), subject=self.sd.choice(SUBJECT_CHOICES),
project=project, project=project,
owner=self.sd.choice(self.users), owner=self.sd.choice(self.users),
description=self.sd.paragraph(), description=self.sd.paragraph(),
milestone=milestone, milestone=milestone,
status=self.sd.db_object_from_queryset(UserStoryStatus.objects.filter(project=project)), status=self.sd.db_object_from_queryset(project.us_statuses.all()),
tags=[] tags=self.sd.words(1, 3).split(" ")
) )
us.save() for role_points in us.role_points.all():
for role in project.get_roles():
if milestone: if milestone:
points=self.sd.db_object_from_queryset(Points.objects.filter(project=project).exclude(order=0)) role_points.point = self.sd.db_object_from_queryset(
us.project.points.exclude(value=None))
else: else:
points=self.sd.db_object_from_queryset(Points.objects.filter(project=project)) role_points.point = self.sd.db_object_from_queryset(
us.project.points.all())
RolePoints.objects.create( role_points.save()
user_story=us,
points=points,
role=role)
for tag in self.sd.words(1, 3).split(" "):
us.tags.append(tag)
us.save()
return us return us
def create_milestone(self, project, start_date, end_date): def create_milestone(self, project, start_date, end_date):
milestone = Milestone( milestone = Milestone.objects.create(
project=project, project=project,
name='Sprint {0}'.format(start_date), name='Sprint {0}-{1}-{2}'.format(start_date.year,
start_date.month,
start_date.day),
owner=project.owner, owner=project.owner,
created_date=start_date, created_date=start_date,
modified_date=start_date, modified_date=start_date,
@ -186,13 +174,12 @@ class Command(BaseCommand):
estimated_finish=end_date, estimated_finish=end_date,
order=10 order=10
) )
milestone.save()
return milestone return milestone
def create_project(self, counter): def create_project(self, counter):
# create project # create project
project = Project( project = Project.objects.create(
name='Project Example 1 {0}'.format(counter), name='Project Example {0}'.format(counter),
description='Project example {0} description'.format(counter), description='Project example {0} description'.format(counter),
owner=random.choice(self.users), owner=random.choice(self.users),
public=True, public=True,
@ -200,12 +187,11 @@ class Command(BaseCommand):
total_milestones=self.sd.int(5,10) total_milestones=self.sd.int(5,10)
) )
project.save()
return project return project
def create_user(self, counter): def create_user(self, counter):
user = User.objects.create( user = User.objects.create(
username='user-{0}-{1}'.format(counter, self.sd.word()), username='user-{0}'.format(counter),
first_name=self.sd.name('es'), first_name=self.sd.name('es'),
last_name=self.sd.surname('es'), last_name=self.sd.surname('es'),
email=self.sd.email(), email=self.sd.email(),

View File

@ -130,3 +130,12 @@ reversion.register(UserStory)
def us_ref_handler(sender, instance, **kwargs): def us_ref_handler(sender, instance, **kwargs):
if not instance.id and instance.project: if not instance.id and instance.project:
instance.ref = ref_uniquely(instance.project, "last_us_ref", instance.__class__) instance.ref = ref_uniquely(instance.project, "last_us_ref", instance.__class__)
@receiver(models.signals.post_save, sender=UserStory, dispatch_uid="user_story_create_role_points_handler")
def us_ref_handler(sender, instance, **kwargs):
created_roles_ids = instance.role_points.all().values_list("role__id", flat=True)
null_points_value = instance.project.points.get(value=None)
for role in instance.project.get_roles().exclude(id__in=created_roles_ids):
instance.role_points.create(role=role, points=null_points_value)