@@ -0,0 +1,23 @@ +# Generated by Django 5.0.11 on 2026-04-02 14:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('ml_model', '0052_alter_modelinput_unique_together'), + ] + + operations = [ + migrations.AlterModelOptions( + name='modelcategory', + options={'ordering': ('order',), 'verbose_name': 'Category', 'verbose_name_plural': 'Categories'}, + ), + migrations.AddField( + model_name='modelcategory', + name='order', + field=models.PositiveIntegerField(db_index=True, default=0, editable=False, verbose_name='order'), + preserve_default=False, + ), + ] @@ -89,7 +89,7 @@ class ModelInstructionInline(admin.TabularInline): @admin.register(ModelCategory) class ModelCategoryAdmin(ImportExportMixin, ExportActionModelAdmin, OrderedModelAdmin): - list_display = ['title', 'slug'] + list_display = ['title', 'slug', 'move_up_down_links'] prepopulated_fields = {'slug': ('title',)} resource_classes = [ModelCategoryResource] @@ -13,7 +13,7 @@ from ordered_model.models import OrderedModel, OrderedModelManager from core.models import BaseModel -class ModelCategory(models.Model): +class ModelCategory(OrderedModel): title = models.CharField(max_length=100, verbose_name=_('Title')) slug = models.SlugField(max_length=100, unique=True, verbose_name=_('Slug')) @@ -24,7 +24,7 @@ class ModelCategory(models.Model): def __str__(self) -> str: return self.title - class Meta: + class Meta(OrderedModel.Meta): verbose_name = _('Category') verbose_name_plural = _('Categories') @@ -124,25 +124,21 @@ async def list_payment_plans(request): ).select_related( 'model__category', 'model__model_settings', - ), + ).order_by('model__category__order', 'order'), to_attr='active_features', ) ) result = [] - GROUPED_FEATURES_ORDER = ['Чат-боты', 'Изображения', 'Видео', 'Аудио'] async for plan in plans: - raw_grouped = defaultdict(list) + grouped = defaultdict(list) for feature in plan.active_features: - raw_grouped[feature.model.category.title].append( + grouped[feature.model.category.title].append( { 'name': feature.model.title, 'quantity': feature.quantity, 'measurement_unit': feature.measurement_unit, } ) - grouped = dict( - sorted(raw_grouped.items(), key=lambda items: GROUPED_FEATURES_ORDER.index(items[0])) - ) result.append( PaymentPlanSchema( uid=plan.uid,