Rapportsystem API - of D03N
Hovedprosjekt FiV Programmering 20-24
Loading...
Searching...
No Matches
extractPreciseData.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 Models import user_model as UM
15from Common.Requirements import valid_token as vt
16from Requests.dataHandler import dataExtractor as DE
17
18# extract by date or count
20 @ns.route('/extractPreciseData')
21
22 class extractDateNum(Resource):
23 data_date_num_model = UM.data_date_num_model(ns)
24
25 #Documentation for swagger UI
26 @ns.doc('/extractPreciseData',
27 description='Takes in a data to extract precise data from the database based on date or number of rapports',
28 responses={
29 200: 'OK',
30 400: 'Invalid Argument or faulty data',
31 500: 'Internal server error'
32 })
33
34 #Validates input
35 @ns.expect(data_date_num_model, validate=True)
36
37 #Requires valid JWT token authentication & admin account
38 @jwt_required()
39 @vt.require_valid_token
40
41 #recives password data from user
42 def post(self):
43 current_user = get_jwt_identity()
44 data = request.get_json()
45
46 table_name = data.get('table_name')
47
48 date_start = data.get('date_start')
49
50 date_stop = data.get('date_stop')
51
52 rapport_count = data.get('rapport_count')
53
54 #checks if data is provided
55 if not data:
56 return {"Error": "No data provided"}
57
58 #creates new rapport and returns status code
59 return DE.data_extractor().extractGivenTable(current_user['email'], table_name, date_start, date_stop,rapport_count)
60