def todo_change_status(): if 'todo_id' not in request.values: return json_response( status=400, success=False, message= 'The identifier of the task is required to update the status.') todo_id = request.values.get('todo_id') if not TodoService.exists_by_id(todo_id): return json_response( status=404, success=False, message="There isn't a task with the identifier provided.") if not TodoService.exists_by_user_id(todo_id, current_user.id): return json_response( status=401, success=False, message="You don't have access to the requested task.") entity = TodoService.find_by_id(todo_id) entity.mark_completed = not entity.mark_completed TodoService.update(entity) return json_response(success=True, message="The task's status has been updated.")
def todos_POST(): current_page = request.values.get('page', 1) form = TodoCreateForm(request.form) if form.validate_on_submit(): markup = Markup(form.description.data) description = markup.striptags() TodoService.save(description) flash('The task "{}" has been successfully added.'.format(description)) else: for error in form.errors['description']: flash(error) return redirect('/todo?page={}'.format(current_page))
def get(self): with TodoService() as task_service: res_task = task_service.get_tasks() if not res_task: return self.json_output(data={}) return self.json_output(data=res_task)
def todo_delete(id, page): deleted_entity = TodoService.delete_by_id(id) flash('The task "{}" has been successfully deleted.'.format( deleted_entity.description)) return redirect('/todo?page={}'.format(page))
def __init__(self): super().__init__() api = TypicodeTodoApiClient(settings.TYPECODE_URI) users_repo = UsersRepository(db) # repository handling the db open/close itself words_repo = WordsRepository(settings.REPLACEMENTS_DB) service = TodoService(api, users_repo, words_repo) TodoEndpoints(self, response, service)
def get(self): if not request.args: raise InvalidAPIUsage(message='Request data type is error!') parser = reqparse.RequestParser() parser.add_argument('task_id', type=str, required=True, help="task_id cannot be blank!", location='args') args = parser.parse_args() task_id = args.get with TodoService() as task_service: res_task = task_service.get_task_by_id(task_id=task_id) if not res_task: # raise InvalidAPIUsage(message='task_id for {task_id} is not exist!'.format(task_id=task_id)) return self.json_output(data={}) return self.json_output(data=res_task)
def post(self): if not request.data: raise InvalidAPIUsage(message='Request data type is error!') parser = reqparse.RequestParser() parser.add_argument('title', type=str, required=True, help="title cannot be blank!", location='json') parser.add_argument('content', type=str, required=True, help="content cannot be blank!", location='json') args = parser.parse_args() with TodoService() as task_service: new_task = task_service.create_task(**args) return self.json_output(data=new_task)
def todo_json(id): entity = TodoService.find_by_id(id) return TodoService.dump_json(entity)
def todos(page=-1): if page == -1: page = request.values.get('page', 1) entities = TodoService.paginate(current_page=int(page)) return render_template('todos.html', todos=entities, form=TodoCreateForm())
def todo(id, page): entity = TodoService.find_by_id(id) return render_template('todo.html', todo=entity, page=page)