From 72dbc76e28ace844c28c92c9f3e9ae976259bc63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Sat, 29 Jan 2022 19:43:27 +0100 Subject: [PATCH] Extend metadata --- dcc/metadata/admin.py | 17 +++++++-- .../migrations/0003_metadata_extend.py | 35 +++++++++++++++++ dcc/metadata/models.py | 38 +++++++++++++++++++ dcc/roster/migrations/0016_alter_cab_image.py | 18 +++++++++ dcc/roster/models.py | 2 +- 5 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 dcc/metadata/migrations/0003_metadata_extend.py create mode 100644 dcc/roster/migrations/0016_alter_cab_image.py diff --git a/dcc/metadata/admin.py b/dcc/metadata/admin.py index dfb502c..19430b7 100644 --- a/dcc/metadata/admin.py +++ b/dcc/metadata/admin.py @@ -1,6 +1,17 @@ from django.contrib import admin from metadata.models import Decoder, Manufacturer, Company -admin.site.register(Decoder) -admin.site.register(Company) -admin.site.register(Manufacturer) + +@admin.register(Decoder) +class DecoderAdmin(admin.ModelAdmin): + readonly_fields = ('image_thumbnail',) + + +@admin.register(Company) +class CompanyAdmin(admin.ModelAdmin): + readonly_fields = ('logo_thumbnail',) + + +@admin.register(Manufacturer) +class ManufacturerAdmin(admin.ModelAdmin): + readonly_fields = ('logo_thumbnail',) diff --git a/dcc/metadata/migrations/0003_metadata_extend.py b/dcc/metadata/migrations/0003_metadata_extend.py new file mode 100644 index 0000000..84bfead --- /dev/null +++ b/dcc/metadata/migrations/0003_metadata_extend.py @@ -0,0 +1,35 @@ +# Generated by Django 4.0.1 on 2022-01-29 18:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + replaces = [('metadata', '0003_company_logo_decoder_image_manufacturer_logo'), ('metadata', '0004_decoder_interface'), ('metadata', '0005_alter_decoder_interface'), ('metadata', '0006_alter_decoder_interface')] + + dependencies = [ + ('metadata', '0002_decoder_version'), + ] + + operations = [ + migrations.AddField( + model_name='company', + name='logo', + field=models.ImageField(blank=True, null=True, upload_to='images/'), + ), + migrations.AddField( + model_name='decoder', + name='image', + field=models.ImageField(blank=True, null=True, upload_to='images/'), + ), + migrations.AddField( + model_name='manufacturer', + name='logo', + field=models.ImageField(blank=True, null=True, upload_to='images/'), + ), + migrations.AddField( + model_name='decoder', + name='interface', + field=models.PositiveSmallIntegerField(blank=True, choices=[(1, 'NEM651'), (2, 'NEM652'), (3, 'PluX'), (4, '21MTC'), (5, 'Next18/Next18S')], null=True), + ), + ] diff --git a/dcc/metadata/models.py b/dcc/metadata/models.py index 59c77f8..ca02885 100644 --- a/dcc/metadata/models.py +++ b/dcc/metadata/models.py @@ -1,17 +1,31 @@ from django.db import models from django_countries.fields import CountryField +from dcc.utils import get_image_preview + class Manufacturer(models.Model): name = models.CharField(max_length=128, unique=True) + logo = models.ImageField( + upload_to='images/', + null=True, + blank=True) def __str__(self): return self.name + def logo_thumbnail(self): + return get_image_preview(self.logo.url) + logo_thumbnail.short_description = "Preview" + class Company(models.Model): name = models.CharField(max_length=128, unique=True) country = CountryField() + logo = models.ImageField( + upload_to='images/', + null=True, + blank=True) class Meta: verbose_name_plural = "Companies" @@ -19,13 +33,37 @@ class Company(models.Model): def __str__(self): return self.name + def logo_thumbnail(self): + return get_image_preview(self.logo.url) + logo_thumbnail.short_description = "Preview" + class Decoder(models.Model): + class Interface(models.IntegerChoices): + NEM651 = 1, "NEM651" + NEM652 = 2, "NEM652" + NEM658 = 3, "PluX" + NEM660 = 4, "21MTC" + NEM662 = 5, "Next18/Next18S" + name = models.CharField(max_length=128, unique=True) manufacturer = models.ForeignKey( Manufacturer, on_delete=models.CASCADE) version = models.CharField(max_length=64, blank=True) + interface = models.PositiveSmallIntegerField( + choices=Interface.choices, + null=True, + blank=True + ) + image = models.ImageField( + upload_to='images/', + null=True, + blank=True) def __str__(self): return "{0} - {1}".format(self.manufacturer, self.name) + + def image_thumbnail(self): + return get_image_preview(self.image.url) + image_thumbnail.short_description = "Preview" diff --git a/dcc/roster/migrations/0016_alter_cab_image.py b/dcc/roster/migrations/0016_alter_cab_image.py new file mode 100644 index 0000000..e93689d --- /dev/null +++ b/dcc/roster/migrations/0016_alter_cab_image.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.1 on 2022-01-29 18:05 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0015_remove_decoder_manufacturer_alter_cab_company_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='cab', + name='image', + field=models.ImageField(blank=True, null=True, upload_to='images/'), + ), + ] diff --git a/dcc/roster/models.py b/dcc/roster/models.py index 4242243..ca82fc2 100644 --- a/dcc/roster/models.py +++ b/dcc/roster/models.py @@ -32,7 +32,7 @@ class Cab(models.Model): purchase_date = models.DateField(null=True, blank=True) image = models.ImageField( - upload_to='media/images/', + upload_to='images/', null=True, blank=True) notes = models.TextField(blank=True)