исправление аватарки юзера, добавление аватарок в админку, добавление поля "проверен платформой" в аккаунт
This commit is contained in:
parent
945834acc3
commit
9fdb209754
@ -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']
|
||||||
|
@ -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
|
||||||
|
@ -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="Оформление профиля")
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user