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,103 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import Optional
|
|
3
|
+
|
|
4
|
+
from pydantic import BaseModel
|
|
5
|
+
|
|
6
|
+
from eetlijst.generated.fragments import UserFields, UserFieldsPrivate
|
|
7
|
+
from eetlijst.generated.get_user import GetUser
|
|
8
|
+
from eetlijst.generated.remove_account import (
|
|
9
|
+
RemoveAccount,
|
|
10
|
+
RemoveAccountUpdateEetschemaUserByPk,
|
|
11
|
+
)
|
|
12
|
+
from eetlijst.generated.update_user import UpdateUser
|
|
13
|
+
|
|
14
|
+
from eetlijst.exceptions import EetlijstException
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class CookPointsImportResult(BaseModel):
|
|
18
|
+
cook_points: float
|
|
19
|
+
allowed_to_edit: bool
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class UserResult(BaseModel):
|
|
23
|
+
id: str
|
|
24
|
+
name: str
|
|
25
|
+
origin: Optional[str] = None
|
|
26
|
+
email: Optional[str] = None
|
|
27
|
+
birthday: Optional[datetime] = None
|
|
28
|
+
profile_image: Optional[str] = None
|
|
29
|
+
profile_image_url: Optional[str] = None
|
|
30
|
+
order_of_buttom_bar: Optional[str] = None
|
|
31
|
+
funnel_lead: Optional[str] = None
|
|
32
|
+
cook_points_imports: list[CookPointsImportResult] = []
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class UserPrivateResult(UserFieldsPrivate):
|
|
36
|
+
profile_image_url: Optional[str] = None
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def transform_user_private(user: Optional[UserFieldsPrivate]) -> UserPrivateResult:
|
|
40
|
+
if not user:
|
|
41
|
+
raise EetlijstException("User not found")
|
|
42
|
+
|
|
43
|
+
profile_image_url = (
|
|
44
|
+
f"https://node.eetlijst.nl/api/v1/drive/get_file/{user.profile_image}"
|
|
45
|
+
if user.profile_image
|
|
46
|
+
else None
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
return UserPrivateResult(
|
|
50
|
+
**user.model_dump(),
|
|
51
|
+
profile_image_url=profile_image_url,
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
def transform_user(user: Optional[UserFields]) -> UserResult:
|
|
56
|
+
if not user:
|
|
57
|
+
raise EetlijstException("User not found")
|
|
58
|
+
|
|
59
|
+
profile_image_url = (
|
|
60
|
+
f"https://node.eetlijst.nl/api/v1/drive/get_file/{user.profile_image}"
|
|
61
|
+
if user.profile_image
|
|
62
|
+
else None
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
cook_points_imports = [
|
|
66
|
+
CookPointsImportResult(
|
|
67
|
+
cook_points=entry.cook_points,
|
|
68
|
+
allowed_to_edit=entry.allowed_to_edit,
|
|
69
|
+
)
|
|
70
|
+
for entry in (user.cook_points_imports or [])
|
|
71
|
+
if entry is not None
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
user_data = user.model_dump(exclude={"cook_points_imports"})
|
|
75
|
+
|
|
76
|
+
return UserResult(
|
|
77
|
+
**user_data,
|
|
78
|
+
profile_image_url=profile_image_url,
|
|
79
|
+
cook_points_imports=cook_points_imports,
|
|
80
|
+
)
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
def transform_get_user(result: GetUser) -> UserPrivateResult:
|
|
84
|
+
if not result.eetschema_user_private or len(result.eetschema_user_private) == 0:
|
|
85
|
+
raise EetlijstException("User not found")
|
|
86
|
+
|
|
87
|
+
return transform_user_private(result.eetschema_user_private[0])
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def transform_update_user(result: UpdateUser) -> UserResult:
|
|
91
|
+
if not result.update_eetschema_user_by_pk:
|
|
92
|
+
raise EetlijstException("Failed to update user")
|
|
93
|
+
|
|
94
|
+
return transform_user(result.update_eetschema_user_by_pk)
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
def transform_remove_account_reasons(
|
|
98
|
+
result: RemoveAccount,
|
|
99
|
+
) -> RemoveAccountUpdateEetschemaUserByPk:
|
|
100
|
+
if not result.update_eetschema_user_by_pk:
|
|
101
|
+
raise EetlijstException("Failed to remove user")
|
|
102
|
+
|
|
103
|
+
return result.update_eetschema_user_by_pk
|
|
@@ -0,0 +1,44 @@
|
|
|
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.input_types import eetschema_user_set_input
|
|
6
|
+
|
|
7
|
+
from .transformers import (
|
|
8
|
+
transform_get_user,
|
|
9
|
+
transform_remove_account_reasons,
|
|
10
|
+
transform_update_user,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@dataclass
|
|
15
|
+
class Users:
|
|
16
|
+
_client: GraphQlClient
|
|
17
|
+
|
|
18
|
+
async def get(self, user_id: str):
|
|
19
|
+
result = await self._client.get_user(user_id=user_id)
|
|
20
|
+
return transform_get_user(result)
|
|
21
|
+
|
|
22
|
+
async def update(self, user_id: str, data: eetschema_user_set_input):
|
|
23
|
+
result = await self._client.update_user(
|
|
24
|
+
user_id=user_id,
|
|
25
|
+
set_=data,
|
|
26
|
+
)
|
|
27
|
+
return transform_update_user(result)
|
|
28
|
+
|
|
29
|
+
async def remove_reasons(
|
|
30
|
+
self,
|
|
31
|
+
user_id: str,
|
|
32
|
+
reason_to_remove_account_text: str,
|
|
33
|
+
reason_to_remove_account_selection: list[str] | UnsetType | None = UNSET,
|
|
34
|
+
reason_to_remove_account_selection_all_options: (
|
|
35
|
+
list[str] | UnsetType | None
|
|
36
|
+
) = UNSET,
|
|
37
|
+
):
|
|
38
|
+
result = await self._client.remove_account(
|
|
39
|
+
user_id,
|
|
40
|
+
reason_to_remove_account_text,
|
|
41
|
+
reason_to_remove_account_selection,
|
|
42
|
+
reason_to_remove_account_selection_all_options,
|
|
43
|
+
)
|
|
44
|
+
return transform_remove_account_reasons(result)
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def current_datetime() -> datetime:
|
|
5
|
+
return datetime.now()
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def format_date(date: datetime | str) -> str:
|
|
9
|
+
if isinstance(date, str):
|
|
10
|
+
return date
|
|
11
|
+
|
|
12
|
+
return date.strftime("%Y-%m-%d:%H:%M:%S")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def coerce_datetime(date: datetime | str | None) -> datetime | None:
|
|
16
|
+
if date is None:
|
|
17
|
+
return None
|
|
18
|
+
|
|
19
|
+
if isinstance(date, datetime):
|
|
20
|
+
return date
|
|
21
|
+
|
|
22
|
+
try:
|
|
23
|
+
return datetime.fromisoformat(date)
|
|
24
|
+
except ValueError:
|
|
25
|
+
return datetime.strptime(date, "%Y-%m-%d:%H:%M:%S")
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: eetlijst-python
|
|
3
|
+
Version: 0.0.1
|
|
4
|
+
Summary: Python rewrite of the Eetlijst GraphQL client
|
|
5
|
+
Requires-Python: <3.15,>=3.14
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
Requires-Dist: httpx>=0.28
|
|
8
|
+
Requires-Dist: pydantic>=2.0.0
|
|
9
|
+
Provides-Extra: dev
|
|
10
|
+
Requires-Dist: ariadne-codegen>=0.18; extra == "dev"
|
|
11
|
+
Requires-Dist: mypy>=1.8.0; extra == "dev"
|
|
12
|
+
Requires-Dist: black>=24.0; extra == "dev"
|
|
13
|
+
Requires-Dist: isort>=5.13; extra == "dev"
|
|
14
|
+
Requires-Dist: pylint>=3.0; extra == "dev"
|
|
15
|
+
|
|
16
|
+
# eetlijst-python
|
|
17
|
+
|
|
18
|
+
A simple Python API client for Eetlijst.
|
|
19
|
+
|
|
20
|
+
> [!NOTE]
|
|
21
|
+
> This project is made for use in a student house, and will probably not be maintained.
|
|
22
|
+
> Most of this Python port was converted from the TypeScript version (https://github.com/DJ1TJOO/eetlijst-api-ts) using Google Gemini.
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
Create a virtual environment and install the package:
|
|
27
|
+
|
|
28
|
+
python -m venv .venv
|
|
29
|
+
# Activate virtual environment (.venv\Scripts\Activate.ps1 on Windows or source .venv/bin/activate on Linux/macOS)
|
|
30
|
+
python -m pip install -e .
|
|
31
|
+
|
|
32
|
+
The API key can be retrieved from the account page, under Developer API key (BETA), at https://v5.eetlijst.nl/account
|
|
33
|
+
|
|
34
|
+
```python
|
|
35
|
+
import asyncio
|
|
36
|
+
from eetlijst import Eetlijst
|
|
37
|
+
|
|
38
|
+
eetlijst = Eetlijst("<API_KEY>")
|
|
39
|
+
|
|
40
|
+
async def main():
|
|
41
|
+
app_status = await eetlijst.app.status()
|
|
42
|
+
print(app_status)
|
|
43
|
+
|
|
44
|
+
if __name__ == "__main__":
|
|
45
|
+
asyncio.run(main())
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
See Examples (./examples/) for more.
|
|
49
|
+
|
|
50
|
+
## What is Included
|
|
51
|
+
|
|
52
|
+
- Service classes for app, events, expenses, groups, users, groups.users, groups.list, events.attendance, and expenses.settlements.
|
|
53
|
+
- A complete GraphQL operation manifest at src/eetlijst/operations.graphql for ariadne-codegen.
|
|
54
|
+
- Example scripts matching the TS examples.
|
|
55
|
+
|
|
56
|
+
## Development & Codegen
|
|
57
|
+
|
|
58
|
+
This project uses ariadne-codegen (https://github.com/mirumee/ariadne-codegen) for GraphQL code generation.
|
|
59
|
+
|
|
60
|
+
Run code generation:
|
|
61
|
+
|
|
62
|
+
```
|
|
63
|
+
ariadne-codegen
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The configuration in pyproject.toml points to the GraphQL schema and outputs generated code into src/generated/.
|
|
67
|
+
|
|
68
|
+
### Building
|
|
69
|
+
|
|
70
|
+
To build the package locally, install the build tool first:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
python -m pip install build
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Build the package:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
python -m build
|
|
80
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
eetlijst/__init__.py,sha256=Uv7wCdW3hmZDfgCP18RDns2lq9N0HJ2iVGttJn4zy8A,58
|
|
2
|
+
eetlijst/eetlijst.py,sha256=K4rNmiEtvc0xEkZrQrpEU6dKeJim5D8vW65wIqiJXAc,982
|
|
3
|
+
eetlijst/exceptions.py,sha256=byiuMnnL_GbTYxpSg3na7LhNiP2yQLFUQw1Mrws4Alo,47
|
|
4
|
+
eetlijst/generated/__init__.py,sha256=qOId4p_hP91VJstXM4TCVvuNAFFXjAOztGTQWtaAth4,49545
|
|
5
|
+
eetlijst/generated/all_attendances.py,sha256=Wn-bHHqLsPwwtLlcEsKzZMkKqCeqzsNtUpaNmLx-xzk,306
|
|
6
|
+
eetlijst/generated/all_events.py,sha256=NUYz1O2JaI_DoiqS56lumLt6B8v5vhbwszdIEUjcG5Q,248
|
|
7
|
+
eetlijst/generated/all_expenses.py,sha256=LulW5u5U4rD1dSAJ_i9QFXpO1fBIynA3ZniPXR1mIV4,266
|
|
8
|
+
eetlijst/generated/all_groups.py,sha256=wlBcsdT661DDSjQTCuo-SuzKrl7GbteGMnPJZdCdj2Y,723
|
|
9
|
+
eetlijst/generated/all_settlements.py,sha256=2Kn0yL0A6mvkQMHmS_6eFs29LT58dIPWfoMIltDbpAg,296
|
|
10
|
+
eetlijst/generated/all_users_in_group.py,sha256=yVgLGSEEBKP762wbT7we7c8uSJnkREZrf8cN6ngk34Y,531
|
|
11
|
+
eetlijst/generated/app_status.py,sha256=qdvCStKngW5vcXPocie1Z97KM2WjFYbQFeEtCJx5A48,308
|
|
12
|
+
eetlijst/generated/async_base_client.py,sha256=WNk2lIM0IVNw9QckmOH7SLaid7bhm52RXN6DUqvdl3w,13808
|
|
13
|
+
eetlijst/generated/automatic_events.py,sha256=pIqUbWrgJq85jGfXM7lRdIjCS6-SF0P2jsWAudyUFns,373
|
|
14
|
+
eetlijst/generated/base_model.py,sha256=xnyBFwZE7YMfmZ2-t1TuXEfFHER-DbkOBx4EKPBYsKw,636
|
|
15
|
+
eetlijst/generated/client.py,sha256=V3707Xfb-2b_5Sb-qYfGqTlkrLIhrry1guWlvB1ZzYs,58041
|
|
16
|
+
eetlijst/generated/create_expense.py,sha256=rlMXOtTjqCwZUeqMMuty3sEHKHPOaTMRMH_JT3M8WlU,338
|
|
17
|
+
eetlijst/generated/create_group.py,sha256=CF-LN9TNDyhUD1RSKQVLfSpduE9hy1WH3RhIz5Q_zSI,263
|
|
18
|
+
eetlijst/generated/create_list_item.py,sha256=fq2YFet2CYKC92EPR66hGBzhutkgi2CoCfYjawXw9Ag,327
|
|
19
|
+
eetlijst/generated/create_many_list_items.py,sha256=GoMxvFbViI14HpV_3W92ae2l_zMa4kKGCRzwtlDN9AU,536
|
|
20
|
+
eetlijst/generated/create_settlement.py,sha256=6QbQ4ckeWe1ptM8ulhTFZGKZiIoP4LQ-YmfeGh6Y3Rc,308
|
|
21
|
+
eetlijst/generated/enums.py,sha256=vwfbnQhlvS-NK6zgZWGUVLo8KuR7nulL9Rj7dS3vV8g,14719
|
|
22
|
+
eetlijst/generated/exceptions.py,sha256=ceIXJa7sQ7Zo6ZKzER9Uf4h8avgC_max4_F8BvBSrBE,2468
|
|
23
|
+
eetlijst/generated/fragments.py,sha256=ODNL-BdhmTjvA8oSdNJ_IQe6UNG7c3zSll9hPVgo_GQ,6001
|
|
24
|
+
eetlijst/generated/get_attendance.py,sha256=73ggSH9jYkIXrg_2SqldxdxmGwqq1ERatOKpOK5z_yk,367
|
|
25
|
+
eetlijst/generated/get_event.py,sha256=9XaWsUQyaExS8Ufl6gJRhm0biZ05nilvNnTtH81zClI,293
|
|
26
|
+
eetlijst/generated/get_group.py,sha256=ZgBpTF6vXPIntAtWrbJyBTiLXFnJGXQNS3krvfOcIt4,514
|
|
27
|
+
eetlijst/generated/get_user.py,sha256=2nZvBiseqrAleJw64RnB-k1ey2LPmXC4fDb60P1vxeE,271
|
|
28
|
+
eetlijst/generated/get_user_in_group.py,sha256=-lvvro4JELSY-hicqPIHJl7NPf6Fp8949f1w6LCWEyg,524
|
|
29
|
+
eetlijst/generated/group_total_expense.py,sha256=lINnASVtiR4HlbWWsx_lE7l_kcUC7rnXAdm-qnEpNkk,1558
|
|
30
|
+
eetlijst/generated/input_types.py,sha256=XZgnxrnWxQobLk-DSLpYQx7ClvU8HBZEp_yPqokpQ9M,190949
|
|
31
|
+
eetlijst/generated/join_group.py,sha256=BkKMQ6oJS5N18XlDhi8jA6C3ysMYFTNJ1AwOAECNuRU,323
|
|
32
|
+
eetlijst/generated/list_items.py,sha256=4RhRadU6MGYy1IGt_yHxe-aE3kAx6DTr2ea1MX0SkB0,243
|
|
33
|
+
eetlijst/generated/remove_account.py,sha256=7sWPtsQvBg5FgZFnK7-kP5Wb1wk-J_yO7oPiVCcLvLE,465
|
|
34
|
+
eetlijst/generated/settle_unsettled_expenses.py,sha256=Mx55LqpU4gPVefzdjgPm6gQkWhJKHzKK4DE8Cv--ieM,611
|
|
35
|
+
eetlijst/generated/settlement_expenses.py,sha256=8fs8ANH1c2CYzG_0okrvJKySq8if8Mz6eHdAecW4KHw,294
|
|
36
|
+
eetlijst/generated/update_attendance.py,sha256=laSSdl431k8_RAaNZX8ns4JIhRDtI_VVm8vVhOWkGNc,398
|
|
37
|
+
eetlijst/generated/update_event.py,sha256=jN1GnYczG7Kn_V51fuYxcvbsBxlktIlFLW3CphCj-08,324
|
|
38
|
+
eetlijst/generated/update_expense.py,sha256=gF3ljCBUpaiRs-G605dzTrnB8EUJqNcrrkw7-kh6LjQ,518
|
|
39
|
+
eetlijst/generated/update_expense_distribution.py,sha256=_pC4UdWrk62NV_oJ8lj_nZBHIpjknHQa3e0nkyn-PGE,640
|
|
40
|
+
eetlijst/generated/update_group.py,sha256=PzJcFJp9y9I-yrYXPtCyRelRVS0UpPycvjxSwMyafLg,263
|
|
41
|
+
eetlijst/generated/update_list_item.py,sha256=YJ6zF2x4coj7gg6h19kG_l9IjEfvI7P5kQNql-PQF_I,331
|
|
42
|
+
eetlijst/generated/update_many_attendance.py,sha256=JLfzzS6qbrnFFcfVR3qq2IKnpe482KU1Qorcwo06ZV4,632
|
|
43
|
+
eetlijst/generated/update_user.py,sha256=PGj2nFJaMKvrAf5Yd_0TY0w819q-jtiK9wPeFfH0TG4,315
|
|
44
|
+
eetlijst/generated/update_user_in_group.py,sha256=Z8WzWpxZ6jeeRdhhy1MVsknhpoHWWTNgE-cm7biSGic,399
|
|
45
|
+
eetlijst/generated/update_users_in_group.py,sha256=pbyJMbxnDSkC45G6zp_ozIKQslQzcQPfQHK0Xjz1BoQ,709
|
|
46
|
+
eetlijst/services/__init__.py,sha256=FMK1faOaUeUCOncah0zMtfcLbug9i1xgmJe-W3ezipA,293
|
|
47
|
+
eetlijst/services/app/__init__.py,sha256=-odkIPEUEZlpaoMbd7hlHydlQ5yUSClDjKIMAyjKCzc,22
|
|
48
|
+
eetlijst/services/app/app.py,sha256=KKKpbk1GzuRvaLSneEJKgc2yNrjoiRJ73QPtxWWvAYc,513
|
|
49
|
+
eetlijst/services/app/transformers.py,sha256=NNvCndii2X3x-22LZqdbHAXdUJvrcyrTn-xI559124w,359
|
|
50
|
+
eetlijst/services/event_attendance/__init__.py,sha256=jd3MNjhTcxV4M1Gktxf-rrWtUhprqDrnBXfamlOSCYo,47
|
|
51
|
+
eetlijst/services/event_attendance/event_attendance.py,sha256=Gj6XHtxwdks-JhejQTJxy1-Rfq6uK7BBy7kUTRV5UJQ,2999
|
|
52
|
+
eetlijst/services/event_attendance/transformers.py,sha256=kbrUKscdOTRmCAqzFQ-NlaTi_SO5Hw0zbhyuDCu20jI,1829
|
|
53
|
+
eetlijst/services/events/__init__.py,sha256=Ukz7t6f0DH4wc5Q0I7wF2RDZEqeXhc932eQlBD6OsDo,28
|
|
54
|
+
eetlijst/services/events/events.py,sha256=Rf4i7zVW_05e_Nnwh5nKehT9KZeR_fHyuGvNsRKMsYs,4236
|
|
55
|
+
eetlijst/services/events/transformers.py,sha256=Kx4ekE6yusqurJHi2AzHXzEoRJiwTkavyXLoc0ChdfA,1975
|
|
56
|
+
eetlijst/services/expenses/__init__.py,sha256=hlv1estNFmNjUpfNbV1Tu4aSdjficE0F1NgIf7XnZHc,32
|
|
57
|
+
eetlijst/services/expenses/expenses.py,sha256=JwTqcyp7WmMbjcNJMo7kPlP7K7vm7MiL6Zyv_UjvdPM,3182
|
|
58
|
+
eetlijst/services/expenses/transformers.py,sha256=8HIHm2gx-mmkibditqyYBesVmhvvqYIkHzVFSh-wy2U,2469
|
|
59
|
+
eetlijst/services/expenses/utils.py,sha256=f7TPXKEhnvF30tzrSYO75wviBDWNujT6Hz_9l8dqYGc,916
|
|
60
|
+
eetlijst/services/group_list/__init__.py,sha256=Acdz1WLky37QUBX-a-mui0rAIxG_Pv81tD7szbBakhM,35
|
|
61
|
+
eetlijst/services/group_list/group_list.py,sha256=qYGn2uy26i2B47JpBA87yGA8_XkLnCR-K4-si6F4SkE,3035
|
|
62
|
+
eetlijst/services/group_list/transformers.py,sha256=yz4cWIKVInXlKdx7gTTZrrgdrvbIxNy_aSCdmrlIE3Q,1275
|
|
63
|
+
eetlijst/services/group_users/__init__.py,sha256=UyTfgrB2yf14Ua4DET93CgQYZ0mLIwmrtEqlJS0LxIY,37
|
|
64
|
+
eetlijst/services/group_users/group_users.py,sha256=QoaEnDtVCIqfjvzP6g3hDKRDnPZMnVu_beoQjPSuCn8,4327
|
|
65
|
+
eetlijst/services/group_users/transformers.py,sha256=-UqQ1waNTho8Bf3lInx96nx1NG_M3PcLG3qkiDA3jWU,2704
|
|
66
|
+
eetlijst/services/groups/__init__.py,sha256=zTB7hG_2JUKvcwFFGKdtfzmpovc401-kPso9O6Wj_mg,28
|
|
67
|
+
eetlijst/services/groups/groups.py,sha256=pDGe2HrErp_H6I0NXUW491V-BmaLtpPXtoc7H2xwUW8,2664
|
|
68
|
+
eetlijst/services/groups/transformers.py,sha256=2NA57roFmTPOywbYX1VlRhoyoqgInOJ9rxJXFUB1_SQ,4107
|
|
69
|
+
eetlijst/services/settlements/__init__.py,sha256=qQY4xnOlvo3gVDaC7XV7osvLNIl0bIABhUyO2XPkLK8,38
|
|
70
|
+
eetlijst/services/settlements/settlements.py,sha256=wfY7VOiPBrckiLQyVtKNN-h641XUle3V4xbqu3kwQeU,8053
|
|
71
|
+
eetlijst/services/settlements/transformers.py,sha256=l7wVU9gBnfHIF_Q3PrCyW7saW30rdCYwYnsqKnuqFNM,2876
|
|
72
|
+
eetlijst/services/settlements/utils.py,sha256=Q11HLluchJZZ9F-kLhZ6Rhmeypb65N2OXczXwQcQ9Uc,2348
|
|
73
|
+
eetlijst/services/users/__init__.py,sha256=KSAl1bezotk-ufijQc-ziCZuVCLAqCObyWyPaz-JEsc,26
|
|
74
|
+
eetlijst/services/users/transformers.py,sha256=Q7gn_mvDb-yWKJh3ISDRlfaiVI154Aj6qdMfkpAO9y4,3042
|
|
75
|
+
eetlijst/services/users/users.py,sha256=tKm7OMRxlnoXjrkTXvRu_C-DB7P7KXbqu2vlE_gG-Ig,1407
|
|
76
|
+
eetlijst/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
|
+
eetlijst/utils/datetime.py,sha256=u7zDY_A4D5PIfa9QIlRhNgAAHsLFKuealjG0-qOX0iI,569
|
|
78
|
+
eetlijst_python-0.0.1.dist-info/METADATA,sha256=j3dqePjMJK029hum3p_LJWlO1qMPuigDoN7-oveRU_o,2239
|
|
79
|
+
eetlijst_python-0.0.1.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
80
|
+
eetlijst_python-0.0.1.dist-info/top_level.txt,sha256=Wqj-R7K0ln1vVmxZ7NkPxrMCOF2kFE7_QagNHizJuts,9
|
|
81
|
+
eetlijst_python-0.0.1.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
eetlijst
|