Beispiel #1
0
    def save(self, *args, **kwargs):
        """ Ensure that we have a slug, required for creating new items manually """
        obj = super(CustomerToDoForm, self).save(*args, **kwargs)

        if obj.slug in [None, '']:
            obj.slug = generate_unique_slug(instance=obj)
            obj.save(update_fields=['slug'])

        return obj
Beispiel #2
0
def todo_item_status_change(sender, **kwargs):
    instance = kwargs.get('instance')

    if instance.pk is None:

        # ensure the slug is present
        if instance.slug in [None, '']:
            instance.slug = generate_unique_slug(instance=instance)

            # @BUSINESSRULE ensure we have a sort_position
            if not instance.sort_position:
                instance.sort_position = instance.project.todo_set.all().count() + 1

            # @BUSINESSRULE ensure we have a sort_position_by_cat
            if not instance.sort_position_by_cat:
                instance.sort_position_by_cat = instance.sort_position

    else:

        if instance.user is not None:

            # we have an existing item
            prev_instance = ToDo.objects.get(pk=instance.pk)

            if prev_instance.status != instance.status:

                event_action = TODO_STATUS_ACTION[instance.status]
                verb = '{user} {action} the checklist item "{name}"'.format(name=instance.name, action=event_action, user=instance.user.get_full_name())

                action.send(instance.user,
                            verb=verb,
                            action_object=instance,
                            target=instance,
                            content=None,
                            event_action=event_action,
                            event='todo.status_change',
                            **get_todo_info_object(todo=instance))

                if instance.status in [TODO_STATUS.closed, TODO_STATUS.resolved]:
                    """
                    @BUSINESS RULE Update the FeedbackRequest objects that are currently open to closed
                    """
                    FeedbackRequest.objects.close_by_todo(todo=instance)