78 lines
2.8 KiB
Python
78 lines
2.8 KiB
Python
# encoding: utf-8
|
|
|
|
from flask import request, current_app
|
|
from flask_restful import Resource
|
|
from sqlalchemy import or_
|
|
|
|
from app.model.representative import RepresentativeModel
|
|
|
|
|
|
class RepresentativesApi(Resource):
|
|
def get(self):
|
|
page = int(request.args.get("page", 1))
|
|
print(page)
|
|
query = RepresentativeModel.query
|
|
if request.args.get("name", "") != "":
|
|
query = query.filter(or_(
|
|
RepresentativeModel.last_name.like(
|
|
f"%{request.args.get('name')}%"
|
|
),
|
|
RepresentativeModel.first_name.like(
|
|
f"%{request.args.get('name')}%"
|
|
),
|
|
))
|
|
query = query.order_by(RepresentativeModel.last_name)
|
|
return [
|
|
{
|
|
"first_name": representative.first_name,
|
|
"last_name": representative.last_name,
|
|
"full_name": representative.full_name,
|
|
"picture": representative.picture,
|
|
"active": True,
|
|
"memberships": [
|
|
{
|
|
"reference": membership.reference,
|
|
"source": membership.entity.source,
|
|
"start_date": membership.start.strftime("%Y-%m-%d"),
|
|
"end_date": membership.end.strftime("%Y-%m-%d") if membership.end is not None else None,
|
|
"entity": {
|
|
"reference": membership.entity.reference,
|
|
"type": {
|
|
"code": membership.entity.type.code,
|
|
"name": membership.entity.type.name,
|
|
},
|
|
"name": membership.entity.name,
|
|
},
|
|
"role": {
|
|
"code": membership.role.code,
|
|
"name": membership.role.name,
|
|
},
|
|
}
|
|
for membership
|
|
in representative.memberships
|
|
|
|
],
|
|
"references": [
|
|
{
|
|
"reference": reference.reference,
|
|
"source": reference.source.name,
|
|
}
|
|
for reference
|
|
in representative.references
|
|
],
|
|
}
|
|
for representative
|
|
in query.paginate(
|
|
page, current_app.config["API_PER_PAGE"], error_out=False
|
|
).items
|
|
]
|
|
|
|
|
|
class RepresentativeApi(Resource):
|
|
def get(self, representative_id):
|
|
representative = RepresentativeModel.query.get(representative_id)
|
|
if representative is None:
|
|
return None, 404
|
|
print(representative.serialize())
|
|
return representative.serialize()
|