ramifice 0.8.18__py3-none-any.whl → 0.8.20__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.
- ramifice/__init__.py +4 -1
- ramifice/models/decorator.py +0 -6
- ramifice/models/model.py +5 -2
- ramifice/paladins/__init__.py +6 -0
- ramifice/{utils/mixins → paladins}/add_valid.py +4 -2
- ramifice/utils/mixins/__init__.py +1 -9
- {ramifice-0.8.18.dist-info → ramifice-0.8.20.dist-info}/METADATA +14 -8
- {ramifice-0.8.18.dist-info → ramifice-0.8.20.dist-info}/RECORD +12 -12
- /ramifice/{utils/mixins → paladins}/hooks.py +0 -0
- /ramifice/{utils/mixins → paladins}/indexing.py +0 -0
- {ramifice-0.8.18.dist-info → ramifice-0.8.20.dist-info}/WHEEL +0 -0
- {ramifice-0.8.18.dist-info → ramifice-0.8.20.dist-info}/licenses/LICENSE +0 -0
ramifice/__init__.py
CHANGED
@@ -12,9 +12,10 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
"""
|
15
|
+
"""ORM-pseudo-like API MongoDB for Python language."""
|
16
16
|
|
17
17
|
__all__ = (
|
18
|
+
"NamedTuple",
|
18
19
|
"model",
|
19
20
|
"translations",
|
20
21
|
"Migration",
|
@@ -23,6 +24,8 @@ __all__ = (
|
|
23
24
|
|
24
25
|
import logging
|
25
26
|
|
27
|
+
from xloft import NamedTuple
|
28
|
+
|
26
29
|
from ramifice.models.decorator import model
|
27
30
|
from ramifice.utils import translations
|
28
31
|
from ramifice.utils.migration import Migration
|
ramifice/models/decorator.py
CHANGED
@@ -13,9 +13,6 @@ from ramifice.models.model import Model
|
|
13
13
|
from ramifice.paladins import QPaladinsMixin
|
14
14
|
from ramifice.utils.constants import REGEX
|
15
15
|
from ramifice.utils.errors import DoesNotMatchRegexError, PanicError
|
16
|
-
from ramifice.utils.mixins.add_valid import AddValidMixin
|
17
|
-
from ramifice.utils.mixins.hooks import HooksMixin
|
18
|
-
from ramifice.utils.mixins.indexing import IndexMixin
|
19
16
|
|
20
17
|
logger = logging.getLogger(__name__)
|
21
18
|
|
@@ -91,9 +88,6 @@ def model(
|
|
91
88
|
Model,
|
92
89
|
QPaladinsMixin,
|
93
90
|
QCommonsMixin,
|
94
|
-
AddValidMixin,
|
95
|
-
IndexMixin,
|
96
|
-
HooksMixin,
|
97
91
|
),
|
98
92
|
attrs,
|
99
93
|
)
|
ramifice/models/model.py
CHANGED
@@ -9,6 +9,7 @@ import orjson
|
|
9
9
|
from babel.dates import format_date, format_datetime
|
10
10
|
from bson.objectid import ObjectId
|
11
11
|
from dateutil.parser import parse
|
12
|
+
from xloft import NamedTuple
|
12
13
|
|
13
14
|
from ramifice.fields import DateTimeField, IDField
|
14
15
|
from ramifice.utils import translations
|
@@ -190,12 +191,14 @@ class Model(metaclass=ABCMeta):
|
|
190
191
|
self.__dict__[name].value = value
|
191
192
|
|
192
193
|
# --------------------------------------------------------------------------
|
193
|
-
def get_clean_data(self) -> tuple[
|
194
|
+
def get_clean_data(self) -> tuple[NamedTuple, NamedTuple]:
|
194
195
|
"""Get clean data."""
|
195
196
|
clean_data: dict[str, Any] = {}
|
197
|
+
error_map: dict[str, Any] = {}
|
196
198
|
|
197
199
|
for name, data in self.__dict__.items():
|
198
200
|
if not callable(data):
|
199
201
|
clean_data[name] = data.value
|
202
|
+
error_map[name] = None
|
200
203
|
|
201
|
-
return (clean_data,
|
204
|
+
return (NamedTuple(**clean_data), NamedTuple(**error_map))
|
ramifice/paladins/__init__.py
CHANGED
@@ -2,8 +2,11 @@
|
|
2
2
|
|
3
3
|
__all__ = ("QPaladinsMixin",)
|
4
4
|
|
5
|
+
from ramifice.paladins.add_valid import AddValidMixin
|
5
6
|
from ramifice.paladins.check import CheckMixin
|
6
7
|
from ramifice.paladins.delete import DeleteMixin
|
8
|
+
from ramifice.paladins.hooks import HooksMixin
|
9
|
+
from ramifice.paladins.indexing import IndexMixin
|
7
10
|
from ramifice.paladins.password import PasswordMixin
|
8
11
|
from ramifice.paladins.refrash import RefrashMixin
|
9
12
|
from ramifice.paladins.save import SaveMixin
|
@@ -17,6 +20,9 @@ class QPaladinsMixin(
|
|
17
20
|
DeleteMixin,
|
18
21
|
RefrashMixin,
|
19
22
|
ValidationMixin,
|
23
|
+
AddValidMixin,
|
24
|
+
HooksMixin,
|
25
|
+
IndexMixin,
|
20
26
|
):
|
21
27
|
"""Ramifice - Paladins - Model instance methods."""
|
22
28
|
|
@@ -4,10 +4,12 @@ __all__ = ("AddValidMixin",)
|
|
4
4
|
|
5
5
|
from abc import ABCMeta
|
6
6
|
|
7
|
+
from xloft import NamedTuple
|
8
|
+
|
7
9
|
|
8
10
|
class AddValidMixin(metaclass=ABCMeta):
|
9
11
|
"""Ramifice - Contains an abstract method for additional validation of fields."""
|
10
12
|
|
11
|
-
async def add_validation(self) ->
|
13
|
+
async def add_validation(self) -> NamedTuple:
|
12
14
|
"""Ramifice - Additional validation of fields."""
|
13
|
-
return
|
15
|
+
return NamedTuple()
|
@@ -1,13 +1,5 @@
|
|
1
1
|
"""Ramifice - Set of mixins for Models and Fields."""
|
2
2
|
|
3
|
-
__all__ = (
|
4
|
-
"AddValidMixin",
|
5
|
-
"HooksMixin",
|
6
|
-
"IndexMixin",
|
7
|
-
"JsonMixin",
|
8
|
-
)
|
3
|
+
__all__ = ("JsonMixin",)
|
9
4
|
|
10
|
-
from ramifice.utils.mixins.add_valid import AddValidMixin
|
11
|
-
from ramifice.utils.mixins.hooks import HooksMixin
|
12
|
-
from ramifice.utils.mixins.indexing import IndexMixin
|
13
5
|
from ramifice.utils.mixins.json_converter import JsonMixin
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: ramifice
|
3
|
-
Version: 0.8.
|
3
|
+
Version: 0.8.20
|
4
4
|
Summary: ORM-pseudo-like API MongoDB for Python language.
|
5
5
|
Project-URL: Homepage, https://github.com/kebasyaty/ramifice
|
6
6
|
Project-URL: Documentation, https://kebasyaty.github.io/ramifice/
|
@@ -8,7 +8,7 @@ Project-URL: Repository, https://github.com/kebasyaty/ramifice
|
|
8
8
|
Project-URL: Source, https://github.com/kebasyaty/ramifice
|
9
9
|
Project-URL: Bug Tracker, https://github.com/kebasyaty/ramifice/issues
|
10
10
|
Project-URL: Changelog, https://github.com/kebasyaty/ramifice/blob/v0/CHANGELOG.md
|
11
|
-
Author-email:
|
11
|
+
Author-email: kebasyaty <kebasyaty@gmail.com>
|
12
12
|
License-Expression: MIT
|
13
13
|
License-File: LICENSE
|
14
14
|
Keywords: mongo,mongodb,orm,pymongo,ramifice
|
@@ -35,6 +35,7 @@ Requires-Dist: python-dateutil>=2.9.0.post0
|
|
35
35
|
Requires-Dist: python-slugify>=8.0.4
|
36
36
|
Requires-Dist: pyyaml>=6.0.2
|
37
37
|
Requires-Dist: termcolor>=3.1.0
|
38
|
+
Requires-Dist: xloft>=0.1.6
|
38
39
|
Description-Content-Type: text/markdown
|
39
40
|
|
40
41
|
<div align="center">
|
@@ -137,7 +138,12 @@ from datetime import datetime
|
|
137
138
|
import pprint
|
138
139
|
|
139
140
|
from pymongo import AsyncMongoClient
|
140
|
-
from ramifice import
|
141
|
+
from ramifice import (
|
142
|
+
NamedTuple,
|
143
|
+
model,
|
144
|
+
translations,
|
145
|
+
Migration,
|
146
|
+
)
|
141
147
|
from ramifice.fields import (
|
142
148
|
ImageField,
|
143
149
|
PasswordField,
|
@@ -189,18 +195,18 @@ class User:
|
|
189
195
|
)
|
190
196
|
|
191
197
|
# Optional method
|
192
|
-
async def add_validation(self) ->
|
198
|
+
async def add_validation(self) -> NamedTuple:
|
193
199
|
"""Additional validation of fields."""
|
194
200
|
gettext = translations.gettext
|
195
201
|
cd, err = self.get_clean_data()
|
196
202
|
|
197
203
|
# Check username
|
198
|
-
if re.match(r"^[a-zA-Z0-9_]+$", cd
|
199
|
-
err
|
204
|
+
if re.match(r"^[a-zA-Z0-9_]+$", cd.username) is None:
|
205
|
+
err.update("username", gettext("Allowed chars: %s") % "a-z A-Z 0-9 _")
|
200
206
|
|
201
207
|
# Check password
|
202
|
-
if cd
|
203
|
-
err
|
208
|
+
if cd._id is None and (cd.password != cd.сonfirm_password):
|
209
|
+
err.update("password", gettext("Passwords do not match!"))
|
204
210
|
|
205
211
|
return err
|
206
212
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ramifice/__init__.py,sha256=
|
1
|
+
ramifice/__init__.py,sha256=eMxD1xjSRQ_DU1BSs9FSgt--Xs4rKdsHgY2h2lhvq7M,1163
|
2
2
|
ramifice/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
3
|
ramifice/commons/__init__.py,sha256=F5tnz0bz7IcwOT9wkPmyWL7cDDUI1BUVSfC73G56dfs,567
|
4
4
|
ramifice/commons/general.py,sha256=HuErflr-dZ2pWhaSy81IGllFfGxlj8yrdnaAEGUtK3M,5554
|
@@ -44,11 +44,14 @@ ramifice/fields/general/file_group.py,sha256=SmF8OHKXsyZtWr90n8iCAXBXFQrjRV2HdDc
|
|
44
44
|
ramifice/fields/general/number_group.py,sha256=jspiA9hWiU_hNhXbTku2rZG3UezrhEVBGopNgooJ4ig,813
|
45
45
|
ramifice/fields/general/text_group.py,sha256=hYVX4-ipD2_eyj-WpHIHnFrpQevySaVd4twffUsrOLo,1164
|
46
46
|
ramifice/models/__init__.py,sha256=y5jRhSzcPuEVUWr1u--o1GyjFb7irlf5Rn2gPvQ3IPg,26
|
47
|
-
ramifice/models/decorator.py,sha256=
|
48
|
-
ramifice/models/model.py,sha256=
|
49
|
-
ramifice/paladins/__init__.py,sha256=
|
47
|
+
ramifice/models/decorator.py,sha256=f9PGmU927BkIOirtloGs3R3IhjiL8P3_0KgCkAqDz_A,6429
|
48
|
+
ramifice/models/model.py,sha256=M-pYUqzOhvzZEc2tfPy5fNDdrtIC2mFvajV3q2CpOfc,7887
|
49
|
+
ramifice/paladins/__init__.py,sha256=_8eJ6dAr_omSAU6VUZQjxty0V52ExBPReyUFToDX4PQ,881
|
50
|
+
ramifice/paladins/add_valid.py,sha256=Yxo8LfJMxcAsY-ooZV1cLwFsfjxV5MPR0ebnWpyo4oE,463
|
50
51
|
ramifice/paladins/check.py,sha256=L7mYsN5qp6ZlGiyPBQK1jw4GN03aIh8QpbbdK6-n6S4,6968
|
51
52
|
ramifice/paladins/delete.py,sha256=Ynew5zvEBRJNmss5I8hSIp7KgBHpSvDEJCwOfMH5MUU,3723
|
53
|
+
ramifice/paladins/hooks.py,sha256=h8coNstWWHI4VwPgpjx0NWTj93-5NDAGtav0VFh-fk4,1031
|
54
|
+
ramifice/paladins/indexing.py,sha256=WVLxmkLKg-C_LHn2hq6LJuOkSr9eS-XUUvCMgK-pKYo,387
|
52
55
|
ramifice/paladins/password.py,sha256=hdEfSwz0a9FJ5IIYpyD9bmV_kNGvXP4OV5Ea-V0Yx98,3341
|
53
56
|
ramifice/paladins/refrash.py,sha256=0qst0ii2ThH-VJduSI1zgkuZQGLnR8IiIu5rTVxzM9U,1254
|
54
57
|
ramifice/paladins/save.py,sha256=Tv6TP4Hv0sNIk_aSzLrS6f6kH29A8cFn-f_bzCqP71M,3748
|
@@ -73,12 +76,9 @@ ramifice/utils/migration.py,sha256=IZ3MFJD2n61uJ0Nl90Ll28GJwjUJf_2IOVbATTHDS_A,1
|
|
73
76
|
ramifice/utils/tools.py,sha256=LZyA715HnkNO7TcBu4Ia29A6Ko3n-F2BRULzIyNKt9o,3279
|
74
77
|
ramifice/utils/translations.py,sha256=Jh0nzwcn3bhUU2TjPAQboe3_pkVyhYQYdeINyC5SQo8,4701
|
75
78
|
ramifice/utils/unit.py,sha256=ToBeu92tzOY32fuzLdxScNeYXvGIDr0nx7yTv2DShVo,2604
|
76
|
-
ramifice/utils/mixins/__init__.py,sha256=
|
77
|
-
ramifice/utils/mixins/add_valid.py,sha256=00eIBlgsUU1TfDo1rUQT5zw7_Iv9IubORTbzuKoVB5o,425
|
78
|
-
ramifice/utils/mixins/hooks.py,sha256=h8coNstWWHI4VwPgpjx0NWTj93-5NDAGtav0VFh-fk4,1031
|
79
|
-
ramifice/utils/mixins/indexing.py,sha256=WVLxmkLKg-C_LHn2hq6LJuOkSr9eS-XUUvCMgK-pKYo,387
|
79
|
+
ramifice/utils/mixins/__init__.py,sha256=1i7Vy8JkgyUqJei9fWD62O65SPpRD0i8Gh7S66PLyLQ,145
|
80
80
|
ramifice/utils/mixins/json_converter.py,sha256=qBqFYol3Pbq1kX33EWB6FsYUL3AGSdYNtQE97HQ9jy4,1225
|
81
|
-
ramifice-0.8.
|
82
|
-
ramifice-0.8.
|
83
|
-
ramifice-0.8.
|
84
|
-
ramifice-0.8.
|
81
|
+
ramifice-0.8.20.dist-info/METADATA,sha256=cDyvgANexkXTP2GLfcmuGF55aYlcU-Sh2lOa-Bv3xPk,20918
|
82
|
+
ramifice-0.8.20.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
83
|
+
ramifice-0.8.20.dist-info/licenses/LICENSE,sha256=LrEL0aTZx90HDwFUQCJutORiDjJL9AnuVvCtspXIqt4,1095
|
84
|
+
ramifice-0.8.20.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|