Implemented a properly separation between computable and not computable roles.
parent
dc2672078c
commit
57586a7980
|
@ -1,6 +1,7 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django.db import models
|
||||
from django.dispatch import receiver
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib.auth.models import UserManager, AbstractUser
|
||||
|
||||
|
@ -37,6 +38,7 @@ class Role(models.Model):
|
|||
verbose_name=_('permissions'))
|
||||
order = models.IntegerField(default=10, null=False, blank=False,
|
||||
verbose_name=_("order"))
|
||||
computable = models.BooleanField(default=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'role'
|
||||
|
@ -45,3 +47,18 @@ class Role(models.Model):
|
|||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
# On Role object is changed, update all membership
|
||||
# related to current role.
|
||||
@receiver(models.signals.post_save, sender=Role,
|
||||
dispatch_uid='role_post_save')
|
||||
def role_post_save(sender, instance, created, **kwargs):
|
||||
# ignore if object is just created
|
||||
if created:
|
||||
return
|
||||
|
||||
unique_projects = set(map(lambda x: x.project, instance.memberships.all()))
|
||||
for project in unique_projects:
|
||||
project.update_role_points()
|
||||
|
||||
|
|
|
@ -33,4 +33,4 @@ class RecoverySerializer(serializers.Serializer):
|
|||
class RoleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Role
|
||||
fields = ('id', 'name', 'slug', 'permissions',)
|
||||
fields = ('id', 'name', 'slug', 'permissions', 'computable')
|
||||
|
|
|
@ -133,7 +133,7 @@ class Project(models.Model):
|
|||
rolepoints_model = get_model("userstories", "RolePoints")
|
||||
|
||||
# Get all available roles on this project
|
||||
roles = self.get_roles()
|
||||
roles = self.get_roles().filter(computable=True)
|
||||
|
||||
# Get point instance that represent a null/undefined
|
||||
null_points_value = self.points.get(value=None)
|
||||
|
|
Loading…
Reference in New Issue