исправление аватарки юзера, добавление аватарок в админку, добавление поля "проверен платформой" в аккаунт

This commit is contained in:
VladislavOstapov 2023-04-06 10:47:21 +03:00
parent 945834acc3
commit 9fdb209754
3 changed files with 23 additions and 5 deletions

View File

@ -9,6 +9,13 @@ class AccountAdmin(admin.ModelAdmin):
readonly_fields = ['id', 'register_datetime'] readonly_fields = ['id', 'register_datetime']
@admin.register(AccountAvatar)
class AccountAvatarAdmin(admin.ModelAdmin):
# fields = ['name', 'surname', 'phone', 'email', 'register_datetime']
list_display = ['id', 'account', 'photo', 'profile_background']
readonly_fields = ['id']
@admin.register(Media) @admin.register(Media)
class MediaAdmin(admin.ModelAdmin): class MediaAdmin(admin.ModelAdmin):
list_display = ['id', 'owner', 'original_name', 'size'] list_display = ['id', 'owner', 'original_name', 'size']

View File

@ -54,6 +54,7 @@ class ApiAccount:
"city": {"code": user.city, "name": CITIES_CHOICES[user.city]} if user.city is not None else None, "city": {"code": user.city, "name": CITIES_CHOICES[user.city]} if user.city is not None else None,
"register_datetime": int(time.mktime(user.register_datetime.timetuple())), "register_datetime": int(time.mktime(user.register_datetime.timetuple())),
"role": user.role, "role": user.role,
"confirmed": user.confirmed
} }
if hasattr(user, 'accountavatar'): if hasattr(user, 'accountavatar'):
@ -198,7 +199,7 @@ class ApiAccount:
returns="Вернет основную информацию о пользователе, иначе ошибки") returns="Вернет основную информацию о пользователе, иначе ошибки")
async def edit(access_token, name, surname, about, executor_type, executor_inn, city, photo, profile_background): async def edit(access_token, name, surname, about, executor_type, executor_inn, city, photo, profile_background):
user = access_token.user user = access_token.user
executor_need_save, need_save = False, False executor_need_save, need_save, avatar_need_save = False, False, False
if name is not None: if name is not None:
user.name = name user.name = name
@ -225,7 +226,7 @@ class ApiAccount:
if not hasattr(user, 'accountavatar'): if not hasattr(user, 'accountavatar'):
user.accountavatar = await AccountAvatar.objects.acreate(account=user) user.accountavatar = await AccountAvatar.objects.acreate(account=user)
user.accountavatar.photo = p user.accountavatar.photo = p
need_save = True avatar_need_save = True
else: else:
raise Exception(API_ERROR_NOT_FOUND, 'field "photo" not correct') raise Exception(API_ERROR_NOT_FOUND, 'field "photo" not correct')
@ -238,7 +239,7 @@ class ApiAccount:
if not hasattr(user, 'accountavatar'): if not hasattr(user, 'accountavatar'):
user.accountavatar = await AccountAvatar.objects.acreate(account=user) user.accountavatar = await AccountAvatar.objects.acreate(account=user)
user.accountavatar.profile_background = p user.accountavatar.profile_background = p
need_save = True avatar_need_save = True
else: else:
raise Exception(API_ERROR_NOT_FOUND, 'field "profile_background" not correct') raise Exception(API_ERROR_NOT_FOUND, 'field "profile_background" not correct')
@ -285,6 +286,14 @@ class ApiAccount:
await sync_to_async(user.executoraccount.save)() await sync_to_async(user.executoraccount.save)()
if avatar_need_save:
try:
await sync_to_async(user.accountavatar.full_clean)()
except ValidationError as ve:
return _make_model_validation_errors(ve, API_ERROR_USER_MODIFY)
await sync_to_async(user.accountavatar.save)()
return api_make_response(ApiAccount.make_user_json(user)) return api_make_response(ApiAccount.make_user_json(user))
@staticmethod @staticmethod

View File

@ -41,6 +41,8 @@ class Account(models.Model):
register_datetime = models.DateTimeField(default=datetime.now, editable=False) register_datetime = models.DateTimeField(default=datetime.now, editable=False)
confirmed = models.BooleanField(default=False, verbose_name="Подтвержденный аккаунт")
@staticmethod @staticmethod
def create_user(phone: str, **kvargs): def create_user(phone: str, **kvargs):
return Account(phone=Account.normalize_phone(phone), **kvargs) return Account(phone=Account.normalize_phone(phone), **kvargs)
@ -121,9 +123,9 @@ class Media(models.Model):
class AccountAvatar(models.Model): class AccountAvatar(models.Model):
account = models.OneToOneField(Account, on_delete=models.CASCADE, verbose_name="Аккаунт") account = models.OneToOneField(Account, on_delete=models.CASCADE, verbose_name="Аккаунт")
photo = models.ForeignKey(Media, on_delete=models.SET_NULL, null=True, photo = models.ForeignKey(Media, on_delete=models.SET_NULL, null=True, blank=True, default=None,
related_name="photo", verbose_name="Аватар") related_name="photo", verbose_name="Аватар")
profile_background = models.ForeignKey(Media, on_delete=models.SET_NULL, null=True, default=None, profile_background = models.ForeignKey(Media, on_delete=models.SET_NULL, null=True, blank=True, default=None,
related_name="profile_background", verbose_name="Оформление профиля") related_name="profile_background", verbose_name="Оформление профиля")