Skip to content

Commit d4fa132

Browse files
qgroulardmarielejeune
authored andcommitted
[PORT] Port event_rest_api from OCA to mozaik
From OCA/event#247
1 parent d363644 commit d4fa132

18 files changed

+407
-50
lines changed

mozaik_event_rest/__manifest__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@
1010
"author": "ACSONE SA/NV",
1111
"website": "https://github.com/OCA/mozaik",
1212
"depends": [
13-
"event_rest_api",
13+
"base_rest",
14+
"base_rest_pydantic",
1415
"event_sale",
16+
"extendable",
1517
"mozaik_address",
1618
"mozaik_ama_indexed_on_website",
1719
"mozaik_event_image",

mozaik_event_rest/pydantic_models/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
from . import event_info
22
from . import event_question_answer
33
from . import event_question_info
4+
from . import event_registration_info
45
from . import event_registration_request
56
from . import event_search_filter
67
from . import event_stage_info
78
from . import event_stage_search_filter
89
from . import event_ticket_info
10+
from . import event_type_info
11+
from . import event_type_search_filter
912
from . import event_website_domain_info
1013
from . import event_website_domain_search_filter
1114
from . import partner_address_info

mozaik_event_rest/pydantic_models/event_info.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,37 @@
11
# Copyright 2021 ACSONE SA/NV
22
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
33

4-
from datetime import date
4+
from datetime import date, datetime
55
from typing import List
66

77
import pydantic
8+
from extendable_pydantic import ExtendableModelMeta
9+
from pydantic import BaseModel
810

9-
from odoo.addons.event_rest_api.pydantic_models.event_info import (
10-
EventInfo as BaseEventInfo,
11-
EventShortInfo as BaseEventShortInfo,
12-
)
1311
from odoo.addons.mozaik_thesaurus_api.pydantic_models.thesaurus_term_info import (
1412
ThesaurusTermInfo,
1513
)
14+
from odoo.addons.pydantic import utils
1615

1716
from .event_question_info import EventQuestionInfo
17+
from .event_stage_info import EventStageInfo
18+
from .event_ticket_info import EventTicketInfo
19+
from .event_type_info import EventTypeInfo
1820
from .event_website_domain_info import EventWebsiteDomainInfo
1921
from .partner_address_info import PartnerAddressInfo
2022
from .partner_minimum_info import PartnerMinimumInfo
2123

2224

23-
class EventShortInfo(BaseEventShortInfo, extends=BaseEventShortInfo):
25+
class EventShortInfo(BaseModel, metaclass=ExtendableModelMeta):
26+
27+
id: int
28+
name: str
29+
date_begin: datetime
30+
date_end: datetime
31+
event_type: EventTypeInfo = pydantic.Field(None, alias="event_type_id")
32+
stage: EventStageInfo = pydantic.Field(None, alias="stage_id")
33+
note: str = None
34+
write_date: datetime
2435
image_url: str
2536
interests: List[ThesaurusTermInfo] = pydantic.Field([], alias="interest_ids")
2637
address: PartnerAddressInfo = pydantic.Field(None, alias="address_id")
@@ -35,8 +46,17 @@ class EventShortInfo(BaseEventShortInfo, extends=BaseEventShortInfo):
3546
is_published: bool = None
3647
is_headline: bool = None
3748

49+
class Config:
50+
orm_mode = True
51+
getter_dict = utils.GenericOdooGetter
52+
53+
54+
class EventInfo(EventShortInfo):
3855

39-
class EventInfo(BaseEventInfo, extends=BaseEventInfo):
56+
event_tickets: List[EventTicketInfo] = pydantic.Field([], alias="event_ticket_ids")
57+
seats_limited: bool
58+
seats_max: int = None
59+
seats_expected: int = None
4060
publish_date: date = None
4161
questions: List[EventQuestionInfo] = pydantic.Field([], alias="question_ids")
4262
menu_register_cta: bool = None
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Copyright 2021 ACSONE SA/NV
2+
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
3+
4+
from datetime import datetime
5+
6+
import pydantic
7+
from extendable_pydantic import ExtendableModelMeta
8+
from pydantic import BaseModel
9+
10+
from odoo.addons.pydantic import utils
11+
12+
from .event_info import EventInfo
13+
from .event_ticket_info import EventTicketInfo
14+
15+
16+
class EventRegistrationInfo(BaseModel, metaclass=ExtendableModelMeta):
17+
18+
id: int
19+
partner_id: int = None
20+
firstname: str = None
21+
lastname: str = None
22+
email: str = None
23+
event: EventInfo = pydantic.Field(..., alias="event_id")
24+
event_ticket: EventTicketInfo = pydantic.Field(None, alias="event_ticket_id")
25+
write_date: datetime
26+
27+
class Config:
28+
orm_mode = True
29+
getter_dict = utils.GenericOdooGetter

mozaik_event_rest/pydantic_models/event_registration_request.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,26 @@
44
from typing import List
55

66
import pydantic
7-
8-
from odoo.addons.event_rest_api.pydantic_models.event_registration_request import (
9-
EventRegistrationRequest as BaseEventRegistrationRequest,
10-
)
7+
from extendable_pydantic import ExtendableModelMeta
8+
from pydantic import BaseModel
119

1210
from .event_question_answer import EventQuestionAnswer
1311

1412

15-
class EventRegistrationRequest(
16-
BaseEventRegistrationRequest, extends=BaseEventRegistrationRequest
17-
):
18-
# firstname, lastname and email are not mandatory anymore since we
19-
# can give registered_partner_id
13+
class EventRegistrationRequest(BaseModel, metaclass=ExtendableModelMeta):
14+
2015
firstname: str = None
2116
lastname: str = None
2217
email: str = None
23-
18+
phone: str = None
19+
mobile: str = None
20+
event_ticket_id: int = None
2421
registered_partner_id: int = None
2522
zip: str = None
2623
answers: List[EventQuestionAnswer] = pydantic.Field([])
2724
force_autoval: bool = False
25+
26+
27+
class EventRegistrationRequestList(BaseModel, metaclass=ExtendableModelMeta):
28+
29+
event_registration_requests: List[EventRegistrationRequest] = []
Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
# Copyright 2021 ACSONE SA/NV
22
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
33

4+
from datetime import datetime
45
from typing import List
56

6-
from odoo.addons.event_rest_api.pydantic_models.event_search_filter import (
7-
EventSearchFilter as BaseEventSearchFilter,
8-
)
7+
from extendable_pydantic import ExtendableModelMeta
8+
from pydantic import BaseModel
99

1010

11-
class EventSearchFilter(BaseEventSearchFilter, extends=BaseEventSearchFilter):
11+
class EventSearchFilter(BaseModel, metaclass=ExtendableModelMeta):
1212

13+
id: int = None
14+
name: str = None
15+
start_after: datetime = None
16+
end_before: datetime = None
17+
event_type_ids: List[int] = None
18+
stage_ids: List[int] = None
1319
website_domain_ids: List[int] = None
1420
interest_ids: List[int] = None
1521
is_headline: bool = None

mozaik_event_rest/pydantic_models/event_stage_info.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,22 @@
22
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
33

44

5-
from odoo.addons.event_rest_api.pydantic_models.event_stage_info import (
6-
EventStageInfo as BaseEventStageInfo,
7-
)
5+
from datetime import datetime
86

7+
from extendable_pydantic import ExtendableModelMeta
8+
from pydantic import BaseModel
99

10-
class EventStageInfo(BaseEventStageInfo, extends=BaseEventStageInfo):
10+
from odoo.addons.pydantic import utils
11+
12+
13+
class EventStageInfo(BaseModel, metaclass=ExtendableModelMeta):
14+
id: int
15+
name: str
16+
sequence: int = None
17+
pipe_end: bool = None
18+
write_date: datetime
1119
draft_stage: bool
20+
21+
class Config:
22+
orm_mode = True
23+
getter_dict = utils.GenericOdooGetter
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# Copyright 2021 ACSONE SA/NV
22
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
33

4-
from odoo.addons.event_rest_api.pydantic_models.event_stage_search_filter import (
5-
EventStageSearchFilter as BaseEventStageSearchFilter,
6-
)
4+
from extendable_pydantic import ExtendableModelMeta
5+
from pydantic import BaseModel
76

87

9-
class EventStageSearchFilter(
10-
BaseEventStageSearchFilter, extends=BaseEventStageSearchFilter
11-
):
8+
class EventStageSearchFilter(BaseModel, metaclass=ExtendableModelMeta):
129

10+
id: int = None
11+
name: str = None
12+
pipe_end: bool = None
1313
draft_stage: bool = None

mozaik_event_rest/pydantic_models/event_ticket_info.py

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,25 @@
22
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
33

44

5-
from odoo.addons.event_rest_api.pydantic_models.event_ticket_info import (
6-
EventTicketInfo as BaseEventTicketInfo,
7-
)
5+
from datetime import date, datetime
86

7+
from extendable_pydantic import ExtendableModelMeta
8+
from pydantic import BaseModel
99

10-
class EventTicketInfo(BaseEventTicketInfo, extends=BaseEventTicketInfo):
10+
from odoo.addons.pydantic import utils
11+
12+
13+
class EventTicketInfo(BaseModel, metaclass=ExtendableModelMeta):
14+
id: int
15+
event_id: int
16+
name: str
17+
description: str = None
18+
start_sale_date: date = None
19+
end_sale_date: date = None
20+
seats_available: int = None
21+
write_date: datetime
1122
price: float = None
23+
24+
class Config:
25+
orm_mode = True
26+
getter_dict = utils.GenericOdooGetter
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Copyright 2021 ACSONE SA/NV
2+
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
3+
4+
from datetime import datetime
5+
6+
from extendable_pydantic import ExtendableModelMeta
7+
from pydantic import BaseModel
8+
9+
from odoo.addons.pydantic import utils
10+
11+
12+
class EventTypeInfo(BaseModel, metaclass=ExtendableModelMeta):
13+
id: int
14+
name: str
15+
write_date: datetime
16+
17+
class Config:
18+
orm_mode = True
19+
getter_dict = utils.GenericOdooGetter

0 commit comments

Comments
 (0)