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

Refactoring/user model #67

Merged
merged 8 commits into from
Dec 19, 2023
Merged

Refactoring/user model #67

merged 8 commits into from
Dec 19, 2023

Conversation

xxfeel
Copy link

@xxfeel xxfeel commented Dec 18, 2023

Closes #52

Description

  1. Убрана роль 'пользователя'.
  2. Переработана модель User согласно ER-диаграмме, добавлены методы для удобного отображения имён.
  3. В phone добавлена валидация телефонного номера, для российского формата. Протестировано пока только в django-shell.
>>> admin = User.objects.get(pk=1)
>>> admin.phone
''
>>> admin.phone = '8800'
>>> admin.phone
InvalidPhoneNumber(raw_input=8800)
>>> admin.phone.is_valid()
False
>>> admin.phone = '+79123456789'
>>> admin.phone
PhoneNumber(country_code=7, national_number=9123456789, extension=None, italian_leading_zero=None, number_of_leading_zeros=None, country_code_source=1, preferred_domestic_carrier_code=None)
>>> admin.phone.is_valid()
True
  1. В Makefile добавлена команда make shell, которая запускает django-shell
  2. При активации создания суперюзера manage.py createsuperuser, хотелось добиться того что бы роль 'admin' устанавливалась по умолчанию и без дополнительного запроса. Нужно будет переписывать в менеджере команду 'createsuperuser'. На самом деле пока что стоит костыль, при создании суперпользователя какую роль мы бы не поставили, в базу запишется админ. Если сейчас это не приоритетно, можно занятся этим чуть позже.
  3. pre-commit не пропускает пакет django-phonenumber-field, из-за отсутсвия в нём типизации. Mypy и CI/CD плюсом не пропускают типизацию от django.

Copy link
Member

@KonstantinRaikhert KonstantinRaikhert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По mypy:
Вот так нужно в pyproject добавить. А остальные варнинги придется решить исправлением кода)
2023-12-18_14-56

@@ -57,8 +57,13 @@ run:
cd $(PROJECT_DIR) && $(DJANGO_RUN) runserver


# Запуск django shell
shell:
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

давай тогда сразу добавим shell +
https://django-extensions.readthedocs.io/en/latest/shell_plus.html

Обрати внимание что эти пакеты в dev)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Обрати внимание что эти пакеты в dev)

Извини, не понял какие пакеты ты имеешь ввиду

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

имеется ввиду django-extensions, так есть более удобный инструмент shell_plus.
Ну чтобы они не уходили эти пакеты в прод, а остались в дев)
Может конечно очевидно, но решил напомнить

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нет, всё в порядке) показалось что открылась документация

Copy link
Member

@KonstantinRaikhert KonstantinRaikhert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@IvanFilippov74 Посмотри пожалуйста, что я изменил в твоем пулреквесте. В основном это касается mypy flake8, заодно поправил как должны лежать настройки)

@KonstantinRaikhert KonstantinRaikhert merged commit e041655 into dev Dec 19, 2023
6 checks passed
@xxfeel
Copy link
Author

xxfeel commented Dec 19, 2023

По flake8 не совсем понятно, ошибка указывала на импроты в models.py, после её устранения импорты выглядят так:

from core.constants import (
    EMAIL_MAX_LENGTH,
    NAME_MAX_LENGTH,
    QUERY_SET_LENGTH,
    ROLE_ADMIN,
    ROLE_AGENT,
    ROLE_MODERATOR,
    ROLES_CHOICES,
)
from django.contrib.auth.models import AbstractBaseUser, PermissionsMixin
from django.core.mail import send_mail
from django.db import models
from django.utils import timezone
from django.utils.translation import gettext_lazy as _
from phonenumber_field.modelfields import PhoneNumberField
from phonenumber_field.validators import validate_international_phonenumber
from users.managers import CustomUserManager

Но ведь по код стайлу мы импортируем в таком порядке:

стандартные библиотеки

модули джанго

локальные импорты

Или приложение core приравнивается к модулю фреймворка, а не к локальному импорту?

@xxfeel xxfeel deleted the refactoring/User_model branch December 20, 2023 07:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Переработать модель User.
2 participants