# Copyright 2020 Coop IT Easy SCRL fs # Robin Keunen # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). from odoo import _ from odoo.fields import Date def date_validator(field, value, error): try: Date.from_string(value) except ValueError: return error( field, _("{} does not match format '%Y-%m-%d'".format(value)) ) S_MANY_2_ONE = { "type": "dict", "schema": { "id": {"type": "integer", "required": True}, "name": {"type": "string", "required": True, "empty": False}, }, } S_SUBSCRIPTION_REQUEST_GET = {"_id": {"type": "integer"}} S_SUBSCRIPTION_REQUEST_RETURN_GET = { "id": {"type": "integer", "required": True}, "email": {"type": "string", "required": True, "empty": False}, "name": {"type": "string", "required": True, "empty": False}, "date": {"type": "string", "required": True, "empty": False}, "state": {"type": "string", "required": True, "empty": False}, "ordered_parts": {"type": "integer", "required": True}, "share_product": S_MANY_2_ONE, "address": { "type": "dict", "schema": { "street": {"type": "string", "required": True, "empty": False}, "zip_code": {"type": "string", "required": True, "empty": False}, "city": {"type": "string", "required": True, "empty": False}, "country": {"type": "string", "required": True, "empty": False}, }, }, "lang": {"type": "string", "required": True, "empty": False}, "capital_release_request": { "type": "list", "schema": {"type": "integer"}, "required": True, "empty": True, }, } S_SUBSCRIPTION_REQUEST_SEARCH = { "date_from": {"type": "string", "check_with": date_validator}, "date_to": {"type": "string", "check_with": date_validator}, } S_SUBSCRIPTION_REQUEST_RETURN_SEARCH = { "count": {"type": "integer", "required": True}, "rows": { "type": "list", "schema": { "type": "dict", "schema": S_SUBSCRIPTION_REQUEST_RETURN_GET, }, }, } S_SUBSCRIPTION_REQUEST_CREATE = { "name": {"type": "string", "required": True, "empty": False}, "email": {"type": "string", "required": True, "empty": False}, "ordered_parts": {"type": "integer", "required": True}, "share_product": {"type": "integer", "required": True}, "address": { "type": "dict", "schema": { "street": {"type": "string", "required": True, "empty": False}, "zip_code": {"type": "string", "required": True, "empty": False}, "city": {"type": "string", "required": True, "empty": False}, "country": {"type": "string", "required": True, "empty": False}, }, }, "lang": {"type": "string", "required": True, "empty": False}, } S_SUBSCRIPTION_REQUEST_UPDATE = { "name": {"type": "string"}, "email": {"type": "string"}, "ordered_parts": {"type": "integer"}, "state": {"type": "string"}, "address": { "type": "dict", "schema": { "street": {"type": "string"}, "zip_code": {"type": "string"}, "city": {"type": "string"}, "country": {"type": "string"}, }, }, "lang": {"type": "string"}, "share_product": {"type": "integer"}, } S_SUBSCRIPTION_REQUEST_VALIDATE = {"_id": {"type": "integer"}} S_INVOICE_GET = {"_id": {"type": "integer"}} S_INVOICE_LINE_RETURN_GET = { "type": "list", "schema": { "type": "dict", "schema": { "name": {"type": "string", "required": True}, "account": S_MANY_2_ONE, "product": S_MANY_2_ONE, "quantity": {"type": "float", "required": True}, "price_unit": {"type": "float", "required": True}, }, }, "required": True, "empty": True, } S_INVOICE_RETURN_GET = { "id": {"type": "integer", "required": True}, "name": {"type": "string", "required": True, "empty": False}, "state": {"type": "string", "required": True, "empty": False}, "type": {"type": "string", "required": True, "empty": False}, "date": {"type": "string", "required": True, "empty": False}, "date_due": {"type": "string", "required": True, "empty": False}, "date_invoice": {"type": "string", "required": True, "empty": False}, "partner": S_MANY_2_ONE, "journal": S_MANY_2_ONE, "account": S_MANY_2_ONE, "subscription_request": { "type": "dict", "schema": {"id": {"type": "integer"}, "name": {"type": "string"}}, }, "invoice_lines": S_INVOICE_LINE_RETURN_GET, }