fix: representative API

This commit is contained in:
Mindiell 2022-08-04 07:24:47 +02:00
parent 77d0b98641
commit 8a48b73eae
3 changed files with 49 additions and 5 deletions

View File

@ -22,10 +22,45 @@ class RepresentativesApi(Resource):
),
))
query = query.order_by(RepresentativeModel.last_name)
print(request.args.get("name"))
print(query)
return [
representative.serialize()
{
"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

View File

@ -24,7 +24,10 @@ class MembershipModel(db.Model, Model):
class AdminView(View):
column_filters = ["entity.name", "entity.type.name", "role.name", "start", "end", "active"]
column_filters = [
"entity.name", "entity.type.name", "representative.full_name", "role.name",
"start", "end", "active",
]
admin.add_view(

View File

@ -3,6 +3,8 @@
from app import admin, db
from app.model.model import Model, View
from sqlalchemy.ext.hybrid import hybrid_property
class RepresentativeModel(db.Model, Model):
__tablename__ = "representative"
@ -23,8 +25,12 @@ class RepresentativeModel(db.Model, Model):
)
picture = db.Column(db.String(200))
@hybrid_property
def full_name(self):
return self.first_name + " " + self.last_name
def __repr__(self):
return f"{self.last_name.upper()} {self.first_name.capitalize()}"
return f"{self.first_name.capitalize()} {self.last_name.upper()}"
class AdminView(View):