Aggiunto modulo per la conversione degli oggetti in JSON
This commit is contained in:
9
app.py
9
app.py
@@ -4,6 +4,7 @@ from typing import List, Dict
|
||||
|
||||
from dateutil import relativedelta as period
|
||||
from flask import Flask
|
||||
from flask_json import FlaskJSON
|
||||
|
||||
from db.access import fetch_european_departments, \
|
||||
fetch_department_employees, \
|
||||
@@ -14,6 +15,10 @@ from db.access import fetch_european_departments, \
|
||||
from models.department import Department
|
||||
|
||||
app = Flask(__name__)
|
||||
FlaskJSON(app)
|
||||
|
||||
app.config['JSON_DATE_FORMAT'] = '%d/%m/%Y'
|
||||
app.config['JSON_USE_ENCODE_METHODS'] = True
|
||||
|
||||
|
||||
@app.get("/")
|
||||
@@ -33,7 +38,7 @@ def handle_error(error):
|
||||
|
||||
@app.get("/employee")
|
||||
def all_employees():
|
||||
return {"employees": [e.to_json() for e in fetch_employees()]}
|
||||
return {"employees": [e for e in fetch_employees()]}
|
||||
|
||||
|
||||
def __employees_group_by_seniority(departments: List[Department]) -> Dict[str, dict]:
|
||||
@@ -46,7 +51,7 @@ def __employees_group_by_seniority(departments: List[Department]) -> Dict[str, d
|
||||
employee_group_by_years = itertools.groupby(department_employees,
|
||||
lambda e: period.relativedelta(date.today(), e.hire_date).years)
|
||||
|
||||
result[department.name] = {year: [e.to_json() for e in employees]
|
||||
result[department.name] = {year: [e for e in employees]
|
||||
for (year, employees) in employee_group_by_years}
|
||||
|
||||
return result
|
||||
|
||||
@@ -19,11 +19,11 @@ class Department:
|
||||
def location_id(self) -> Location:
|
||||
return self.__location
|
||||
|
||||
def to_json(self):
|
||||
def __json__(self):
|
||||
return {
|
||||
'department_id': self.__department_id,
|
||||
'name': self.__name,
|
||||
'location': self.__location.to_json() if self.__location is not None else None
|
||||
'location': self.__location if self.__location is not None else None
|
||||
}
|
||||
|
||||
def __str__(self):
|
||||
|
||||
@@ -62,14 +62,14 @@ class Employee(Person):
|
||||
def manager_id(self) -> int:
|
||||
return self.__manager_id
|
||||
|
||||
def to_json(self):
|
||||
def __json__(self):
|
||||
return {
|
||||
'employee_id': self.__employee_id,
|
||||
'first_name': self.first_name,
|
||||
'last_name': self.last_name,
|
||||
'email': self.__email,
|
||||
'hire_date': f"{self.__hire_date: %Y-%m-%d}",
|
||||
'department': self.__department.to_json() if self.__department is not None else None,
|
||||
'hire_date': self.__hire_date,
|
||||
'department': self.__department if self.__department is not None else None,
|
||||
'job_id': self.__job_id,
|
||||
'salary': f"{self.__salary:,.2f}",
|
||||
'manager_id': self.__manager_id
|
||||
|
||||
@@ -32,7 +32,7 @@ class Location:
|
||||
def country_id(self) -> int:
|
||||
return self.__country_id
|
||||
|
||||
def to_json(self):
|
||||
def __json__(self):
|
||||
return {
|
||||
'location_id': self.__location_id,
|
||||
'street_address': self.__street_address,
|
||||
|
||||
@@ -3,3 +3,4 @@ psycopg2-binary~=2.9.1
|
||||
setuptools~=57.0.0
|
||||
python-dateutil~=2.8.1
|
||||
Flask~=2.0.1
|
||||
Flask-JSON~=0.3.4
|
||||
Reference in New Issue
Block a user