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
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)