sysnet-persons-model 1.2.7__tar.gz → 1.3.0__tar.gz
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.
- sysnet_persons_model-1.3.0/PKG-INFO +51 -0
- sysnet_persons_model-1.3.0/README.md +31 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/individual.py +2 -1
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/person_entity.py +2 -1
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/pyproject.toml +1 -1
- sysnet_persons_model-1.3.0/sysnet_persons_model.egg-info/PKG-INFO +51 -0
- sysnet_persons_model-1.2.7/PKG-INFO +0 -188
- sysnet_persons_model-1.2.7/README.md +0 -168
- sysnet_persons_model-1.2.7/sysnet_persons_model.egg-info/PKG-INFO +0 -188
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/LICENSE +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/__init__.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/common.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/config.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/context.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/country.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/legal_form.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/role.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/persons_model/tag.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/requirements.txt +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/setup.cfg +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/sysnet_persons_model.egg-info/SOURCES.txt +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/sysnet_persons_model.egg-info/dependency_links.txt +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/sysnet_persons_model.egg-info/requires.txt +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/sysnet_persons_model.egg-info/top_level.txt +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_common.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_config.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_context.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_country.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_individual.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_legal_form.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_person_entity.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_role.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_scope.py +0 -0
- {sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/tests/test_tag.py +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sysnet-persons-model
|
|
3
|
+
Version: 1.3.0
|
|
4
|
+
Summary: SYSNET Persons Data Model
|
|
5
|
+
Author-email: Data Developer <info@sysnet.cz>
|
|
6
|
+
License-Expression: LicenseRef-SYSNET-FreeForHomeUse
|
|
7
|
+
Project-URL: Homepage, https://github.com/SYSNET-CZ/models/tree/main/persons
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Natural Language :: Czech
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
14
|
+
Requires-Python: >=3.10
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: sysnet-pyutils>=1.7.0
|
|
18
|
+
Requires-Dist: pydantic[email]>=2.11.4
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
21
|
+
# sysnet-persons-model
|
|
22
|
+
|
|
23
|
+
Data model pro entity a osoby v ekosystému SYSNET. Postaveno na Pydantic v2.
|
|
24
|
+
|
|
25
|
+
## Instalace
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pip install sysnet-persons-model
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Hlavní vlastnosti
|
|
32
|
+
- Podpora pro fyzické osoby (`IndividualType`) i právnické subjekty (`PersonEntityType`).
|
|
33
|
+
- Integrace s číselníky RPP (právní formy).
|
|
34
|
+
- Standardizovaná metadata životního cyklu (vytvoření, modifikace, smazání).
|
|
35
|
+
- **Opaque extension slot** (`agenda`) pro agendově specifická data.
|
|
36
|
+
|
|
37
|
+
## Verze
|
|
38
|
+
- **1.3.0**: Přidání atributu `agenda` (opaque extension slot) do `IndividualBaseType` a `PersonEntityBaseType`. Viz [AGENDA_GUIDE.md](docs/AGENDA_GUIDE.md).
|
|
39
|
+
- **1.2.8**: Interní verze, přidání atributu `agenda` (špatná cesta k docs).
|
|
40
|
+
- **1.2.7**: Přidání aliasu `metadata` pro pole `document` (Redmine #9850).
|
|
41
|
+
- **1.2.5**: Přidání `ScopeType` pro definici rozsahu působnosti subjektu.
|
|
42
|
+
- **1.1.2**: Původní stabilní verze s podporou Pydantic v2.
|
|
43
|
+
|
|
44
|
+
## Použití atributu agenda
|
|
45
|
+
Atribut `agenda` slouží pro data specifická pro konkrétní aplikace (HNVO, IPPC, CITES), která nepatří do společného jádra.
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
# Příklad čtení dat pro agendu HNVO
|
|
49
|
+
hnvo_data = person.agenda.get("hnvo", {})
|
|
50
|
+
```
|
|
51
|
+
Podrobnosti naleznete v [dokumentaci k agendám](docs/AGENDA_GUIDE.md).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# sysnet-persons-model
|
|
2
|
+
|
|
3
|
+
Data model pro entity a osoby v ekosystému SYSNET. Postaveno na Pydantic v2.
|
|
4
|
+
|
|
5
|
+
## Instalace
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pip install sysnet-persons-model
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Hlavní vlastnosti
|
|
12
|
+
- Podpora pro fyzické osoby (`IndividualType`) i právnické subjekty (`PersonEntityType`).
|
|
13
|
+
- Integrace s číselníky RPP (právní formy).
|
|
14
|
+
- Standardizovaná metadata životního cyklu (vytvoření, modifikace, smazání).
|
|
15
|
+
- **Opaque extension slot** (`agenda`) pro agendově specifická data.
|
|
16
|
+
|
|
17
|
+
## Verze
|
|
18
|
+
- **1.3.0**: Přidání atributu `agenda` (opaque extension slot) do `IndividualBaseType` a `PersonEntityBaseType`. Viz [AGENDA_GUIDE.md](docs/AGENDA_GUIDE.md).
|
|
19
|
+
- **1.2.8**: Interní verze, přidání atributu `agenda` (špatná cesta k docs).
|
|
20
|
+
- **1.2.7**: Přidání aliasu `metadata` pro pole `document` (Redmine #9850).
|
|
21
|
+
- **1.2.5**: Přidání `ScopeType` pro definici rozsahu působnosti subjektu.
|
|
22
|
+
- **1.1.2**: Původní stabilní verze s podporou Pydantic v2.
|
|
23
|
+
|
|
24
|
+
## Použití atributu agenda
|
|
25
|
+
Atribut `agenda` slouží pro data specifická pro konkrétní aplikace (HNVO, IPPC, CITES), která nepatří do společného jádra.
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
# Příklad čtení dat pro agendu HNVO
|
|
29
|
+
hnvo_data = person.agenda.get("hnvo", {})
|
|
30
|
+
```
|
|
31
|
+
Podrobnosti naleznete v [dokumentaci k agendám](docs/AGENDA_GUIDE.md).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from datetime import datetime
|
|
4
|
-
from typing import List, Optional
|
|
4
|
+
from typing import Any, List, Optional
|
|
5
5
|
|
|
6
6
|
from pydantic import BaseModel, Field, SecretStr, StrictBool, AliasChoices
|
|
7
7
|
from sysnet_pyutils.models.general import LocationType, ListTypeBase, MetadataEssentialType
|
|
@@ -26,6 +26,7 @@ class IndividualBaseType(BaseModel):
|
|
|
26
26
|
birthdate: Optional[datetime] = Field(default=None, description="Datum narození")
|
|
27
27
|
gdpr: Optional[StrictBool] = Field(default=True, description="Udělen souhlas se zpracováním dat GDPR")
|
|
28
28
|
note: Optional[str] = Field(default=None, description='Libovolná poznámka')
|
|
29
|
+
agenda: Optional[dict[str, dict[str, Any]]] = Field(default=None, description='Agendově specifická data. Klíč = kód agendy (hnvo, ippc, cites). Hodnota = libovolný objekt parsovaný konzumentem.')
|
|
29
30
|
|
|
30
31
|
|
|
31
32
|
class IndividualEntryType(BaseModel):
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from datetime import datetime
|
|
4
|
-
from typing import TYPE_CHECKING, List, Optional, Union
|
|
4
|
+
from typing import TYPE_CHECKING, Any, List, Optional, Union
|
|
5
5
|
|
|
6
6
|
from pydantic import BaseModel, Field, StrictBool, AliasChoices
|
|
7
7
|
from sysnet_pyutils.models.general import LocationType, PersonTypeEnum, ListTypeBase, MetadataEssentialType
|
|
@@ -64,6 +64,7 @@ class PersonEntityBaseType(BaseModel):
|
|
|
64
64
|
note: Optional[str] = Field(default=None, description="Poznámka")
|
|
65
65
|
issuing: Optional[List[Optional[IssuingType]]] = Field(default=None, description="Osoba je autoritou vydávající nějaké dokumenty")
|
|
66
66
|
scope: Optional[ScopeType] = Field(default=None, description="Rozsah působnosti subjektu")
|
|
67
|
+
agenda: Optional[dict[str, dict[str, Any]]] = Field(default=None, description="Agendově specifická data. Klíč = kód agendy (hnvo, ippc, cites). Hodnota = libovolný objekt parsovaný konzumentem.")
|
|
67
68
|
|
|
68
69
|
def set_legal_form(self, code: Union[LegalFormEnum, str]) -> "PersonEntityBaseType":
|
|
69
70
|
"""Nastaví atribut legal_form podle kódu právní formy.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sysnet-persons-model
|
|
3
|
+
Version: 1.3.0
|
|
4
|
+
Summary: SYSNET Persons Data Model
|
|
5
|
+
Author-email: Data Developer <info@sysnet.cz>
|
|
6
|
+
License-Expression: LicenseRef-SYSNET-FreeForHomeUse
|
|
7
|
+
Project-URL: Homepage, https://github.com/SYSNET-CZ/models/tree/main/persons
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Natural Language :: Czech
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
14
|
+
Requires-Python: >=3.10
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: sysnet-pyutils>=1.7.0
|
|
18
|
+
Requires-Dist: pydantic[email]>=2.11.4
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
21
|
+
# sysnet-persons-model
|
|
22
|
+
|
|
23
|
+
Data model pro entity a osoby v ekosystému SYSNET. Postaveno na Pydantic v2.
|
|
24
|
+
|
|
25
|
+
## Instalace
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
pip install sysnet-persons-model
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Hlavní vlastnosti
|
|
32
|
+
- Podpora pro fyzické osoby (`IndividualType`) i právnické subjekty (`PersonEntityType`).
|
|
33
|
+
- Integrace s číselníky RPP (právní formy).
|
|
34
|
+
- Standardizovaná metadata životního cyklu (vytvoření, modifikace, smazání).
|
|
35
|
+
- **Opaque extension slot** (`agenda`) pro agendově specifická data.
|
|
36
|
+
|
|
37
|
+
## Verze
|
|
38
|
+
- **1.3.0**: Přidání atributu `agenda` (opaque extension slot) do `IndividualBaseType` a `PersonEntityBaseType`. Viz [AGENDA_GUIDE.md](docs/AGENDA_GUIDE.md).
|
|
39
|
+
- **1.2.8**: Interní verze, přidání atributu `agenda` (špatná cesta k docs).
|
|
40
|
+
- **1.2.7**: Přidání aliasu `metadata` pro pole `document` (Redmine #9850).
|
|
41
|
+
- **1.2.5**: Přidání `ScopeType` pro definici rozsahu působnosti subjektu.
|
|
42
|
+
- **1.1.2**: Původní stabilní verze s podporou Pydantic v2.
|
|
43
|
+
|
|
44
|
+
## Použití atributu agenda
|
|
45
|
+
Atribut `agenda` slouží pro data specifická pro konkrétní aplikace (HNVO, IPPC, CITES), která nepatří do společného jádra.
|
|
46
|
+
|
|
47
|
+
```python
|
|
48
|
+
# Příklad čtení dat pro agendu HNVO
|
|
49
|
+
hnvo_data = person.agenda.get("hnvo", {})
|
|
50
|
+
```
|
|
51
|
+
Podrobnosti naleznete v [dokumentaci k agendám](docs/AGENDA_GUIDE.md).
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: sysnet-persons-model
|
|
3
|
-
Version: 1.2.7
|
|
4
|
-
Summary: SYSNET Persons Data Model
|
|
5
|
-
Author-email: Data Developer <info@sysnet.cz>
|
|
6
|
-
License-Expression: LicenseRef-SYSNET-FreeForHomeUse
|
|
7
|
-
Project-URL: Homepage, https://github.com/SYSNET-CZ/models/tree/main/persons
|
|
8
|
-
Classifier: Development Status :: 4 - Beta
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Natural Language :: Czech
|
|
12
|
-
Classifier: Operating System :: OS Independent
|
|
13
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
14
|
-
Requires-Python: >=3.10
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: sysnet-pyutils>=1.7.0
|
|
18
|
-
Requires-Dist: pydantic[email]>=2.11.4
|
|
19
|
-
Dynamic: license-file
|
|
20
|
-
|
|
21
|
-
# sysnet-persons-model
|
|
22
|
-
|
|
23
|
-
**Sdílený datový model Registru osob SYSNET**
|
|
24
|
-
|
|
25
|
-
[](https://www.python.org/)
|
|
26
|
-
[](https://docs.pydantic.dev/)
|
|
27
|
-
[](https://pypi.org/project/sysnet-persons-model/)
|
|
28
|
-
|
|
29
|
-
Čistá Python knihovna — **bez FastAPI, bez MongoDB**. Slouží jako sdílená datová vrstva
|
|
30
|
-
importovaná dalšími službami SYSNET.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Instalace
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
pip install sysnet-persons-model
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Rychlý start
|
|
43
|
-
|
|
44
|
-
```python
|
|
45
|
-
from persons_model.individual import IndividualType
|
|
46
|
-
from persons_model.person_entity import PersonEntityType
|
|
47
|
-
from persons_model.role import RoleType
|
|
48
|
-
from persons_model.common import RegistryType, MembershipEnum, MemberType
|
|
49
|
-
from persons_model.tag import TagType, TagItemType
|
|
50
|
-
|
|
51
|
-
# Vytvoření jednotlivce
|
|
52
|
-
person = IndividualType(
|
|
53
|
-
identifier="550e8400-e29b-41d4-a716-446655440000",
|
|
54
|
-
name="Jan Novák",
|
|
55
|
-
username="jnovak",
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
# Přidání tagu
|
|
59
|
-
person.tags = TagType()
|
|
60
|
-
person.tags.add_tag(TagItemType(tag="aktivni", color="#00FF00"))
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Moduly
|
|
66
|
-
|
|
67
|
-
### `common` — Společné typy
|
|
68
|
-
|
|
69
|
-
| Třída / Enum | Popis |
|
|
70
|
-
|---|---|
|
|
71
|
-
| `RegistryEnum` | Identifikační registry (`CRZP`, `EMPTY`) |
|
|
72
|
-
| `RegistryType` | Reference na identifikační údaje (uuid, uri, other) |
|
|
73
|
-
| `MembershipEnum` | Typ členství: admin, representative, employee, department, general, other |
|
|
74
|
-
| `MemberType` | Členský záznam |
|
|
75
|
-
| `ContactType` | Kontaktní údaje osoby |
|
|
76
|
-
| `RedundantType` | Redundantní záznam (name, code, location, note) |
|
|
77
|
-
| `DepartmentType` | Útvar organizace (rozšiřuje `RedundantType` o `parent`) |
|
|
78
|
-
| `IssuingType` | Údaje pro vydávání dokladů |
|
|
79
|
-
| `ScopeType` | Definice rozsahu působnosti (Global, Regional, Local) |
|
|
80
|
-
|
|
81
|
-
### `individual` — Jednotlivci (uživatelé)
|
|
82
|
-
|
|
83
|
-
| Třída | Popis |
|
|
84
|
-
|---|---|
|
|
85
|
-
| `IndividualBaseType` | Základní atributy: jméno, username, DN, heslo, kontakty, adresy, GDPR |
|
|
86
|
-
| `IndividualEntryType` | Zkrácená položka pro seznam |
|
|
87
|
-
| `IndividualType` | Plný záznam osoby (rozšiřuje Base o identifier, pid, registry, tags, document) |
|
|
88
|
-
| `IndividualListType` | Stránkovaný seznam osob |
|
|
89
|
-
|
|
90
|
-
### `person_entity` — Subjekty
|
|
91
|
-
|
|
92
|
-
| Třída | Popis |
|
|
93
|
-
|---|---|
|
|
94
|
-
| `PersonEntityLinkType` | Odkaz na navázaný subjekt |
|
|
95
|
-
| `PersonEntityEntryType` | Položka subjektu v kontextu |
|
|
96
|
-
| `PersonEntityBaseType` | Základní atributy subjektu (včetně `scope`) |
|
|
97
|
-
| `PersonEntityType` | Plný záznam (fyzická / právnická osoba) |
|
|
98
|
-
| `PersonEntityListType` | Stránkovaný seznam subjektů |
|
|
99
|
-
|
|
100
|
-
### `role` — Role
|
|
101
|
-
|
|
102
|
-
| Třída / Enum | Popis |
|
|
103
|
-
|---|---|
|
|
104
|
-
| `RoleCategoryEnum` | `individual`, `personal`, `security`, `other` |
|
|
105
|
-
| `RoleCategoryType` | Boolean příznaky kategorií |
|
|
106
|
-
| `RoleBaseType` | Základ role (code, name, categories, note) |
|
|
107
|
-
| `RoleEntryType` | Položka seznamu rolí (rozšiřuje Base o identifier) |
|
|
108
|
-
| `RoleType` | Plná role s holders, admins, tags, document |
|
|
109
|
-
| `RoleListType` | Stránkovaný seznam rolí |
|
|
110
|
-
|
|
111
|
-
### `context` — Uživatelský kontext
|
|
112
|
-
|
|
113
|
-
| Třída | Popis |
|
|
114
|
-
|---|---|
|
|
115
|
-
| `ContextRolesType` | Role uživatele/subjektu (admin, holder) |
|
|
116
|
-
| `ContextPersonsType` | Subjekty uživatele (admin, contact, member, representative) |
|
|
117
|
-
| `ContextIndividualType` | Kompletní kontext konkrétního uživatele |
|
|
118
|
-
|
|
119
|
-
### `tag` — Tagy
|
|
120
|
-
|
|
121
|
-
| Třída | Popis |
|
|
122
|
-
|---|---|
|
|
123
|
-
| `TagItemType` | Jedna značka (tag, color) |
|
|
124
|
-
| `TagType` | Seznam tagů s metodami `has_tag`, `add_tag`, `remove_tag` |
|
|
125
|
-
| `TagListType` | Stránkovaný seznam tagů |
|
|
126
|
-
|
|
127
|
-
### `country` — Země (ISO 3166-1)
|
|
128
|
-
|
|
129
|
-
| Třída | Popis |
|
|
130
|
-
|---|---|
|
|
131
|
-
| `CountryType` | Stát: kódy n3/a2/a3, název česky a anglicky |
|
|
132
|
-
| `CountryListType` | Stránkovaný seznam zemí |
|
|
133
|
-
| `CountryMapType` | Seznam ve formátu code/value |
|
|
134
|
-
|
|
135
|
-
### `config` — Konfigurace
|
|
136
|
-
|
|
137
|
-
| Třída | Popis |
|
|
138
|
-
|---|---|
|
|
139
|
-
| `ConfigType` | Minimální konfigurace (`cache: Optional[StrictBool]`) |
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Vývoj
|
|
144
|
-
|
|
145
|
-
Viz [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) pro podrobnou vývojovou příručku.
|
|
146
|
-
|
|
147
|
-
```powershell
|
|
148
|
-
# Klonování a nastavení prostředí
|
|
149
|
-
cd D:\development\git\models\persons
|
|
150
|
-
.venv\Scripts\python.exe -m pip install -e .
|
|
151
|
-
|
|
152
|
-
# Spuštění testů
|
|
153
|
-
.venv\Scripts\python.exe -m pytest
|
|
154
|
-
|
|
155
|
-
# Spuštění testů s pokrytím
|
|
156
|
-
.venv\Scripts\python.exe -m pytest --cov=persons_model --cov-report=term-missing
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Technický stack
|
|
162
|
-
|
|
163
|
-
| Vrstva | Technologie | Verze |
|
|
164
|
-
|---|---|---|
|
|
165
|
-
| Datové modely | Pydantic v2 | ≥ 2.11.4 |
|
|
166
|
-
| Utility | sysnet-pyutils | ≥ 1.7.0 |
|
|
167
|
-
| Python | CPython | ≥ 3.10 |
|
|
168
|
-
| Testy | pytest + pytest-cov | 9.x / 7.x |
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Architektura
|
|
173
|
-
|
|
174
|
-
Viz [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
|
|
175
|
-
|
|
176
|
-
Všechny modely dodržují konzistentní vzor:
|
|
177
|
-
1. `BaseType` — základní atributy bez identifikátoru
|
|
178
|
-
2. `EntryType` — zkrácená položka pro seznamy
|
|
179
|
-
3. plný `Type` — rozšiřuje Base o `identifier`, `pid`, `registry`, `tags`, `document`
|
|
180
|
-
4. `ListType` — obálka pro stránkované výsledky (`hits`, `entries`)
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Verze
|
|
185
|
-
|
|
186
|
-
Aktuální verze: **1.2.0**
|
|
187
|
-
|
|
188
|
-
Repozitář: https://github.com/SYSNET-CZ/models/tree/main/persons
|
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
# sysnet-persons-model
|
|
2
|
-
|
|
3
|
-
**Sdílený datový model Registru osob SYSNET**
|
|
4
|
-
|
|
5
|
-
[](https://www.python.org/)
|
|
6
|
-
[](https://docs.pydantic.dev/)
|
|
7
|
-
[](https://pypi.org/project/sysnet-persons-model/)
|
|
8
|
-
|
|
9
|
-
Čistá Python knihovna — **bez FastAPI, bez MongoDB**. Slouží jako sdílená datová vrstva
|
|
10
|
-
importovaná dalšími službami SYSNET.
|
|
11
|
-
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
## Instalace
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
pip install sysnet-persons-model
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Rychlý start
|
|
23
|
-
|
|
24
|
-
```python
|
|
25
|
-
from persons_model.individual import IndividualType
|
|
26
|
-
from persons_model.person_entity import PersonEntityType
|
|
27
|
-
from persons_model.role import RoleType
|
|
28
|
-
from persons_model.common import RegistryType, MembershipEnum, MemberType
|
|
29
|
-
from persons_model.tag import TagType, TagItemType
|
|
30
|
-
|
|
31
|
-
# Vytvoření jednotlivce
|
|
32
|
-
person = IndividualType(
|
|
33
|
-
identifier="550e8400-e29b-41d4-a716-446655440000",
|
|
34
|
-
name="Jan Novák",
|
|
35
|
-
username="jnovak",
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
# Přidání tagu
|
|
39
|
-
person.tags = TagType()
|
|
40
|
-
person.tags.add_tag(TagItemType(tag="aktivni", color="#00FF00"))
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
## Moduly
|
|
46
|
-
|
|
47
|
-
### `common` — Společné typy
|
|
48
|
-
|
|
49
|
-
| Třída / Enum | Popis |
|
|
50
|
-
|---|---|
|
|
51
|
-
| `RegistryEnum` | Identifikační registry (`CRZP`, `EMPTY`) |
|
|
52
|
-
| `RegistryType` | Reference na identifikační údaje (uuid, uri, other) |
|
|
53
|
-
| `MembershipEnum` | Typ členství: admin, representative, employee, department, general, other |
|
|
54
|
-
| `MemberType` | Členský záznam |
|
|
55
|
-
| `ContactType` | Kontaktní údaje osoby |
|
|
56
|
-
| `RedundantType` | Redundantní záznam (name, code, location, note) |
|
|
57
|
-
| `DepartmentType` | Útvar organizace (rozšiřuje `RedundantType` o `parent`) |
|
|
58
|
-
| `IssuingType` | Údaje pro vydávání dokladů |
|
|
59
|
-
| `ScopeType` | Definice rozsahu působnosti (Global, Regional, Local) |
|
|
60
|
-
|
|
61
|
-
### `individual` — Jednotlivci (uživatelé)
|
|
62
|
-
|
|
63
|
-
| Třída | Popis |
|
|
64
|
-
|---|---|
|
|
65
|
-
| `IndividualBaseType` | Základní atributy: jméno, username, DN, heslo, kontakty, adresy, GDPR |
|
|
66
|
-
| `IndividualEntryType` | Zkrácená položka pro seznam |
|
|
67
|
-
| `IndividualType` | Plný záznam osoby (rozšiřuje Base o identifier, pid, registry, tags, document) |
|
|
68
|
-
| `IndividualListType` | Stránkovaný seznam osob |
|
|
69
|
-
|
|
70
|
-
### `person_entity` — Subjekty
|
|
71
|
-
|
|
72
|
-
| Třída | Popis |
|
|
73
|
-
|---|---|
|
|
74
|
-
| `PersonEntityLinkType` | Odkaz na navázaný subjekt |
|
|
75
|
-
| `PersonEntityEntryType` | Položka subjektu v kontextu |
|
|
76
|
-
| `PersonEntityBaseType` | Základní atributy subjektu (včetně `scope`) |
|
|
77
|
-
| `PersonEntityType` | Plný záznam (fyzická / právnická osoba) |
|
|
78
|
-
| `PersonEntityListType` | Stránkovaný seznam subjektů |
|
|
79
|
-
|
|
80
|
-
### `role` — Role
|
|
81
|
-
|
|
82
|
-
| Třída / Enum | Popis |
|
|
83
|
-
|---|---|
|
|
84
|
-
| `RoleCategoryEnum` | `individual`, `personal`, `security`, `other` |
|
|
85
|
-
| `RoleCategoryType` | Boolean příznaky kategorií |
|
|
86
|
-
| `RoleBaseType` | Základ role (code, name, categories, note) |
|
|
87
|
-
| `RoleEntryType` | Položka seznamu rolí (rozšiřuje Base o identifier) |
|
|
88
|
-
| `RoleType` | Plná role s holders, admins, tags, document |
|
|
89
|
-
| `RoleListType` | Stránkovaný seznam rolí |
|
|
90
|
-
|
|
91
|
-
### `context` — Uživatelský kontext
|
|
92
|
-
|
|
93
|
-
| Třída | Popis |
|
|
94
|
-
|---|---|
|
|
95
|
-
| `ContextRolesType` | Role uživatele/subjektu (admin, holder) |
|
|
96
|
-
| `ContextPersonsType` | Subjekty uživatele (admin, contact, member, representative) |
|
|
97
|
-
| `ContextIndividualType` | Kompletní kontext konkrétního uživatele |
|
|
98
|
-
|
|
99
|
-
### `tag` — Tagy
|
|
100
|
-
|
|
101
|
-
| Třída | Popis |
|
|
102
|
-
|---|---|
|
|
103
|
-
| `TagItemType` | Jedna značka (tag, color) |
|
|
104
|
-
| `TagType` | Seznam tagů s metodami `has_tag`, `add_tag`, `remove_tag` |
|
|
105
|
-
| `TagListType` | Stránkovaný seznam tagů |
|
|
106
|
-
|
|
107
|
-
### `country` — Země (ISO 3166-1)
|
|
108
|
-
|
|
109
|
-
| Třída | Popis |
|
|
110
|
-
|---|---|
|
|
111
|
-
| `CountryType` | Stát: kódy n3/a2/a3, název česky a anglicky |
|
|
112
|
-
| `CountryListType` | Stránkovaný seznam zemí |
|
|
113
|
-
| `CountryMapType` | Seznam ve formátu code/value |
|
|
114
|
-
|
|
115
|
-
### `config` — Konfigurace
|
|
116
|
-
|
|
117
|
-
| Třída | Popis |
|
|
118
|
-
|---|---|
|
|
119
|
-
| `ConfigType` | Minimální konfigurace (`cache: Optional[StrictBool]`) |
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Vývoj
|
|
124
|
-
|
|
125
|
-
Viz [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) pro podrobnou vývojovou příručku.
|
|
126
|
-
|
|
127
|
-
```powershell
|
|
128
|
-
# Klonování a nastavení prostředí
|
|
129
|
-
cd D:\development\git\models\persons
|
|
130
|
-
.venv\Scripts\python.exe -m pip install -e .
|
|
131
|
-
|
|
132
|
-
# Spuštění testů
|
|
133
|
-
.venv\Scripts\python.exe -m pytest
|
|
134
|
-
|
|
135
|
-
# Spuštění testů s pokrytím
|
|
136
|
-
.venv\Scripts\python.exe -m pytest --cov=persons_model --cov-report=term-missing
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
---
|
|
140
|
-
|
|
141
|
-
## Technický stack
|
|
142
|
-
|
|
143
|
-
| Vrstva | Technologie | Verze |
|
|
144
|
-
|---|---|---|
|
|
145
|
-
| Datové modely | Pydantic v2 | ≥ 2.11.4 |
|
|
146
|
-
| Utility | sysnet-pyutils | ≥ 1.7.0 |
|
|
147
|
-
| Python | CPython | ≥ 3.10 |
|
|
148
|
-
| Testy | pytest + pytest-cov | 9.x / 7.x |
|
|
149
|
-
|
|
150
|
-
---
|
|
151
|
-
|
|
152
|
-
## Architektura
|
|
153
|
-
|
|
154
|
-
Viz [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
|
|
155
|
-
|
|
156
|
-
Všechny modely dodržují konzistentní vzor:
|
|
157
|
-
1. `BaseType` — základní atributy bez identifikátoru
|
|
158
|
-
2. `EntryType` — zkrácená položka pro seznamy
|
|
159
|
-
3. plný `Type` — rozšiřuje Base o `identifier`, `pid`, `registry`, `tags`, `document`
|
|
160
|
-
4. `ListType` — obálka pro stránkované výsledky (`hits`, `entries`)
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## Verze
|
|
165
|
-
|
|
166
|
-
Aktuální verze: **1.2.0**
|
|
167
|
-
|
|
168
|
-
Repozitář: https://github.com/SYSNET-CZ/models/tree/main/persons
|
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: sysnet-persons-model
|
|
3
|
-
Version: 1.2.7
|
|
4
|
-
Summary: SYSNET Persons Data Model
|
|
5
|
-
Author-email: Data Developer <info@sysnet.cz>
|
|
6
|
-
License-Expression: LicenseRef-SYSNET-FreeForHomeUse
|
|
7
|
-
Project-URL: Homepage, https://github.com/SYSNET-CZ/models/tree/main/persons
|
|
8
|
-
Classifier: Development Status :: 4 - Beta
|
|
9
|
-
Classifier: Programming Language :: Python :: 3
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Natural Language :: Czech
|
|
12
|
-
Classifier: Operating System :: OS Independent
|
|
13
|
-
Classifier: Topic :: Software Development :: Libraries
|
|
14
|
-
Requires-Python: >=3.10
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: sysnet-pyutils>=1.7.0
|
|
18
|
-
Requires-Dist: pydantic[email]>=2.11.4
|
|
19
|
-
Dynamic: license-file
|
|
20
|
-
|
|
21
|
-
# sysnet-persons-model
|
|
22
|
-
|
|
23
|
-
**Sdílený datový model Registru osob SYSNET**
|
|
24
|
-
|
|
25
|
-
[](https://www.python.org/)
|
|
26
|
-
[](https://docs.pydantic.dev/)
|
|
27
|
-
[](https://pypi.org/project/sysnet-persons-model/)
|
|
28
|
-
|
|
29
|
-
Čistá Python knihovna — **bez FastAPI, bez MongoDB**. Slouží jako sdílená datová vrstva
|
|
30
|
-
importovaná dalšími službami SYSNET.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Instalace
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
pip install sysnet-persons-model
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## Rychlý start
|
|
43
|
-
|
|
44
|
-
```python
|
|
45
|
-
from persons_model.individual import IndividualType
|
|
46
|
-
from persons_model.person_entity import PersonEntityType
|
|
47
|
-
from persons_model.role import RoleType
|
|
48
|
-
from persons_model.common import RegistryType, MembershipEnum, MemberType
|
|
49
|
-
from persons_model.tag import TagType, TagItemType
|
|
50
|
-
|
|
51
|
-
# Vytvoření jednotlivce
|
|
52
|
-
person = IndividualType(
|
|
53
|
-
identifier="550e8400-e29b-41d4-a716-446655440000",
|
|
54
|
-
name="Jan Novák",
|
|
55
|
-
username="jnovak",
|
|
56
|
-
)
|
|
57
|
-
|
|
58
|
-
# Přidání tagu
|
|
59
|
-
person.tags = TagType()
|
|
60
|
-
person.tags.add_tag(TagItemType(tag="aktivni", color="#00FF00"))
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
---
|
|
64
|
-
|
|
65
|
-
## Moduly
|
|
66
|
-
|
|
67
|
-
### `common` — Společné typy
|
|
68
|
-
|
|
69
|
-
| Třída / Enum | Popis |
|
|
70
|
-
|---|---|
|
|
71
|
-
| `RegistryEnum` | Identifikační registry (`CRZP`, `EMPTY`) |
|
|
72
|
-
| `RegistryType` | Reference na identifikační údaje (uuid, uri, other) |
|
|
73
|
-
| `MembershipEnum` | Typ členství: admin, representative, employee, department, general, other |
|
|
74
|
-
| `MemberType` | Členský záznam |
|
|
75
|
-
| `ContactType` | Kontaktní údaje osoby |
|
|
76
|
-
| `RedundantType` | Redundantní záznam (name, code, location, note) |
|
|
77
|
-
| `DepartmentType` | Útvar organizace (rozšiřuje `RedundantType` o `parent`) |
|
|
78
|
-
| `IssuingType` | Údaje pro vydávání dokladů |
|
|
79
|
-
| `ScopeType` | Definice rozsahu působnosti (Global, Regional, Local) |
|
|
80
|
-
|
|
81
|
-
### `individual` — Jednotlivci (uživatelé)
|
|
82
|
-
|
|
83
|
-
| Třída | Popis |
|
|
84
|
-
|---|---|
|
|
85
|
-
| `IndividualBaseType` | Základní atributy: jméno, username, DN, heslo, kontakty, adresy, GDPR |
|
|
86
|
-
| `IndividualEntryType` | Zkrácená položka pro seznam |
|
|
87
|
-
| `IndividualType` | Plný záznam osoby (rozšiřuje Base o identifier, pid, registry, tags, document) |
|
|
88
|
-
| `IndividualListType` | Stránkovaný seznam osob |
|
|
89
|
-
|
|
90
|
-
### `person_entity` — Subjekty
|
|
91
|
-
|
|
92
|
-
| Třída | Popis |
|
|
93
|
-
|---|---|
|
|
94
|
-
| `PersonEntityLinkType` | Odkaz na navázaný subjekt |
|
|
95
|
-
| `PersonEntityEntryType` | Položka subjektu v kontextu |
|
|
96
|
-
| `PersonEntityBaseType` | Základní atributy subjektu (včetně `scope`) |
|
|
97
|
-
| `PersonEntityType` | Plný záznam (fyzická / právnická osoba) |
|
|
98
|
-
| `PersonEntityListType` | Stránkovaný seznam subjektů |
|
|
99
|
-
|
|
100
|
-
### `role` — Role
|
|
101
|
-
|
|
102
|
-
| Třída / Enum | Popis |
|
|
103
|
-
|---|---|
|
|
104
|
-
| `RoleCategoryEnum` | `individual`, `personal`, `security`, `other` |
|
|
105
|
-
| `RoleCategoryType` | Boolean příznaky kategorií |
|
|
106
|
-
| `RoleBaseType` | Základ role (code, name, categories, note) |
|
|
107
|
-
| `RoleEntryType` | Položka seznamu rolí (rozšiřuje Base o identifier) |
|
|
108
|
-
| `RoleType` | Plná role s holders, admins, tags, document |
|
|
109
|
-
| `RoleListType` | Stránkovaný seznam rolí |
|
|
110
|
-
|
|
111
|
-
### `context` — Uživatelský kontext
|
|
112
|
-
|
|
113
|
-
| Třída | Popis |
|
|
114
|
-
|---|---|
|
|
115
|
-
| `ContextRolesType` | Role uživatele/subjektu (admin, holder) |
|
|
116
|
-
| `ContextPersonsType` | Subjekty uživatele (admin, contact, member, representative) |
|
|
117
|
-
| `ContextIndividualType` | Kompletní kontext konkrétního uživatele |
|
|
118
|
-
|
|
119
|
-
### `tag` — Tagy
|
|
120
|
-
|
|
121
|
-
| Třída | Popis |
|
|
122
|
-
|---|---|
|
|
123
|
-
| `TagItemType` | Jedna značka (tag, color) |
|
|
124
|
-
| `TagType` | Seznam tagů s metodami `has_tag`, `add_tag`, `remove_tag` |
|
|
125
|
-
| `TagListType` | Stránkovaný seznam tagů |
|
|
126
|
-
|
|
127
|
-
### `country` — Země (ISO 3166-1)
|
|
128
|
-
|
|
129
|
-
| Třída | Popis |
|
|
130
|
-
|---|---|
|
|
131
|
-
| `CountryType` | Stát: kódy n3/a2/a3, název česky a anglicky |
|
|
132
|
-
| `CountryListType` | Stránkovaný seznam zemí |
|
|
133
|
-
| `CountryMapType` | Seznam ve formátu code/value |
|
|
134
|
-
|
|
135
|
-
### `config` — Konfigurace
|
|
136
|
-
|
|
137
|
-
| Třída | Popis |
|
|
138
|
-
|---|---|
|
|
139
|
-
| `ConfigType` | Minimální konfigurace (`cache: Optional[StrictBool]`) |
|
|
140
|
-
|
|
141
|
-
---
|
|
142
|
-
|
|
143
|
-
## Vývoj
|
|
144
|
-
|
|
145
|
-
Viz [`docs/DEVELOPMENT.md`](docs/DEVELOPMENT.md) pro podrobnou vývojovou příručku.
|
|
146
|
-
|
|
147
|
-
```powershell
|
|
148
|
-
# Klonování a nastavení prostředí
|
|
149
|
-
cd D:\development\git\models\persons
|
|
150
|
-
.venv\Scripts\python.exe -m pip install -e .
|
|
151
|
-
|
|
152
|
-
# Spuštění testů
|
|
153
|
-
.venv\Scripts\python.exe -m pytest
|
|
154
|
-
|
|
155
|
-
# Spuštění testů s pokrytím
|
|
156
|
-
.venv\Scripts\python.exe -m pytest --cov=persons_model --cov-report=term-missing
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
## Technický stack
|
|
162
|
-
|
|
163
|
-
| Vrstva | Technologie | Verze |
|
|
164
|
-
|---|---|---|
|
|
165
|
-
| Datové modely | Pydantic v2 | ≥ 2.11.4 |
|
|
166
|
-
| Utility | sysnet-pyutils | ≥ 1.7.0 |
|
|
167
|
-
| Python | CPython | ≥ 3.10 |
|
|
168
|
-
| Testy | pytest + pytest-cov | 9.x / 7.x |
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## Architektura
|
|
173
|
-
|
|
174
|
-
Viz [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
|
|
175
|
-
|
|
176
|
-
Všechny modely dodržují konzistentní vzor:
|
|
177
|
-
1. `BaseType` — základní atributy bez identifikátoru
|
|
178
|
-
2. `EntryType` — zkrácená položka pro seznamy
|
|
179
|
-
3. plný `Type` — rozšiřuje Base o `identifier`, `pid`, `registry`, `tags`, `document`
|
|
180
|
-
4. `ListType` — obálka pro stránkované výsledky (`hits`, `entries`)
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## Verze
|
|
185
|
-
|
|
186
|
-
Aktuální verze: **1.2.0**
|
|
187
|
-
|
|
188
|
-
Repozitář: https://github.com/SYSNET-CZ/models/tree/main/persons
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/sysnet_persons_model.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{sysnet_persons_model-1.2.7 → sysnet_persons_model-1.3.0}/sysnet_persons_model.egg-info/requires.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|