Rapportsystem API - of D03N
Hovedprosjekt FiV Programmering 20-24
Loading...
Searching...
No Matches
userActivity.py
Go to the documentation of this file.
1from flask_restx import Resource
2from flask_jwt_extended import jwt_required, get_jwt_identity
3from mysql.connector import Error
4#imports os
5import os
6current_directory = os.getcwd()
7#imports sys
8import sys
9sys.path.append(os.path.join(current_directory))
10
11from SQLAdminConnections import SQL_AdminConnector as SQLC
12from SQLAdminConnections import SQL_AdminQuerys as SQLQ
13from Common.Requirements import valid_token as vt
14
15#defines activity route
17 @ns.route('/activity')
18 class activity(Resource):
19 @ns.doc('userActivity',
20 description='Info route, returns json with 5 last IP and user agent logins.',
21 responses={200: 'OK', 400: 'Invalid Argument', 500: 'Mapping Key Error'})
22
23 #Requires valid jwt token
24 @jwt_required()
25 @vt.require_valid_token
26
27 def get(self):
28 current_user = get_jwt_identity()
29 return {"Activity": fetch_oldest_activities(current_user['user_id'])}
30
31#fetches the last 5 activities from the database
33 activities = []
34 try:
35 #Connect to the database
36 connection = SQLC.SQLConAdmin()
37 connection.connect()
38 connection.execute_query(SQLQ.SQLQueries.use_users_database())
39 #Get the result from the query - 5 or fewer activities
40 result = connection.execute_query(SQLQ.SQLQueries.get_oldest_activities(user_id))
41
42 #If the result is not empty
43 if result:
44 for row in result:
45
46 #Format activity_timestamp as a string
47 formatted_timestamp = row[5].strftime('%Y-%m-%d %H:%M:%S') if row[5] else None
48
49 #Create a dictionary of the result
50 activity = {
51 'id': row[0],
52 'user_id': row[1],
53 'ip_address': row[2],
54 'user_agent': row[3],
55 'operating_system': row[4],
56 'activity_timestamp': formatted_timestamp
57 }
58 activities.append(activity)
59
60 except Error as e:
61 print("Error while fetching activities.", e)
62 finally:
63 connection.close()
64
65 return activities
66
67
fetch_oldest_activities(user_id)