Example #1
0
    def save(self, *args, **kwargs):
        qs = self.project.issue_statuses
        if self.id:
            qs = qs.exclude(id=self.id)

        self.slug = slugify_uniquely_for_queryset(self.name, qs)
        return super().save(*args, **kwargs)
Example #2
0
    def save(self, *args, **kwargs):
        qs = self.project.issue_statuses
        if self.id:
            qs = qs.exclude(id=self.id)

        self.slug = slugify_uniquely_for_queryset(self.name, qs)
        return super().save(*args, **kwargs)
Example #3
0
    def save(self, *args, **kwargs):
        if not self.href:
            wl_qs = self.project.wiki_links.all()
            self.href = slugify_uniquely_for_queryset(self.title,
                                                      wl_qs,
                                                      slugfield="href")

        super().save(*args, **kwargs)
Example #4
0
 def save(self, *args, **kwargs):
     if not self.href:
         with advisory_lock("wiki-page-creation-{}".format(self.project_id)):
             wl_qs = self.project.wiki_links.all()
             self.href = slugify_uniquely_for_queryset(self.title, wl_qs, slugfield="href")
             super().save(*args, **kwargs)
     else:
         super().save(*args, **kwargs)
Example #5
0
 def save(self, *args, **kwargs):
     if not self.href:
         with advisory_lock("wiki-page-creation-{}".format(self.project_id)):
             wl_qs = self.project.wiki_links.all()
             self.href = slugify_uniquely_for_queryset(self.title, wl_qs, slugfield="href")
             super().save(*args, **kwargs)
     else:
         super().save(*args, **kwargs)
Example #6
0
    def update_role_points(self, user_stories=None):
        RolePoints = apps.get_model("userstories", "RolePoints")
        Role = apps.get_model("users", "Role")

        # Get all available roles on this project
        roles = self.get_roles().filter(computable=True)
        if roles.count() == 0:
            return

        # Iter over all project user stories and create
        # role point instance for new created roles.
        if user_stories is None:
            user_stories = self.user_stories.all()

        # Get point instance that represent a null/undefined
        # The current model allows duplicate values. Because
        # of it, we should get all poins with None as value
        # and use the first one.
        # In case of that not exists, creates one for avoid
        # unexpected errors.
        none_points = list(self.points.filter(value=None))
        if none_points:
            null_points_value = none_points[0]
        else:
            name = slugify_uniquely_for_queryset("?",
                                                 self.points.all(),
                                                 slugfield="name")
            null_points_value = Points.objects.create(name=name,
                                                      value=None,
                                                      project=self)

        for us in user_stories:
            usroles = Role.objects.filter(
                role_points__in=us.role_points.all()).distinct()
            new_roles = roles.exclude(id__in=usroles)
            new_rolepoints = [
                RolePoints(role=role, user_story=us, points=null_points_value)
                for role in new_roles
            ]
            RolePoints.objects.bulk_create(new_rolepoints)

        # Now remove rolepoints associated with not existing roles.
        rp_query = RolePoints.objects.filter(
            user_story__in=self.user_stories.all())
        rp_query = rp_query.exclude(
            role__id__in=roles.values_list("id", flat=True))
        rp_query.delete()
Example #7
0
    def update_role_points(self, user_stories=None):
        RolePoints = apps.get_model("userstories", "RolePoints")
        Role = apps.get_model("users", "Role")

        # Get all available roles on this project
        roles = self.get_roles().filter(computable=True)
        if roles.count() == 0:
            return

        # Iter over all project user stories and create
        # role point instance for new created roles.
        if user_stories is None:
            user_stories = self.user_stories.all()

        # Get point instance that represent a null/undefined
        # The current model allows duplicate values. Because
        # of it, we should get all poins with None as value
        # and use the first one.
        # In case of that not exists, creates one for avoid
        # unexpected errors.
        none_points = list(self.points.filter(value=None))
        if none_points:
            null_points_value = none_points[0]
        else:
            name = slugify_uniquely_for_queryset("?", self.points.all(), slugfield="name")
            null_points_value = Points.objects.create(name=name, value=None, project=self)

        for us in user_stories:
            usroles = Role.objects.filter(role_points__in=us.role_points.all()).distinct()
            new_roles = roles.exclude(id__in=usroles)
            new_rolepoints = [RolePoints(role=role, user_story=us, points=null_points_value)
                              for role in new_roles]
            RolePoints.objects.bulk_create(new_rolepoints)

        # Now remove rolepoints associated with not existing roles.
        rp_query = RolePoints.objects.filter(user_story__in=self.user_stories.all())
        rp_query = rp_query.exclude(role__id__in=roles.values_list("id", flat=True))
        rp_query.delete()
Example #8
0
    def save(self, *args, **kwargs):
        if not self.href:
            wl_qs = self.project.wiki_links.all()
            self.href = slugify_uniquely_for_queryset(self.title, wl_qs, slugfield="href")

        super().save(*args, **kwargs)