diff --git a/backend/info/admin.py b/backend/info/admin.py index 59236f6..e3a13c9 100644 --- a/backend/info/admin.py +++ b/backend/info/admin.py @@ -3,7 +3,7 @@ from info.models import ( Answer, AnswerUser, Appeal, News, NewsComment, NewsPicture, - ServiceCategory, Task, Quiz, + Task, Quiz, ) from urban_utopia_2024.app_data import ADMIN_LIST_PER_PAGE @@ -204,34 +204,6 @@ class NewsAdmin(admin.ModelAdmin): list_per_page = ADMIN_LIST_PER_PAGE -@admin.register(ServiceCategory) -class ServiceCategoryAdmin(admin.ModelAdmin): - """ - Переопределяет административный интерфейс Django для модели ServiceCategory. # noqa (E501) - - Атрибуты: - - list_display (tuple) - список полей для отображения в интерфейсе: - - ID категории новостей (id) - - название категории (name) - - list_editable (tuple) - список полей для изменения в интерфейсе: - - название категории (name) - - search_fields (tuple) - список полей для поиска объектов: - - название категории (name) - - list_per_page (int) - количество объектов на одной странице - """ - list_display = ( - 'id', - 'name', - ) - list_editable = ( - 'name', - ) - search_fields = ( - 'name', - ) - list_per_page = ADMIN_LIST_PER_PAGE - - @admin.register(NewsComment) class NewsCommentAdmin(admin.ModelAdmin): """ diff --git a/backend/info/models.py b/backend/info/models.py index 8437038..32e8a71 100644 --- a/backend/info/models.py +++ b/backend/info/models.py @@ -5,32 +5,12 @@ APPEAL_RATING_MAX_VAL, APPEAL_RATING_MESSAGE, APPEAL_STATUS_CHOICES, APPEAL_STAGE_INITIAL, APPEAL_STATUS_MAX_LEN, APPEAL_TEXT_MAX_LEN, APPEAL_TOPIC_MAX_LEN, - NEWS_CATEGORY_CHOICES, NEWS_CATEGORY_MAX_LEN, NEWS_COMMENT_MAX_LEN, NEWS_COMMENT_SLICE, NEWS_PICTURES_PATH, NEWS_TEXT_MAX_LEN, TASK_TITLE_MAX_LEN, QUIZ_ANSWER_MAX_LEN, QUIZ_ANSWER_SLICE, QUIZ_TITLE_MAX_LEN, ) -from user.models import Address, User - - -class ServiceCategory(models.Model): - """Модель категорий услуг.""" - - name = models.CharField( - verbose_name='Название', - max_length=NEWS_CATEGORY_MAX_LEN, - choices=NEWS_CATEGORY_CHOICES, - unique=True, - ) - - class Meta: - ordering = ('id',) - verbose_name = 'Категория новостей' - verbose_name_plural = 'Категории новостей' - - def __str__(self): - return self.name +from user.models import Address, ServiceCategory, User class Task(models.Model): diff --git a/backend/user/admin.py b/backend/user/admin.py index 78e1057..5227feb 100644 --- a/backend/user/admin.py +++ b/backend/user/admin.py @@ -1,7 +1,7 @@ from django.contrib import admin from urban_utopia_2024.app_data import ADMIN_LIST_PER_PAGE -from user.models import Address, User +from user.models import Address, ServiceCategory, User @admin.register(Address) @@ -84,6 +84,34 @@ class AddressAdmin(admin.ModelAdmin): list_per_page = ADMIN_LIST_PER_PAGE +@admin.register(ServiceCategory) +class ServiceCategoryAdmin(admin.ModelAdmin): + """ + Переопределяет административный интерфейс Django для модели ServiceCategory. # noqa (E501) + + Атрибуты: + - list_display (tuple) - список полей для отображения в интерфейсе: + - ID категории новостей (id) + - название категории (name) + - list_editable (tuple) - список полей для изменения в интерфейсе: + - название категории (name) + - search_fields (tuple) - список полей для поиска объектов: + - название категории (name) + - list_per_page (int) - количество объектов на одной странице + """ + list_display = ( + 'id', + 'name', + ) + list_editable = ( + 'name', + ) + search_fields = ( + 'name', + ) + list_per_page = ADMIN_LIST_PER_PAGE + + @admin.register(User) class UserAdmin(admin.ModelAdmin): """ diff --git a/backend/user/models.py b/backend/user/models.py index 8f19e76..f8f4653 100644 --- a/backend/user/models.py +++ b/backend/user/models.py @@ -9,6 +9,7 @@ ADDRESS_APARTMENT_MAX_VAL, ADDRESS_BUILDING_MAX_LEN, ADDRESS_CITY_MAX_LEN, ADDRESS_DISTRICT_MAX_LEN, ADDRESS_INDEX_MAX_VAL, ADDRESS_ENTRANCE_MAX_VAL, ADDRESS_FLOOR_MAX_VAL, ADDRESS_HOUSE_MAX_VAL, ADDRESS_STREET_MAX_LEN, + NEWS_CATEGORY_CHOICES, NEWS_CATEGORY_MAX_LEN, USER_FULL_EMAIL_MAX_LEN, USER_NAME_MAX_LEN, USER_PASS_MAX_LEN, USER_PHOTO_PATH, USER_RATING_MAX_VAL, ) @@ -128,6 +129,25 @@ def __str__(self): return address +class ServiceCategory(models.Model): + """Модель категорий услуг.""" + + name = models.CharField( + verbose_name='Название', + max_length=NEWS_CATEGORY_MAX_LEN, + choices=NEWS_CATEGORY_CHOICES, + unique=True, + ) + + class Meta: + ordering = ('id',) + verbose_name = 'Категория услуг' + verbose_name_plural = 'Категории услуг' + + def __str__(self): + return self.name + + class UserManager(BaseUserManager): """Менеджер модели пользователя.""" @@ -245,6 +265,15 @@ class User(AbstractUser): blank=True, null=True, ) + municipal_type = models.ForeignKey( + verbose_name='Категория деятельности', + to=ServiceCategory, + related_name='municipal', + on_delete=models.PROTECT, + default=None, + blank=True, + null=True, + ) # Excess fields # Copy Django default, set value: None.