def execute(self): task = Task() task.project = self.payload.get('project') task.title = self.payload.get('title') task_type = self.payload.get('task_type') task.task_type = task_type task.label = self.payload.get('label') task.priority = self.payload.get('priority') task.branch = Task.generate_branch() assignee = self.payload.get('assignee') if assignee: task.assignee = assignee if task_type == TaskChoices.SUB_TASK: task.parent = self.payload.get('parent') # it must be instance task.deadline = self.payload.get('deadline') task.descriptions = self.payload.get('descriptions') created_by = self.payload.get('created_by') task.created_by = created_by task.save() if assignee != created_by: # send email & notifications to user if he not assignee task to himself title = f'{created_by.username} assigned an task to you.' payload = { 'title': title, 'recipient': assignee.id, 'subject': ASSIGNEE_TASK, 'related_data': task.id } NotificationTask.task_push_notification.delay(payload) return task
def test_task_is_dirty_foreign_key(self): user = self.create_user() task = Task(description='foobar', user=user) self.assertTrue(task._is_dirty()) task.save() self.assertFalse(task._is_dirty()) task.priority = Priority.objects.get(weight=1) self.assertItemsEqual(task._get_dirty_fields().keys(), ['priority']) self.assertTrue(task._is_dirty())