diff --git a/vrobbler/apps/beers/admin.py b/vrobbler/apps/beers/admin.py index acc7e90..34d7775 100644 --- a/vrobbler/apps/beers/admin.py +++ b/vrobbler/apps/beers/admin.py @@ -1,7 +1,5 @@ +from beers.models import Beer, BeerProducer, BeerStyle from django.contrib import admin - -from beers.models import Beer - from scrobbles.admin import ScrobbleInline @@ -10,10 +8,15 @@ class BeerInline(admin.TabularInline): extra = 0 -@admin.register(Beer) +@admin.register(BeerStyle) +class BeerStyle(admin.ModelAdmin): + date_hierarchy = "created" + search_fields = ("name",) + + +@admin.register(BeerProducer) class BeerProducer(admin.ModelAdmin): date_hierarchy = "created" - list_display = ("uuid",) search_fields = ("name",) @@ -23,7 +26,6 @@ class BeerAdmin(admin.ModelAdmin): list_display = ( "uuid", "title", - "style", ) ordering = ("-created",) search_fields = ("title",) diff --git a/vrobbler/apps/beers/migrations/0003_beerstyle_remove_beer_beeradvocate_image_and_more.py b/vrobbler/apps/beers/migrations/0003_beerstyle_remove_beer_beeradvocate_image_and_more.py new file mode 100644 index 0000000..274e89a --- /dev/null +++ b/vrobbler/apps/beers/migrations/0003_beerstyle_remove_beer_beeradvocate_image_and_more.py @@ -0,0 +1,75 @@ +# Generated by Django 4.2.16 on 2024-10-22 21:47 + +from django.db import migrations, models +import django_extensions.db.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ("beers", "0002_beer_beeradvocate_image_beer_producer_and_more"), + ] + + operations = [ + migrations.CreateModel( + name="BeerStyle", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ( + "created", + django_extensions.db.fields.CreationDateTimeField( + auto_now_add=True, verbose_name="created" + ), + ), + ( + "modified", + django_extensions.db.fields.ModificationDateTimeField( + auto_now=True, verbose_name="modified" + ), + ), + ("description", models.TextField(blank=True, null=True)), + ], + options={ + "get_latest_by": "modified", + "abstract": False, + }, + ), + migrations.RemoveField( + model_name="beer", + name="beeradvocate_image", + ), + migrations.RemoveField( + model_name="beer", + name="style", + ), + migrations.AddField( + model_name="beer", + name="untappd_image", + field=models.ImageField( + blank=True, null=True, upload_to="beers/untappd/" + ), + ), + migrations.AddField( + model_name="beer", + name="untappd_rating", + field=models.FloatField(blank=True, null=True), + ), + migrations.AddField( + model_name="beerproducer", + name="untappd_id", + field=models.CharField(blank=True, max_length=255, null=True), + ), + migrations.AddField( + model_name="beer", + name="styles", + field=models.ManyToManyField(to="beers.beerstyle"), + ), + ] diff --git a/vrobbler/apps/beers/models.py b/vrobbler/apps/beers/models.py index 65b37c0..1e65078 100644 --- a/vrobbler/apps/beers/models.py +++ b/vrobbler/apps/beers/models.py @@ -10,6 +10,10 @@ from scrobbles.mixins import ScrobblableMixin BNULL = {"blank": True, "null": True} +class BeerStyle(TimeStampedModel): + description = models.TextField(**BNULL) + + class BeerProducer(TimeStampedModel): description = models.TextField(**BNULL) location = models.CharField(max_length=255, **BNULL) @@ -24,7 +28,7 @@ class Beer(ScrobblableMixin): description = models.TextField(**BNULL) ibu = models.SmallIntegerField(**BNULL) abv = models.FloatField(**BNULL) - style = models.CharField(max_length=100, **BNULL) + styles = models.ManyToManyField(BeerStyle) non_alcoholic = models.BooleanField(default=False) beeradvocate_id = models.CharField(max_length=255, **BNULL) beeradvocate_score = models.SmallIntegerField(**BNULL)