-
Notifications
You must be signed in to change notification settings - Fork 0
/
methodHelpers.py
94 lines (76 loc) · 2.92 KB
/
methodHelpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# Author: Ren Demeis-Ortiz
# Course: CS493 Cloud Application Development (Final Project)
# Description: Helper functions to perform route method actions
import datastoreHelpers as ds
import constants as c
from flask import abort
def in_patch_bounds(length):
"""
Checks if integer equals 3
:param length: (int) integer to check if it's within bounds
:return: bool true if it is 3 otherwise false
"""
if length > 2 or length < 1:
return False
else:
return True
def in_put_bounds(length):
"""
Checks if integer equals 3
:param length: (int) integer to check if it's within bounds
:return: bool true if it is 3 otherwise false
"""
if length != 3:
return False
else:
return True
def run_patch(request, entity_kind, id):
"""
Helper that passes length bound function for patch method
:params:
entity_kind (string) is the type of entity
request (flask request) flask request to pull url information from
id (int) id of entity to be changed
:returns: datastore entity entity that was edited
"""
edited_entity = run_edit(in_patch_bounds, request, entity_kind, id)
return edited_entity
def run_put(request, entity_kind, id):
"""
Helper that passes length bound function for put method
:params:
entity_kind (string) is the type of entity
request (flask request) flask request to pull url information from
id (int) id of entity to be changed
:returns: datastore entity entity that was edited
"""
edited_entity = run_edit(in_put_bounds, request, entity_kind, id)
return edited_entity
def run_edit(in_bounds, request, entity_kind, id):
"""
Uses datstoreHelper module to edit datstore entity properties
:params:
in_bounds (func) function that returns a bool that says if length
is within the bounds
entity_kind (string) is the type of entity
request (flask request) flask request to pull url information from
id (int) id of entity to be changed
:returns: datastore entity entity that was edited
"""
# Validate correct accept type
if not request.accept_mimetypes.accept_json:
abort(406)
# Validate attribute number and does not edit carrier
content = request.get_json()
if not in_bounds(len(content)):
if request.method == "PATCH":
abort(400, {"message": c.edit_errors["invalid_attribute_num"]})
elif request.method == "PUT":
abort(400, {"message": c.edit_errors["missing_attribute"]})
elif "carrier" in content:
abort(403, description=c.load_errors["change_carrier"])
# Update and Return Entity
entity = ds.get_entity(entity_kind, int(id))
edited_entity = ds.edit_entity(entity, content)
edited_entity = ds.add_id_self(edited_entity, request, entity_kind)
return edited_entity