From 8cf2cebe85083d23cbafd604063653bac75bcddc Mon Sep 17 00:00:00 2001 From: Anatoly Date: Tue, 29 Oct 2019 14:01:27 +0300 Subject: [PATCH 1/5] added BaseModelAdminMixin --- apps/establishment/admin.py | 5 +++-- apps/news/admin.py | 3 ++- apps/review/admin.py | 3 ++- apps/utils/admin.py | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 apps/utils/admin.py diff --git a/apps/establishment/admin.py b/apps/establishment/admin.py index 4b845c60..38016a18 100644 --- a/apps/establishment/admin.py +++ b/apps/establishment/admin.py @@ -4,6 +4,7 @@ from django.contrib.contenttypes.admin import GenericTabularInline from django.utils.translation import gettext_lazy as _ from comment.models import Comment +from utils.admin import BaseModelAdminMixin from establishment import models from main.models import Award from review import models as review_models @@ -57,7 +58,7 @@ class EstablishmentAdmin(admin.ModelAdmin): @admin.register(models.Position) -class PositionAdmin(admin.ModelAdmin): +class PositionAdmin(BaseModelAdminMixin): """Position admin.""" @@ -68,7 +69,7 @@ class PlateInline(admin.TabularInline): @admin.register(models.Menu) -class MenuAdmin(admin.ModelAdmin): +class MenuAdmin(BaseModelAdminMixin): """Menu admin.""" list_display = ['id', 'category_translated'] inlines = [ diff --git a/apps/news/admin.py b/apps/news/admin.py index 91fb284c..a6ca3279 100644 --- a/apps/news/admin.py +++ b/apps/news/admin.py @@ -3,6 +3,7 @@ from django.conf import settings from news import models from .tasks import send_email_with_news +from utils.admin import BaseModelAdminMixin @admin.register(models.NewsType) @@ -24,7 +25,7 @@ send_email_action.short_description = "Send the selected news by email" @admin.register(models.News) -class NewsAdmin(admin.ModelAdmin): +class NewsAdmin(BaseModelAdminMixin): """News admin.""" raw_id_fields = ('address',) actions = [send_email_action] diff --git a/apps/review/admin.py b/apps/review/admin.py index 5820f557..03c2419a 100644 --- a/apps/review/admin.py +++ b/apps/review/admin.py @@ -1,8 +1,9 @@ """Admin page for app Review""" from . import models from django.contrib import admin +from utils.admin import BaseModelAdminMixin @admin.register(models.Review) -class ReviewAdminModel(admin.ModelAdmin): +class ReviewAdminModel(BaseModelAdminMixin): """Admin model for model Review.""" diff --git a/apps/utils/admin.py b/apps/utils/admin.py new file mode 100644 index 00000000..43680e20 --- /dev/null +++ b/apps/utils/admin.py @@ -0,0 +1,36 @@ +"""Mixins for admin models.""" +from django.contrib import admin +from django.db.models import ForeignKey + + +class BaseModelAdminMixin(admin.ModelAdmin): + """ + Class that overridden ModelAdmin and adds to readonly_fields attr + persisted fields like created_by, modified_by. + """ + + _PERSISTENT_READ_ONLY_FIELDS = ['created_by', 'modified_by'] + + def _get_fk_field_names(self, fields: iter): + """ + Return an iterable object which contains FK model fields. + :param fields: iterable + :return: iterable + """ + foreign_key_fields = [] + for field in fields: + if isinstance(field, ForeignKey): + foreign_key_fields.append(field.name) + return foreign_key_fields + + def get_readonly_fields(self, request, obj=None): + """ + Hook for specifying custom readonly fields. + """ + _readonly_fields = list(self.readonly_fields) + fk_field_names = self._get_fk_field_names(self.model._meta.fields) + + for field_name in fk_field_names: + if field_name in self._PERSISTENT_READ_ONLY_FIELDS: + _readonly_fields.append(field_name) + return tuple(_readonly_fields) From 97f75dfc0546b07834eddfdb431fccc8c80c4eb3 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuzmenko Date: Tue, 29 Oct 2019 14:32:51 +0300 Subject: [PATCH 2/5] add filter accounts for existing users --- apps/account/transfer_data.py | 8 ++++++-- apps/utils/models.py | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/account/transfer_data.py b/apps/account/transfer_data.py index 91f9051f..c39e0ac1 100644 --- a/apps/account/transfer_data.py +++ b/apps/account/transfer_data.py @@ -8,8 +8,12 @@ def transfer_user(): # queryset = Profiles.objects.all() # queryset = queryset.annotate(nickname=F("account__nickname")) # queryset = queryset.annotate(email=F("account__email")) - - queryset = Accounts.objects.filter(confirmed_at__isnull=False) + stop_list = ['cyril@tomatic.net', + 'cyril2@tomatic.net', + 'd.sadykova@id-east.ru', + 'd.sadykova@octopod.ru', + 'n.yurchenko@id-east.ru'] + queryset = Accounts.objects.filter(confirmed_at__isnull=False).exclude(email__in=stop_list) serialized_data = UserSerializer(data=list(queryset.values()), many=True) diff --git a/apps/utils/models.py b/apps/utils/models.py index fb1de17c..ae6e15b0 100644 --- a/apps/utils/models.py +++ b/apps/utils/models.py @@ -331,3 +331,6 @@ class GMTokenGenerator(PasswordResetTokenGenerator): used. """ return self.get_fields(user, timestamp) + + +timezone.datetime.now().date().isoformat() \ No newline at end of file From 631ffd265a38fbec0af6bd53620861a8b3a9d044 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuzmenko Date: Tue, 29 Oct 2019 14:46:44 +0300 Subject: [PATCH 3/5] add mixin for admin panel --- apps/establishment/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/establishment/admin.py b/apps/establishment/admin.py index 38016a18..735ccc4b 100644 --- a/apps/establishment/admin.py +++ b/apps/establishment/admin.py @@ -48,7 +48,7 @@ class CommentInline(GenericTabularInline): @admin.register(models.Establishment) -class EstablishmentAdmin(admin.ModelAdmin): +class EstablishmentAdmin(BaseModelAdminMixin): """Establishment admin.""" list_display = ['id', '__str__', 'image_tag', ] inlines = [ From 30ba313f54b7fe770d07997d5157a7c5a460a248 Mon Sep 17 00:00:00 2001 From: Dmitriy Kuzmenko Date: Tue, 29 Oct 2019 14:47:57 +0300 Subject: [PATCH 4/5] add filter accounts for existing users --- apps/establishment/admin.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/establishment/admin.py b/apps/establishment/admin.py index 735ccc4b..c9a7d33e 100644 --- a/apps/establishment/admin.py +++ b/apps/establishment/admin.py @@ -11,12 +11,12 @@ from review import models as review_models @admin.register(models.EstablishmentType) -class EstablishmentTypeAdmin(admin.ModelAdmin): +class EstablishmentTypeAdmin(BaseModelAdminMixin): """EstablishmentType admin.""" @admin.register(models.EstablishmentSubType) -class EstablishmentSubTypeAdmin(admin.ModelAdmin): +class EstablishmentSubTypeAdmin(BaseModelAdminMixin): """EstablishmentSubType admin.""" From 03bf648ef9f08b05f757704dcab9f31db73e40fa Mon Sep 17 00:00:00 2001 From: Dmitriy Kuzmenko Date: Tue, 29 Oct 2019 15:08:54 +0300 Subject: [PATCH 5/5] add change admin for establishments --- apps/establishment/admin.py | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/establishment/admin.py b/apps/establishment/admin.py index c9a7d33e..0397c407 100644 --- a/apps/establishment/admin.py +++ b/apps/establishment/admin.py @@ -55,6 +55,7 @@ class EstablishmentAdmin(BaseModelAdminMixin): AwardInline, ContactPhoneInline, ContactEmailInline, ReviewInline, CommentInline] raw_id_fields = ('address',) + fields = ['old_id', 'name'] @admin.register(models.Position)