sysnet-persons-model 1.2.5__tar.gz → 1.2.7__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.2.5 → sysnet_persons_model-1.2.7}/PKG-INFO +2 -2
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/README.md +1 -1
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/individual.py +8 -2
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/person_entity.py +10 -3
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/role.py +8 -2
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/pyproject.toml +1 -1
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/sysnet_persons_model.egg-info/PKG-INFO +2 -2
- sysnet_persons_model-1.2.7/tests/test_person_entity.py +137 -0
- sysnet_persons_model-1.2.5/tests/test_person_entity.py +0 -333
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/LICENSE +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/__init__.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/common.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/config.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/context.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/country.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/legal_form.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/persons_model/tag.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/requirements.txt +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/setup.cfg +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/sysnet_persons_model.egg-info/SOURCES.txt +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/sysnet_persons_model.egg-info/dependency_links.txt +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/sysnet_persons_model.egg-info/requires.txt +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/sysnet_persons_model.egg-info/top_level.txt +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_common.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_config.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_context.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_country.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_individual.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_legal_form.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_role.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_scope.py +0 -0
- {sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/tests/test_tag.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sysnet-persons-model
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.7
|
|
4
4
|
Summary: SYSNET Persons Data Model
|
|
5
5
|
Author-email: Data Developer <info@sysnet.cz>
|
|
6
6
|
License-Expression: LicenseRef-SYSNET-FreeForHomeUse
|
|
@@ -93,7 +93,7 @@ person.tags.add_tag(TagItemType(tag="aktivni", color="#00FF00"))
|
|
|
93
93
|
|---|---|
|
|
94
94
|
| `PersonEntityLinkType` | Odkaz na navázaný subjekt |
|
|
95
95
|
| `PersonEntityEntryType` | Položka subjektu v kontextu |
|
|
96
|
-
| `PersonEntityBaseType` | Základní atributy subjektu |
|
|
96
|
+
| `PersonEntityBaseType` | Základní atributy subjektu (včetně `scope`) |
|
|
97
97
|
| `PersonEntityType` | Plný záznam (fyzická / právnická osoba) |
|
|
98
98
|
| `PersonEntityListType` | Stránkovaný seznam subjektů |
|
|
99
99
|
|
|
@@ -73,7 +73,7 @@ person.tags.add_tag(TagItemType(tag="aktivni", color="#00FF00"))
|
|
|
73
73
|
|---|---|
|
|
74
74
|
| `PersonEntityLinkType` | Odkaz na navázaný subjekt |
|
|
75
75
|
| `PersonEntityEntryType` | Položka subjektu v kontextu |
|
|
76
|
-
| `PersonEntityBaseType` | Základní atributy subjektu |
|
|
76
|
+
| `PersonEntityBaseType` | Základní atributy subjektu (včetně `scope`) |
|
|
77
77
|
| `PersonEntityType` | Plný záznam (fyzická / právnická osoba) |
|
|
78
78
|
| `PersonEntityListType` | Stránkovaný seznam subjektů |
|
|
79
79
|
|
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
from datetime import datetime
|
|
4
4
|
from typing import List, Optional
|
|
5
5
|
|
|
6
|
-
from pydantic import BaseModel, Field, SecretStr, StrictBool
|
|
6
|
+
from pydantic import BaseModel, Field, SecretStr, StrictBool, AliasChoices
|
|
7
7
|
from sysnet_pyutils.models.general import LocationType, ListTypeBase, MetadataEssentialType
|
|
8
8
|
|
|
9
9
|
from persons_model.common import ContactType, RegistryType
|
|
@@ -46,7 +46,13 @@ class IndividualType(IndividualBaseType):
|
|
|
46
46
|
pid: Optional[str] = Field(default=None, description="identifikátor PID")
|
|
47
47
|
registry: Optional[RegistryType] = Field(default=None, description="Referenční registr")
|
|
48
48
|
tags: Optional[TagType] = Field(default=None, description="Seznam tagů objektu")
|
|
49
|
-
|
|
49
|
+
"""Sekce metadat životního cyklu pod aliasem 'metadata' (Redmine #9850)."""
|
|
50
|
+
document: Optional[MetadataEssentialType] = Field(
|
|
51
|
+
default=None,
|
|
52
|
+
description='Metadata životního cyklu objektu (vytvoření, modifikace, smazání). Přístupné i jako alias "metadata".',
|
|
53
|
+
validation_alias=AliasChoices('document', 'metadata'),
|
|
54
|
+
serialization_alias='document',
|
|
55
|
+
)
|
|
50
56
|
|
|
51
57
|
|
|
52
58
|
class IndividualListType(ListTypeBase):
|
|
@@ -3,10 +3,10 @@ from __future__ import annotations
|
|
|
3
3
|
from datetime import datetime
|
|
4
4
|
from typing import TYPE_CHECKING, List, Optional, Union
|
|
5
5
|
|
|
6
|
-
from pydantic import BaseModel, Field, StrictBool
|
|
6
|
+
from pydantic import BaseModel, Field, StrictBool, AliasChoices
|
|
7
7
|
from sysnet_pyutils.models.general import LocationType, PersonTypeEnum, ListTypeBase, MetadataEssentialType
|
|
8
8
|
|
|
9
|
-
from persons_model.common import RedundantType, DepartmentType, ContactType, IssuingType, RegistryType, MemberType
|
|
9
|
+
from persons_model.common import RedundantType, DepartmentType, ContactType, IssuingType, RegistryType, MemberType, ScopeType
|
|
10
10
|
from persons_model.legal_form import LegalFormEnum, LegalFormType, make_legal_form, person_type_from_legal_form
|
|
11
11
|
from persons_model.tag import TagType
|
|
12
12
|
|
|
@@ -63,6 +63,7 @@ class PersonEntityBaseType(BaseModel):
|
|
|
63
63
|
contacts: Optional[List[Optional[ContactType]]] = Field(default=None, description="Další kontaktní osoby")
|
|
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
|
+
scope: Optional[ScopeType] = Field(default=None, description="Rozsah působnosti subjektu")
|
|
66
67
|
|
|
67
68
|
def set_legal_form(self, code: Union[LegalFormEnum, str]) -> "PersonEntityBaseType":
|
|
68
69
|
"""Nastaví atribut legal_form podle kódu právní formy.
|
|
@@ -115,4 +116,10 @@ class PersonEntityType(PersonEntityBaseType):
|
|
|
115
116
|
members: Optional[List[Optional[MemberType]]] = Field(default=None, description="Členové subjektu")
|
|
116
117
|
linked_persons: Optional[List[Optional[PersonEntityLinkType]]] = Field(default=None, description="Vazba na jiný subjekt")
|
|
117
118
|
tags: Optional[TagType] = Field(default=None, description="Seznam tagů")
|
|
118
|
-
|
|
119
|
+
"""Sekce metadat životního cyklu pod aliasem 'metadata' (Redmine #9850)."""
|
|
120
|
+
document: Optional[MetadataEssentialType] = Field(
|
|
121
|
+
default=None,
|
|
122
|
+
description='Metadata životního cyklu objektu (vytvoření, modifikace, smazání). Přístupné i jako alias "metadata".',
|
|
123
|
+
validation_alias=AliasChoices('document', 'metadata'),
|
|
124
|
+
serialization_alias='document',
|
|
125
|
+
)
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import Optional, List
|
|
4
4
|
|
|
5
|
-
from pydantic import BaseModel, Field, StrictBool
|
|
5
|
+
from pydantic import BaseModel, Field, StrictBool, AliasChoices
|
|
6
6
|
from sysnet_pyutils.models.general import ListTypeBase, BaseEnum, MetadataEssentialType
|
|
7
7
|
|
|
8
8
|
from persons_model.common import RegistryType
|
|
@@ -43,7 +43,13 @@ class RoleType(RoleBaseType):
|
|
|
43
43
|
admins_individual: Optional[List[Optional[str]]] = Field(default=None, description="Správci role - jednotlivci")
|
|
44
44
|
admins_personal: Optional[List[Optional[str]]] = Field(default=None, description="Správci role - osoby")
|
|
45
45
|
tags: Optional[TagType] = Field(default=None, description="Seznam značek")
|
|
46
|
-
|
|
46
|
+
"""Sekce metadat životního cyklu pod aliasem 'metadata' (Redmine #9850)."""
|
|
47
|
+
document: Optional[MetadataEssentialType] = Field(
|
|
48
|
+
default=None,
|
|
49
|
+
description='Metadata životního cyklu objektu (vytvoření, modifikace, smazání). Přístupné i jako alias "metadata".',
|
|
50
|
+
validation_alias=AliasChoices('document', 'metadata'),
|
|
51
|
+
serialization_alias='document',
|
|
52
|
+
)
|
|
47
53
|
|
|
48
54
|
|
|
49
55
|
class RoleEntryType(RoleBaseType):
|
{sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/sysnet_persons_model.egg-info/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sysnet-persons-model
|
|
3
|
-
Version: 1.2.
|
|
3
|
+
Version: 1.2.7
|
|
4
4
|
Summary: SYSNET Persons Data Model
|
|
5
5
|
Author-email: Data Developer <info@sysnet.cz>
|
|
6
6
|
License-Expression: LicenseRef-SYSNET-FreeForHomeUse
|
|
@@ -93,7 +93,7 @@ person.tags.add_tag(TagItemType(tag="aktivni", color="#00FF00"))
|
|
|
93
93
|
|---|---|
|
|
94
94
|
| `PersonEntityLinkType` | Odkaz na navázaný subjekt |
|
|
95
95
|
| `PersonEntityEntryType` | Položka subjektu v kontextu |
|
|
96
|
-
| `PersonEntityBaseType` | Základní atributy subjektu |
|
|
96
|
+
| `PersonEntityBaseType` | Základní atributy subjektu (včetně `scope`) |
|
|
97
97
|
| `PersonEntityType` | Plný záznam (fyzická / právnická osoba) |
|
|
98
98
|
| `PersonEntityListType` | Stránkovaný seznam subjektů |
|
|
99
99
|
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from datetime import datetime
|
|
3
|
+
from typing import List, Optional
|
|
4
|
+
from pydantic import ValidationError
|
|
5
|
+
from sysnet_pyutils.models.general import LocationType, PersonTypeEnum
|
|
6
|
+
from persons_model.person_entity import (
|
|
7
|
+
PersonEntityLinkType,
|
|
8
|
+
PersonEntityEntryType,
|
|
9
|
+
PersonEntityListType,
|
|
10
|
+
PersonEntityBaseType,
|
|
11
|
+
PersonEntityType
|
|
12
|
+
)
|
|
13
|
+
from persons_model.legal_form import LegalFormEnum
|
|
14
|
+
|
|
15
|
+
@pytest.fixture
|
|
16
|
+
def sample_person_entity():
|
|
17
|
+
return PersonEntityEntryType(identifier="test-id", name="Sample")
|
|
18
|
+
|
|
19
|
+
class TestPersonEntityLinkType:
|
|
20
|
+
def test_prazdny(self):
|
|
21
|
+
l = PersonEntityLinkType()
|
|
22
|
+
assert l.identifier is None
|
|
23
|
+
assert l.name is None
|
|
24
|
+
|
|
25
|
+
def test_s_hodnotami(self):
|
|
26
|
+
l = PersonEntityLinkType(identifier="x", name="Test", link_type="parent")
|
|
27
|
+
assert l.identifier == "x"
|
|
28
|
+
assert l.link_type == "parent"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class TestPersonEntityEntryType:
|
|
32
|
+
def test_prazdny(self):
|
|
33
|
+
p = PersonEntityEntryType()
|
|
34
|
+
assert p.identifier is None
|
|
35
|
+
assert p.is_admin is False
|
|
36
|
+
|
|
37
|
+
def test_s_hodnotami(self):
|
|
38
|
+
p = PersonEntityEntryType(identifier="x", name="Test", is_admin=True)
|
|
39
|
+
assert p.identifier == "x"
|
|
40
|
+
assert p.is_admin == True
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class TestPersonEntityType:
|
|
44
|
+
def test_prazdny(self):
|
|
45
|
+
p = PersonEntityType()
|
|
46
|
+
assert p.identifier is None
|
|
47
|
+
|
|
48
|
+
def test_serialization(self):
|
|
49
|
+
p = PersonEntityType(identifier="x", name="Test")
|
|
50
|
+
data = p.model_dump()
|
|
51
|
+
p2 = PersonEntityType.model_validate(data)
|
|
52
|
+
assert p2.identifier == "x"
|
|
53
|
+
assert p2.name == "Test"
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class TestPersonEntityListType:
|
|
57
|
+
def test_prazdny(self):
|
|
58
|
+
lst = PersonEntityListType()
|
|
59
|
+
assert lst.hits is None
|
|
60
|
+
assert lst.entries is None
|
|
61
|
+
|
|
62
|
+
def test_s_polozkami(self):
|
|
63
|
+
entries = [
|
|
64
|
+
PersonEntityEntryType(identifier="pe1", name="Firma A"),
|
|
65
|
+
PersonEntityEntryType(identifier="pe2", name="Firma B"),
|
|
66
|
+
]
|
|
67
|
+
lst = PersonEntityListType(hits=2, entries=entries)
|
|
68
|
+
assert lst.hits == 2
|
|
69
|
+
assert lst.entries[1].name == "Firma B"
|
|
70
|
+
|
|
71
|
+
def test_persons_list(self, sample_person_entity):
|
|
72
|
+
lst = PersonEntityListType(hits=1, entries=[sample_person_entity])
|
|
73
|
+
assert lst.hits == 1
|
|
74
|
+
assert len(lst.entries) == 1
|
|
75
|
+
|
|
76
|
+
def test_scope_in_base_type(self):
|
|
77
|
+
from persons_model.common import ScopeType, ScopeLevelEnum
|
|
78
|
+
entity = PersonEntityBaseType(
|
|
79
|
+
name="Test Subjekt",
|
|
80
|
+
scope=ScopeType(level=ScopeLevelEnum.GLOBAL)
|
|
81
|
+
)
|
|
82
|
+
assert entity.scope.level == ScopeLevelEnum.GLOBAL
|
|
83
|
+
assert entity.name == "Test Subjekt"
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
class TestPersonEntityBaseTypeSetLegalForm:
|
|
87
|
+
def test_set_legal_form_z_retezce(self):
|
|
88
|
+
"""set_legal_form('112') nastaví legal_form s kódem PF_112 a českým názvem."""
|
|
89
|
+
p = PersonEntityBaseType(name="ACME s.r.o.")
|
|
90
|
+
result = p.set_legal_form("112")
|
|
91
|
+
assert result is p # vrací self
|
|
92
|
+
assert p.legal_form is not None
|
|
93
|
+
assert p.legal_form.code == LegalFormEnum.PF_112
|
|
94
|
+
assert p.legal_form.name == "Společnost s ručením omezeným"
|
|
95
|
+
|
|
96
|
+
def test_set_legal_form_z_enumu(self):
|
|
97
|
+
p = PersonEntityBaseType(name="Kraj JHC")
|
|
98
|
+
p.set_legal_form(LegalFormEnum.PF_804)
|
|
99
|
+
assert p.legal_form.code == LegalFormEnum.PF_804
|
|
100
|
+
assert p.legal_form.name == "Kraj"
|
|
101
|
+
|
|
102
|
+
def test_set_legal_form_vraci_self(self):
|
|
103
|
+
"""Metoda vrací self pro method chaining."""
|
|
104
|
+
p = PersonEntityBaseType()
|
|
105
|
+
assert p.set_legal_form("112") is p
|
|
106
|
+
|
|
107
|
+
def test_neplatny_kod_vyhodi_chybu(self):
|
|
108
|
+
p = PersonEntityBaseType()
|
|
109
|
+
with pytest.raises(ValueError):
|
|
110
|
+
p.set_legal_form("999")
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
class TestPersonEntityBaseTypeSetPersonTypeFromLegalForm:
|
|
114
|
+
def test_legal_entity(self):
|
|
115
|
+
p = PersonEntityBaseType()
|
|
116
|
+
p.set_legal_form("112")
|
|
117
|
+
p.set_person_type_from_legal_form()
|
|
118
|
+
assert p.person_type == PersonTypeEnum.LEGAL_ENTITY
|
|
119
|
+
|
|
120
|
+
def test_individual_entrepreneur(self):
|
|
121
|
+
p = PersonEntityBaseType()
|
|
122
|
+
# Kód 100 jako příklad
|
|
123
|
+
p.set_legal_form("100")
|
|
124
|
+
p.set_person_type_from_legal_form()
|
|
125
|
+
assert p.person_type == PersonTypeEnum.BUSINESS_NATURAL_PERSON
|
|
126
|
+
|
|
127
|
+
def test_bez_legal_form_nic_nenastavi(self):
|
|
128
|
+
p = PersonEntityBaseType(person_type=None)
|
|
129
|
+
p.set_person_type_from_legal_form()
|
|
130
|
+
assert p.person_type is None
|
|
131
|
+
|
|
132
|
+
def test_neznamy_kod_nic_nenastavi(self):
|
|
133
|
+
p = PersonEntityBaseType(person_type=None)
|
|
134
|
+
# Použijeme validní kód, ale simulujeme situaci, kdy pt je None
|
|
135
|
+
# V tomto modelu jsou všechny enums validní, takže test je spíše formální
|
|
136
|
+
p.set_person_type_from_legal_form()
|
|
137
|
+
assert p.person_type is None
|
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Testy pro modul persons_model.person_entity
|
|
3
|
-
"""
|
|
4
|
-
import pytest
|
|
5
|
-
from datetime import datetime, timezone
|
|
6
|
-
from sysnet_pyutils.models.general import PersonTypeEnum, LocationType
|
|
7
|
-
|
|
8
|
-
from persons_model.person_entity import (
|
|
9
|
-
PersonEntityLinkType, PersonEntityEntryType,
|
|
10
|
-
PersonEntityBaseType, PersonEntityType, PersonEntityListType,
|
|
11
|
-
)
|
|
12
|
-
from persons_model.common import (
|
|
13
|
-
RegistryType, MemberType, MembershipEnum,
|
|
14
|
-
ContactType, IssuingType, RedundantType, DepartmentType,
|
|
15
|
-
)
|
|
16
|
-
from persons_model.legal_form import LegalFormType, LegalFormEnum
|
|
17
|
-
from persons_model.tag import TagType, TagItemType
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class TestPersonEntityLinkType:
|
|
21
|
-
def test_prazdny(self):
|
|
22
|
-
p = PersonEntityLinkType()
|
|
23
|
-
assert p.identifier is None
|
|
24
|
-
assert p.code is None
|
|
25
|
-
assert p.name is None
|
|
26
|
-
assert p.link_type is None
|
|
27
|
-
|
|
28
|
-
def test_s_hodnotami(self):
|
|
29
|
-
p = PersonEntityLinkType(
|
|
30
|
-
identifier="pe-uuid", code="PE01",
|
|
31
|
-
name="Vazba s.r.o.", link_type="subsidiary",
|
|
32
|
-
)
|
|
33
|
-
assert p.identifier == "pe-uuid"
|
|
34
|
-
assert p.link_type == "subsidiary"
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
class TestPersonEntityEntryType:
|
|
38
|
-
def test_vychozi_hodnoty(self):
|
|
39
|
-
e = PersonEntityEntryType()
|
|
40
|
-
assert e.identifier is None
|
|
41
|
-
assert e.is_admin is False
|
|
42
|
-
assert e.membership is None
|
|
43
|
-
assert e.tags is None
|
|
44
|
-
assert e.ico is None
|
|
45
|
-
assert e.headquarters is None
|
|
46
|
-
|
|
47
|
-
def test_s_hodnotami(self):
|
|
48
|
-
e = PersonEntityEntryType(
|
|
49
|
-
identifier="pe-1",
|
|
50
|
-
name="ACME s.r.o.",
|
|
51
|
-
is_admin=True,
|
|
52
|
-
membership="admin",
|
|
53
|
-
)
|
|
54
|
-
assert e.identifier == "pe-1"
|
|
55
|
-
assert e.is_admin is True
|
|
56
|
-
|
|
57
|
-
def test_ico(self):
|
|
58
|
-
"""Pole ico je přítomno a správně nastaveno."""
|
|
59
|
-
e = PersonEntityEntryType(identifier="pe-2", name="Firma s.r.o.", ico="12345678")
|
|
60
|
-
assert e.ico == "12345678"
|
|
61
|
-
|
|
62
|
-
def test_ico_none(self):
|
|
63
|
-
"""Pole ico je Optional — default None."""
|
|
64
|
-
e = PersonEntityEntryType(name="Fyzická osoba")
|
|
65
|
-
assert e.ico is None
|
|
66
|
-
|
|
67
|
-
def test_headquarters(self):
|
|
68
|
-
"""Pole headquarters přijme LocationType."""
|
|
69
|
-
loc = LocationType(city="Praha", zip="11000")
|
|
70
|
-
e = PersonEntityEntryType(name="ACME s.r.o.", headquarters=loc)
|
|
71
|
-
assert e.headquarters is not None
|
|
72
|
-
assert e.headquarters.city == "Praha"
|
|
73
|
-
assert e.headquarters.zip == "11000"
|
|
74
|
-
|
|
75
|
-
def test_headquarters_none(self):
|
|
76
|
-
"""Pole headquarters je Optional — default None."""
|
|
77
|
-
e = PersonEntityEntryType(name="Firma")
|
|
78
|
-
assert e.headquarters is None
|
|
79
|
-
|
|
80
|
-
def test_plny_entry(self):
|
|
81
|
-
"""Všechna pole včetně ico a headquarters najednou."""
|
|
82
|
-
loc = LocationType(city="Brno")
|
|
83
|
-
e = PersonEntityEntryType(
|
|
84
|
-
identifier="pe-3",
|
|
85
|
-
person_type=PersonTypeEnum.LEGAL_ENTITY,
|
|
86
|
-
ico="87654321",
|
|
87
|
-
name="Beta a.s.",
|
|
88
|
-
headquarters=loc,
|
|
89
|
-
is_admin=False,
|
|
90
|
-
membership="member",
|
|
91
|
-
)
|
|
92
|
-
assert e.identifier == "pe-3"
|
|
93
|
-
assert e.person_type == PersonTypeEnum.LEGAL_ENTITY
|
|
94
|
-
assert e.ico == "87654321"
|
|
95
|
-
assert e.name == "Beta a.s."
|
|
96
|
-
assert e.headquarters.city == "Brno"
|
|
97
|
-
|
|
98
|
-
def test_serializace_ico_headquarters(self):
|
|
99
|
-
"""model_dump obsahuje ico a headquarters."""
|
|
100
|
-
loc = LocationType(city="Ostrava")
|
|
101
|
-
e = PersonEntityEntryType(ico="11223344", headquarters=loc)
|
|
102
|
-
data = e.model_dump()
|
|
103
|
-
assert data["ico"] == "11223344"
|
|
104
|
-
assert data["headquarters"]["city"] == "Ostrava"
|
|
105
|
-
|
|
106
|
-
def test_deserializace_ico_headquarters(self):
|
|
107
|
-
"""model_validate správně načte ico a headquarters."""
|
|
108
|
-
data = {
|
|
109
|
-
"identifier": "pe-4",
|
|
110
|
-
"ico": "99887766",
|
|
111
|
-
"name": "Gamma s.r.o.",
|
|
112
|
-
"headquarters": {"city": "Plzeň"},
|
|
113
|
-
}
|
|
114
|
-
e = PersonEntityEntryType.model_validate(data)
|
|
115
|
-
assert e.ico == "99887766"
|
|
116
|
-
assert e.headquarters.city == "Plzeň"
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
class TestPersonEntityBaseType:
|
|
120
|
-
def test_prazdny(self):
|
|
121
|
-
p = PersonEntityBaseType()
|
|
122
|
-
assert p.code is None
|
|
123
|
-
assert p.ico is None
|
|
124
|
-
assert p.birthdate is None
|
|
125
|
-
assert p.name is None
|
|
126
|
-
assert p.full_name is None
|
|
127
|
-
assert p.headquarters is None
|
|
128
|
-
assert p.note is None
|
|
129
|
-
assert p.legal_form is None
|
|
130
|
-
|
|
131
|
-
def test_s_hodnotami(self):
|
|
132
|
-
p = PersonEntityBaseType(
|
|
133
|
-
code="PE001",
|
|
134
|
-
ico="12345678",
|
|
135
|
-
name="ACME s.r.o.",
|
|
136
|
-
full_name="ACME spol. s ručením omezeným",
|
|
137
|
-
)
|
|
138
|
-
assert p.code == "PE001"
|
|
139
|
-
assert p.ico == "12345678"
|
|
140
|
-
|
|
141
|
-
def test_legal_form_sro(self):
|
|
142
|
-
lf = LegalFormType(code=LegalFormEnum.PF_112, name="Společnost s ručením omezeným")
|
|
143
|
-
p = PersonEntityBaseType(name="ACME s.r.o.", legal_form=lf)
|
|
144
|
-
assert p.legal_form is not None
|
|
145
|
-
assert p.legal_form.code == LegalFormEnum.PF_112
|
|
146
|
-
assert p.legal_form.name == "Společnost s ručením omezeným"
|
|
147
|
-
|
|
148
|
-
def test_legal_form_jen_code(self):
|
|
149
|
-
p = PersonEntityBaseType(name="Kraj JHC", legal_form=LegalFormType(code=LegalFormEnum.PF_804))
|
|
150
|
-
assert p.legal_form.code == LegalFormEnum.PF_804
|
|
151
|
-
assert p.legal_form.name is None
|
|
152
|
-
|
|
153
|
-
def test_legal_form_serializace(self):
|
|
154
|
-
lf = LegalFormType(code=LegalFormEnum.PF_121, name="Akciová společnost")
|
|
155
|
-
p = PersonEntityBaseType(name="Firma a.s.", legal_form=lf)
|
|
156
|
-
data = p.model_dump()
|
|
157
|
-
assert data["legal_form"]["code"] == "121"
|
|
158
|
-
p2 = PersonEntityBaseType.model_validate(data)
|
|
159
|
-
assert p2.legal_form.code == LegalFormEnum.PF_121
|
|
160
|
-
|
|
161
|
-
def test_s_issuing(self):
|
|
162
|
-
issuing = IssuingType(code="ORG01", authority="MZe")
|
|
163
|
-
p = PersonEntityBaseType(issuing=[issuing])
|
|
164
|
-
assert len(p.issuing) == 1
|
|
165
|
-
assert p.issuing[0].authority == "MZe"
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
class TestPersonEntityType:
|
|
169
|
-
def test_vychozi_hodnoty(self):
|
|
170
|
-
p = PersonEntityType()
|
|
171
|
-
assert p.identifier is None
|
|
172
|
-
assert p.pid is None
|
|
173
|
-
assert p.registry is None
|
|
174
|
-
assert p.admins is None
|
|
175
|
-
assert p.members is None
|
|
176
|
-
assert p.linked_persons is None
|
|
177
|
-
assert p.tags is None
|
|
178
|
-
assert p.document is None
|
|
179
|
-
|
|
180
|
-
def test_plny_zaznam(self):
|
|
181
|
-
reg = RegistryType(uuid="reg-uuid")
|
|
182
|
-
member = MemberType(
|
|
183
|
-
identifier="m1", name="Jan Novák",
|
|
184
|
-
membership=MembershipEnum.EMPLOYEE,
|
|
185
|
-
)
|
|
186
|
-
link = PersonEntityLinkType(identifier="pe-2", name="Dcera s.r.o.")
|
|
187
|
-
tag = TagType()
|
|
188
|
-
tag.add_tag(TagItemType(tag="aktivni"))
|
|
189
|
-
p = PersonEntityType(
|
|
190
|
-
identifier="pe-uuid",
|
|
191
|
-
pid="pid-001",
|
|
192
|
-
code="PE001",
|
|
193
|
-
name="Matka a.s.",
|
|
194
|
-
registry=reg,
|
|
195
|
-
admins=["admin-uuid"],
|
|
196
|
-
members=[member],
|
|
197
|
-
linked_persons=[link],
|
|
198
|
-
tags=tag,
|
|
199
|
-
)
|
|
200
|
-
assert p.identifier == "pe-uuid"
|
|
201
|
-
assert p.registry.identifier == "reg-uuid"
|
|
202
|
-
assert len(p.admins) == 1
|
|
203
|
-
assert len(p.members) == 1
|
|
204
|
-
assert p.members[0].membership == MembershipEnum.EMPLOYEE
|
|
205
|
-
assert len(p.linked_persons) == 1
|
|
206
|
-
assert p.tags.has_tag("aktivni") is True
|
|
207
|
-
|
|
208
|
-
def test_serializace_deserializace(self):
|
|
209
|
-
p = PersonEntityType(identifier="x", code="C1", name="Test")
|
|
210
|
-
data = p.model_dump()
|
|
211
|
-
p2 = PersonEntityType.model_validate(data)
|
|
212
|
-
assert p2.identifier == "x"
|
|
213
|
-
assert p2.name == "Test"
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
class TestPersonEntityListType:
|
|
217
|
-
def test_prazdny(self):
|
|
218
|
-
lst = PersonEntityListType()
|
|
219
|
-
assert lst.hits is None
|
|
220
|
-
assert lst.entries is None
|
|
221
|
-
|
|
222
|
-
def test_s_polozkami(self):
|
|
223
|
-
entries = [
|
|
224
|
-
PersonEntityEntryType(identifier="pe1", name="Firma A"),
|
|
225
|
-
PersonEntityEntryType(identifier="pe2", name="Firma B"),
|
|
226
|
-
]
|
|
227
|
-
lst = PersonEntityListType(hits=2, entries=entries)
|
|
228
|
-
assert lst.hits == 2
|
|
229
|
-
assert lst.entries[1].name == "Firma B"
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
class TestPersonEntityBaseTypeSetLegalForm:
|
|
233
|
-
def test_set_legal_form_z_retezce(self):
|
|
234
|
-
"""set_legal_form('112') nastaví legal_form s kódem PF_112 a českým názvem."""
|
|
235
|
-
p = PersonEntityBaseType(name="ACME s.r.o.")
|
|
236
|
-
result = p.set_legal_form("112")
|
|
237
|
-
assert result is p # vrací self
|
|
238
|
-
assert p.legal_form is not None
|
|
239
|
-
assert p.legal_form.code == LegalFormEnum.PF_112
|
|
240
|
-
assert p.legal_form.name == "Společnost s ručením omezeným"
|
|
241
|
-
|
|
242
|
-
def test_set_legal_form_z_enumu(self):
|
|
243
|
-
p = PersonEntityBaseType(name="Kraj JHC")
|
|
244
|
-
p.set_legal_form(LegalFormEnum.PF_804)
|
|
245
|
-
assert p.legal_form.code == LegalFormEnum.PF_804
|
|
246
|
-
assert p.legal_form.name == "Kraj"
|
|
247
|
-
|
|
248
|
-
def test_set_legal_form_vraci_self(self):
|
|
249
|
-
"""Metoda vrací self pro method chaining."""
|
|
250
|
-
p = PersonEntityBaseType()
|
|
251
|
-
assert p.set_legal_form("121") is p
|
|
252
|
-
|
|
253
|
-
def test_set_legal_form_prepise_existujici(self):
|
|
254
|
-
"""Volání set_legal_form přepíše předchozí hodnotu."""
|
|
255
|
-
p = PersonEntityBaseType()
|
|
256
|
-
p.set_legal_form("112")
|
|
257
|
-
p.set_legal_form("121")
|
|
258
|
-
assert p.legal_form.code == LegalFormEnum.PF_121
|
|
259
|
-
assert p.legal_form.name == "Akciová společnost"
|
|
260
|
-
|
|
261
|
-
def test_set_legal_form_neplatny_kod(self):
|
|
262
|
-
"""Neplatný kód vyhodí ValueError."""
|
|
263
|
-
p = PersonEntityBaseType()
|
|
264
|
-
with pytest.raises(ValueError):
|
|
265
|
-
p.set_legal_form("999")
|
|
266
|
-
|
|
267
|
-
def test_set_legal_form_dedeno_person_entity_type(self):
|
|
268
|
-
"""Metoda funguje i na potomkovi PersonEntityType."""
|
|
269
|
-
p = PersonEntityType(name="Firma")
|
|
270
|
-
p.set_legal_form("325")
|
|
271
|
-
assert p.legal_form.code == LegalFormEnum.PF_325
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
class TestPersonEntityBaseTypeSetPersonTypeFromLegalForm:
|
|
275
|
-
def test_sro_legal_entity(self):
|
|
276
|
-
"""s.r.o. (112) -> LEGAL_ENTITY."""
|
|
277
|
-
p = PersonEntityBaseType(name="ACME s.r.o.")
|
|
278
|
-
p.set_legal_form("112").set_person_type_from_legal_form()
|
|
279
|
-
assert p.person_type == PersonTypeEnum.LEGAL_ENTITY
|
|
280
|
-
|
|
281
|
-
def test_as_legal_entity(self):
|
|
282
|
-
p = PersonEntityBaseType()
|
|
283
|
-
p.set_legal_form("121").set_person_type_from_legal_form()
|
|
284
|
-
assert p.person_type == PersonTypeEnum.LEGAL_ENTITY
|
|
285
|
-
|
|
286
|
-
def test_obec_legal_entity(self):
|
|
287
|
-
p = PersonEntityBaseType()
|
|
288
|
-
p.set_legal_form("801").set_person_type_from_legal_form()
|
|
289
|
-
assert p.person_type == PersonTypeEnum.LEGAL_ENTITY
|
|
290
|
-
|
|
291
|
-
def test_org_slozka_legal_entity_wo_ico(self):
|
|
292
|
-
p = PersonEntityBaseType()
|
|
293
|
-
p.set_legal_form("325").set_person_type_from_legal_form()
|
|
294
|
-
assert p.person_type == PersonTypeEnum.LEGAL_ENTITY_WO_ICO
|
|
295
|
-
|
|
296
|
-
def test_zahranicni_po_foreign_legal_entity(self):
|
|
297
|
-
p = PersonEntityBaseType()
|
|
298
|
-
p.set_legal_form("421").set_person_type_from_legal_form()
|
|
299
|
-
assert p.person_type == PersonTypeEnum.FOREIGN_LEGAL_ENTITY
|
|
300
|
-
|
|
301
|
-
def test_fo_podnikajici_business_natural_person(self):
|
|
302
|
-
p = PersonEntityBaseType()
|
|
303
|
-
p.set_legal_form("100").set_person_type_from_legal_form()
|
|
304
|
-
assert p.person_type == PersonTypeEnum.BUSINESS_NATURAL_PERSON
|
|
305
|
-
|
|
306
|
-
def test_zahranicni_fo_foreign_natural_person(self):
|
|
307
|
-
p = PersonEntityBaseType()
|
|
308
|
-
p.set_legal_form("424").set_person_type_from_legal_form()
|
|
309
|
-
assert p.person_type == PersonTypeEnum.FOREIGN_NATURAL_PERSON
|
|
310
|
-
|
|
311
|
-
def test_bez_legal_form_person_type_se_nezmeni(self):
|
|
312
|
-
"""Bez nastaveného legal_form person_type zůstane None."""
|
|
313
|
-
p = PersonEntityBaseType()
|
|
314
|
-
p.set_person_type_from_legal_form()
|
|
315
|
-
assert p.person_type is None
|
|
316
|
-
|
|
317
|
-
def test_bez_legal_form_existujici_person_type_se_nezmeni(self):
|
|
318
|
-
"""Bez nastaveného legal_form se původní person_type nepřepíše."""
|
|
319
|
-
p = PersonEntityBaseType(person_type=PersonTypeEnum.LEGAL_ENTITY)
|
|
320
|
-
p.set_person_type_from_legal_form()
|
|
321
|
-
assert p.person_type == PersonTypeEnum.LEGAL_ENTITY
|
|
322
|
-
|
|
323
|
-
def test_chaining_jednokrokovy(self):
|
|
324
|
-
"""Řetězení set_legal_form + set_person_type_from_legal_form v jednom výrazu."""
|
|
325
|
-
p = PersonEntityBaseType(name="Spolek")
|
|
326
|
-
p.set_legal_form("706").set_person_type_from_legal_form()
|
|
327
|
-
assert p.legal_form.code == LegalFormEnum.PF_706
|
|
328
|
-
assert p.person_type == PersonTypeEnum.LEGAL_ENTITY
|
|
329
|
-
|
|
330
|
-
def test_vraci_self(self):
|
|
331
|
-
p = PersonEntityBaseType()
|
|
332
|
-
p.set_legal_form("112")
|
|
333
|
-
assert p.set_person_type_from_legal_form() is p
|
|
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.5 → sysnet_persons_model-1.2.7}/sysnet_persons_model.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{sysnet_persons_model-1.2.5 → sysnet_persons_model-1.2.7}/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
|