api.v1_0.todos   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 46
dl 0
loc 55
rs 10
c 0
b 0
f 0
wmc 5

5 Functions

Rating   Name   Duplication   Size   Complexity  
A get_todos() 0 7 1
A delete_todo() 0 8 1
A get_todo() 0 7 1
A edit_todo() 0 9 1
A new_todo() 0 8 1
1
from flask import request
2
from ..models import db, Todo
3
from ..decorators import json, paginate, etag, rate_limit, hit_count
4
from ..auth import auth
5
from . import api
6
7
8
@api.route('/todos/', methods=['GET'])
9
@rate_limit(limit=45, per=15)
10
@auth.login_required
11
@etag
12
@paginate()
13
def get_todos():
14
  return Todo.query
15
16
17
@api.route('/todos/<int:id>', methods=['GET'])
18
@rate_limit(limit=5, per=15)
19
@hit_count
20
@etag
21
@json
22
def get_todo(id):
23
  return Todo.query.get_or_404(id)
24
25
26
@api.route('/todos/', methods=['POST'])
27
@auth.login_required
28
@json
29
def new_todo():
30
  todo = Todo().from_json(request.json)
31
  db.session.add(todo)
32
  db.session.commit()
33
  return {}, 201, {'Location': todo.get_url()}
34
35
36
@api.route('/todos/<int:id>', methods=['PUT'])
37
@auth.login_required
38
@json
39
def edit_todo(id):
40
  todo = Todo.query.get_or_404(id)
41
  todo.from_json(request.json)
42
  db.session.add(todo)
43
  db.session.commit()
44
  return {}
45
46
47
@api.route('/todos/<int:id>', methods=['DELETE'])
48
@auth.login_required
49
@json
50
def delete_todo(id):
51
  todo = Todo.query.get_or_404(id)
52
  db.session.delete(todo)
53
  db.session.commit()
54
  return {}
55