SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit 6a7b4590 authored by George Katsikas's avatar George Katsikas :goat:
Browse files

rename collections related field on submissions

parent 8dcb96fa
No related branches found
No related tags found
1 merge request!61[Submissions] Add target collection to the submission form
Showing
with 85 additions and 25 deletions
......@@ -14,7 +14,7 @@
</div>
<div class="citation">{{ publication.citation }}</div> <span class="">published {{ publication.publication_date|date:'j F Y' }}</span>
{% for collection in publication.collection_set.all %}
{% for collection in publication.collections.all %}
<p class="m-1"><em>Part of the <a href="{{ collection.get_absolute_url }}">{{ collection }}</a> Collection in the <a href="{{ collection.series.get_absolute_url }}">{{ collection.series }}</a> Series.</em></p>
{% endfor %}
</div>
......@@ -12,7 +12,7 @@
<p class="meta mb-0">
{{ publication.citation }} &middot; <span class="fw-light">published {{ publication.publication_date|date:'j F Y' }}</span>
</p>
{% for collection in publication.collection_set.all %}
{% for collection in publication.collections.all %}
<p class="m-1"><em>Part of the <a href="{{ collection.get_absolute_url }}">{{ collection }}</a> Collection in the <a href="{{ collection.series.get_absolute_url }}">{{ collection.series }}</a> Series.</em></p>
{% endfor %}
</div>
......@@ -12,7 +12,7 @@
{% if publication.cc_license != 'CC BY 4.0' %}
&middot; licensed under {{ publication.get_cc_license_display }}
{% endif %}
{% for collection in publication.collection_set.all %}
{% for collection in publication.collections.all %}
<p class="m-2"><em>Part of the <a href="{{ collection.get_absolute_url }}">{{ collection }}</a> Collection in the <a href="{{ collection.series.get_absolute_url }}">{{ collection.series }}</a> Series.</em></p>
{% endfor %}
......
......@@ -112,10 +112,10 @@
Content
</h2>
{% automarkup journal.content %}
{% if journal.series_set.all|length > 0 %}
{% if journal.contained_series.all|length > 0 %}
Series hosted in this Journal:
<ul>
{% for series in journal.series_set.all %}
{% for series in journal.contained_series.all %}
<li>
<a href="{{ series.get_absolute_url }}" target="_blank">{{ series }}</a>
</li>
......
......@@ -20,7 +20,7 @@
<li class="nav-item">
<a class="nav-link" id="accepted-tab" data-bs-toggle="tab" href="#accepted" role="tab" aria-controls="accepted" aria-selected="true">Accepted Submissions</a>
</li>
{% if journal.series_set.all|length > 0 %}
{% if journal.contained_series.all|length > 0 %}
<li class="nav-item">
<a class="nav-link" id="series-tab" data-bs-toggle="tab" href="#series" role="tab" aria-controls="series" aria-selected="true">Series</a>
</li>
......@@ -64,11 +64,11 @@
{% endfor %}
</ul>
</div>
{% if journal.series_set.all|length > 0 %}
{% if journal.contained_series.all|length > 0 %}
<div class="tab-pane pt-4" id="series" role="tabpanel" aria-labelledby="series-tab">
<h3 class="highlight">Series contained in this Journal</h3>
<ul>
{% for series in journal.series_set.all %}
{% for series in journal.contained_series.all %}
<li><a href="{{ series.get_absolute_url }}" target="_blank">{{ series }}</a></li>
{% endfor %}
</ul>
......
......@@ -63,11 +63,11 @@
<div class="card-body">
{% automarkup journal.blurb %}
</div>
{% if journal.series_set.all|length > 0 %}
{% if journal.contained_series.all|length > 0 %}
<div class="card-footer">
Series hosted in this Journal:
<ul>
{% for series in journal.series_set.all %}
{% for series in journal.contained_series.all %}
<li>
<a href="{{ series.get_absolute_url }}" target="_blank">{{ series }}</a>
</li>
......
......@@ -20,11 +20,11 @@
<div class="card-body">
{% automarkup journal.blurb %}
</div>
{% if journal.series_set.all|length > 0 %}
{% if journal.contained_series.all|length > 0 %}
<div class="card-footer">
Series hosted in this Journal:
<ul>
{% for series in journal.series_set.all %}
{% for series in journal.contained_series.all %}
<li>
<a href="{{ series.get_absolute_url }}" target="_blank">{{ series }}</a>
</li>
......
......@@ -210,9 +210,9 @@ def portal_hx_home(request):
"publications": Publication.objects.published()
.exclude(doi_label__contains="Proc")
.order_by("-publication_date", "-paper_nr")
.prefetch_related(
"in_issue__in_journal", "specialties", "collection_set__series"
)[:5],
.prefetch_related("in_issue__in_journal", "specialties", "collections__series")[
:5
],
}
return render(request, "scipost/portal/_hx_home.html", context)
......@@ -241,7 +241,7 @@ def portal_hx_journals(request):
if session_acad_field_slug and session_acad_field_slug != "all":
journals = journals.filter(
college__acad_field__slug=session_acad_field_slug,
).prefetch_related("series_set")
).prefetch_related("contained_series")
context["journals"] = journals
else: # build a dictionary of journals per branch / acad_field
journals_dict = {}
......@@ -289,7 +289,7 @@ def portal_hx_publications_page(request):
"in_issue__in_journal",
"in_issue__in_volume__in_journal",
"specialties",
"collection_set__series",
"collections__series",
)
paginator = Paginator(publications, 10)
page_nr = request.GET.get("page")
......
# Generated by Django 3.2.18 on 2023-09-20 16:05
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('journals', '0128_populate_submission_object_types'),
('submissions', '0142_alter_submission_author_list'),
('series', '0007_collection_expected_editors'),
]
operations = [
migrations.AlterField(
model_name='collection',
name='publications',
field=models.ManyToManyField(blank=True, related_name='collections', through='series.CollectionPublicationsTable', to='journals.Publication'),
),
migrations.AlterField(
model_name='collection',
name='series',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='collections', to='series.series'),
),
migrations.AlterField(
model_name='collection',
name='submissions',
field=models.ManyToManyField(blank=True, related_name='collections', to='submissions.Submission'),
),
migrations.AlterField(
model_name='series',
name='container_journals',
field=models.ManyToManyField(blank=True, related_name='contained_series', to='journals.Journal'),
),
]
......@@ -27,7 +27,9 @@ class Series(models.Model):
blank=True,
)
image = models.ImageField(upload_to="series/images/", blank=True)
container_journals = models.ManyToManyField("journals.Journal", blank=True)
container_journals = models.ManyToManyField(
"journals.Journal", blank=True, related_name="contained_series"
)
class Meta:
verbose_name_plural = "series"
......@@ -45,7 +47,11 @@ class Collection(models.Model):
"""
series = models.ForeignKey(
"series.Series", blank=True, null=True, on_delete=models.CASCADE
"series.Series",
blank=True,
null=True,
on_delete=models.CASCADE,
related_name="collections",
)
name = models.CharField(max_length=256, blank=True)
slug = models.SlugField(unique=True, allow_unicode=True)
......@@ -66,14 +72,23 @@ class Collection(models.Model):
expected_editors = models.ManyToManyField(
"colleges.Fellowship", blank=True, related_name="collections_editing"
)
submissions = models.ManyToManyField("submissions.Submission", blank=True)
submissions = models.ManyToManyField(
"submissions.Submission", blank=True, related_name="collections"
)
publications = models.ManyToManyField(
"journals.Publication", through="series.CollectionPublicationsTable", blank=True
"journals.Publication",
through="series.CollectionPublicationsTable",
blank=True,
related_name="collections",
)
def __str__(self):
return self.name
@property
def name_with_series(self):
return f"{self.series.name} - {self.name}"
def get_absolute_url(self):
return reverse("series:collection_detail", kwargs={"slug": self.slug})
......
......@@ -38,7 +38,7 @@ class SeriesDetailView(DetailView):
context = super().get_context_data(*args, **kwargs)
# Sort collections in series by event start date
context["collections"] = self.object.collection_set.all().order_by(
context["collections"] = self.object.collections.all().order_by(
"event_start_date"
)
return context
......
......@@ -117,6 +117,14 @@ class SubmissionTieringInline(admin.StackedInline):
]
class CollectionInline(admin.StackedInline):
model = Submission.collections.through
extra = 0
autocomplete_fields = [
"collection",
]
class SubmissionAdmin(GuardedModelAdmin):
date_hierarchy = "submission_date"
list_display = (
......@@ -162,6 +170,7 @@ class SubmissionAdmin(GuardedModelAdmin):
ReadinessInline,
SubmissionClearanceInline,
SubmissionTieringInline,
CollectionInline,
]
# Admin fields should be added in the fieldsets
......
......@@ -86,16 +86,16 @@
<td>{{ submission.proceedings }}</td>
</tr>
{% endif %}
{% with ncollections=submission.collection_set.all|length %}
{% with ncollections=submission.collections.all|length %}
{% if ncollections > 0 %}
<tr>
<td></td>
<td>
&nbsp;for consideration in Collection{{ ncollections|pluralize }}:
<ul class="mb-0 pb-0">
{% for collection in submission.collection_set.all %}
{% for collection in submission.collections.all %}
<li>
<a href="{{ collection.get_absolute_url }}" target="_blank">{{ collection }}</a>
<a href="{{ collection.get_absolute_url }}" target="_blank">{{ collection.name_with_series }}</a>
</li>
{% endfor %}
</ul>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment