diff --git a/scipost_django/news/admin.py b/scipost_django/news/admin.py index fc84dde0d0292d1f46917d30465b0fe014e22baf..001402f7d3b6ae49a89343eb4d6dc8daba1ef2cb 100644 --- a/scipost_django/news/admin.py +++ b/scipost_django/news/admin.py @@ -4,25 +4,21 @@ __license__ = "AGPL v3" from django.contrib import admin -from .models import NewsLetter, NewsItem, NewsLetterNewsItemsTable +from .models import NewsCollection, NewsItem, NewsCollectionNewsItemsTable -class NewsLetterNewsItemsTableInline(admin.TabularInline): - model = NewsLetterNewsItemsTable +class NewsCollectionNewsItemsTableInline(admin.TabularInline): + model = NewsCollectionNewsItemsTable -@admin.register(NewsLetter) -class NewsLetterAdmin(admin.ModelAdmin): +@admin.register(NewsCollection) +class NewsCollectionAdmin(admin.ModelAdmin): search_fields = ["intro", "closing"] list_display = ["__str__", "published"] - inlines = [NewsLetterNewsItemsTableInline] - - + inlines = [NewsCollectionNewsItemsTableInline] @admin.register(NewsItem) class NewsItemAdmin(admin.ModelAdmin): search_fields = ["blurb", "followup_link_text"] list_display = ["__str__", "published", "on_homepage"] - - diff --git a/scipost_django/news/factories.py b/scipost_django/news/factories.py index 6b2f5a21117019bc17415260738d796a4a509272..878e8f423114327790b983a5511542652ff1ecf5 100644 --- a/scipost_django/news/factories.py +++ b/scipost_django/news/factories.py @@ -4,19 +4,19 @@ __license__ = "AGPL v3" import factory -from .models import NewsItem, NewsLetter +from .models import NewsItem, NewsCollection -class NewsLetterFactory(factory.django.DjangoModelFactory): +class NewsCollectionFactory(factory.django.DjangoModelFactory): class Meta: - model = NewsLetter + model = NewsCollection date = factory.Faker("date_this_year") intro = factory.Faker("paragraph", nb_sentences=2) closing = factory.Faker("paragraph", nb_sentences=2) published = True - # Create NewsItems for this NewsLetter linking them through NewsLetterNewsItemsTable + # Create NewsItems for this NewsCollection linking them through NewsCollectionNewsItemsTable @factory.post_generation def news_items(self, create, extracted, **kwargs): if not create: diff --git a/scipost_django/news/forms.py b/scipost_django/news/forms.py index a0316f7868fdd62bbb7712c0899ef60bf9696b1f..63108096ef286fdcac670be38bea8905c3fedfc9 100644 --- a/scipost_django/news/forms.py +++ b/scipost_django/news/forms.py @@ -4,12 +4,12 @@ __license__ = "AGPL v3" from django import forms -from .models import NewsLetter, NewsItem, NewsLetterNewsItemsTable +from .models import NewsCollection, NewsItem, NewsCollectionNewsItemsTable -class NewsLetterForm(forms.ModelForm): +class NewsCollectionForm(forms.ModelForm): class Meta: - model = NewsLetter + model = NewsCollection fields = ["date", "intro", "closing", "published"] @@ -30,13 +30,13 @@ class NewsItemForm(forms.ModelForm): ] -class NewsLetterNewsItemsTableForm(forms.ModelForm): +class NewsCollectionNewsItemsTableForm(forms.ModelForm): class Meta: - model = NewsLetterNewsItemsTable + model = NewsCollectionNewsItemsTable fields = ["newsitem"] -class NewsLetterNewsItemsTableFormSet(forms.BaseModelFormSet): +class NewsCollectionNewsItemsTableFormSet(forms.BaseModelFormSet): def save(self, *args, **kwargs): objects = super().save(*args, **kwargs) for form in self.ordered_forms: @@ -45,10 +45,10 @@ class NewsLetterNewsItemsTableFormSet(forms.BaseModelFormSet): return objects -NewsLetterNewsItemsOrderingFormSet = forms.modelformset_factory( - NewsLetterNewsItemsTable, +NewsCollectionNewsItemsOrderingFormSet = forms.modelformset_factory( + NewsCollectionNewsItemsTable, fields=(), can_order=True, extra=0, - formset=NewsLetterNewsItemsTableFormSet, + formset=NewsCollectionNewsItemsTableFormSet, ) diff --git a/scipost_django/news/migrations/0003_rename_newsletter_newscollection_and_more.py b/scipost_django/news/migrations/0003_rename_newsletter_newscollection_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..b9ed379d9e3eff2d5f5b3ef2068dc10811fdf587 --- /dev/null +++ b/scipost_django/news/migrations/0003_rename_newsletter_newscollection_and_more.py @@ -0,0 +1,33 @@ +# Generated by Django 4.2.10 on 2024-04-24 10:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("news", "0002_auto_20180706_1459"), + ] + + operations = [ + migrations.RenameModel( + old_name="NewsLetter", + new_name="NewsCollection", + ), + migrations.RenameModel( + old_name="NewsLetterNewsItemsTable", + new_name="NewsCollectionNewsItemsTable", + ), + migrations.RenameField( + model_name="newscollectionnewsitemstable", + old_name="newsletter", + new_name="newscollection", + ), + migrations.AlterField( + model_name="newsitem", + name="blurb_short", + field=models.TextField( + default="", + help_text="Short version for use in NewsCollection/emails etc", + ), + ), + ] diff --git a/scipost_django/news/models.py b/scipost_django/news/models.py index 035466a867b3b8b2344a353cca4c0a81b634ee12..f3b99d16a781e05c0ebf5b692b59f405b8ba4b52 100644 --- a/scipost_django/news/models.py +++ b/scipost_django/news/models.py @@ -8,11 +8,11 @@ from django.db import models from .managers import NewsManager -class NewsLetter(models.Model): +class NewsCollection(models.Model): """ Container of NewsItems. Which NewsItems (and their order) are handled via the auxiliary - model NewsLetterNewsItemsTable. + model NewsCollectionNewsItemsTable. """ date = models.DateField() @@ -21,11 +21,11 @@ class NewsLetter(models.Model): published = models.BooleanField(default=False) def __str__(self): - return "SciPost Newsletter %s" % self.date.strftime("%Y-%m-%d") + return "SciPost News Collection %s" % self.date.strftime("%Y-%m-%d") def get_absolute_url(self): return reverse( - "news:newsletter_detail", + "news:newscollection_detail", kwargs={ "year": self.date.strftime("%Y"), "month": self.date.strftime("%m"), @@ -38,7 +38,7 @@ class NewsItem(models.Model): date = models.DateField() headline = models.CharField(max_length=300) blurb_short = models.TextField( - default="", help_text="Short version for use in Newsletter/emails etc" + default="", help_text="Short version for use in NewsCollection/emails etc" ) blurb = models.TextField() image = models.ImageField(upload_to="news/newsitems/%Y/", blank=True) @@ -63,12 +63,12 @@ class NewsItem(models.Model): return reverse("news:newsitem_detail", kwargs={"pk": self.id}) -class NewsLetterNewsItemsTable(models.Model): +class NewsCollectionNewsItemsTable(models.Model): """ - Carries the specification of which NewsItem sits in which NewsLetter, + Carries the specification of which NewsItem sits in which NewsCollection, and in which order. """ - newsletter = models.ForeignKey("news.NewsLetter", on_delete=models.CASCADE) + newscollection = models.ForeignKey("news.NewsCollection", on_delete=models.CASCADE) newsitem = models.ForeignKey("news.NewsItem", on_delete=models.CASCADE) order = models.PositiveSmallIntegerField() diff --git a/scipost_django/news/templates/news/_newsletter_contents.html b/scipost_django/news/templates/news/_newscollection_contents.html similarity index 56% rename from scipost_django/news/templates/news/_newsletter_contents.html rename to scipost_django/news/templates/news/_newscollection_contents.html index 545aad2fd3a635762e8f53d87146f797204a0680..71d7764a870322a152c6a117a07a9f372808d0d4 100644 --- a/scipost_django/news/templates/news/_newsletter_contents.html +++ b/scipost_django/news/templates/news/_newscollection_contents.html @@ -1,14 +1,14 @@ <div class="row"> <div class="col-12"> <div class="card bg-light card-news p-3 mb-4"> - <h1>SciPost Newsletter {{ nl.date|date:'Y-m-d' }}</h1> - <div>{{ nl.intro|safe }}</div> + <h1>SciPost News Collection {{ nc.date|date:'Y-m-d' }}</h1> + <div>{{ nc.intro|safe }}</div> </div> - {% for nt in nl.newsletternewsitemstable_set.all|dictsort:'order' %} + {% for nt in nc.newscollectionnewsitemstable_set.all|dictsort:'order' %} {% include 'news/news_card_content.html' with news=nt.newsitem %} {% endfor %} <div class="card bg-light card-news p-3"> - {{ nl.closing|safe }} + {{ nc.closing|safe }} </div> </div> </div> diff --git a/scipost_django/news/templates/news/news_manage.html b/scipost_django/news/templates/news/news_manage.html index 2a2f5b104131319b20aa4cad63a437625a68091e..7d87883b4187e0d900caf0946f1be2911a00048d 100644 --- a/scipost_django/news/templates/news/news_manage.html +++ b/scipost_django/news/templates/news/news_manage.html @@ -14,25 +14,25 @@ <div class="col-12"> <h1 class="highlight">News Management</h1> - <h2 class="highlight">Newsletters</h2> - <a href="{% url 'news:newsletter_create' %}">Add a Newsletter</a> + <h2 class="highlight">NewsCollections</h2> + <a href="{% url 'news:newscollection_create' %}">Add a NewsCollection</a> <br/> <br/> - {% for nl in newsletters %} + {% for nc in newscollections %} <div class="card mb-2"> - <div class="card-header" data-bs-toggle="collapse" href="#collapse{{ nl.id }}" aria-expanded="false" aria-controls="collapse{{ nl.id }}"> - {{ nl }} - (status: {{ nl.published|yesno:'published,unpublished' }}) + <div class="card-header" data-bs-toggle="collapse" href="#collapse{{ nc.id }}" aria-expanded="false" aria-controls="collapse{{ nc.id }}"> + {{ nc }} + (status: {{ nc.published|yesno:'published,unpublished' }}) </div> - <div class="card-body collapse" id="collapse{{ nl.id }}"> + <div class="card-body collapse" id="collapse{{ nc.id }}"> <div class="row"> <div class="col-6"> - <a href="{{ nl.get_absolute_url }}" target="_blank">View this Newsletter in a separate window</a> + <a href="{{ nc.get_absolute_url }}" target="_blank">View this NewsCollection in a separate window</a> <br/> <br/> - <h3>News Items included in this Newsletter:</h3> + <h3>News Items included in this NewsCollection:</h3> <ul> - {% for nt in nl.newsletternewsitemstable_set.all|dictsort:'order' %} + {% for nt in nc.newscollectionnewsitemstable_set.all|dictsort:'order' %} <li>{{ nt.newsitem }}{% if not nt.newsitem.published %} <span class="text-danger">WARNING: unpublished</span>{% endif %}</li> {% empty %} <li>No associated NewsItems found</li> @@ -42,14 +42,14 @@ <div class="col-6"> <h3>Actions:</h3> <ul> - <li><a href="{% url 'news:newsletter_update' pk=nl.id %}">Update</a></li> - <li><a href="{% url 'news:newsletter_update_ordering' pk=nl.id %}">Update items ordering</a></li> - <li><a href="{% url 'news:newsletter_delete' pk=nl.id %}">Delete</a></li> + <li><a href="{% url 'news:newscollection_update' pk=nc.id %}">Update</a></li> + <li><a href="{% url 'news:newscollection_update_ordering' pk=nc.id %}">Update items ordering</a></li> + <li><a href="{% url 'news:newscollection_delete' pk=nc.id %}">Delete</a></li> <li> - Add a News Item to this Newsletter: - <form class="d-block mt-2 mb-3" action="{% url 'news:add_newsitem_to_newsletter' nlpk=nl.id %}" method="post"> + Add a NewsItem to this NewsCollection: + <form class="d-block mt-2 mb-3" action="{% url 'news:add_newsitem_to_newscollection' ncpk=nc.id %}" method="post"> {% csrf_token %} - {{ add_ni_to_nl_form|bootstrap }} + {{ add_ni_to_nc_form|bootstrap }} <input type="submit" name="submit" value="Add" class="btn btn-outline-secondary"> </form> </li> diff --git a/scipost_django/news/templates/news/newsletter_confirm_delete.html b/scipost_django/news/templates/news/newscollection_confirm_delete.html similarity index 74% rename from scipost_django/news/templates/news/newsletter_confirm_delete.html rename to scipost_django/news/templates/news/newscollection_confirm_delete.html index 0512541654e282836bfc12e03c060ccc6420151a..806ab445ff415e7ce6da4333766ee0c2e4c37595 100644 --- a/scipost_django/news/templates/news/newsletter_confirm_delete.html +++ b/scipost_django/news/templates/news/newscollection_confirm_delete.html @@ -2,12 +2,14 @@ {% load bootstrap %} -{% block pagetitle %}: Delete NewsLetter{% endblock pagetitle %} +{% block pagetitle %} + : Delete NewsCollection +{% endblock pagetitle %} {% block content %} <div class="row"> <div class="col-12"> - <h1 class="highlight">Delete NewsLetter</h1> + <h1 class="highlight">Delete NewsCollection</h1> {{ object }} </div> </div> @@ -15,11 +17,11 @@ <div class="col-12"> <form method="post"> {% csrf_token %} - <h3 class="mb-2">Are you sure you want to delete this NewsLetter?</h3> + <h3 class="mb-2">Are you sure you want to delete this NewsCollection?</h3> <input type="submit" class="btn btn-danger" value="Yes, delete it" /> </form> </ul> - </div> </div> +</div> {% endblock content %} diff --git a/scipost_django/news/templates/news/newsletter_create.html b/scipost_django/news/templates/news/newscollection_create.html similarity index 60% rename from scipost_django/news/templates/news/newsletter_create.html rename to scipost_django/news/templates/news/newscollection_create.html index e03c63ca61f5afa0a14419d4f00ae57fb266f4f5..04f96c4bd5c5a7651154515a8ef9aaaefbe7e845 100644 --- a/scipost_django/news/templates/news/newsletter_create.html +++ b/scipost_django/news/templates/news/newscollection_create.html @@ -2,7 +2,7 @@ {% load bootstrap %} -{% block pagetitle %}: Create Newsletter{% endblock pagetitle %} +{% block pagetitle %}: Create NewsCollection{% endblock pagetitle %} {% block breadcrumb %} <nav class="breadcrumb-nav"> @@ -10,8 +10,8 @@ <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="{% url 'scipost:index' %}" >Home</a></li> <li class="breadcrumb-item"><a href="{% url 'news:news' %}" >News</a></span> - <li class="breadcrumb-item"><a href="{% url 'news:manage' %}">News Management</a></span> - <li class="breadcrumb-item active" aria-current="page">Create Newsletter</span> + <li class="breadcrumb-item"><a href="{% url 'news:manage' %}">News Management</a></span> + <li class="breadcrumb-item active" aria-current="page">Create NewsCollection</span> </ol> </div> </nav> @@ -22,9 +22,9 @@ <div class="row"> <div class="col-12"> - <h1 class="highlight">Create Newsletter</h1> + <h1 class="highlight">Create NewsCollection</h1> - <form action="{% url 'news:newsletter_create' %}" method="post"> + <form action="{% url 'news:newscollection_create' %}" method="post"> {% csrf_token %} {{ form|bootstrap }} <input type="submit" value="Submit" class="btn btn-primary"> diff --git a/scipost_django/news/templates/news/newsletter_detail.html b/scipost_django/news/templates/news/newscollection_detail.html similarity index 58% rename from scipost_django/news/templates/news/newsletter_detail.html rename to scipost_django/news/templates/news/newscollection_detail.html index 39d96effab0304907ab6d46135c8474ba2e9d5e4..d94fee909e4e5ac25bdf6c4330fb124d691ba706 100644 --- a/scipost_django/news/templates/news/newsletter_detail.html +++ b/scipost_django/news/templates/news/newscollection_detail.html @@ -2,8 +2,8 @@ {% load bootstrap %} -{% block meta_description %}{{ block.super }} Newsletter{% endblock meta_description %} -{% block pagetitle %}: NewsLetter{% endblock pagetitle %} +{% block meta_description %}{{ block.super }} Newscollection{% endblock meta_description %} +{% block pagetitle %}: Newscollection{% endblock pagetitle %} {% block content %} @@ -12,7 +12,7 @@ {% if perms.scipost.can_manage_news %} <p>Go to the <a href="{% url 'news:manage' %}">News management page</a></p> {% endif %} - {% include 'news/_newsletter_contents.html' with nl=nl %} + {% include 'news/_newscollection_contents.html' with nc=nc %} </div> </div> diff --git a/scipost_django/news/templates/news/newsletter_update.html b/scipost_django/news/templates/news/newscollection_update.html similarity index 51% rename from scipost_django/news/templates/news/newsletter_update.html rename to scipost_django/news/templates/news/newscollection_update.html index daabd4bb87844852fed556b6c27126dcc8e42b36..05753ae2a0ace3894e293a164dbdc4ab1f319287 100644 --- a/scipost_django/news/templates/news/newsletter_update.html +++ b/scipost_django/news/templates/news/newscollection_update.html @@ -2,13 +2,15 @@ {% load bootstrap %} -{% block pagetitle %}: NewsLetters{% endblock pagetitle %} +{% block pagetitle %} + : NewsCollections +{% endblock pagetitle %} {% block breadcrumb_items %} {{ block.super }} <a href="{% url 'news:news' %}" class="breadcrumb-item">News</a> <a href="{% url 'news:manage' %}" class="breadcrumb-item">Manage</a> - <span class="breadcrumb-item">Update NewsLetter</span> + <span class="breadcrumb-item">Update NewsCollection</span> {% endblock breadcrumb_items %} @@ -16,20 +18,22 @@ <div class="row"> <div class="col-12"> - <h1>Newsletter to update:</h1> + <h1>NewsCollection to update:</h1> {{ object }} </div> </div> - <hr/> + <hr /> <div class="row"> <div class="col-12"> <h1>Edit it here:</h1> - <form action="{% url 'news:newsletter_update' pk=object.id %}" method="post"> - {% csrf_token %} - {{ form|bootstrap }} - <input type="submit" value="Submit" class="btn btn-primary"> + <form action="{% url 'news:newscollection_update' pk=object.id %}" + method="post"> + {% csrf_token %} + {{ form|bootstrap }} + + <input type="submit" value="Submit" class="btn btn-primary" /> + </div> </div> - </div> -{% endblock content %} + {% endblock content %} diff --git a/scipost_django/news/templates/news/newsletter_update_ordering.html b/scipost_django/news/templates/news/newscollection_update_ordering.html similarity index 79% rename from scipost_django/news/templates/news/newsletter_update_ordering.html rename to scipost_django/news/templates/news/newscollection_update_ordering.html index 5ea154b102eeb5db4b58dcc4fe1c1738eb330285..d7729a4f8893a4e953a438f5b03edcc0baca8344 100644 --- a/scipost_django/news/templates/news/newsletter_update_ordering.html +++ b/scipost_django/news/templates/news/newscollection_update_ordering.html @@ -2,13 +2,13 @@ {% load bootstrap %} -{% block pagetitle %}: NewsLetters{% endblock pagetitle %} +{% block pagetitle %}: NewsCollections{% endblock pagetitle %} {% block breadcrumb_items %} {{ block.super }} <a href="{% url 'news:news' %}" class="breadcrumb-item">News</a> <a href="{% url 'news:manage' %}" class="breadcrumb-item">Manage</a> - <span class="breadcrumb-item">Update NewsLetter Ordering</span> + <span class="breadcrumb-item">Update NewsCollection Ordering</span> {% endblock breadcrumb_items %} @@ -16,7 +16,7 @@ <div class="row"> <div class="col-12"> - <h1>Newsletter to update:</h1> + <h1>NewsCollection to update:</h1> {{ object }} </div> </div> @@ -25,7 +25,7 @@ <div class="row"> <div class="col-12"> - <h1>Update the ordering of News Items within this Newsletter:</h1> + <h1>Update the ordering of NewsItems within this NewsCollection:</h1> <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ ni_formset.management_form }} diff --git a/scipost_django/news/tests/test_factories.py b/scipost_django/news/tests/test_factories.py index f175a91fb966dec8271dab0e02b7be901ba83422..3f49c6679a779a5d771111351c67362e52b40fec 100644 --- a/scipost_django/news/tests/test_factories.py +++ b/scipost_django/news/tests/test_factories.py @@ -3,13 +3,13 @@ __license__ = "AGPL v3" from django.test import TestCase -from ..factories import NewsItemFactory, NewsLetterFactory +from ..factories import NewsItemFactory, NewsCollectionFactory -class TestNewsLetterFactory(TestCase): +class TestNewsCollectionFactory(TestCase): def test_can_create_news_letters(self): - news_letter = NewsLetterFactory() - self.assertIsNotNone(news_letter) + news_collection = NewsCollectionFactory() + self.assertIsNotNone(news_collection) class TestNewsItemFactory(TestCase): diff --git a/scipost_django/news/urls.py b/scipost_django/news/urls.py index ba7d5d52ca36016ef34d9f901588b59f71b1eabd..2676aca1444e944dca2b8d5a3e8294422adc15e9 100644 --- a/scipost_django/news/urls.py +++ b/scipost_django/news/urls.py @@ -11,29 +11,29 @@ app_name = "news" urlpatterns = [ path("manage/", views.NewsManageView.as_view(), name="manage"), path( - "newsletter/<YYYY:year>-<MM:month>-<DD:day>/", - views.NewsLetterView.as_view(), - name="newsletter_detail", + "newscollection/<YYYY:year>-<MM:month>-<DD:day>/", + views.NewsCollectionView.as_view(), + name="newscollection_detail", ), path( - "newsletter/add/", - views.NewsLetterCreateView.as_view(), - name="newsletter_create", + "newscollection/add/", + views.NewsCollectionCreateView.as_view(), + name="newscollection_create", ), path( - "newsletter/<int:pk>/update/", - views.NewsLetterUpdateView.as_view(), - name="newsletter_update", + "newscollection/<int:pk>/update/", + views.NewsCollectionUpdateView.as_view(), + name="newscollection_update", ), path( - "newsletter/<int:pk>/update_ordering/", - views.newsletter_update_ordering, - name="newsletter_update_ordering", + "newscollection/<int:pk>/update_ordering/", + views.newscollection_update_ordering, + name="newscollection_update_ordering", ), path( - "newsletter/<int:pk>/delete/", - views.NewsLetterDeleteView.as_view(), - name="newsletter_delete", + "newscollection/<int:pk>/delete/", + views.NewsCollectionDeleteView.as_view(), + name="newscollection_delete", ), path("newsitem/add/", views.NewsItemCreateView.as_view(), name="newsitem_create"), path( @@ -52,9 +52,9 @@ urlpatterns = [ name="newsitem_delete", ), path( - "add_newsitem_to_newsletter/<int:nlpk>/", - views.NewsLetterNewsItemsTableCreateView.as_view(), - name="add_newsitem_to_newsletter", + "add_newsitem_to_newscollection/<int:ncpk>/", + views.NewsCollectionNewsItemsTableCreateView.as_view(), + name="add_newsitem_to_newscollection", ), path("", views.NewsListView.as_view(), name="news"), ] diff --git a/scipost_django/news/views.py b/scipost_django/news/views.py index 023a6149f1fce1e3a501071a8c1d47ce094df253..57c9e0e4bfd715d8fb6a27dcfeffb3d966ba712d 100644 --- a/scipost_django/news/views.py +++ b/scipost_django/news/views.py @@ -12,12 +12,12 @@ from django.views.generic.list import ListView from guardian.decorators import permission_required -from .models import NewsLetter, NewsItem, NewsLetterNewsItemsTable +from .models import NewsCollection, NewsItem, NewsCollectionNewsItemsTable from .forms import ( - NewsLetterForm, + NewsCollectionForm, NewsItemForm, - NewsLetterNewsItemsTableForm, - NewsLetterNewsItemsOrderingFormSet, + NewsCollectionNewsItemsTableForm, + NewsCollectionNewsItemsOrderingFormSet, ) from scipost.mixins import PermissionsMixin @@ -33,23 +33,23 @@ class NewsManageView(PermissionsMixin, TemplateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["newsletters"] = NewsLetter.objects.all() + context["newscollections"] = NewsCollection.objects.all() context["newsitems"] = NewsItem.objects.all() - context["add_ni_to_nl_form"] = NewsLetterNewsItemsTableForm() + context["add_ni_to_nc_form"] = NewsCollectionNewsItemsTableForm() return context -class NewsLetterView(TemplateView): +class NewsCollectionView(TemplateView): """ - Newsletter, for public consumption online. + NewsCollection, for public consumption online. """ - template_name = "news/newsletter_detail.html" + template_name = "news/newscollection_detail.html" def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) - context["nl"] = get_object_or_404( - NewsLetter, + context["nc"] = get_object_or_404( + NewsCollection, date__year=self.kwargs["year"], date__month=self.kwargs["month"], date__day=self.kwargs["day"], @@ -57,53 +57,53 @@ class NewsLetterView(TemplateView): return context -class NewsLetterCreateView(PermissionsMixin, CreateView): +class NewsCollectionCreateView(PermissionsMixin, CreateView): """ - Create a NewsLetter. + Create a NewsCollection. """ permission_required = "scipost.can_manage_news" - form_class = NewsLetterForm - template_name = "news/newsletter_create.html" + form_class = NewsCollectionForm + template_name = "news/newscollection_create.html" success_url = reverse_lazy("news:manage") -class NewsLetterUpdateView(PermissionsMixin, UpdateView): +class NewsCollectionUpdateView(PermissionsMixin, UpdateView): """ - Update a NewsLetter. + Update a NewsCollection. """ permission_required = "scipost.can_manage_news" - model = NewsLetter - form_class = NewsLetterForm - template_name = "news/newsletter_update.html" + model = NewsCollection + form_class = NewsCollectionForm + template_name = "news/newscollection_update.html" success_url = reverse_lazy("news:news") @permission_required("scipost.can_manage_news", raise_exception=True) -def newsletter_update_ordering(request, pk): - newsletter = get_object_or_404(NewsLetter, pk=pk) - ni_formset = NewsLetterNewsItemsOrderingFormSet( +def newscollection_update_ordering(request, pk): + newscollection = get_object_or_404(NewsCollection, pk=pk) + ni_formset = NewsCollectionNewsItemsOrderingFormSet( request.POST or None, - queryset=newsletter.newsletternewsitemstable_set.order_by("order"), + queryset=newscollection.newscollectionnewsitemstable_set.order_by("order"), ) if ni_formset.is_valid(): ni_formset.save() - messages.success(request, "Newsletter items ordering updated") - return redirect(newsletter.get_absolute_url()) + messages.success(request, "NewsCollection items ordering updated") + return redirect(newscollection.get_absolute_url()) context = { "ni_formset": ni_formset, } - return render(request, "news/newsletter_update_ordering.html", context) + return render(request, "news/newscollection_update_ordering.html", context) -class NewsLetterDeleteView(PermissionsMixin, DeleteView): +class NewsCollectionDeleteView(PermissionsMixin, DeleteView): """ - Delete a NewsLetter. + Delete a NewsCollection. """ permission_required = "scipost.can_manage_news" - model = NewsLetter + model = NewsCollection success_url = reverse_lazy("news:news") @@ -144,20 +144,20 @@ class NewsItemDeleteView(PermissionsMixin, DeleteView): success_url = reverse_lazy("news:news") -class NewsLetterNewsItemsTableCreateView(PermissionsMixin, CreateView): +class NewsCollectionNewsItemsTableCreateView(PermissionsMixin, CreateView): """ - Add a NewsItem to a NewsLetter. + Add a NewsItem to a NewsCollection. """ permission_required = "scipost.can_manage_news" - form_class = NewsLetterNewsItemsTableForm + form_class = NewsCollectionNewsItemsTableForm success_url = reverse_lazy("news:manage") def form_valid(self, form): - nl = get_object_or_404(NewsLetter, id=self.kwargs["nlpk"]) - form.instance.newsletter = nl - form.instance.order = nl.newsletternewsitemstable_set.all().count() + 1 - messages.success(self.request, "Successfully added News Item to Newsletter") + nc = get_object_or_404(NewsCollection, id=self.kwargs["ncpk"]) + form.instance.newscollection = nc + form.instance.order = nc.newscollectionnewsitemstable_set.all().count() + 1 + messages.success(self.request, "Successfully added NewsItem to NewsCollection") return super().form_valid(form) diff --git a/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html b/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html index 621e438720ad4813569f680e13a0eb6180c0175b..f330ec572002aa912eccc2f24c021a7a5087c59f 100644 --- a/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html +++ b/scipost_django/scipost/templates/scipost/personal_page/_hx_admin.html @@ -29,7 +29,7 @@ {% if perms.scipost.can_manage_news %} <h3>News management</h3> <ul> - <li><a href="{% url 'news:manage' %}">Manage News Items and Newsletters</a></li> + <li><a href="{% url 'news:manage' %}">Manage News Items and Collections</a></li> </ul> {% endif %}