1
|
|
|
import datetime |
2
|
|
|
|
3
|
|
|
from flask_restful import Resource, reqparse |
4
|
|
|
from flask import json, request, jsonify |
5
|
|
|
from resources.models import RequestModel, is_admin, find_by_username |
6
|
|
|
|
7
|
|
|
from flask_jwt_extended import (create_access_token,create_refresh_token, |
8
|
|
|
jwt_required, jwt_refresh_token_required,get_jwt_identity, get_raw_jwt) |
9
|
|
|
|
10
|
|
|
#set current user |
11
|
|
|
|
12
|
|
|
|
13
|
|
|
RM = RequestModel |
14
|
|
|
|
15
|
|
|
parser = reqparse.RequestParser() |
16
|
|
|
parser.add_argument('requestor',help='fill user id', required=True) |
17
|
|
|
parser.add_argument('request_type',help='please fill in request_type', required=True) |
18
|
|
|
parser.add_argument('status',help='request status', required=False) |
19
|
|
|
parser.add_argument('description',help='please fill in descritption', required=True) |
20
|
|
|
|
21
|
|
|
class RequestResource(Resource): |
22
|
|
|
|
23
|
|
|
"""Get all request""" |
24
|
|
|
@jwt_required |
25
|
|
|
def get(self): |
26
|
|
|
|
27
|
|
|
current_user = get_jwt_identity() |
28
|
|
|
user_id = find_by_username(current_user)[0] |
29
|
|
|
check_admin = is_admin(current_user) |
30
|
|
|
if check_admin is True: |
31
|
|
|
"""returns all request""" |
32
|
|
|
return RM.fetch_all_request() |
33
|
|
|
return {current_user:RM.fetch_for_logged_in_user(user_id)} |
34
|
|
|
|
35
|
|
|
@jwt_required |
36
|
|
|
def post(self): |
37
|
|
|
"""create new request""" |
38
|
|
|
self.data = parser.parse_args() |
39
|
|
|
|
40
|
|
|
requestor = self.data['requestor'] |
41
|
|
|
request_type = self.data['request_type'] |
42
|
|
|
status = self.data['status'] |
43
|
|
|
description = self.data['description'] |
44
|
|
|
created_on = datetime.datetime.now() |
45
|
|
|
|
46
|
|
|
try: |
47
|
|
|
save = RequestModel.create_request(self,requestor,request_type,status,description,created_on) |
48
|
|
|
|
49
|
|
|
return {"status":str(save), "data": request_type }, 201 |
50
|
|
|
|
51
|
|
|
except: |
52
|
|
|
return {"msg":"Failed to create new request"} |
53
|
|
|
|
54
|
|
|
#return {"status":"success", "data": self.data }, 201 |
55
|
|
|
|
56
|
|
|
|
57
|
|
|
|
58
|
|
|
class Request(Resource): |
59
|
|
|
"""Get request by ID""" |
60
|
|
|
@jwt_required |
61
|
|
|
def get(self, req_id): |
62
|
|
|
response = RM.fetch_request_by_id(self, req_id)[0][0] |
63
|
|
|
current_user = get_jwt_identity() |
64
|
|
|
user_id = find_by_username(current_user)[0] |
65
|
|
|
|
66
|
|
|
if user_id == response['requestor']: |
67
|
|
|
return response |
68
|
|
|
return {"msg": "You have insufficient rights to view this"} |
69
|
|
|
|
70
|
|
|
@jwt_required |
71
|
|
|
def put(self, req_id): |
72
|
|
|
"""Modify a request""" |
73
|
|
|
json_data = request.get_json(force=True) |
74
|
|
|
request_type=json_data['request_type'] |
75
|
|
|
description=json_data['description'] |
76
|
|
|
last_modified=datetime.datetime.now() |
77
|
|
|
request_id = req_id |
78
|
|
|
|
79
|
|
|
try: |
80
|
|
|
RM.modify_request(request_type,description,last_modified,request_id) |
81
|
|
|
|
82
|
|
|
return {"message":"Record updated succesfully"} |
83
|
|
|
except: |
84
|
|
|
return {"message":"failed to update request"} |
85
|
|
|
|
86
|
|
|
def delete(self): |
87
|
|
|
pass |
88
|
|
|
|
89
|
|
|
class GetAllRequest(Resource): |
90
|
|
|
"""Fetch all request Admin only""" |
91
|
|
|
@jwt_required |
92
|
|
|
def get(self): |
93
|
|
|
current_user = get_jwt_identity() |
94
|
|
|
check_admin = is_admin(current_user) |
95
|
|
|
|
96
|
|
|
if check_admin is True: |
97
|
|
|
return RM.fetch_all_request()[0][0] |
98
|
|
|
return {"message":"you dont have sufficient rights to access this"} |
99
|
|
|
|
100
|
|
View Code Duplication |
class ApproveRequest(Resource): |
|
|
|
|
101
|
|
|
"""Approve user request""" |
102
|
|
|
@jwt_required |
103
|
|
|
def put(self, req_id): |
104
|
|
|
"""Modify a request""" |
105
|
|
|
json_data = request.get_json(force=True) |
106
|
|
|
status=json_data['status'] |
107
|
|
|
last_modified=datetime.datetime.now() |
108
|
|
|
request_id = req_id |
109
|
|
|
|
110
|
|
|
current_user = get_jwt_identity() |
111
|
|
|
check_admin = is_admin(current_user) |
112
|
|
|
|
113
|
|
|
if check_admin is True: |
114
|
|
|
try: |
115
|
|
|
RM.request_action(self, status,last_modified,request_id) |
116
|
|
|
|
117
|
|
|
return {"message":"request {} {}".format(request_id, status)} |
118
|
|
|
except: |
119
|
|
|
return {"message":"failed to approve request"} |
120
|
|
|
|
121
|
|
|
return {"message":"you dont have sufficient rights to access this"} |
122
|
|
|
|
123
|
|
View Code Duplication |
class DisapproveRequest(Resource): |
|
|
|
|
124
|
|
|
"""Dissapprove user request""" |
125
|
|
|
@jwt_required |
126
|
|
|
def put(self, req_id): |
127
|
|
|
"""Modify a request""" |
128
|
|
|
json_data = request.get_json(force=True) |
129
|
|
|
status=json_data['status'] |
130
|
|
|
last_modified=datetime.datetime.now() |
131
|
|
|
request_id = req_id |
132
|
|
|
|
133
|
|
|
current_user = get_jwt_identity() |
134
|
|
|
check_admin = is_admin(current_user) |
135
|
|
|
|
136
|
|
|
if check_admin is True: |
137
|
|
|
try: |
138
|
|
|
RM.request_action(self, status,last_modified,request_id) |
139
|
|
|
|
140
|
|
|
return {"message":"request {} {}".format(request_id, status)} |
141
|
|
|
except: |
142
|
|
|
return {"message":"failed to approve request"} |
143
|
|
|
|
144
|
|
|
return {"message":"you dont have sufficient rights to access this"} |
145
|
|
|
|
146
|
|
View Code Duplication |
class ResolveRequest(Resource): |
|
|
|
|
147
|
|
|
"""Resolve user request""" |
148
|
|
|
@jwt_required |
149
|
|
|
def put(self, req_id): |
150
|
|
|
"""Modify a request""" |
151
|
|
|
json_data = request.get_json(force=True) |
152
|
|
|
status=json_data['status'] |
153
|
|
|
last_modified=datetime.datetime.now() |
154
|
|
|
request_id = req_id |
155
|
|
|
|
156
|
|
|
current_user = get_jwt_identity() |
157
|
|
|
check_admin = is_admin(current_user) |
158
|
|
|
|
159
|
|
|
if check_admin is True: |
160
|
|
|
try: |
161
|
|
|
|
162
|
|
|
RM.request_action(self, status,last_modified,request_id) |
163
|
|
|
|
164
|
|
|
return {"message":"request {} {}".format(request_id, status)} |
165
|
|
|
except: |
166
|
|
|
return {"message":"failed to approve request"} |
167
|
|
|
|
168
|
|
|
return {"message":"you dont have sufficient rights to access this"} |