add achievement app

This commit is contained in:
Timur
2025-03-02 15:10:54 +03:00
parent 2d961ea4e2
commit 710b40dfe1
8 changed files with 139 additions and 0 deletions
@@ -0,0 +1,9 @@
from django.contrib import admin
from apps.achievement.models import Achievement
@admin.register(Achievement)
class AchievementAdmin(admin.ModelAdmin):
list_display = ("id", "name",)
search_fields = ("name", "description",)
@@ -0,0 +1,7 @@
from django.apps import AppConfig
class AchievementConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apps.achievement'
verbose_name = "Ачивки"
@@ -0,0 +1,29 @@
# Generated by Django 5.1.6 on 2025-03-02 12:09
import apps.achievement.models
import uuid
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Achievement',
fields=[
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)),
('name', models.CharField(max_length=30, unique=True, verbose_name='название')),
('description', models.TextField(verbose_name='описание')),
('icon', models.FileField(upload_to=apps.achievement.models.Achievement.image_url_upload_to, verbose_name='иконка достижения')),
],
options={
'verbose_name': 'ачивка',
'verbose_name_plural': 'ачивки',
},
),
]
@@ -0,0 +1,22 @@
from django.db import models
from apps.core.models import BaseModel
class Achievement(BaseModel):
def image_url_upload_to(instance, filename):
return f"/achievements/{instance.id}/icon"
name = models.CharField(max_length=30, verbose_name="название",
unique=True)
description = models.TextField(verbose_name="описание")
icon = models.FileField(
verbose_name="иконка достижения",
upload_to=image_url_upload_to,
)
def __str__(self):
return self.name
class Meta:
verbose_name = "ачивка"
verbose_name_plural = "ачивки"