From 820e253a12661b25aab8574217ade5bdd9a610ae Mon Sep 17 00:00:00 2001 From: Cayo Puigdefabregas Date: Tue, 17 Nov 2020 13:19:50 +0100 Subject: [PATCH] new version of rent as asigned --- ereuse_devicehub/resources/action/models.py | 8 +++++ ereuse_devicehub/resources/action/schemas.py | 8 +++++ .../resources/rent/definitions.py | 34 +++---------------- ereuse_devicehub/resources/rent/model.py | 0 ereuse_devicehub/resources/rent/views.py | 30 ++++++++++++++++ 5 files changed, 50 insertions(+), 30 deletions(-) delete mode 100644 ereuse_devicehub/resources/rent/model.py diff --git a/ereuse_devicehub/resources/action/models.py b/ereuse_devicehub/resources/action/models.py index a0d38e14..e75964bf 100644 --- a/ereuse_devicehub/resources/action/models.py +++ b/ereuse_devicehub/resources/action/models.py @@ -1472,6 +1472,14 @@ class MigrateFrom(Migrate): pass +class Assigned(JoinedTableMixin, ActionWithMultipleDevices): + """The act of assigned one list of devices to one person of the system or not + """ + assigned = Column(CIText(), default='', nullable=True) + assigned.comment = """ This is a internal code for mainteing the secrets of the personal datas of the new holder """ + n_beneficiaries = Column(Numeric(precision=4), check_range('n_beneficiaries', 0), nullable=False) + + # Listeners # Listeners validate values and keep relationships synced diff --git a/ereuse_devicehub/resources/action/schemas.py b/ereuse_devicehub/resources/action/schemas.py index 99234a7a..48ae5970 100644 --- a/ereuse_devicehub/resources/action/schemas.py +++ b/ereuse_devicehub/resources/action/schemas.py @@ -457,3 +457,11 @@ class MigrateFrom(Migrate): class Transferred(ActionWithMultipleDevices): __doc__ = m.Transferred.__doc__ + +class Assigned(ActionWithMultipleDevices): + __doc__ = m.Assigned.__doc__ + shipping_date = DateTime(data_key='shippingDate') + invoice_number = SanitizedStr(validate=Length(max=STR_SIZE), data_key='invoiceNumber') + price = NestedOn(Price) + to = NestedOn(s_agent.Agent, only_query='id', required=True, comment=m.Trade.to_comment) + confirms = NestedOn(Organize) diff --git a/ereuse_devicehub/resources/rent/definitions.py b/ereuse_devicehub/resources/rent/definitions.py index 8f2ee535..e87e0f72 100644 --- a/ereuse_devicehub/resources/rent/definitions.py +++ b/ereuse_devicehub/resources/rent/definitions.py @@ -1,34 +1,8 @@ -from typing import Callable, Iterable, Tuple -from flask import g -from flask.json import jsonify -from ereuse_devicehub.resources import action as act -from ereuse_devicehub.resources.action.models import Rent -from ereuse_devicehub.resources.device.models import Device -from teal.resource import Converters, Resource, View -from ereuse_devicehub import auth -from ereuse_devicehub.query import things_response - - -class RentingView(View): - @auth.Auth.requires_auth - def get(self, id): - return super().get(id) - - @auth.Auth.requires_auth - def post(self): - """ Create one rent """ - return jsonify('ok') - - def find(self, args: dict): - rents = Rent.query.filter() \ - .order_by(Rent.created.desc()) \ - .paginate(per_page=200) - return things_response( - self.schema.dump(rents.items, many=True, nested=0), - rents.page, rents.per_page, rents.total, rents.prev_num, rents.next_num - ) +from ereuse_devicehub.resources.action import schemas +from teal.resource import Resource +from ereuse_devicehub.resources.rent.views import RentingView class RentDef(Resource): VIEW = RentingView - SCHEMA = act.schemas.Rent + SCHEMA = schemas.Assigned diff --git a/ereuse_devicehub/resources/rent/model.py b/ereuse_devicehub/resources/rent/model.py deleted file mode 100644 index e69de29b..00000000 diff --git a/ereuse_devicehub/resources/rent/views.py b/ereuse_devicehub/resources/rent/views.py index e69de29b..0b5659d6 100644 --- a/ereuse_devicehub/resources/rent/views.py +++ b/ereuse_devicehub/resources/rent/views.py @@ -0,0 +1,30 @@ +# from typing import Callable, Iterable, Tuple +# from flask import g +# from flask.json import jsonify +from teal.resource import View + +from ereuse_devicehub import auth +from ereuse_devicehub.query import things_response +from ereuse_devicehub.resources.action.models import Assigned + +class RentingView(View): + @auth.Auth.requires_auth + def get(self, id): + return super().get(id) + + @auth.Auth.requires_auth + def post(self): + """ Create one rent """ + return super().get(id) + # return jsonify('ok') + + def find(self, args: dict): + rents = Assigned.query.filter() \ + .order_by(Assigned.created.desc()) \ + .paginate(per_page=200) + return things_response( + self.schema.dump(rents.items, many=True, nested=0), + rents.page, rents.per_page, rents.total, rents.prev_num, rents.next_num + ) + +