diff --git a/pytition/petition/forms.py b/pytition/petition/forms.py index a0da6d1a..9ec0cdd2 100644 --- a/pytition/petition/forms.py +++ b/pytition/petition/forms.py @@ -95,6 +95,8 @@ class PetitionCreationStep3(forms.Form): class ContentFormGeneric(forms.Form): ### Content of a Petition ### + publication_date = forms.DateField(required=False) + show_publication_date = SwitchField(required=False, label=_("Show publication date")) text = forms.CharField(widget=TinyMCE) target = forms.IntegerField(required=False) side_text = forms.CharField(widget=TinyMCE, required=False) diff --git a/pytition/petition/migrations/0018_petition_publication_date.py b/pytition/petition/migrations/0018_petition_publication_date.py new file mode 100644 index 00000000..71a012c3 --- /dev/null +++ b/pytition/petition/migrations/0018_petition_publication_date.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.28 on 2022-12-09 11:34 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('petition', '0017_petitiontemplate_paper_signatures_enabled'), + ] + + operations = [ + migrations.AddField( + model_name='petition', + name='publication_date', + field=models.DateTimeField(blank=True, null=True), + ), + ] diff --git a/pytition/petition/migrations/0019_petition_show_publication_date.py b/pytition/petition/migrations/0019_petition_show_publication_date.py new file mode 100644 index 00000000..7370ade7 --- /dev/null +++ b/pytition/petition/migrations/0019_petition_show_publication_date.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.28 on 2022-12-16 05:04 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('petition', '0018_petition_publication_date'), + ] + + operations = [ + migrations.AddField( + model_name='petition', + name='show_publication_date', + field=models.BooleanField(default=False), + ), + ] diff --git a/pytition/petition/models.py b/pytition/petition/models.py index a5dcf1ac..3a63b4fb 100644 --- a/pytition/petition/models.py +++ b/pytition/petition/models.py @@ -215,6 +215,8 @@ class Petition(models.Model): last_modification_date = models.DateTimeField(blank=True) moderated = models.BooleanField(default=False) has_share_buttons = models.BooleanField(default=True) + publication_date = models.DateTimeField(blank=True, null=True) + show_publication_date = models.BooleanField(default=False) @property def is_moderated(self): @@ -316,10 +318,12 @@ def confirm_signature(self, conf_hash): def publish(self): self.published = True + self.publication_date = timezone.now() self.save() def unpublish(self): self.published = False + self.publication_date = None self.save() @property diff --git a/pytition/petition/templates/petition/petition_detail.html b/pytition/petition/templates/petition/petition_detail.html index cce38eb8..b8c6143f 100644 --- a/pytition/petition/templates/petition/petition_detail.html +++ b/pytition/petition/templates/petition/petition_detail.html @@ -342,6 +342,11 @@

{% trans "This petition is moderated. You only see it be
+ {% if petition.publication_date and petition.show_publication_date %} +
+ {% trans "Published on: "%} {{ petition.publication_date|date:"SHORT_DATE_FORMAT" }} +
+ {% endif %} {{ petition.text|html_sanitize|safe }}
diff --git a/pytition/petition/views.py b/pytition/petition/views.py index 974d3bdd..a8877466 100644 --- a/pytition/petition/views.py +++ b/pytition/petition/views.py @@ -1233,6 +1233,8 @@ def edit_petition(request, petition_id): submitted_ctx['content_form_submitted'] = True content_form = ContentFormPetition(request.POST) if content_form.is_valid(): + petition.publication_date = content_form.cleaned_data['publication_date'] + petition.show_publication_date = content_form.cleaned_data['show_publication_date'] petition.title = content_form.cleaned_data['title'] petition.target = content_form.cleaned_data['target'] petition.paper_signatures = content_form.cleaned_data['paper_signatures']