eetlijst-python 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eetlijst/__init__.py +3 -0
- eetlijst/eetlijst.py +37 -0
- eetlijst/exceptions.py +2 -0
- eetlijst/generated/__init__.py +1153 -0
- eetlijst/generated/all_attendances.py +13 -0
- eetlijst/generated/all_events.py +13 -0
- eetlijst/generated/all_expenses.py +13 -0
- eetlijst/generated/all_groups.py +27 -0
- eetlijst/generated/all_settlements.py +13 -0
- eetlijst/generated/all_users_in_group.py +20 -0
- eetlijst/generated/app_status.py +16 -0
- eetlijst/generated/async_base_client.py +393 -0
- eetlijst/generated/automatic_events.py +18 -0
- eetlijst/generated/base_model.py +28 -0
- eetlijst/generated/client.py +1748 -0
- eetlijst/generated/create_expense.py +15 -0
- eetlijst/generated/create_group.py +15 -0
- eetlijst/generated/create_list_item.py +15 -0
- eetlijst/generated/create_many_list_items.py +20 -0
- eetlijst/generated/create_settlement.py +15 -0
- eetlijst/generated/enums.py +555 -0
- eetlijst/generated/exceptions.py +83 -0
- eetlijst/generated/fragments.py +237 -0
- eetlijst/generated/get_attendance.py +17 -0
- eetlijst/generated/get_event.py +15 -0
- eetlijst/generated/get_group.py +20 -0
- eetlijst/generated/get_user.py +13 -0
- eetlijst/generated/get_user_in_group.py +20 -0
- eetlijst/generated/group_total_expense.py +45 -0
- eetlijst/generated/input_types.py +4702 -0
- eetlijst/generated/join_group.py +17 -0
- eetlijst/generated/list_items.py +13 -0
- eetlijst/generated/remove_account.py +16 -0
- eetlijst/generated/settle_unsettled_expenses.py +21 -0
- eetlijst/generated/settlement_expenses.py +13 -0
- eetlijst/generated/update_attendance.py +17 -0
- eetlijst/generated/update_event.py +15 -0
- eetlijst/generated/update_expense.py +20 -0
- eetlijst/generated/update_expense_distribution.py +23 -0
- eetlijst/generated/update_group.py +15 -0
- eetlijst/generated/update_list_item.py +15 -0
- eetlijst/generated/update_many_attendance.py +22 -0
- eetlijst/generated/update_user.py +15 -0
- eetlijst/generated/update_user_in_group.py +17 -0
- eetlijst/generated/update_users_in_group.py +25 -0
- eetlijst/services/__init__.py +9 -0
- eetlijst/services/app/__init__.py +1 -0
- eetlijst/services/app/app.py +20 -0
- eetlijst/services/app/transformers.py +10 -0
- eetlijst/services/event_attendance/__init__.py +1 -0
- eetlijst/services/event_attendance/event_attendance.py +94 -0
- eetlijst/services/event_attendance/transformers.py +58 -0
- eetlijst/services/events/__init__.py +1 -0
- eetlijst/services/events/events.py +148 -0
- eetlijst/services/events/transformers.py +67 -0
- eetlijst/services/expenses/__init__.py +1 -0
- eetlijst/services/expenses/expenses.py +98 -0
- eetlijst/services/expenses/transformers.py +73 -0
- eetlijst/services/expenses/utils.py +31 -0
- eetlijst/services/group_list/__init__.py +1 -0
- eetlijst/services/group_list/group_list.py +95 -0
- eetlijst/services/group_list/transformers.py +38 -0
- eetlijst/services/group_users/__init__.py +1 -0
- eetlijst/services/group_users/group_users.py +130 -0
- eetlijst/services/group_users/transformers.py +84 -0
- eetlijst/services/groups/__init__.py +1 -0
- eetlijst/services/groups/groups.py +84 -0
- eetlijst/services/groups/transformers.py +140 -0
- eetlijst/services/settlements/__init__.py +1 -0
- eetlijst/services/settlements/settlements.py +225 -0
- eetlijst/services/settlements/transformers.py +95 -0
- eetlijst/services/settlements/utils.py +84 -0
- eetlijst/services/users/__init__.py +1 -0
- eetlijst/services/users/transformers.py +103 -0
- eetlijst/services/users/users.py +44 -0
- eetlijst/utils/__init__.py +0 -0
- eetlijst/utils/datetime.py +25 -0
- eetlijst_python-0.0.1.dist-info/METADATA +80 -0
- eetlijst_python-0.0.1.dist-info/RECORD +81 -0
- eetlijst_python-0.0.1.dist-info/WHEEL +5 -0
- eetlijst_python-0.0.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from pydantic import Field
|
|
4
|
+
|
|
5
|
+
from .base_model import BaseModel
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class JoinGroup(BaseModel):
|
|
9
|
+
join_group: Optional["JoinGroupJoinGroup"] = Field(alias="joinGroup")
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class JoinGroupJoinGroup(BaseModel):
|
|
13
|
+
accepted: bool
|
|
14
|
+
error: Optional[str]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
JoinGroup.model_rebuild()
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class RemoveAccount(BaseModel):
|
|
7
|
+
update_eetschema_user_by_pk: Optional["RemoveAccountUpdateEetschemaUserByPk"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class RemoveAccountUpdateEetschemaUserByPk(BaseModel):
|
|
11
|
+
reason_to_remove_account_text: Optional[str]
|
|
12
|
+
reason_to_remove_account_selection: Optional[list[str]]
|
|
13
|
+
reason_to_remove_account_selection_all_options: Optional[list[str]]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
RemoveAccount.model_rebuild()
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import ExpenseFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class SettleUnsettledExpenses(BaseModel):
|
|
8
|
+
update_eetschema_expense: Optional["SettleUnsettledExpensesUpdateEetschemaExpense"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class SettleUnsettledExpensesUpdateEetschemaExpense(BaseModel):
|
|
12
|
+
number_expenses: int
|
|
13
|
+
expenses: list["SettleUnsettledExpensesUpdateEetschemaExpenseExpenses"]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class SettleUnsettledExpensesUpdateEetschemaExpenseExpenses(ExpenseFields):
|
|
17
|
+
pass
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
SettleUnsettledExpenses.model_rebuild()
|
|
21
|
+
SettleUnsettledExpensesUpdateEetschemaExpense.model_rebuild()
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
from .base_model import BaseModel
|
|
2
|
+
from .fragments import ExpenseFields
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class SettlementExpenses(BaseModel):
|
|
6
|
+
eetschema_expense: list["SettlementExpensesEetschemaExpense"]
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class SettlementExpensesEetschemaExpense(ExpenseFields):
|
|
10
|
+
pass
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
SettlementExpenses.model_rebuild()
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import AttendanceFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateAttendance(BaseModel):
|
|
8
|
+
update_eetschema_event_attendees_by_pk: Optional[
|
|
9
|
+
"UpdateAttendanceUpdateEetschemaEventAttendeesByPk"
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UpdateAttendanceUpdateEetschemaEventAttendeesByPk(AttendanceFields):
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
UpdateAttendance.model_rebuild()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import EventFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateEvent(BaseModel):
|
|
8
|
+
update_eetschema_event_by_pk: Optional["UpdateEventUpdateEetschemaEventByPk"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UpdateEventUpdateEetschemaEventByPk(EventFields):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
UpdateEvent.model_rebuild()
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import ExpenseFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateExpense(BaseModel):
|
|
8
|
+
update_eetschema_expense: Optional["UpdateExpenseUpdateEetschemaExpense"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UpdateExpenseUpdateEetschemaExpense(BaseModel):
|
|
12
|
+
returning: list["UpdateExpenseUpdateEetschemaExpenseReturning"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class UpdateExpenseUpdateEetschemaExpenseReturning(ExpenseFields):
|
|
16
|
+
pass
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
UpdateExpense.model_rebuild()
|
|
20
|
+
UpdateExpenseUpdateEetschemaExpense.model_rebuild()
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class UpdateExpenseDistribution(BaseModel):
|
|
7
|
+
delete_eetschema_expense_distribution: Optional[
|
|
8
|
+
"UpdateExpenseDistributionDeleteEetschemaExpenseDistribution"
|
|
9
|
+
]
|
|
10
|
+
insert_eetschema_expense_distribution: Optional[
|
|
11
|
+
"UpdateExpenseDistributionInsertEetschemaExpenseDistribution"
|
|
12
|
+
]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class UpdateExpenseDistributionDeleteEetschemaExpenseDistribution(BaseModel):
|
|
16
|
+
affected_rows: int
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class UpdateExpenseDistributionInsertEetschemaExpenseDistribution(BaseModel):
|
|
20
|
+
affected_rows: int
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
UpdateExpenseDistribution.model_rebuild()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import GroupFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateGroup(BaseModel):
|
|
8
|
+
group: Optional["UpdateGroupGroup"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UpdateGroupGroup(GroupFields):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
UpdateGroup.model_rebuild()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import ItemFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateListItem(BaseModel):
|
|
8
|
+
update_eetschema_list_by_pk: Optional["UpdateListItemUpdateEetschemaListByPk"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UpdateListItemUpdateEetschemaListByPk(ItemFields):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
UpdateListItem.model_rebuild()
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import AttendanceFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateManyAttendance(BaseModel):
|
|
8
|
+
insert_eetschema_event_attendees: Optional[
|
|
9
|
+
"UpdateManyAttendanceInsertEetschemaEventAttendees"
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UpdateManyAttendanceInsertEetschemaEventAttendees(BaseModel):
|
|
14
|
+
returning: list["UpdateManyAttendanceInsertEetschemaEventAttendeesReturning"]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class UpdateManyAttendanceInsertEetschemaEventAttendeesReturning(AttendanceFields):
|
|
18
|
+
pass
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
UpdateManyAttendance.model_rebuild()
|
|
22
|
+
UpdateManyAttendanceInsertEetschemaEventAttendees.model_rebuild()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import UserFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateUser(BaseModel):
|
|
8
|
+
update_eetschema_user_by_pk: Optional["UpdateUserUpdateEetschemaUserByPk"]
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class UpdateUserUpdateEetschemaUserByPk(UserFields):
|
|
12
|
+
pass
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
UpdateUser.model_rebuild()
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import UserInGroupFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateUserInGroup(BaseModel):
|
|
8
|
+
update_eetschema_users_in_group_by_pk: Optional[
|
|
9
|
+
"UpdateUserInGroupUpdateEetschemaUsersInGroupByPk"
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UpdateUserInGroupUpdateEetschemaUsersInGroupByPk(UserInGroupFields):
|
|
14
|
+
pass
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
UpdateUserInGroup.model_rebuild()
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from .base_model import BaseModel
|
|
4
|
+
from .fragments import UserInGroupFields
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class UpdateUsersInGroup(BaseModel):
|
|
8
|
+
update_eetschema_users_in_group_many: Optional[
|
|
9
|
+
list[Optional["UpdateUsersInGroupUpdateEetschemaUsersInGroupMany"]]
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class UpdateUsersInGroupUpdateEetschemaUsersInGroupMany(BaseModel):
|
|
14
|
+
number_users_in_group: int
|
|
15
|
+
users_in_group: list[
|
|
16
|
+
"UpdateUsersInGroupUpdateEetschemaUsersInGroupManyUsersInGroup"
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class UpdateUsersInGroupUpdateEetschemaUsersInGroupManyUsersInGroup(UserInGroupFields):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
UpdateUsersInGroup.model_rebuild()
|
|
25
|
+
UpdateUsersInGroupUpdateEetschemaUsersInGroupMany.model_rebuild()
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from .app import App
|
|
2
|
+
from .event_attendance import EventAttendance
|
|
3
|
+
from .events import Events
|
|
4
|
+
from .expenses import Expenses
|
|
5
|
+
from .group_list import GroupList
|
|
6
|
+
from .group_users import GroupUsers
|
|
7
|
+
from .groups import Groups
|
|
8
|
+
from .settlements import Settlements
|
|
9
|
+
from .users import Users
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .app import App
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
|
|
3
|
+
from eetlijst.generated import GraphQlClient
|
|
4
|
+
|
|
5
|
+
from eetlijst.exceptions import EetlijstException
|
|
6
|
+
|
|
7
|
+
from eetlijst.services.app.transformers import transform_app_status
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@dataclass
|
|
11
|
+
class App:
|
|
12
|
+
_client: GraphQlClient
|
|
13
|
+
|
|
14
|
+
async def status(self):
|
|
15
|
+
result = await self._client.app_status()
|
|
16
|
+
|
|
17
|
+
if not result or not result.eetschema_app_status:
|
|
18
|
+
raise EetlijstException("App status not found")
|
|
19
|
+
|
|
20
|
+
return transform_app_status(result)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
from eetlijst.generated.app_status import AppStatus, AppStatusEetschemaAppStatus
|
|
2
|
+
|
|
3
|
+
from eetlijst.exceptions import EetlijstException
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def transform_app_status(status: AppStatus) -> AppStatusEetschemaAppStatus:
|
|
7
|
+
if not status.eetschema_app_status:
|
|
8
|
+
raise EetlijstException("App status not found")
|
|
9
|
+
|
|
10
|
+
return status.eetschema_app_status[0]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .event_attendance import EventAttendance
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
|
|
3
|
+
from eetlijst.generated import GraphQlClient
|
|
4
|
+
from eetlijst.generated.base_model import UNSET, UnsetType
|
|
5
|
+
from eetlijst.generated.enums import AttendanceStatus
|
|
6
|
+
from eetlijst.generated.input_types import (
|
|
7
|
+
eetschema_event_attendees_bool_exp,
|
|
8
|
+
eetschema_event_attendees_insert_input,
|
|
9
|
+
eetschema_event_attendees_order_by,
|
|
10
|
+
eetschema_event_attendees_set_input,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
from .transformers import (
|
|
14
|
+
transform_attendance,
|
|
15
|
+
transform_update_attendance,
|
|
16
|
+
transform_update_many_attendance,
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class EventAttendceAttend(eetschema_event_attendees_insert_input):
|
|
21
|
+
user_id: str
|
|
22
|
+
event_id: str
|
|
23
|
+
status: AttendanceStatus
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class EventAttendceUpdate(eetschema_event_attendees_set_input):
|
|
27
|
+
user_id: str
|
|
28
|
+
event_id: str
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass
|
|
32
|
+
class EventAttendance:
|
|
33
|
+
_client: GraphQlClient
|
|
34
|
+
|
|
35
|
+
async def get(
|
|
36
|
+
self,
|
|
37
|
+
event_id: str,
|
|
38
|
+
user_id: str,
|
|
39
|
+
):
|
|
40
|
+
result = await self._client.get_attendance(event_id, user_id)
|
|
41
|
+
return transform_attendance(result.eetschema_event_attendees_by_pk)
|
|
42
|
+
|
|
43
|
+
async def all(
|
|
44
|
+
self,
|
|
45
|
+
where: eetschema_event_attendees_bool_exp | UnsetType | None = UNSET,
|
|
46
|
+
order: list[eetschema_event_attendees_order_by] | UnsetType | None = UNSET,
|
|
47
|
+
limit: int | UnsetType | None = UNSET,
|
|
48
|
+
):
|
|
49
|
+
result = await self._client.all_attendances(where, order, limit)
|
|
50
|
+
return [
|
|
51
|
+
transform_attendance(attendee)
|
|
52
|
+
for attendee in result.eetschema_event_attendees
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
async def attend(self, data: EventAttendceAttend):
|
|
56
|
+
return await self.update_many([data])
|
|
57
|
+
|
|
58
|
+
async def update(self, data: EventAttendceUpdate):
|
|
59
|
+
result = await self._client.update_attendance(data.event_id, data.user_id, data)
|
|
60
|
+
return transform_update_attendance(result)
|
|
61
|
+
|
|
62
|
+
async def update_many(self, data: list[eetschema_event_attendees_insert_input]):
|
|
63
|
+
result = await self._client.update_many_attendance(data)
|
|
64
|
+
return transform_update_many_attendance(result)
|
|
65
|
+
|
|
66
|
+
async def comment(self, user_id: str, event_id: str, comment: str | None):
|
|
67
|
+
return await self.update(
|
|
68
|
+
EventAttendceUpdate(
|
|
69
|
+
user_id=user_id,
|
|
70
|
+
event_id=event_id,
|
|
71
|
+
comment=comment,
|
|
72
|
+
)
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
async def status(
|
|
76
|
+
self, user_id: str, event_id: str, status: AttendanceStatus | None
|
|
77
|
+
):
|
|
78
|
+
return await self.update(
|
|
79
|
+
EventAttendceUpdate(
|
|
80
|
+
user_id=user_id,
|
|
81
|
+
event_id=event_id,
|
|
82
|
+
status=status,
|
|
83
|
+
user_changed_status=True,
|
|
84
|
+
)
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
async def guests(self, user_id: str, event_id: str, guests: int | None):
|
|
88
|
+
return await self.update(
|
|
89
|
+
EventAttendceUpdate(
|
|
90
|
+
user_id=user_id,
|
|
91
|
+
event_id=event_id,
|
|
92
|
+
number_guests=guests,
|
|
93
|
+
)
|
|
94
|
+
)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
from eetlijst.generated.base_model import BaseModel
|
|
5
|
+
from eetlijst.generated.enums import AttendanceStatus
|
|
6
|
+
from eetlijst.generated.fragments import (
|
|
7
|
+
AttendanceFields,
|
|
8
|
+
AttendanceFieldsLinkedEvent,
|
|
9
|
+
AttendanceFieldsUserInGroup,
|
|
10
|
+
)
|
|
11
|
+
from eetlijst.generated.update_attendance import UpdateAttendance
|
|
12
|
+
from eetlijst.generated.update_many_attendance import UpdateManyAttendance
|
|
13
|
+
|
|
14
|
+
from eetlijst.exceptions import EetlijstException
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class Attendance(BaseModel):
|
|
18
|
+
created_at: datetime
|
|
19
|
+
updated_at: datetime
|
|
20
|
+
comment: Optional[str]
|
|
21
|
+
number_guests: int
|
|
22
|
+
status: AttendanceStatus
|
|
23
|
+
event: AttendanceFieldsLinkedEvent
|
|
24
|
+
user: Optional[AttendanceFieldsUserInGroup]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def transform_attendance(attendance: Optional[AttendanceFields]) -> Attendance:
|
|
28
|
+
if not attendance:
|
|
29
|
+
raise EetlijstException("Attendance not found")
|
|
30
|
+
|
|
31
|
+
data = attendance.model_dump()
|
|
32
|
+
|
|
33
|
+
# 'linked_event' -> 'event'
|
|
34
|
+
if "linked_event" in data:
|
|
35
|
+
data["event"] = data.pop("linked_event")
|
|
36
|
+
|
|
37
|
+
# 'user_in_group' -> 'user'
|
|
38
|
+
if "user_in_group" in data:
|
|
39
|
+
data["user"] = data.pop("user_in_group")
|
|
40
|
+
|
|
41
|
+
return Attendance(**data)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def transform_update_attendance(update: UpdateAttendance):
|
|
45
|
+
if not update.update_eetschema_event_attendees_by_pk:
|
|
46
|
+
raise EetlijstException("Failed to update attendance")
|
|
47
|
+
|
|
48
|
+
return transform_attendance(update.update_eetschema_event_attendees_by_pk)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def transform_update_many_attendance(updates: UpdateManyAttendance):
|
|
52
|
+
if not updates.insert_eetschema_event_attendees:
|
|
53
|
+
raise EetlijstException("Failed to update attendance")
|
|
54
|
+
|
|
55
|
+
return [
|
|
56
|
+
transform_attendance(update)
|
|
57
|
+
for update in updates.insert_eetschema_event_attendees.returning
|
|
58
|
+
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .events import Events
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
|
|
4
|
+
from eetlijst.generated import GraphQlClient, order_by
|
|
5
|
+
from eetlijst.generated.input_types import (
|
|
6
|
+
eetschema_event_bool_exp,
|
|
7
|
+
eetschema_event_order_by,
|
|
8
|
+
eetschema_event_set_input,
|
|
9
|
+
uuid_comparison_exp,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from eetlijst.services.event_attendance import EventAttendance
|
|
13
|
+
|
|
14
|
+
from eetlijst.utils.datetime import current_datetime, format_date
|
|
15
|
+
|
|
16
|
+
from .transformers import (
|
|
17
|
+
transform_automatic_events,
|
|
18
|
+
transform_event,
|
|
19
|
+
transform_update_event,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass
|
|
24
|
+
class Events:
|
|
25
|
+
_client: GraphQlClient
|
|
26
|
+
attendance: EventAttendance
|
|
27
|
+
|
|
28
|
+
async def populate_dinners(self, group_id: str, date: datetime | str):
|
|
29
|
+
result = await self._client.automatic_events(
|
|
30
|
+
group_id,
|
|
31
|
+
format_date(date),
|
|
32
|
+
)
|
|
33
|
+
return transform_automatic_events(result)
|
|
34
|
+
|
|
35
|
+
async def get(
|
|
36
|
+
self,
|
|
37
|
+
event_id: str,
|
|
38
|
+
include_attendees: bool = False,
|
|
39
|
+
include_expenses: bool = False,
|
|
40
|
+
):
|
|
41
|
+
result = await self._client.get_event(
|
|
42
|
+
event_id,
|
|
43
|
+
include_attendees,
|
|
44
|
+
include_expenses,
|
|
45
|
+
)
|
|
46
|
+
return transform_event(result.eetschema_event_by_pk)
|
|
47
|
+
|
|
48
|
+
async def all(
|
|
49
|
+
self,
|
|
50
|
+
group_id: str,
|
|
51
|
+
where: eetschema_event_bool_exp | None = None,
|
|
52
|
+
order: list[eetschema_event_order_by] | None = None,
|
|
53
|
+
limit: int | None = None,
|
|
54
|
+
include_attendees: bool = False,
|
|
55
|
+
include_expenses: bool = False,
|
|
56
|
+
):
|
|
57
|
+
if where is not None:
|
|
58
|
+
where_data = where.model_copy(
|
|
59
|
+
update={"group_id": uuid_comparison_exp(_eq=group_id)}
|
|
60
|
+
)
|
|
61
|
+
else:
|
|
62
|
+
where_data = eetschema_event_bool_exp(
|
|
63
|
+
group_id=uuid_comparison_exp(_eq=group_id)
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
order_data = order
|
|
67
|
+
if order is None:
|
|
68
|
+
order_data = [eetschema_event_order_by(start_date=order_by.desc)]
|
|
69
|
+
|
|
70
|
+
result = await self._client.all_events(
|
|
71
|
+
where_data,
|
|
72
|
+
order_data,
|
|
73
|
+
limit,
|
|
74
|
+
include_attendees,
|
|
75
|
+
include_expenses,
|
|
76
|
+
)
|
|
77
|
+
return [transform_event(event) for event in result.eetschema_event]
|
|
78
|
+
|
|
79
|
+
async def update(
|
|
80
|
+
self,
|
|
81
|
+
event_id: str,
|
|
82
|
+
data: eetschema_event_set_input,
|
|
83
|
+
include_attendees: bool = False,
|
|
84
|
+
include_expenses: bool = False,
|
|
85
|
+
):
|
|
86
|
+
result = await self._client.update_event(
|
|
87
|
+
event_id,
|
|
88
|
+
data,
|
|
89
|
+
include_attendees,
|
|
90
|
+
include_expenses,
|
|
91
|
+
)
|
|
92
|
+
return transform_update_event(result)
|
|
93
|
+
|
|
94
|
+
async def close(
|
|
95
|
+
self,
|
|
96
|
+
event_id: str,
|
|
97
|
+
closed_by: str,
|
|
98
|
+
include_attendees: bool = False,
|
|
99
|
+
include_expenses: bool = False,
|
|
100
|
+
):
|
|
101
|
+
return await self.update(
|
|
102
|
+
event_id,
|
|
103
|
+
eetschema_event_set_input(
|
|
104
|
+
open=False,
|
|
105
|
+
changed_signup_time=True,
|
|
106
|
+
closed_by=closed_by,
|
|
107
|
+
signup_deadline=current_datetime(),
|
|
108
|
+
),
|
|
109
|
+
include_attendees,
|
|
110
|
+
include_expenses,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
async def open(
|
|
114
|
+
self,
|
|
115
|
+
event_id: str,
|
|
116
|
+
include_attendees: bool = False,
|
|
117
|
+
include_expenses: bool = False,
|
|
118
|
+
):
|
|
119
|
+
return await self.update(
|
|
120
|
+
event_id,
|
|
121
|
+
eetschema_event_set_input(
|
|
122
|
+
open=True,
|
|
123
|
+
changed_signup_time=True,
|
|
124
|
+
signup_deadline=current_datetime(),
|
|
125
|
+
),
|
|
126
|
+
include_attendees,
|
|
127
|
+
include_expenses,
|
|
128
|
+
)
|
|
129
|
+
|
|
130
|
+
async def close_at(
|
|
131
|
+
self,
|
|
132
|
+
event_id: str,
|
|
133
|
+
closed_by: str,
|
|
134
|
+
signup_deadline: datetime,
|
|
135
|
+
include_attendees: bool = False,
|
|
136
|
+
include_expenses: bool = False,
|
|
137
|
+
):
|
|
138
|
+
return await self.update(
|
|
139
|
+
event_id,
|
|
140
|
+
eetschema_event_set_input(
|
|
141
|
+
open=False,
|
|
142
|
+
changed_signup_time=True,
|
|
143
|
+
closed_by=closed_by,
|
|
144
|
+
signup_deadline=signup_deadline,
|
|
145
|
+
),
|
|
146
|
+
include_attendees,
|
|
147
|
+
include_expenses,
|
|
148
|
+
)
|