diff --git a/backend/account/migrations/0008_alter_user_otp_expiry_alter_user_otp_hash.py b/backend/account/migrations/0008_alter_user_otp_expiry_alter_user_otp_hash.py new file mode 100644 index 0000000..a6f8696 --- /dev/null +++ b/backend/account/migrations/0008_alter_user_otp_expiry_alter_user_otp_hash.py @@ -0,0 +1,23 @@ +# Generated by Django 5.1.2 on 2024-12-31 17:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0007_remove_user_otp_user_otp_hash_alter_user_otp_expiry'), + ] + + operations = [ + migrations.AlterField( + model_name='user', + name='otp_expiry', + field=models.DateTimeField(blank=True, null=True, verbose_name='تاریخ تمام شدن کد یک بار مصرف'), + ), + migrations.AlterField( + model_name='user', + name='otp_hash', + field=models.CharField(blank=True, max_length=64, null=True, verbose_name='کد یک بار مصرف'), + ), + ] diff --git a/backend/core/settings.py b/backend/core/settings.py index 75226ed..c5aa592 100644 --- a/backend/core/settings.py +++ b/backend/core/settings.py @@ -95,7 +95,6 @@ INSTALLED_APPS = [ # custom apps 'product', 'account', - 'entertainment', 'ticket', ] @@ -285,11 +284,11 @@ UNFOLD = { # esm category model ro lower case bezar inja amir - # { - # "title": _("دسته بندی"), - # "icon": "category", - # "link": reverse_lazy("admin:product_ _changelist"), - # }, + { + "title": _("دسته بندی"), + "icon": "category", + "link": reverse_lazy("admin:product_categorymodel_changelist"), + }, { "title": _("نظرات"), "icon": "chat", diff --git a/backend/entertainment/__init__.py b/backend/entertainment/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/entertainment/admin.py b/backend/entertainment/admin.py deleted file mode 100644 index b9ddb12..0000000 --- a/backend/entertainment/admin.py +++ /dev/null @@ -1,50 +0,0 @@ -from django.contrib import admin -from import_export.admin import ImportExportActionModelAdmin -from unfold.admin import ModelAdmin -from .models import * - - -@admin.register(Dare) -class Dare(ModelAdmin): - list_display = ['lang1', 'is_for_adults'] - list_filter = ['is_for_adults'] - - -@admin.register(Truth) -class Truth(ModelAdmin): - list_display = ['lang1', 'is_for_adults'] - list_filter = ['is_for_adults'] - - -@admin.register(Would_you_rather) -class Would_you_rather(ModelAdmin): - list_display = ['lang1', 'is_for_adults'] - list_filter = ['is_for_adults'] - - -@admin.register(challenge) -class Challenge(ModelAdmin): - list_display = ['type'] - -@admin.register(abjad) -class abjad(ModelAdmin): - list_display = ['word', 'difficulty_type', 'answer'] - list_filter = ['difficulty_type'] - - - -@admin.register(MusicModel) -class MusicAdmin(ModelAdmin): - list_display = ['name', 'message_id', 'singer', 'category', 'trand'] - -@admin.register(MovieModel) -class MovieAdmin(ModelAdmin): - list_display = ['name', 'message_id', 'category', 'receommended'] - -@admin.register(MovieCategory) -class MovieCategoryAdmin(ModelAdmin): - pass - -@admin.register(MusicCategory) -class MusicCategoryAdmin(ModelAdmin): - pass \ No newline at end of file diff --git a/backend/entertainment/apps.py b/backend/entertainment/apps.py deleted file mode 100644 index b7f4c42..0000000 --- a/backend/entertainment/apps.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.apps import AppConfig - - -class EntertainmentConfig(AppConfig): - default_auto_field = 'django.db.models.BigAutoField' - name = 'entertainment' - verbose_name = 'بخش سرگرمی ها' \ No newline at end of file diff --git a/backend/entertainment/migrations/0001_initial.py b/backend/entertainment/migrations/0001_initial.py deleted file mode 100644 index 3c86881..0000000 --- a/backend/entertainment/migrations/0001_initial.py +++ /dev/null @@ -1,141 +0,0 @@ -# Generated by Django 5.1.2 on 2024-12-13 17:49 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='abjad', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('word', models.TextField(verbose_name='صورت ی سوال')), - ('image', models.ImageField(blank=True, null=True, upload_to='media/', verbose_name='عکس بازی افتابه')), - ('difficulty_type', models.CharField(choices=[('hard', 'سخت'), ('normal', 'متوسط'), ('easy', 'اسون')], max_length=13, verbose_name='سختی')), - ('answer', models.CharField(max_length=30, verbose_name='جواب')), - ('option2', models.CharField(blank=True, max_length=30, null=True, verbose_name='گزینه ی اشتباه')), - ('option3', models.CharField(blank=True, max_length=30, null=True, verbose_name='گزینه ی اشتباه')), - ('option4', models.CharField(blank=True, max_length=30, null=True, verbose_name='گزینه ی اشتباه')), - ], - options={ - 'verbose_name': 'سوال ابجد', - 'verbose_name_plural': 'سوالات ابجد', - }, - ), - migrations.CreateModel( - name='challenge', - fields=[ - ('type', models.CharField(choices=[('map', 'نقشه ی گنج'), ('prize', 'جوایز')], max_length=30, primary_key=True, serialize=False, verbose_name='نوع چالش')), - ('image', models.ImageField(upload_to='media/', verbose_name='عکس')), - ('link', models.URLField(verbose_name='لینک')), - ('text', models.TextField(verbose_name='متن توضیحات')), - ('button_text', models.CharField(max_length=40, verbose_name='متن دکمه')), - ], - options={ - 'verbose_name': 'چالش', - 'verbose_name_plural': 'چالش ها', - }, - ), - migrations.CreateModel( - name='Dare', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('lang1', models.CharField(max_length=200, verbose_name='فارسی')), - ('is_for_adults', models.BooleanField(verbose_name='+18 سوال')), - ], - options={ - 'verbose_name': 'شجاعت', - 'verbose_name_plural': 'شجاعت ها', - }, - ), - migrations.CreateModel( - name='MovieCategory', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=40, verbose_name='نام دسته بندی')), - ], - options={ - 'verbose_name': 'دسته بندی قیلم', - 'verbose_name_plural': 'دسته بندی فیلم ها', - }, - ), - migrations.CreateModel( - name='UploadParent', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=300, verbose_name='نام')), - ('message_id', models.CharField(max_length=40, verbose_name='ای دی پیام تلگرام')), - ], - ), - migrations.CreateModel( - name='MusicCategory', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=40, verbose_name='نام دسته بندی')), - ], - options={ - 'verbose_name': 'دسته بندی موزیک', - 'verbose_name_plural': 'دسته بندی موزیک ها', - }, - ), - migrations.CreateModel( - name='Truth', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('lang1', models.CharField(max_length=200, verbose_name='فارسی')), - ('is_for_adults', models.BooleanField(verbose_name='+18 سوال')), - ], - options={ - 'verbose_name': 'حقیقت', - 'verbose_name_plural': 'حقیقت ها', - }, - ), - migrations.CreateModel( - name='Would_you_rather', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('lang1', models.CharField(max_length=200, verbose_name='فارسی')), - ('is_for_adults', models.BooleanField(verbose_name='+18 سوال')), - ], - options={ - 'verbose_name': 'ترجیح میدی', - 'verbose_name_plural': 'ترجیح میدی ها', - }, - ), - migrations.CreateModel( - name='MovieModel', - fields=[ - ('uploadparent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='entertainment.uploadparent')), - ('description', models.CharField(blank=True, max_length=4000, null=True, verbose_name='توضیحات فیلم')), - ('receommended', models.BooleanField(default=False, verbose_name='پیشنهادی')), - ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='entertainment.moviecategory', verbose_name='دسته بندی')), - ], - options={ - 'verbose_name': 'مدل فیلم', - 'verbose_name_plural': 'مدل فیلم ها', - }, - bases=('entertainment.uploadparent',), - ), - migrations.CreateModel( - name='MusicModel', - fields=[ - ('uploadparent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='entertainment.uploadparent')), - ('lyric', models.CharField(blank=True, max_length=4000, null=True, verbose_name='متن اهنگ')), - ('singer', models.CharField(blank=True, max_length=300, null=True, verbose_name='خواننده')), - ('trand', models.BooleanField(default=False, verbose_name='ترند')), - ('category', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='entertainment.musiccategory', verbose_name='دسته بندی')), - ], - options={ - 'verbose_name': 'مدل اهنگ', - 'verbose_name_plural': 'مدل اهنگ ها', - }, - bases=('entertainment.uploadparent',), - ), - ] diff --git a/backend/entertainment/migrations/__init__.py b/backend/entertainment/migrations/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/backend/entertainment/models.py b/backend/entertainment/models.py deleted file mode 100644 index d575fc2..0000000 --- a/backend/entertainment/models.py +++ /dev/null @@ -1,142 +0,0 @@ -from django.db import models - - -class BaseModel(models.Model): - lang1 = models.CharField(max_length=200, verbose_name='فارسی') - is_for_adults = models.BooleanField(verbose_name='+18 سوال') - - class Meta: - abstract = True - - def __str__(self): - return self.lang1 - - async def get(self, *attrs): - if len(attrs) == 1: - return getattr(self, attrs[0], None) - else: - return tuple(getattr(self, attr, None) for attr in attrs) - - -class Dare(BaseModel): - class Meta: - verbose_name = 'شجاعت' - verbose_name_plural = 'شجاعت ها' - - -class Truth(BaseModel): - class Meta: - verbose_name = 'حقیقت' - verbose_name_plural = "حقیقت ها" - - -class Would_you_rather(BaseModel): - class Meta: - verbose_name = 'ترجیح میدی' - verbose_name_plural = "ترجیح میدی ها" - - -class challenge(models.Model): - challenge_type = ( - ('map', 'نقشه ی گنج'), - ('prize', 'جوایز') - ) - type = models.CharField(max_length=30, choices=challenge_type, verbose_name='نوع چالش', primary_key=True) - image = models.ImageField(upload_to='media/', verbose_name='عکس') - link = models.URLField(verbose_name='لینک') - text = models.TextField(verbose_name='متن توضیحات') - button_text = models.CharField(max_length=40, verbose_name='متن دکمه') - - def __str__(self): - return f'{self.type} - {self.text[0:50]}' - class Meta: - verbose_name = 'چالش' - verbose_name_plural = 'چالش ها' - -class abjad(models.Model): - word = models.TextField(verbose_name='صورت ی سوال') - difficulty = ( - ('hard', 'سخت'), - ('normal', 'متوسط'), - ('easy', 'اسون') - ) - image = models.ImageField(upload_to='media/', verbose_name='عکس بازی افتابه', blank=True, null=True) - difficulty_type = models.CharField(max_length=13, choices=difficulty, verbose_name='سختی') - answer = models.CharField(max_length=30, verbose_name='جواب') - option2 = models.CharField(max_length=30, verbose_name='گزینه ی اشتباه', null=True, blank=True) - option3 = models.CharField(max_length=30, verbose_name='گزینه ی اشتباه', null=True, blank=True) - option4 = models.CharField(max_length=30, verbose_name='گزینه ی اشتباه', null=True, blank=True) - def __str__(self): - return f'{self.word}' - class Meta: - verbose_name = 'سوال ابجد' - verbose_name_plural = 'سوالات ابجد' - async def get(self, *attrs): - if len(attrs) == 1: - return getattr(self, attrs[0], None) - else: - return tuple(getattr(self, attr, None) for attr in attrs) - -GAME_DATA = { - Dare: { - 'button': 'dare', - 'game_name': 'شجاعت' - }, - Truth: { - 'button': 'truth', - 'game_name': 'حقیقت' - }, - Would_you_rather: { - 'button': 'wyr', - 'game_name': 'ترجیح میدی' - } -} - - - -from django.db import models - - -class MusicCategory(models.Model): - name = models.CharField(max_length=40, verbose_name='نام دسته بندی') - def __str__(self): - return self.name - - class Meta: - verbose_name = 'دسته بندی موزیک' - verbose_name_plural = 'دسته بندی موزیک ها' - -class MovieCategory(models.Model): - name = models.CharField(max_length=40, verbose_name='نام دسته بندی') - def __str__(self): - return self.name - - class Meta: - verbose_name = 'دسته بندی قیلم' - verbose_name_plural = 'دسته بندی فیلم ها' - - -class UploadParent(models.Model): - name = models.CharField(max_length=300, verbose_name='نام') - message_id = models.CharField(max_length=40, verbose_name='ای دی پیام تلگرام') - def __str__(self): - return self.name - -class MusicModel(UploadParent): - lyric = models.CharField(verbose_name='متن اهنگ', max_length=4000, blank=True, null=True) - singer = models.CharField(max_length=300, verbose_name='خواننده', blank=True, null=True) - category = models.ForeignKey(MusicCategory, on_delete=models.CASCADE, verbose_name='دسته بندی', blank=True, null=True) - trand = models.BooleanField(default=False, verbose_name='ترند') - class Meta: - verbose_name = 'مدل اهنگ' - verbose_name_plural = 'مدل اهنگ ها' - - -class MovieModel(UploadParent): - description = models.CharField(max_length=4000,verbose_name='توضیحات فیلم', blank=True, null=True) - category = models.ForeignKey(MovieCategory, on_delete=models.CASCADE, verbose_name='دسته بندی', blank=True, null=True) - receommended = models.BooleanField(default=False, verbose_name='پیشنهادی') - class Meta: - verbose_name = 'مدل فیلم' - verbose_name_plural = 'مدل فیلم ها' - diff --git a/backend/entertainment/tests.py b/backend/entertainment/tests.py deleted file mode 100644 index 7ce503c..0000000 --- a/backend/entertainment/tests.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.test import TestCase - -# Create your tests here. diff --git a/backend/entertainment/views.py b/backend/entertainment/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/backend/entertainment/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/backend/product/admin.py b/backend/product/admin.py index b94d761..4356486 100644 --- a/backend/product/admin.py +++ b/backend/product/admin.py @@ -7,6 +7,9 @@ from unfold.admin import ModelAdmin class ProductModelAdmin(ModelAdmin): pass +@admin.register(CategoryModel) +class CategoryModelAdmin(ModelAdmin): + pass @admin.register(CommentModel)