ramifice 0.5.11__py3-none-any.whl → 0.6.0__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.
Files changed (76) hide show
  1. ramifice/__init__.py +3 -3
  2. ramifice/commons/__init__.py +5 -5
  3. ramifice/commons/general.py +2 -2
  4. ramifice/commons/indexes.py +1 -1
  5. ramifice/commons/many.py +7 -3
  6. ramifice/commons/one.py +7 -3
  7. ramifice/commons/tools.py +1 -1
  8. ramifice/commons/unit_manager.py +3 -3
  9. ramifice/fields/__init__.py +28 -28
  10. ramifice/fields/bool_field.py +3 -3
  11. ramifice/fields/choice_float_dyn_field.py +4 -4
  12. ramifice/fields/choice_float_field.py +4 -4
  13. ramifice/fields/choice_float_mult_dyn_field.py +4 -4
  14. ramifice/fields/choice_float_mult_field.py +4 -4
  15. ramifice/fields/choice_int_dyn_field.py +4 -4
  16. ramifice/fields/choice_int_field.py +4 -4
  17. ramifice/fields/choice_int_mult_dyn_field.py +4 -4
  18. ramifice/fields/choice_int_mult_field.py +4 -4
  19. ramifice/fields/choice_text_dyn_field.py +4 -4
  20. ramifice/fields/choice_text_field.py +4 -4
  21. ramifice/fields/choice_text_mult_dyn_field.py +4 -4
  22. ramifice/fields/choice_text_mult_field.py +4 -4
  23. ramifice/fields/color_field.py +4 -4
  24. ramifice/fields/date_field.py +3 -3
  25. ramifice/fields/date_time_field.py +3 -3
  26. ramifice/fields/email_field.py +4 -4
  27. ramifice/fields/file_field.py +19 -18
  28. ramifice/fields/float_field.py +4 -4
  29. ramifice/fields/general/__init__.py +1 -1
  30. ramifice/fields/general/choice_group.py +3 -1
  31. ramifice/fields/general/date_group.py +2 -1
  32. ramifice/fields/general/field.py +3 -1
  33. ramifice/fields/general/file_group.py +3 -1
  34. ramifice/fields/general/number_group.py +3 -1
  35. ramifice/fields/general/text_group.py +3 -1
  36. ramifice/fields/id_field.py +2 -2
  37. ramifice/fields/image_field.py +18 -37
  38. ramifice/fields/integer_field.py +4 -4
  39. ramifice/fields/ip_field.py +4 -4
  40. ramifice/fields/password_field.py +2 -2
  41. ramifice/fields/phone_field.py +4 -4
  42. ramifice/fields/slug_field.py +4 -4
  43. ramifice/fields/text_field.py +3 -3
  44. ramifice/fields/url_field.py +4 -4
  45. ramifice/models/decorator.py +33 -61
  46. ramifice/models/model.py +2 -2
  47. ramifice/paladins/__init__.py +6 -6
  48. ramifice/paladins/check.py +17 -30
  49. ramifice/paladins/delete.py +6 -6
  50. ramifice/paladins/groups/__init__.py +10 -10
  51. ramifice/paladins/groups/bool_group.py +1 -1
  52. ramifice/paladins/groups/choice_group.py +2 -2
  53. ramifice/paladins/groups/date_group.py +5 -2
  54. ramifice/paladins/groups/file_group.py +7 -4
  55. ramifice/paladins/groups/id_group.py +2 -2
  56. ramifice/paladins/groups/img_group.py +27 -15
  57. ramifice/paladins/groups/num_group.py +6 -2
  58. ramifice/paladins/groups/pass_group.py +3 -3
  59. ramifice/paladins/groups/slug_group.py +2 -2
  60. ramifice/paladins/groups/text_group.py +16 -5
  61. ramifice/paladins/password.py +2 -2
  62. ramifice/paladins/refrash.py +3 -3
  63. ramifice/paladins/save.py +3 -3
  64. ramifice/paladins/tools.py +1 -3
  65. ramifice/utils/fixtures.py +1 -1
  66. ramifice/utils/migration.py +5 -7
  67. ramifice/utils/mixins/__init__.py +4 -4
  68. ramifice/utils/tools.py +2 -2
  69. ramifice/utils/translations.py +1 -1
  70. ramifice/utils/unit.py +2 -2
  71. {ramifice-0.5.11.dist-info → ramifice-0.6.0.dist-info}/METADATA +4 -17
  72. ramifice-0.6.0.dist-info/RECORD +84 -0
  73. ramifice/models/pseudo.py +0 -181
  74. ramifice-0.5.11.dist-info/RECORD +0 -85
  75. {ramifice-0.5.11.dist-info → ramifice-0.6.0.dist-info}/WHEEL +0 -0
  76. {ramifice-0.5.11.dist-info → ramifice-0.6.0.dist-info}/licenses/LICENSE +0 -0
ramifice/__init__.py CHANGED
@@ -14,6 +14,6 @@
14
14
 
15
15
  """ORM-like API MongoDB for Python language."""
16
16
 
17
- from .models.decorator import model
18
- from .utils import migration, translations
19
- from .utils.unit import Unit
17
+ from ramifice.models.decorator import model
18
+ from ramifice.utils import migration, translations
19
+ from ramifice.utils.unit import Unit
@@ -1,10 +1,10 @@
1
1
  """Commons - Model class methods."""
2
2
 
3
- from .general import GeneralMixin
4
- from .indexes import IndexMixin
5
- from .many import ManyMixin
6
- from .one import OneMixin
7
- from .unit_manager import UnitMixin
3
+ from ramifice.commons.general import GeneralMixin
4
+ from ramifice.commons.indexes import IndexMixin
5
+ from ramifice.commons.many import ManyMixin
6
+ from ramifice.commons.one import OneMixin
7
+ from ramifice.commons.unit_manager import UnitMixin
8
8
 
9
9
 
10
10
  class QCommonsMixin(
@@ -6,8 +6,8 @@ from pymongo.asynchronous.collection import AsyncCollection
6
6
  from pymongo.asynchronous.command_cursor import AsyncCommandCursor
7
7
  from pymongo.asynchronous.database import AsyncDatabase
8
8
 
9
- from ..utils import globals, translations
10
- from .tools import correct_mongo_filter
9
+ from ramifice.commons.tools import correct_mongo_filter
10
+ from ramifice.utils import globals, translations
11
11
 
12
12
 
13
13
  class GeneralMixin:
@@ -4,7 +4,7 @@ from typing import Any
4
4
 
5
5
  from pymongo.asynchronous.collection import AsyncCollection
6
6
 
7
- from ..utils import globals
7
+ from ramifice.utils import globals
8
8
 
9
9
 
10
10
  class IndexMixin:
ramifice/commons/many.py CHANGED
@@ -7,9 +7,13 @@ from pymongo.asynchronous.collection import AsyncCollection
7
7
  from pymongo.asynchronous.cursor import AsyncCursor, CursorType
8
8
  from pymongo.results import DeleteResult
9
9
 
10
- from ..utils import globals, translations
11
- from ..utils.errors import PanicError
12
- from .tools import correct_mongo_filter, mongo_doc_to_raw_doc, password_to_none
10
+ from ramifice.commons.tools import (
11
+ correct_mongo_filter,
12
+ mongo_doc_to_raw_doc,
13
+ password_to_none,
14
+ )
15
+ from ramifice.utils import globals, translations
16
+ from ramifice.utils.errors import PanicError
13
17
 
14
18
 
15
19
  class ManyMixin:
ramifice/commons/one.py CHANGED
@@ -5,9 +5,13 @@ from typing import Any
5
5
  from pymongo.asynchronous.collection import AsyncCollection
6
6
  from pymongo.results import DeleteResult
7
7
 
8
- from ..utils import globals, translations
9
- from ..utils.errors import PanicError
10
- from .tools import correct_mongo_filter, mongo_doc_to_raw_doc, password_to_none
8
+ from ramifice.commons.tools import (
9
+ correct_mongo_filter,
10
+ mongo_doc_to_raw_doc,
11
+ password_to_none,
12
+ )
13
+ from ramifice.utils import globals, translations
14
+ from ramifice.utils.errors import PanicError
11
15
 
12
16
 
13
17
  class OneMixin:
ramifice/commons/tools.py CHANGED
@@ -6,7 +6,7 @@ from typing import Any
6
6
  from babel.dates import format_date, format_datetime
7
7
  from bson import json_util
8
8
 
9
- from ..utils import translations
9
+ from ramifice.utils import translations
10
10
 
11
11
 
12
12
  def correct_mongo_filter(cls_model: Any, filter: Any) -> Any:
@@ -7,9 +7,9 @@ from typing import Any
7
7
 
8
8
  from pymongo.asynchronous.collection import AsyncCollection
9
9
 
10
- from ..utils import globals, translations
11
- from ..utils.errors import PanicError
12
- from ..utils.unit import Unit
10
+ from ramifice.utils import globals, translations
11
+ from ramifice.utils.errors import PanicError
12
+ from ramifice.utils.unit import Unit
13
13
 
14
14
 
15
15
  class UnitMixin:
@@ -1,30 +1,30 @@
1
1
  """Available field types."""
2
2
 
3
- from .bool_field import BooleanField
4
- from .choice_float_dyn_field import ChoiceFloatDynField
5
- from .choice_float_field import ChoiceFloatField
6
- from .choice_float_mult_dyn_field import ChoiceFloatMultDynField
7
- from .choice_float_mult_field import ChoiceFloatMultField
8
- from .choice_int_dyn_field import ChoiceIntDynField
9
- from .choice_int_field import ChoiceIntField
10
- from .choice_int_mult_dyn_field import ChoiceIntMultDynField
11
- from .choice_int_mult_field import ChoiceIntMultField
12
- from .choice_text_dyn_field import ChoiceTextDynField
13
- from .choice_text_field import ChoiceTextField
14
- from .choice_text_mult_dyn_field import ChoiceTextMultDynField
15
- from .choice_text_mult_field import ChoiceTextMultField
16
- from .color_field import ColorField
17
- from .date_field import DateField
18
- from .date_time_field import DateTimeField
19
- from .email_field import EmailField
20
- from .file_field import FileField
21
- from .float_field import FloatField
22
- from .id_field import IDField
23
- from .image_field import ImageField
24
- from .integer_field import IntegerField
25
- from .ip_field import IPField
26
- from .password_field import PasswordField
27
- from .phone_field import PhoneField
28
- from .slug_field import SlugField
29
- from .text_field import TextField
30
- from .url_field import URLField
3
+ from ramifice.fields.bool_field import BooleanField
4
+ from ramifice.fields.choice_float_dyn_field import ChoiceFloatDynField
5
+ from ramifice.fields.choice_float_field import ChoiceFloatField
6
+ from ramifice.fields.choice_float_mult_dyn_field import ChoiceFloatMultDynField
7
+ from ramifice.fields.choice_float_mult_field import ChoiceFloatMultField
8
+ from ramifice.fields.choice_int_dyn_field import ChoiceIntDynField
9
+ from ramifice.fields.choice_int_field import ChoiceIntField
10
+ from ramifice.fields.choice_int_mult_dyn_field import ChoiceIntMultDynField
11
+ from ramifice.fields.choice_int_mult_field import ChoiceIntMultField
12
+ from ramifice.fields.choice_text_dyn_field import ChoiceTextDynField
13
+ from ramifice.fields.choice_text_field import ChoiceTextField
14
+ from ramifice.fields.choice_text_mult_dyn_field import ChoiceTextMultDynField
15
+ from ramifice.fields.choice_text_mult_field import ChoiceTextMultField
16
+ from ramifice.fields.color_field import ColorField
17
+ from ramifice.fields.date_field import DateField
18
+ from ramifice.fields.date_time_field import DateTimeField
19
+ from ramifice.fields.email_field import EmailField
20
+ from ramifice.fields.file_field import FileField
21
+ from ramifice.fields.float_field import FloatField
22
+ from ramifice.fields.id_field import IDField
23
+ from ramifice.fields.image_field import ImageField
24
+ from ramifice.fields.integer_field import IntegerField
25
+ from ramifice.fields.ip_field import IPField
26
+ from ramifice.fields.password_field import PasswordField
27
+ from ramifice.fields.phone_field import PhoneField
28
+ from ramifice.fields.slug_field import SlugField
29
+ from ramifice.fields.text_field import TextField
30
+ from ramifice.fields.url_field import URLField
@@ -1,8 +1,8 @@
1
1
  """Field of Model for enter boolean value."""
2
2
 
3
- from ..utils import globals
4
- from ..utils.mixins.json_converter import JsonMixin
5
- from .general.field import Field
3
+ from ramifice.fields.general.field import Field
4
+ from ramifice.utils import globals
5
+ from ramifice.utils.mixins.json_converter import JsonMixin
6
6
 
7
7
 
8
8
  class BooleanField(Field, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective float field with dynamic addition of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceFloatDynField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective float field with static of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceFloatField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective float field with dynamic addition of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceFloatMultDynField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective float field with static of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceFloatMultField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective integer field with dynamic addition of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceIntDynField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective integer field with static of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceIntField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective integer field with dynamic addition of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceIntMultDynField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective integer field with static of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceIntMultField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective text field with dynamic addition of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceTextDynField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective text field with static of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceTextField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective text field with dynamic addition of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceTextMultDynField(Field, ChoiceGroup, JsonMixin):
@@ -3,10 +3,10 @@
3
3
  Type of selective text field with static of elements.
4
4
  """
5
5
 
6
- from ..utils import globals
7
- from ..utils.mixins.json_converter import JsonMixin
8
- from .general.choice_group import ChoiceGroup
9
- from .general.field import Field
6
+ from ramifice.fields.general.choice_group import ChoiceGroup
7
+ from ramifice.fields.general.field import Field
8
+ from ramifice.utils import globals
9
+ from ramifice.utils.mixins.json_converter import JsonMixin
10
10
 
11
11
 
12
12
  class ChoiceTextMultField(Field, ChoiceGroup, JsonMixin):
@@ -1,9 +1,9 @@
1
1
  """Field of Model for enter color code."""
2
2
 
3
- from ..utils import globals
4
- from ..utils.mixins.json_converter import JsonMixin
5
- from .general.field import Field
6
- from .general.text_group import TextGroup
3
+ from ramifice.fields.general.field import Field
4
+ from ramifice.fields.general.text_group import TextGroup
5
+ from ramifice.utils import globals
6
+ from ramifice.utils.mixins.json_converter import JsonMixin
7
7
 
8
8
 
9
9
  class ColorField(Field, TextGroup, JsonMixin):
@@ -7,9 +7,9 @@ from typing import Any
7
7
  from babel.dates import format_date
8
8
  from dateutil.parser import parse
9
9
 
10
- from ..utils import globals, translations
11
- from .general.date_group import DateGroup
12
- from .general.field import Field
10
+ from ramifice.fields.general.date_group import DateGroup
11
+ from ramifice.fields.general.field import Field
12
+ from ramifice.utils import globals, translations
13
13
 
14
14
 
15
15
  class DateField(Field, DateGroup):
@@ -7,9 +7,9 @@ from typing import Any
7
7
  from babel.dates import format_datetime
8
8
  from dateutil.parser import parse
9
9
 
10
- from ..utils import globals, translations
11
- from .general.date_group import DateGroup
12
- from .general.field import Field
10
+ from ramifice.fields.general.date_group import DateGroup
11
+ from ramifice.fields.general.field import Field
12
+ from ramifice.utils import globals, translations
13
13
 
14
14
 
15
15
  class DateTimeField(Field, DateGroup):
@@ -2,10 +2,10 @@
2
2
 
3
3
  from email_validator import EmailNotValidError, validate_email
4
4
 
5
- from ..utils import globals
6
- from ..utils.mixins.json_converter import JsonMixin
7
- from .general.field import Field
8
- from .general.text_group import TextGroup
5
+ from ramifice.fields.general.field import Field
6
+ from ramifice.fields.general.text_group import TextGroup
7
+ from ramifice.utils import globals
8
+ from ramifice.utils.mixins.json_converter import JsonMixin
9
9
 
10
10
 
11
11
  class EmailField(Field, TextGroup, JsonMixin):
@@ -1,18 +1,19 @@
1
1
  """Field of Model for upload file."""
2
2
 
3
3
  import os
4
- import shutil
5
4
  import uuid
6
5
  from base64 import b64decode
7
6
  from datetime import date
8
7
  from pathlib import Path
9
- from typing import Any
10
8
 
11
- from ..utils import globals
12
- from ..utils.errors import FileHasNoExtensionError
13
- from ..utils.mixins.json_converter import JsonMixin
14
- from .general.field import Field
15
- from .general.file_group import FileGroup
9
+ import aiofiles
10
+ from aioshutil import copyfile
11
+
12
+ from ramifice.fields.general.field import Field
13
+ from ramifice.fields.general.file_group import FileGroup
14
+ from ramifice.utils import globals
15
+ from ramifice.utils.errors import FileHasNoExtensionError
16
+ from ramifice.utils.mixins.json_converter import JsonMixin
16
17
 
17
18
 
18
19
  class FileField(Field, FileGroup, JsonMixin):
@@ -91,7 +92,7 @@ class FileField(Field, FileGroup, JsonMixin):
91
92
 
92
93
  self.value: dict[str, str | int | bool] | None = None
93
94
 
94
- def from_base64(
95
+ async def from_base64(
95
96
  self,
96
97
  base64_str: str | None = None,
97
98
  filename: str | None = None,
@@ -125,14 +126,14 @@ class FileField(Field, FileGroup, JsonMixin):
125
126
  # Create path to target directory.
126
127
  dir_target_path = f"{self.media_root}/{self.target_dir}/{date_str}"
127
128
  # Create target directory if it does not exist.
128
- if not os.path.exists(dir_target_path):
129
- os.makedirs(dir_target_path)
129
+ if not await aiofiles.os.path.exists(dir_target_path):
130
+ await aiofiles.os.makedirs(dir_target_path)
130
131
  # Create path to target file.
131
132
  f_target_path = f"{dir_target_path}/{f_uuid_name}"
132
133
  # Save file in target directory.
133
- with open(f_target_path, mode="wb") as open_f:
134
+ async with aiofiles.open(f_target_path, mode="wb") as open_f:
134
135
  f_content = b64decode(base64_str)
135
- open_f.write(f_content)
136
+ await open_f.write(f_content)
136
137
  # Add paths to target file.
137
138
  file_info["path"] = f_target_path
138
139
  file_info["url"] = f"{self.media_url}/{self.target_dir}/{date_str}/{f_uuid_name}"
@@ -141,12 +142,12 @@ class FileField(Field, FileGroup, JsonMixin):
141
142
  # Add file extension.
142
143
  file_info["extension"] = extension
143
144
  # Add file size (in bytes).
144
- file_info["size"] = os.path.getsize(f_target_path)
145
+ file_info["size"] = await aiofiles.os.path.getsize(f_target_path)
145
146
  #
146
147
  # to value.
147
148
  self.value = file_info
148
149
 
149
- def from_path(
150
+ async def from_path(
150
151
  self,
151
152
  src_path: str | None = None,
152
153
  is_delete: bool = False,
@@ -170,12 +171,12 @@ class FileField(Field, FileGroup, JsonMixin):
170
171
  # Create path to target directory.
171
172
  dir_target_path = f"{self.media_root}/{self.target_dir}/{date_str}"
172
173
  # Create target directory if it does not exist.
173
- if not os.path.exists(dir_target_path):
174
- os.makedirs(dir_target_path)
174
+ if not await aiofiles.os.path.exists(dir_target_path):
175
+ await aiofiles.os.makedirs(dir_target_path)
175
176
  # Create path to target file.
176
177
  f_target_path = f"{dir_target_path}/{f_uuid_name}"
177
178
  # Save file in target directory.
178
- shutil.copyfile(src_path, f_target_path)
179
+ await copyfile(src_path, f_target_path)
179
180
  # Add paths to target file.
180
181
  file_info["path"] = f_target_path
181
182
  file_info["url"] = f"{self.media_url}/{self.target_dir}/{date_str}/{f_uuid_name}"
@@ -184,7 +185,7 @@ class FileField(Field, FileGroup, JsonMixin):
184
185
  # Add file extension.
185
186
  file_info["extension"] = extension
186
187
  # Add file size (in bytes).
187
- file_info["size"] = os.path.getsize(f_target_path)
188
+ file_info["size"] = await aiofiles.os.path.getsize(f_target_path)
188
189
  #
189
190
  # to value.
190
191
  self.value = file_info
@@ -1,9 +1,9 @@
1
1
  """Field of Model for enter (float) number."""
2
2
 
3
- from ..utils import globals
4
- from ..utils.mixins.json_converter import JsonMixin
5
- from .general.field import Field
6
- from .general.number_group import NumberGroup
3
+ from ramifice.fields.general.field import Field
4
+ from ramifice.fields.general.number_group import NumberGroup
5
+ from ramifice.utils import globals
6
+ from ramifice.utils.mixins.json_converter import JsonMixin
7
7
 
8
8
 
9
9
  class FloatField(Field, NumberGroup, JsonMixin):
@@ -1 +1 @@
1
- # ruff: noqa: D104
1
+ """Abstract classes for the fields."""
@@ -1,7 +1,9 @@
1
1
  """General additional parameters for choice fields."""
2
2
 
3
+ from abc import ABCMeta
3
4
 
4
- class ChoiceGroup:
5
+
6
+ class ChoiceGroup(metaclass=ABCMeta):
5
7
  """General additional parameters for choice fields.
6
8
 
7
9
  Attributes:
@@ -1,9 +1,10 @@
1
1
  """General additional parameters for date|datetime fields."""
2
2
 
3
+ from abc import ABCMeta
3
4
  from datetime import datetime
4
5
 
5
6
 
6
- class DateGroup:
7
+ class DateGroup(metaclass=ABCMeta):
7
8
  """General additional parameters for date|datetime fields.
8
9
 
9
10
  Attributes:
@@ -1,7 +1,9 @@
1
1
  """General parameters for all types fields of Model."""
2
2
 
3
+ from abc import ABCMeta
3
4
 
4
- class Field:
5
+
6
+ class Field(metaclass=ABCMeta):
5
7
  """General parameters for all types fields of Model.
6
8
 
7
9
  Attributes:
@@ -1,7 +1,9 @@
1
1
  """General additional parameters for file fields."""
2
2
 
3
+ from abc import ABCMeta
3
4
 
4
- class FileGroup:
5
+
6
+ class FileGroup(metaclass=ABCMeta):
5
7
  """General additional parameters for file fields.
6
8
 
7
9
  Attributes:
@@ -1,7 +1,9 @@
1
1
  """General additional parameters for number fields."""
2
2
 
3
+ from abc import ABCMeta
3
4
 
4
- class NumberGroup:
5
+
6
+ class NumberGroup(metaclass=ABCMeta):
5
7
  """General additional parameters for number fields.
6
8
 
7
9
  Attributes:
@@ -1,7 +1,9 @@
1
1
  """General additional parameters for text fields."""
2
2
 
3
+ from abc import ABCMeta
3
4
 
4
- class TextGroup:
5
+
6
+ class TextGroup(metaclass=ABCMeta):
5
7
  """General additional parameters for text fields.
6
8
 
7
9
  Attributes:
@@ -5,8 +5,8 @@ from typing import Any
5
5
 
6
6
  from bson.objectid import ObjectId
7
7
 
8
- from ..utils import globals
9
- from .general.field import Field
8
+ from ramifice.fields.general.field import Field
9
+ from ramifice.utils import globals
10
10
 
11
11
 
12
12
  class IDField(Field):