add account types
This commit is contained in:
@@ -8,7 +8,7 @@ class UserProfileInline(admin.StackedInline):
|
|||||||
can_delete = False
|
can_delete = False
|
||||||
verbose_name = 'Профиль пользователя'
|
verbose_name = 'Профиль пользователя'
|
||||||
verbose_name_plural = 'Профили пользователей'
|
verbose_name_plural = 'Профили пользователей'
|
||||||
fields = ('is_active', 'phone_number', 'birthday', 'country', 'city','privacy_accepted','newsletter', 'uuid', 'image', 'authMailCode','additionalDetails')
|
fields = ('is_active','account_type', 'phone_number', 'birthday', 'country', 'city','privacy_accepted','newsletter', 'uuid', 'image', 'authMailCode','additionalDetails')
|
||||||
readonly_fields = ('uuid','authMailCode') # ридонли в админке
|
readonly_fields = ('uuid','authMailCode') # ридонли в админке
|
||||||
|
|
||||||
class UserAdmin(BaseUserAdmin):
|
class UserAdmin(BaseUserAdmin):
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ from api.models import UserProfile
|
|||||||
class UserResponseSerializer(serializers.Serializer):
|
class UserResponseSerializer(serializers.Serializer):
|
||||||
id = serializers.IntegerField()
|
id = serializers.IntegerField()
|
||||||
email = serializers.EmailField()
|
email = serializers.EmailField()
|
||||||
|
account_type = serializers.CharField(source='userprofile.account_type')
|
||||||
name = serializers.CharField(source='first_name')
|
name = serializers.CharField(source='first_name')
|
||||||
surname = serializers.CharField(source='last_name')
|
surname = serializers.CharField(source='last_name')
|
||||||
phone_number = serializers.CharField(source='userprofile.phone_number')
|
phone_number = serializers.CharField(source='userprofile.phone_number')
|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# Generated by Django 5.2.1 on 2025-05-19 09:06
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('api', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='account_type',
|
||||||
|
field=models.CharField(choices=[('free', 'Free'), ('lite', 'Lite'), ('pro', 'Pro')], default='free'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='additionalDetails',
|
||||||
|
field=models.TextField(blank=True, null=True, verbose_name='Дополнительные детали'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='birthday',
|
||||||
|
field=models.DateField(blank=True, null=True, verbose_name='Дата рождения'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='city',
|
||||||
|
field=models.CharField(blank=True, max_length=35, null=True, verbose_name='Город'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='country',
|
||||||
|
field=models.CharField(blank=True, max_length=15, null=True, verbose_name='Страна'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='newsletter',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Подписка на новостную рассылку'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='phone_number',
|
||||||
|
field=models.CharField(max_length=13, verbose_name='Номер телефона'),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='userprofile',
|
||||||
|
name='privacy_accepted',
|
||||||
|
field=models.BooleanField(default=False, verbose_name='Согласие с политикой конфиденциальности'),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -1,9 +1,11 @@
|
|||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from routes.constants.account_types import account_types
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
class UserProfile(models.Model):
|
class UserProfile(models.Model):
|
||||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||||
|
account_type = models.CharField(choices=account_types, default='free')
|
||||||
is_active = models.BooleanField(default=True)
|
is_active = models.BooleanField(default=True)
|
||||||
phone_number = models.CharField(max_length=13, verbose_name="Номер телефона")
|
phone_number = models.CharField(max_length=13, verbose_name="Номер телефона")
|
||||||
birthday = models.DateField(null=True, blank=True, verbose_name="Дата рождения")
|
birthday = models.DateField(null=True, blank=True, verbose_name="Дата рождения")
|
||||||
|
|||||||
5
backend/routes/constants/account_types.py
Normal file
5
backend/routes/constants/account_types.py
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
account_types = [
|
||||||
|
("free", "Free"),
|
||||||
|
("lite", "Lite"),
|
||||||
|
('pro', "Pro"),
|
||||||
|
]
|
||||||
@@ -23,9 +23,9 @@ const AccountSidebar: React.FC<AccountSidebarProps> = ({
|
|||||||
switch (accountType.toLowerCase()) {
|
switch (accountType.toLowerCase()) {
|
||||||
case 'free':
|
case 'free':
|
||||||
return 'bg-gray-400 text-white'
|
return 'bg-gray-400 text-white'
|
||||||
case 'pro':
|
case 'lite':
|
||||||
return 'bg-orage/70 text-white'
|
return 'bg-orage/70 text-white'
|
||||||
case 'premium':
|
case 'pro':
|
||||||
return 'bg-blue-300'
|
return 'bg-blue-300'
|
||||||
default:
|
default:
|
||||||
return 'bg-gray-200'
|
return 'bg-gray-200'
|
||||||
@@ -85,7 +85,7 @@ const AccountSidebar: React.FC<AccountSidebarProps> = ({
|
|||||||
href={item.href}
|
href={item.href}
|
||||||
className={`${
|
className={`${
|
||||||
isActive
|
isActive
|
||||||
? 'bg-mainblocks text-white'
|
? 'bg-orange/80 text-white'
|
||||||
: 'text-gray-600 hover:bg-gray-100'
|
: 'text-gray-600 hover:bg-gray-100'
|
||||||
} flex items-center p-4 text-sm font-medium rounded-lg transition-colors`}
|
} flex items-center p-4 text-sm font-medium rounded-lg transition-colors`}
|
||||||
>
|
>
|
||||||
|
|||||||
Reference in New Issue
Block a user