Add documents to decoders (#22)

* Add decoder documents support
* Use abstract model for Documents
* Increase version
* Code cleanup
This commit is contained in:
2023-10-01 00:03:41 +02:00
committed by GitHub
parent 9483648a1f
commit 5d536ce568
16 changed files with 161 additions and 60 deletions

View File

@@ -36,7 +36,3 @@ a.badge, a.badge:hover {
#footer > p {
display: inline;
}
th.th-35 {
width: 35%;
}

View File

@@ -32,7 +32,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Type</th>
<th class="w-25" scope="row">Type</th>
<td>{{ d.rolling_class.type }}</td>
</tr>
<tr>
@@ -54,7 +54,7 @@
<td>{{ d.era }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Manufacturer</th>
<th class="w-25" scope="row">Manufacturer</th>
<td>{%if d.manufacturer %}
<a href="{% url 'filtered' _filter="manufacturer" search=d.manufacturer.slug %}">{{ d.manufacturer }}{% if d.manufacturer.website %}</a> <a href="{{ d.manufacturer.website }}" target="_blank"><i class="bi bi-box-arrow-up-right"></i></a>{% endif %}
{% endif %}</td>
@@ -78,7 +78,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Decoder</th>
<th class="w-25" scope="row">Decoder</th>
<td>{{ d.decoder }}</td>
</tr>
<tr>

View File

@@ -17,25 +17,25 @@
<tbody>
{% if d.logo %}
<tr>
<th class="th-35" scope="row">Logo</th>
<th class="w-25" scope="row">Logo</th>
<td><img style="max-height: 48px" src="{{ d.logo.url }}" /></td>
</tr>
{% endif %}
<tr>
<th class="th-35" scope="row">Name</th>
<th class="w-25" scope="row">Name</th>
<td>{{ d.extended_name }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Abbreviation</th>
<th class="w-25" scope="row">Abbreviation</th>
<td>{{ d.name }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Country</th>
<th class="w-25" scope="row">Country</th>
<td>{{ d.country.name }} <img src="{{ d.country.flag }}" alt="{{ d.country }}" />
</tr>
{% if d.freelance %}
<tr>
<th class="th-35" scope="row">Notes</th>
<th class="w-25" scope="row">Notes</th>
<td>A <em>freelance</em> company</td>
</tr>
{% endif %}

View File

@@ -82,7 +82,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Company</th>
<th class="w-25" scope="row">Company</th>
<td><abbr title="{{ consist.company.extended_name }}">{{ consist.company }}</abbr></td>
</tr>
<tr>

View File

@@ -36,12 +36,12 @@
<tbody>
{% if d.address %}
<tr>
<th class="th-35" scope="row">Address</th>
<th class="w-25" scope="row">Address</th>
<td>{{ d.address }}</td>
</tr>
{% endif %}
<tr>
<th class="th-35" scope="row">Company</th>
<th class="w-25" scope="row">Company</th>
<td><abbr title="{{ d.company.extended_name }}">{{ d.company }}</abbr></td>
</tr>
<tr>

View File

@@ -17,18 +17,18 @@
<tbody>
{% if d.logo %}
<tr>
<th class="th-35" scope="row">Logo</th>
<th class="w-25" scope="row">Logo</th>
<td><img style="max-height: 48px" src="{{ d.logo.url }}" /></td>
</tr>
{% endif %}
{% if d.website %}
<tr>
<th class="th-35" scope="row">Website</th>
<th class="w-25" scope="row">Website</th>
<td><a href="{{ d.website }}" target="_blank"><i class="bi bi-box-arrow-up-right"></i></a></td>
</tr>
{% endif %}
<tr>
<th class="th-35" scope="row">Category</th>
<th class="w-25" scope="row">Category</th>
<td>{{ d.category | title }}</td>
</tr>
</tbody>

View File

@@ -64,7 +64,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Type</th>
<th class="w-25" scope="row">Type</th>
<td>{{ rolling_stock.rolling_class.type }}</td>
</tr>
<tr>
@@ -95,7 +95,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Manufacturer</th>
<th class="w-25" scope="row">Manufacturer</th>
<td>{%if rolling_stock.manufacturer %}
<a href="{% url 'filtered' _filter="manufacturer" search=rolling_stock.manufacturer.slug %}">{{ rolling_stock.manufacturer }}{% if rolling_stock.manufacturer.website %}</a> <a href="{{ rolling_stock.manufacturer.website }}" target="_blank"><i class="bi bi-box-arrow-up-right"></i></a>{% endif %}
{% endif %}</td>
@@ -119,7 +119,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Interface</th>
<th class="w-25" scope="row">Interface</th>
<td>{{ rolling_stock.get_decoder_interface_display }}</td>
</tr>
{% if rolling_stock.decoder %}
@@ -145,7 +145,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Manufacturer</th>
<th class="w-25" scope="row">Manufacturer</th>
<td>{%if rolling_stock.manufacturer %}
<a href="{% url 'filtered' _filter="manufacturer" search=rolling_stock.manufacturer.slug %}">{{ rolling_stock.manufacturer }}{% if rolling_stock.manufacturer.website %}</a> <a href="{{ rolling_stock.manufacturer.website }}" target="_blank"><i class="bi bi-box-arrow-up-right"></i></a>{% endif %}
{% endif %}</td>
@@ -182,7 +182,7 @@
<tbody>
{% for p in rolling_stock_properties %}
<tr>
<th class="th-35" scope="row">{{ p.property }}</th>
<th class="w-25" scope="row">{{ p.property }}</th>
<td>{{ p.value }}</td>
</tr>
{% endfor %}
@@ -199,7 +199,7 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Class</th>
<th class="w-25" scope="row">Class</th>
<td>{{ rolling_stock.rolling_class.identifier }}</td>
</tr>
<tr>
@@ -234,7 +234,7 @@
<tbody>
{% for p in class_properties %}
<tr>
<th class="th-35" scope="row">{{ p.property }}</th>
<th class="w-25" scope="row">{{ p.property }}</th>
<td>{{ p.value }}</td>
</tr>
{% endfor %}
@@ -255,7 +255,7 @@
<td>{{ rolling_stock.get_decoder_interface_display }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Address</th>
<th class="w-25" scope="row">Address</th>
<td>{{ rolling_stock.address }}</td>
</tr>
<tr>
@@ -301,13 +301,31 @@
<tbody>
{% for d in rolling_stock.document.all %}
<tr>
<td>{{ d.description }}</td>
<td class="w-25">{{ d.description }}</td>
<td><a href="{{ d.file.url }}" target="_blank">{{ d.filename }}</a></td>
<td class="text-end">{{ d.file.size | filesizeformat }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% if rolling_stock.decoder.document.count > 0 %}
<table class="table table-striped">
<thead>
<tr>
<th colspan="3" scope="row">Decoder documents</th>
</tr>
</thead>
<tbody>
{% for d in rolling_stock.decoder.document.all %}
<tr>
<td class="w-25">{{ d.description }}</td>
<td><a href="{{ d.file.url }}" target="_blank">{{ d.filename }}</a></td>
<td class="text-end">{{ d.file.size | filesizeformat }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
</div>
<div class="tab-pane fade" id="nav-journal" role="tabpanel" aria-labelledby="nav-journal-tab">
<table class="table table-striped">
@@ -319,7 +337,7 @@
<tbody>
{% for j in rolling_stock_journal %}
<tr>
<th class="th-35" scope="row">{{ j.date }}</th>
<th class="w-25" scope="row">{{ j.date }}</th>
<td>{{ j.log | safe }}</a></td>
</tr>
{% endfor %}

View File

@@ -14,19 +14,19 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Name</th>
<th class="w-25" scope="row">Name</th>
<td>{{ d.scale }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Ratio</th>
<th class="w-25" scope="row">Ratio</th>
<td>{{ d.ratio }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Gauge</th>
<th class="w-25" scope="row">Gauge</th>
<td>{{ d.gauge }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Tracks</th>
<th class="w-25" scope="row">Tracks</th>
<td>{{ d.tracks }}</td>
</tr>
</tbody>

View File

@@ -14,11 +14,11 @@
</thead>
<tbody>
<tr>
<th class="th-35" scope="row">Type</th>
<th class="w-25" scope="row">Type</th>
<td>{{ d.type }}</td>
</tr>
<tr>
<th class="th-35" scope="row">Category</th>
<th class="w-25" scope="row">Category</th>
<td>{{ d.category | title}}</td>
</tr>
</tbody>