Exemplo n.º 1
0
    def patch(self, task_id):
        """ Endpoint to update task"""
        request_data = request.get_json()
        user = get_jwt_identity()
        task = Task.get_or_404(task_id)
        schema = TaskSchema(context={'id': task_id})

        if 'task_assignees' in request_data:
            project = Project.get_or_404(task.project_id)
            assignee_list = check_assignee(request_data.get('task_assignees'),
                                           project.assignees)
            if assignee_list is not None:
                user_list = assign_user(assignee_list)
                assignees = user_list if user_list is not None else []
                del request_data['task_assignees']
                data = schema.load_object_into_schema(request_data,
                                                      partial=True)
                data['task_assignees'] = assignees
                task.update_(**data)
        else:
            data = schema.load_object_into_schema(request_data, partial=True)
            task.update_(**data)
        return response('success',
                        message=success_messages['updated'].format('Task'),
                        data=schema.dump(task).data,
                        status_code=200)
Exemplo n.º 2
0
    def post(self):
        """ Endpoint to create new Task"""

        data = request.get_json()
        title = data.get('title')
        formatted_date = convert_date_to_date_time(data['due_date'])
        schema = TaskSchema()
        project_id = data['projectId']
        project = Project.get_or_404(project_id)
        task_exist = Task.find_by_title_and_project_id(title=title,
                                                       project_id=project.id)
        if task_exist:
            raise ValidationError(
                {
                    "message":
                    serialization_messages['exists'].format('Task with title')
                }, 409)
        if not check_date_difference(formatted_date, project.due_date):
            raise ValidationError(
                {
                    "message":
                    "Tasks cannot be created under this project because of dat difference"
                }, 401)
        assignee_list = check_assignee(data.get('task_assignees'),
                                       project.assignees)
        if assignee_list is not None:
            user_list = assign_user(assignee_list)
            data['task_assignees'] = user_list
        else:
            data['task_assignees'] = []
        assignee_ids = data['task_assignees'] if data[
            'task_assignees'] is not None else []
        del data['task_assignees']
        task_data = schema.load_object_into_schema(data)

        task = Task()
        task.title = data['title']
        task.description = data['description']
        task.due_date = data['due_date']
        task.task_assignees = assignee_ids
        task.project_id = project.id
        task.save()

        task.save()

        return response('success',
                        message=success_messages['created'].format('Task'),
                        data=schema.dump(task).data,
                        status_code=201)