Extra optimization on stats

remotes/origin/enhancement/email-actions
Jesús Espino 2014-07-26 10:40:46 +02:00
parent c670b3a17b
commit b2ffd2ad27
2 changed files with 10 additions and 10 deletions

View File

@ -72,7 +72,7 @@ class Milestone(WatchedModelMixin, models.Model):
super().save(*args, **kwargs)
def _get_user_stories_points(self, user_stories):
role_points = [us.role_points.all().select_related('points') for us in user_stories]
role_points = [us.role_points.all() for us in user_stories]
flat_role_points = itertools.chain(*role_points)
flat_role_dicts = map(lambda x: {x.role_id: x.points.value if x.points.value else 0}, flat_role_points)
return dict_sum(*flat_role_dicts)
@ -80,13 +80,13 @@ class Milestone(WatchedModelMixin, models.Model):
@property
def total_points(self):
return self._get_user_stories_points(
[us for us in self.user_stories.all()]
[us for us in self.user_stories.all().prefetch_related('role_points', 'role_points__points')]
)
@property
def closed_points(self):
return self._get_user_stories_points(
[us for us in self.user_stories.all() if us.is_closed]
[us for us in self.user_stories.all().prefetch_related('role_points', 'role_points__points') if us.is_closed]
)
def _get_points_increment(self, client_requirement, team_requirement):
@ -98,7 +98,7 @@ class Milestone(WatchedModelMixin, models.Model):
project_id=self.project_id,
client_requirement=client_requirement,
team_requirement=team_requirement
)
).prefetch_related('role_points', 'role_points__points')
return self._get_user_stories_points(user_stories)
@property
@ -125,5 +125,5 @@ class Milestone(WatchedModelMixin, models.Model):
return self._get_user_stories_points([
us for us in self.user_stories.filter(
finish_date__lt=date + datetime.timedelta(days=1)
) if us.is_closed
).prefetch_related('role_points', 'role_points__points') if us.is_closed
])

View File

@ -237,7 +237,7 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
rp_query.delete()
def _get_user_stories_points(self, user_stories):
role_points = [us.role_points.all().select_related('points') for us in user_stories]
role_points = [us.role_points.all() for us in user_stories]
flat_role_points = itertools.chain(*role_points)
flat_role_dicts = map(lambda x: {x.role_id: x.points.value if x.points.value else 0}, flat_role_points)
return dict_sum(*flat_role_dicts)
@ -253,13 +253,13 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
project_id=self.id,
client_requirement=client_requirement,
team_requirement=team_requirement
)
).prefetch_related('role_points', 'role_points__points')
else:
user_stories = userstory_model.objects.filter(
project_id=self.id,
client_requirement=client_requirement,
team_requirement=team_requirement
)
).prefetch_related('role_points', 'role_points__points')
return self._get_user_stories_points(user_stories)
@property
@ -284,11 +284,11 @@ class Project(ProjectDefaults, TaggedMixin, models.Model):
@property
def defined_points(self):
return self._get_user_stories_points(self.user_stories.all())
return self._get_user_stories_points(self.user_stories.all().prefetch_related('role_points', 'role_points__points'))
@property
def assigned_points(self):
return self._get_user_stories_points(self.user_stories.filter(milestone__isnull=False))
return self._get_user_stories_points(self.user_stories.filter(milestone__isnull=False).prefetch_related('role_points', 'role_points__points'))
# User Stories common Models