diff --git a/ram/consist/admin.py b/ram/consist/admin.py index 679caa6..451f0d6 100644 --- a/ram/consist/admin.py +++ b/ram/consist/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from adminsortable2.admin import SortableInlineAdminMixin +from adminsortable2.admin import SortableAdminBase, SortableInlineAdminMixin from consist.models import Consist, ConsistItem @@ -12,7 +12,7 @@ class ConsistItemInline(SortableInlineAdminMixin, admin.TabularInline): @admin.register(Consist) -class ConsistAdmin(admin.ModelAdmin): +class ConsistAdmin(SortableAdminBase, admin.ModelAdmin): inlines = (ConsistItemInline,) readonly_fields = ( "creation_time", diff --git a/ram/portal/static/css/main.css b/ram/portal/static/css/main.css index 9abd996..f497996 100644 --- a/ram/portal/static/css/main.css +++ b/ram/portal/static/css/main.css @@ -6,6 +6,14 @@ display: inline-block; } +.tab-pane { + min-height: 300px; +} + +#nav-notes > p { + padding: .5rem; +} + #footer > p { display: inline; } diff --git a/ram/portal/templates/home.html b/ram/portal/templates/home.html index b20e606..a6316d0 100644 --- a/ram/portal/templates/home.html +++ b/ram/portal/templates/home.html @@ -51,7 +51,7 @@
-
+

About

@@ -67,10 +67,9 @@ {% for r in rolling_stock %}
- - {% for t in r.thumbnail.all %} - {% if t.is_thumbnail %}Card image cap - {% endif %}{% endfor %} + {% for i in r.image.all %} + {% if i.is_thumbnail %}Card image cap{% endif %} + {% endfor %}

{{ r }}

@@ -149,9 +148,9 @@
{% if r.decoder %} - + {% endif %} - Show all data + Show all data {% if request.user.is_staff %}Edit{% endif %}
{% if r.tags.all %} diff --git a/ram/portal/templates/page.html b/ram/portal/templates/page.html index 66b843f..7a501d1 100644 --- a/ram/portal/templates/page.html +++ b/ram/portal/templates/page.html @@ -76,15 +76,17 @@
@@ -155,6 +157,41 @@
{% endif %}
+ +
+
+ {% if request.user.is_staff %}Edit{% endif %} +
@@ -230,11 +303,9 @@
- {% for t in rolling_stock.thumbnail.all %} + {% for t in rolling_stock.image.all %}
-
- Rolling stock image -
+ Rolling stock image
{% endfor %}
diff --git a/ram/portal/urls.py b/ram/portal/urls.py index 477d607..9991f27 100644 --- a/ram/portal/urls.py +++ b/ram/portal/urls.py @@ -4,5 +4,5 @@ from portal.views import GetHome, GetRollingStock urlpatterns = [ path("", GetHome.as_view(), name='index_pagination'), - path("", GetRollingStock.as_view(), name='rollig_stock'), + path("", GetRollingStock.as_view(), name='rolling_stock'), ] diff --git a/ram/ram/settings.py b/ram/ram/settings.py index 47988f6..e2fdf24 100644 --- a/ram/ram/settings.py +++ b/ram/ram/settings.py @@ -42,10 +42,10 @@ INSTALLED_APPS = [ "django.contrib.staticfiles", "health_check", "health_check.db", + "adminsortable2", "django_countries", "solo", "rest_framework", - "adminsortable2", "ram", "portal", "driver", diff --git a/ram/roster/migrations/0004_alter_rollingstockdocument_rolling_stock_and_more.py b/ram/roster/migrations/0004_alter_rollingstockdocument_rolling_stock_and_more.py new file mode 100644 index 0000000..7f7c975 --- /dev/null +++ b/ram/roster/migrations/0004_alter_rollingstockdocument_rolling_stock_and_more.py @@ -0,0 +1,24 @@ +# Generated by Django 4.0.3 on 2022-04-12 19:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0003_alter_rollingstockimage_rolling_stock'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstockdocument', + name='rolling_stock', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='document', to='roster.rollingstock'), + ), + migrations.AlterField( + model_name='rollingstockimage', + name='rolling_stock', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='image', to='roster.rollingstock'), + ), + ] diff --git a/ram/roster/migrations/0005_alter_rollingstockproperty_rolling_stock.py b/ram/roster/migrations/0005_alter_rollingstockproperty_rolling_stock.py new file mode 100644 index 0000000..3122ab7 --- /dev/null +++ b/ram/roster/migrations/0005_alter_rollingstockproperty_rolling_stock.py @@ -0,0 +1,19 @@ +# Generated by Django 4.0.3 on 2022-04-12 19:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('roster', '0004_alter_rollingstockdocument_rolling_stock_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='rollingstockproperty', + name='rolling_stock', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='property', to='roster.rollingstock'), + ), + ] diff --git a/ram/roster/models.py b/ram/roster/models.py index ab086d4..15cea70 100644 --- a/ram/roster/models.py +++ b/ram/roster/models.py @@ -1,7 +1,7 @@ import os from uuid import uuid4 from django.db import models - +from django.urls import reverse # from django.core.files.storage import FileSystemStorage # from django.dispatch import receiver @@ -100,6 +100,9 @@ class RollingStock(models.Model): def __str__(self): return "{0} {1}".format(self.rolling_class, self.road_number) + def get_absolute_url(self): + return reverse("rolling_stock", kwargs={"uuid": self.uuid}) + def country(self): return str(self.rolling_class.company.country) @@ -108,7 +111,11 @@ class RollingStock(models.Model): class RollingStockDocument(models.Model): - rolling_stock = models.ForeignKey(RollingStock, on_delete=models.CASCADE) + rolling_stock = models.ForeignKey( + RollingStock, + on_delete=models.CASCADE, + related_name="document" + ) description = models.CharField(max_length=128, blank=True) file = models.FileField(upload_to="files/", null=True, blank=True) @@ -117,14 +124,17 @@ class RollingStockDocument(models.Model): def __str__(self): return "{0}".format(os.path.basename(self.file.name)) - # return "{0}".format(self.description) + + def filename(self): + return os.path.basename(self.file.name) class RollingStockImage(models.Model): rolling_stock = models.ForeignKey( RollingStock, on_delete=models.CASCADE, - related_name="thumbnail") + related_name="image" + ) image = models.ImageField(upload_to="images/", null=True, blank=True) is_thumbnail = models.BooleanField() @@ -147,6 +157,7 @@ class RollingStockProperty(models.Model): rolling_stock = models.ForeignKey( RollingStock, on_delete=models.CASCADE, + related_name="property", null=False, blank=False )