Skip to content

Commit

Permalink
Release 5.8.14
Browse files Browse the repository at this point in the history
#### Changelog:
* Feature(backend): Provide to use native ``model.get_view_class()`` with typing.
* Feature(backend): Provide to setup parametrs for nested views when use models.
* Fix(backend): Typing for methods.
* Fix(build): Scripts doesn't appear in latest setuptools versions.
* Fix(docs): Update python version to minimal 3.8.
  • Loading branch information
Sergei Kliuikov committed Nov 25, 2023
1 parent 9bc8942 commit a414224
Show file tree
Hide file tree
Showing 15 changed files with 285 additions and 59 deletions.
2 changes: 1 addition & 1 deletion doc/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@

intersphinx_mapping = {
'django': (django_version_docs, django_version_docs + '_objects/'),
'python': ('https://docs.python.org/3.6', None),
'python': ('https://docs.python.org/3.8', None),
}
extlinks = {
'wiki': ('https://en.wikipedia.org/wiki/%s', None),
Expand Down
79 changes: 57 additions & 22 deletions doc/locale/ru/LC_MESSAGES/backend.po
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ msgid ""
msgstr ""
"Project-Id-Version: VST Utils 5.0.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-11 16:55+0000\n"
"POT-Creation-Date: 2023-11-25 04:56+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.13.0\n"
"Generated-By: Babel 2.13.1\n"

#: ../../backend.rst:2
msgid "Backend API manual"
Expand Down Expand Up @@ -62,8 +62,8 @@ msgstr ""

#: of vstutils.api.actions.Action:5 vstutils.api.actions.EmptyAction:9
#: vstutils.api.actions.SimpleAction:20 vstutils.api.base.ModelViewSet:31
#: vstutils.api.fields.FkField:44 vstutils.models.BModel:161
#: vstutils.models.custom_model.FileModel:22
#: vstutils.api.fields.FkField:44 vstutils.models.BModel:162
#: vstutils.models.BModel:187 vstutils.models.custom_model.FileModel:22
#: vstutils.models.custom_model.ListModel:16
#: vstutils.models.custom_model.ListModel:35
msgid "Examples:"
Expand Down Expand Up @@ -308,15 +308,18 @@ msgid ""
"``_nested`` - key-value mapping with nested views (key - nested name, "
"kwargs for :class:`vstutils.api.decorators.nested_view` decorator but "
"supports ``model`` attribute as nested). ``model`` can be string for "
"import."
"import. Use ``override_params`` when you need to override generated view"
" parameters for nested view (works only with ``model`` as view)."
msgstr ""
"``_nested`` - сопоставление ключ-значение вложенных view (ключ - имя "
"вложенного view, kwargs для декоратора "
":class:`vstutils.api.decorators.nested_view`, но поддерживает атрибут "
"``model`` в качестве вложенного). ``model`` может быть строкой для "
"импорта."
"импорта. Используйте параметр ``override_params`` в тех случаях, когда необходимо перегрузить"
"параметры генерируемого представления в качестве вложенного (работает только когда задан ``model`` "
"как вложенное представление)."

#: of vstutils.models.BModel:122
#: of vstutils.models.BModel:123
msgid ""
"``_extra_view_attributes`` - key-value mapping with additional view "
"attributes, but has less priority over generated attributes."
Expand All @@ -325,7 +328,7 @@ msgstr ""
"атрибутов view, имеет меньший приоритет перед сгенерированными "
"атрибутами."

#: of vstutils.models.BModel:126
#: of vstutils.models.BModel:127
msgid ""
"In common, you can also add custom attributes to override or extend the "
"default list of processing classes. Supported view attributes are "
Expand All @@ -339,15 +342,15 @@ msgstr ""
"``throttle_classes``, ``renderer_classes`` и ``parser_classes``. Список "
"мета-атрибутов для настройки выглядит так:"

#: of vstutils.models.BModel:131
#: of vstutils.models.BModel:132
msgid "``_pre_{attribute}`` - List of classes included before defaults."
msgstr "``_pre_{attribute}`` - Список классов, включаемых до классов по умолчанию."

#: of vstutils.models.BModel:132
#: of vstutils.models.BModel:133
msgid "``_{attribute}`` - List of classes included after defaults."
msgstr "``_{attribute}`` - Список классов, включаемых после классов по умолчанию."

#: of vstutils.models.BModel:133
#: of vstutils.models.BModel:134
msgid ""
"``_override_{attribute}`` - boolean flag indicates that attribute "
"override default viewset (otherwise appends). Default is ``False``."
Expand All @@ -356,7 +359,7 @@ msgstr ""
"переопределяет стандартный viewset (в противном случае расширяет). По "
"умолчанию: ``False``."

#: of vstutils.models.BModel:137
#: of vstutils.models.BModel:138
msgid ""
"You may need to create an `action <https://www.django-rest-framework.org"
"/api-guide/viewsets/#marking-extra-actions-for-routing>`_ on generated "
Expand All @@ -372,7 +375,7 @@ msgstr ""
"``detail``, чтобы применить его к списку или детальной записи. В этом "
"случае декорированный метод будет принимать экземпляр view в ``self``."

#: of vstutils.models.BModel:144
#: of vstutils.models.BModel:145
msgid ""
"In some cases, inheriting models may require to inherit Meta class from "
"the base model. If the Meta is explicitly declared in the base class, "
Expand All @@ -384,7 +387,7 @@ msgstr ""
"базовом классе, то вы можете получить его с помощью атрибута "
"`OriginalMeta` и использовать его для наследования."

#: of vstutils.models.BModel:149
#: of vstutils.models.BModel:150
msgid ""
"Docstring of model will be reused for view descriptions. It is possible "
"to write both a general description for all actions and description for "
Expand All @@ -394,6 +397,30 @@ msgstr ""
" возможность сделать общее описание для всех экшенов и описание для "
"каждого отдельно, используя следующий синтаксис:"

#: of vstutils.models.BModel:164
msgid ""
"The ``get_view_class()`` method is a utility method in the Django ORM "
"model designed to facilitate the configuration and instantiation of "
"Django Rest Framework (DRF) Generic ViewSets. It allows developers to "
"define and customize various aspects of the associated DRF view class."
msgstr ""
"Метод ``get_view_class()`` — это служебный метод в ORM Django "
"моделях, предназначенный для облегчения настройки и создания экземпляров"
"представлений Django Rest Framework (DRF). Это позволяет разработчикам "
"определить и настроить различные аспекты класса представления DRF."

#: of vstutils.models.BModel:189
msgid ""
"Developers can use this method to customize various aspects of the "
"associated view, such as serializer classes, field configurations, filter"
" backends, permission classes, etc. It uses attributes declared in meta "
"attributes, but allows individual parts to be overriden."
msgstr ""
"Разработчики могут использовать этот метод для изменения различных аспектов "
"получаемого представления, таких как классы сериализаторов, конфигурацию полей, фильтры,"
"классы разрешений и т.п. Этот метод использует такие же атрибуты, которые были объявлены"
"в мета-атрибутах, но позволяет перегружать отдельные части."

#: ../../docstring of vstutils.models.BModel.hidden:1
msgid "If hidden is set to True, entry will be excluded from query in BQuerySet."
msgstr ""
Expand Down Expand Up @@ -3383,8 +3410,8 @@ msgid ""
"``headers`` - ``dict`` with headers which will be sent (key - header's "
"name, value - header's value string)."
msgstr ""
"``headers`` - словарь с заголовками, которые будут переданы в запрос (ключ - имя заголовка,"
" значение - строка со значением заголовка."
"``headers`` - словарь с заголовками, которые будут переданы в запрос "
"(ключ - имя заголовка, значение - строка со значением заголовка."

#: ../../backend.rst:192
msgid ""
Expand All @@ -3400,17 +3427,17 @@ msgid ""
"<https://www.w3.org/CGI/>`_ (e.g., ``CONTENT_TYPE``, "
"``GATEWAY_INTERFACE``, ``HTTP_*``)"
msgstr ""
"В предыдущих версиях имена заголовков должны были соответствовать `спецификации CGI "
"<https://www.w3.org/CGI/>`_ (например, ``CONTENT_TYPE``, "
"``GATEWAY_INTERFACE``, ``HTTP_*``)."
"В предыдущих версиях имена заголовков должны были соответствовать "
"`спецификации CGI <https://www.w3.org/CGI/>`_ (например, "
"``CONTENT_TYPE``, ``GATEWAY_INTERFACE``, ``HTTP_*``)."

#: ../../backend.rst:200
msgid ""
"Since version 5.3 and after migrate to Django 4 names must follow HTTP "
"specification instead of CGI."
msgstr ""
"Начиная с версии 5.3 и после миграции на Django 4 имена должны соответствовать HTTP "
"спецификации вместо CGI."
"Начиная с версии 5.3 и после миграции на Django 4 имена должны "
"соответствовать HTTP спецификации вместо CGI."

#: ../../backend.rst:202
msgid ""
Expand Down Expand Up @@ -4344,7 +4371,15 @@ msgstr ""
"Данный метод также рекомендуется применять в случаях, когда имеются "
"проблемы с рекурсивными импортами."

#: of vstutils.utils.create_view:25
#: of vstutils.utils.create_view:23
msgid ""
"This function is oldstyle and will be deprecated in future versions. Use "
"native call of method :method:`vstutils.models.BModel.get_view_class`."
msgstr ""
"Эта функция олдскульная и будет объявлена устаревшей в будущих версиях. Используйте "
"встроенный вызов метода :method:`vstutils.models.BModel.get_view_class`."

#: of vstutils.utils.create_view:28
msgid ""
"Model class with `.get_view_class` method. This method also has "
":class:`vstutils.models.BModel`."
Expand Down
57 changes: 42 additions & 15 deletions doc/locale/ru/LC_MESSAGES/quickstart.po
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ msgid ""
msgstr ""
"Project-Id-Version: VST Utils 5.0.4\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-01 08:13+0000\n"
"POT-Creation-Date: 2023-11-25 04:56+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.12.1\n"
"Generated-By: Babel 2.13.1\n"

#: ../../quickstart.rst:2
msgid "Quick Start"
Expand Down Expand Up @@ -442,7 +442,7 @@ msgstr ""
"сериализаторы для list() и retrieve(), фильтры, эндпоинты API и вложенные"
" view"

#: of vstutils.models.BModel:159
#: of vstutils.models.BModel:162 vstutils.models.BModel:187
msgid "Examples:"
msgstr "Примеры:"

Expand Down Expand Up @@ -684,15 +684,18 @@ msgid ""
"``_nested`` - key-value mapping with nested views (key - nested name, "
"kwargs for :class:`vstutils.api.decorators.nested_view` decorator but "
"supports ``model`` attribute as nested). ``model`` can be string for "
"import."
"import. Use ``override_params`` when you need to override generated view"
" parameters for nested view (works only with ``model`` as view)."
msgstr ""
"``_nested`` - отображение ключ-значение с вложенными view (ключ - имя "
"``_nested`` - сопоставление ключ-значение вложенных view (ключ - имя "
"вложенного view, kwargs для декоратора "
":class:`vstutils.api.decorators.nested_view`, но поддерживает атрибут "
"``model`` в качестве вложенного view). ``model`` может быть строкой для"
" импорта."
"``model`` в качестве вложенного). ``model`` может быть строкой для "
"импорта. Используйте параметр ``override_params`` в тех случаях, когда необходимо перегрузить"
"параметры генерируемого представления в качестве вложенного (работает только когда задан ``model`` "
"как вложенное представление)."

#: of vstutils.models.BModel:122
#: of vstutils.models.BModel:123
msgid ""
"``_extra_view_attributes`` - key-value mapping with additional view "
"attributes, but has less priority over generated attributes."
Expand All @@ -701,7 +704,7 @@ msgstr ""
"атрибутами view, но имеет меньший приоритет перед сгенерированными "
"атрибутами."

#: of vstutils.models.BModel:126
#: of vstutils.models.BModel:127
msgid ""
"In common, you can also add custom attributes to override or extend the "
"default list of processing classes. Supported view attributes are "
Expand All @@ -716,17 +719,17 @@ msgstr ""
" ``renderer_classes`` и ``parser_classes``. Список мета-атрибутов для "
"настроек view выглядит следующим образом:"

#: of vstutils.models.BModel:131
#: of vstutils.models.BModel:132
msgid "``_pre_{attribute}`` - List of classes included before defaults."
msgstr ""
"``_pre_{attribute}`` - список классов, включаемых перед значениями по "
"умолчанию."

#: of vstutils.models.BModel:132
#: of vstutils.models.BModel:133
msgid "``_{attribute}`` - List of classes included after defaults."
msgstr "``_{attribute}`` - список классов, включаемых после значений по умолчанию."

#: of vstutils.models.BModel:133
#: of vstutils.models.BModel:134
msgid ""
"``_override_{attribute}`` - boolean flag indicates that attribute "
"override default viewset (otherwise appends). Default is ``False``."
Expand All @@ -735,7 +738,7 @@ msgstr ""
"переопределяет ли атрибут view по умолчанию (в противном случае "
"добавляется). По умолчанию False."

#: of vstutils.models.BModel:137
#: of vstutils.models.BModel:138
msgid ""
"You may need to create an `action <https://www.django-rest-framework.org"
"/api-guide/viewsets/#marking-extra-actions-for-routing>`_ on generated "
Expand All @@ -752,7 +755,7 @@ msgstr ""
"В этом случае декорированный метод будет принимать объект view в качестве"
" атрибута ``self``."

#: of vstutils.models.BModel:144
#: of vstutils.models.BModel:145
msgid ""
"In some cases, inheriting models may require to inherit Meta class from "
"the base model. If the Meta is explicitly declared in the base class, "
Expand All @@ -764,7 +767,7 @@ msgstr ""
"базовом классе, вы можете получить ее через атрибут `OriginalMeta` и "
"использовать для наследования."

#: of vstutils.models.BModel:149
#: of vstutils.models.BModel:150
msgid ""
"Docstring of model will be reused for view descriptions. It is possible "
"to write both a general description for all actions and description for "
Expand All @@ -774,6 +777,30 @@ msgstr ""
"как общее описание для всех действий, так и описание для каждого "
"действия, используя следующий синтаксис:"

#: of vstutils.models.BModel:164
msgid ""
"The ``get_view_class()`` method is a utility method in the Django ORM "
"model designed to facilitate the configuration and instantiation of "
"Django Rest Framework (DRF) Generic ViewSets. It allows developers to "
"define and customize various aspects of the associated DRF view class."
msgstr ""
"Метод ``get_view_class()`` — это служебный метод в ORM Django "
"моделях, предназначенный для облегчения настройки и создания экземпляров"
"представлений Django Rest Framework (DRF). Это позволяет разработчикам "
"определить и настроить различные аспекты класса представления DRF."

#: of vstutils.models.BModel:189
msgid ""
"Developers can use this method to customize various aspects of the "
"associated view, such as serializer classes, field configurations, filter"
" backends, permission classes, etc. It uses attributes declared in meta "
"attributes, but allows individual parts to be overriden."
msgstr ""
"Разработчики могут использовать этот метод для изменения различных аспектов "
"получаемого представления, таких как классы сериализаторов, конфигурацию полей, фильтры,"
"классы разрешений и т.п. Этот метод использует такие же атрибуты, которые были объявлены"
"в мета-атрибутах, но позволяет перегружать отдельные части."

#: ../../quickstart.rst:208
msgid ""
"More information about Models you can find in `Django Models "
Expand Down
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ Documentation = "https://vstutils.vstconsulting.net/"
file = "README.rst"
content-type = "text/x-rst"

[project.scripts]
vstutilsctl = "vstutils.__main__:cmd_execution"

[tool.setuptools]
zip-safe = false
include-package-data = true
Expand Down
1 change: 1 addition & 0 deletions requirements-stubs.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ types-PyMySQL==1.1.0.1
types-Markdown==3.5.0.0
types-docutils==0.20.0.3
types-aiofiles~=23.2.0.0
typing-extensions~=4.8.0
5 changes: 1 addition & 4 deletions test_src/test_proj/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -187,10 +187,7 @@ def new_action_detail(self, request, *args, **kwargs):
localization = None


HostListViewSet = create_view(
HostList,
view_class='list_only'
)
HostListViewSet = HostList.get_view_class(view_class='list_only')

ModelWithFKViewSet = create_view(
ModelWithFK,
Expand Down
3 changes: 1 addition & 2 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,7 @@ changedir = ./
setenv =
DONT_YARN = true
deps =
mypy==1.5.1
typing-extensions>4.1.0
mypy==1.6.1
commands =
pip uninstall vstutils -y
pip install -U -e .[stubs]
Expand Down
2 changes: 1 addition & 1 deletion vstutils/__init__.py
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
# pylint: disable=django-not-available
__version__: str = '5.8.13'
__version__: str = '5.8.14'
4 changes: 2 additions & 2 deletions vstutils/api/decorators.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class BaseClassDecorator(metaclass=abc.ABCMeta):

class nested_view(BaseClassDecorator):
arg: Optional[str] # type: ignore
view: GenericViewSet
view: generics.GenericAPIView
allow_append: bool
append_arg: Optional[str]
manager_name: Union[str, Callable[[Model], Union[QuerySet, Manager]]]
Expand All @@ -143,7 +143,7 @@ class nested_view(BaseClassDecorator):
self,
name: str,
arg: Optional[str],
view: GenericViewSet,
view: generics.GenericAPIView,
allow_append: bool = False,
manager_name: Union[str, Callable[[Model], Union[QuerySet, Manager]]] = '',
queryset_filters: Iterable[QuerySetFiltersMethodsType] = (),
Expand Down

0 comments on commit a414224

Please sign in to comment.