add account types

This commit is contained in:
2025-05-19 12:08:23 +03:00
parent b91bd87555
commit b9178804c8
6 changed files with 65 additions and 4 deletions

View File

@@ -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):

View File

@@ -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')

View File

@@ -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='Согласие с политикой конфиденциальности'),
),
]

View File

@@ -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="Дата рождения")

View File

@@ -0,0 +1,5 @@
account_types = [
("free", "Free"),
("lite", "Lite"),
('pro', "Pro"),
]

View File

@@ -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`}
>