Completed
Pull Request — develop (#32)
by Antony
02:09
created

build.resources.requests.GetAllRequest.get()   A

Complexity

Conditions 2

Size

Total Lines 8
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 8
rs 9.4285
c 0
b 0
f 0
cc 2
nop 1
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):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
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):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
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):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
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"}