add account types
This commit is contained in:
@@ -8,7 +8,7 @@ class UserProfileInline(admin.StackedInline):
|
||||
can_delete = False
|
||||
verbose_name = 'Профиль пользователя'
|
||||
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') # ридонли в админке
|
||||
|
||||
class UserAdmin(BaseUserAdmin):
|
||||
|
||||
@@ -8,6 +8,7 @@ from api.models import UserProfile
|
||||
class UserResponseSerializer(serializers.Serializer):
|
||||
id = serializers.IntegerField()
|
||||
email = serializers.EmailField()
|
||||
account_type = serializers.CharField(source='userprofile.account_type')
|
||||
name = serializers.CharField(source='first_name')
|
||||
surname = serializers.CharField(source='last_name')
|
||||
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.db import models
|
||||
from routes.constants.account_types import account_types
|
||||
import uuid
|
||||
|
||||
class UserProfile(models.Model):
|
||||
user = models.OneToOneField(User, on_delete=models.CASCADE)
|
||||
account_type = models.CharField(choices=account_types, default='free')
|
||||
is_active = models.BooleanField(default=True)
|
||||
phone_number = models.CharField(max_length=13, 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()) {
|
||||
case 'free':
|
||||
return 'bg-gray-400 text-white'
|
||||
case 'pro':
|
||||
case 'lite':
|
||||
return 'bg-orage/70 text-white'
|
||||
case 'premium':
|
||||
case 'pro':
|
||||
return 'bg-blue-300'
|
||||
default:
|
||||
return 'bg-gray-200'
|
||||
@@ -85,7 +85,7 @@ const AccountSidebar: React.FC<AccountSidebarProps> = ({
|
||||
href={item.href}
|
||||
className={`${
|
||||
isActive
|
||||
? 'bg-mainblocks text-white'
|
||||
? 'bg-orange/80 text-white'
|
||||
: 'text-gray-600 hover:bg-gray-100'
|
||||
} flex items-center p-4 text-sm font-medium rounded-lg transition-colors`}
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user