Rapportsystem API - of D03N
Hovedprosjekt FiV Programmering 20-24
Loading...
Searching...
No Matches
createRapport.py
Go to the documentation of this file.
1#Imports nessesary modules
2from flask_restx import Resource
3from flask import request
4from flask_jwt_extended import jwt_required, get_jwt_identity
5
6#imports os
7import os
8current_directory = os.getcwd()
9#imports sys
10import sys
11sys.path.append(os.path.join(current_directory))
12
13#imports custom modules
14from Common.Requirements.admin_req import require_admin_account
15from Models import user_model as UM
16from Common.Requirements import valid_token as vt
17from Requests.CreateRapport import RapportMaker as RM
18
19# create Disa route
20def createRapport(ns):
21 @ns.route('/createRapport')
22
23 class createDisaRapport(Resource):
24 new_rapport_model = UM.create_rapport_model(ns)
25
26 #Documentation for swagger UI
27 @ns.doc('/createRapport',
28 description='Creates a new rapport for user.',
29 responses={
30 200: 'OK',
31 400: 'Invalid Argument or faulty data',
32 500: 'Internal server error'
33 })
34
35 #Validates input
36 @ns.expect(new_rapport_model, validate=True)
37
38 #Requires valid JWT token authentication & admin account
39 @jwt_required()
40 @vt.require_valid_token
41 @require_admin_account
42
43 #recives password data from user
44 def post(self):
45 current_user = get_jwt_identity()
46 data = request.get_json()
47
48 #gets rapport type from userinput
49 rapportType = data['rapportType']
50
51 #checks if data is provided
52 if not data:
53 return {"Error": "No data provided"}
54
55 #creates new rapport and returns status code
56 return RM.RapportMaker().createRapport(current_user['email'], rapportType)
57