# 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()