Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bumped python and django. Updated .django-app-template. #564

Merged
merged 6 commits into from
Nov 19, 2023

Conversation

nvo87
Copy link
Contributor

@nvo87 nvo87 commented Nov 7, 2023

  • обновил версию Python и Django.
  • изменил шаблон для новой app: модели, сериализаторы и вьюхи лежат сразу в директории, чтобы сразу писать один файл = одна сущность.
  • занес urls.py внутрь api, т.к. других урлов у нас и не бывает. Теперь, визуально, в аппе лежит меньше файлов. Можно подумать чтобы и fixtures, factory убрать в tests. Или наоборот могу вернуть как было.

@kazqvaizer @f213 апрув?

Это те правки, которые я неизбежно делаю все проекты подряд (кроме urls.py). Чуть-чуть сэкономит время в будущем.

@f213
Copy link
Member

f213 commented Nov 7, 2023

Мне нравки, жду мнения @kazqvaizer

@kazqvaizer
Copy link
Contributor

kazqvaizer commented Nov 8, 2023

Да вроде бы ничего, только полученный нейминг ..api/serializers/serializers.py совсем не говорящий. Т.е. человек, который мало пишет кода не поймет, что serializers.py нужно переименовать под имя сущности. Типа ..api/serializers/orders.py Наверное лучше придумать какую-нить DummyEntity, которая везде добавится и потом поиском переименуется в ту сущность, которая тебе нужна.

Я думал про это но не придумал ничего лучше, чем сочинить свою собственную команду, которая так же как и ./manage.py startapp сделает модель, добавить сериалиатор, вьюхи и стандартный набор тестов в имеющуюся апку.

Опять же я не против, но и не за особо т.к. решение особо ничего не упрощает, все равно нужно переименовывать

@nvo87
Copy link
Contributor Author

nvo87 commented Nov 10, 2023

..api/serializers/serializers.py совсем не говорящий.

@kazqvaizer да, я тоже думал про это. У меня есть еще вариант. Закинул коммит.
image
Если сделать app_name.py-tpl , то оно зарезолвится в имя аппы. Изначально меня смутило это решение, тем, что будет множественное число. Хотя наверно это и не так страшно, главное чтобы было единообразно.

Видишь какие-то минусы? я бы оставил так тогда.

все равно нужно переименовывать

согласен, что не идеально получается. Но кажется это быстрее, чем создать папку, создать _ init _, написать в нем _ all _, перетащить и переименовать models.py в сущность.py.

Поэтому решил этим заняться.

@nvo87
Copy link
Contributor Author

nvo87 commented Nov 10, 2023

@nkiryanov а у тебя не было падающей джобы, когда вот тут в докерфайл дописал arg python_version?

image

Просто смотрю у тебя в итоге меньше джоб выполнялось при мерже
image

Не пойму, нужна эта проверка вообще.. :/

@nkiryanov
Copy link
Contributor

nkiryanov commented Nov 10, 2023

@nvo87 сделал PR в твой PR :)
Вот — #565
Так всё починилось

Я хз почему в моём прошлом PR вообще не запускался этот шаг в circle ci 🤷‍♂️
А так проверить что образ собирается кажется норм затея. Как пример — была версия uwsgi несовместимой с python 3.11

Посмотрел в чём там ошибки и поправил:

  1. В твоём CI образ не собирается как будто не потому, что не хватает переменной PYTHON_VERSION, а такая версия базового образа уже не доступна (ubuntu 16)
  2. Обновил версию circle ci orb и указал ручками версию python. Быстро понять как брать из файла не нашел
  3. Обновил связанные сущности. В частности uwsgi и версию debian. Иначе не совместимы с версией python 3.11

А вообще кажется пора отказаться от circle ci и перенести это всё в github action.
@f213 что скажешь?

1. Circle: update orb version, cause the previous one deprecated
2. Circle: explicitly set python 3.11 version to use for test and build
3. Dockerfile: update debian version to last one
4. Dockerfile: update UWSGI cause previous doesn't support python 3.11
@kazqvaizer
Copy link
Contributor

Видишь какие-то минусы? я бы оставил так тогда.

Я бы предложил тогда вообще не делать файлы, которые нужно переименовывать. Внутри этих products.py (что на скрине) только импорт представляет ценность. А вот всякие init файлы с all внутри весьма полезны. Там же можно оставить коммент о том, что предполагается в соотвтетсвующем пекедже (сериализаторы, вьюхи, модели).

Либо, чтобы не засирать все комментами, можно создавать readme файл внутри апки с нужными инструкциями, который можно в один клик удалить.

Лучше этого будет только дописать команду startapp чтобы она принимала в параметры имя первой модельки, для которой автоматически все создатся с нужным неймингом.

@nvo87
Copy link
Contributor Author

nvo87 commented Nov 14, 2023

@kazqvaizer добавить параметр для startapp оказалось не сложно. К сожалению, никакие другие параметры не резолвятся в именах файлов, кроме app_name, а резолвятся только в тексте :(

Глядя на портянки под капотом могу сказать, что это два разных процесса. Сами файлы как-то проще они создают. А вот для текста в файлах используют полноценно django template и Context(**kwargs).

image

Чтобы сохранить нужные импорты, что если назвать файлы типа rename_me.py? Все равно раньше приходилось переименовывать serializers.py -> order.py, а теперь будет rename_me.py -> order.py.

# models/
from app.models import models
from app.models import TimeStampedModel

# views/
from app.api.viewsets import DefaultModelViewSet

Понимаю, что уже дофига обсуждений, можем быстро завтра голосом на техносозвоне.

@nvo87 nvo87 merged commit e6dbb90 into master Nov 19, 2023
4 checks passed
@nvo87 nvo87 deleted the bump-python-django-new-tpl branch November 19, 2023 17:13
@nvo87 nvo87 mentioned this pull request Nov 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

4 participants