From afe24cbcf830206452ddc40f61a98678ce0e8f39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89lie=20Bouttier?= Date: Wed, 18 Oct 2017 20:37:16 +0200 Subject: [PATCH] schedule redirection url --- cfp/forms.py | 2 +- ...015_conference_schedule_redirection_url.py | 20 ++++ cfp/models.py | 2 + cfp/views.py | 5 +- locale/fr/LC_MESSAGES/django.mo | Bin 16144 -> 16351 bytes locale/fr/LC_MESSAGES/django.po | 99 ++++++++++-------- 6 files changed, 82 insertions(+), 46 deletions(-) create mode 100644 cfp/migrations/0015_conference_schedule_redirection_url.py diff --git a/cfp/forms.py b/cfp/forms.py index 08f1faa..c3eb7cd 100644 --- a/cfp/forms.py +++ b/cfp/forms.py @@ -212,7 +212,7 @@ class ConferenceForm(forms.ModelForm): class Meta: model = Conference fields = [ - 'name', 'home', 'venue', 'city', 'contact_email', 'schedule_publishing_date', + 'name', 'home', 'venue', 'city', 'contact_email', 'schedule_publishing_date', 'schedule_redirection_url', 'volunteers_opening_date', 'volunteers_closing_date', 'reply_email', 'secure_domain', 'staff', ] widgets = { diff --git a/cfp/migrations/0015_conference_schedule_redirection_url.py b/cfp/migrations/0015_conference_schedule_redirection_url.py new file mode 100644 index 0000000..382237e --- /dev/null +++ b/cfp/migrations/0015_conference_schedule_redirection_url.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-10-18 18:14 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('cfp', '0014_auto_20171016_1713'), + ] + + operations = [ + migrations.AddField( + model_name='conference', + name='schedule_redirection_url', + field=models.URLField(blank=True, default='', verbose_name='Schedule redirection URL'), + ), + ] diff --git a/cfp/models.py b/cfp/models.py index d6332ac..f7c2a4b 100644 --- a/cfp/models.py +++ b/cfp/models.py @@ -35,6 +35,8 @@ class Conference(models.Model): staff = models.ManyToManyField(User, blank=True, verbose_name=_('Staff members')) secure_domain = models.BooleanField(default=True, verbose_name=_('Secure domain (HTTPS)')) schedule_publishing_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Schedule publishing date')) + schedule_redirection_url = models.URLField(blank=True, default='', verbose_name=_('Schedule redirection URL'), + help_text=_('If specified, schedule tab will redirect to this URL.')) volunteers_opening_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Volunteers enrollment opening date')) volunteers_closing_date = models.DateTimeField(null=True, blank=True, default=None, verbose_name=_('Volunteers enrollment closing date')) diff --git a/cfp/views.py b/cfp/views.py index 4bb0817..f05cd75 100644 --- a/cfp/views.py +++ b/cfp/views.py @@ -600,7 +600,10 @@ def schedule(request, program_format, pending, cache, template): def public_schedule(request, program_format): if not request.conference.schedule_available and not is_staff(request, request.user): raise PermissionDenied - return schedule(request, program_format=program_format, pending=False, cache=True, template='cfp/schedule.html') + if request.conference.schedule_redirection_url and program_format is None: + return redirect(request.conference.schedule_redirection_url) + else: + return schedule(request, program_format=program_format, pending=False, cache=True, template='cfp/schedule.html') @staff_required diff --git a/locale/fr/LC_MESSAGES/django.mo b/locale/fr/LC_MESSAGES/django.mo index da07eea1c67e28a57871cc9b12d27e3541c7133b..5fdab93d59ed689891f3c6ddfd0f820f309e1757 100644 GIT binary patch delta 4816 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 C>!-S4Mc6y0@PDcf*M&VYUGoxGg0?j zfLek*s2MqcVS4_5rl2)xL`~_x_B^1Ud&5xlqkbQGkLXAw)0#@|Mp{8xv!d%?AalqF zvWh%T-X*KadQwT^hz_-HJ|x=xdh2P8rV@QIp6Jj<`h;lRHA4ePEzxn7XcmU)gk!La zS%-aWS+ISYroXvr7KJC(%qR-?kc8%Ma2NT4+-~dE;$~akfcM$*Ask8GCVKJc@RA|q z1ko{&j3&p)S478L7ydERG=5$bwjvp)kaqUG4rh=r?YTDSjifI*Y3sx*WCHnIC-#_V z)!OTLjuetNi1wBCRA}>$D4Q|*u*YjyP97x>lXK()@+MhM^n~bXc#yOu&Bs^@UCA9p zd+J3pkMyhl!_#I&DJ31-$qu4-qK?I+byLaxcn9?CJx17!W)0axmXRmOPNL(b>Y<+4 zlF5|H$X?Q)M34idH+i0{Bq^kTyh_dx9otA=Q;GlW<02AI9wM(-ANIsWeoARSnN6a} zR*hm+WUzCPlOE(LqC>CFAaYbE97o7U}3tc|{D diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index bcb3016..175b66c 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-10-09 18:30+0000\n" -"PO-Revision-Date: 2017-10-09 20:31+0200\n" +"POT-Creation-Date: 2017-10-18 18:15+0000\n" +"PO-Revision-Date: 2017-10-18 20:16+0200\n" "Last-Translator: \n" "Language-Team: \n" "Language: fr\n" @@ -34,11 +34,11 @@ msgstr "Décliné" msgid "Waiting" msgstr "En attente" -#: cfp/forms.py:28 cfp/forms.py:93 cfp/forms.py:185 cfp/models.py:346 +#: cfp/forms.py:28 cfp/forms.py:93 cfp/forms.py:185 cfp/models.py:349 msgid "Confirmed" msgstr "Confirmé" -#: cfp/forms.py:29 cfp/models.py:348 +#: cfp/forms.py:29 cfp/models.py:351 msgid "Cancelled" msgstr "Annulé" @@ -56,12 +56,12 @@ msgstr "Catégorie" msgid "Title" msgstr "Titre" -#: cfp/forms.py:71 cfp/models.py:141 cfp/models.py:435 +#: cfp/forms.py:71 cfp/models.py:143 cfp/models.py:438 #: cfp/templates/cfp/staff/talk_details.html:64 msgid "Description" msgstr "Description" -#: cfp/forms.py:72 cfp/models.py:109 cfp/models.py:416 +#: cfp/forms.py:72 cfp/models.py:111 cfp/models.py:419 #: cfp/templates/cfp/staff/participant_details.html:16 #: cfp/templates/cfp/staff/talk_details.html:78 msgid "Notes" @@ -71,7 +71,7 @@ msgstr "Notes" msgid "Visible by speakers" msgstr "Visible par les orateurs" -#: cfp/forms.py:99 cfp/forms.py:191 cfp/models.py:303 +#: cfp/forms.py:99 cfp/forms.py:191 cfp/models.py:306 #: cfp/templates/cfp/staff/talk_details.html:21 #: cfp/templates/cfp/staff/talk_list.html:46 #: cfp/templates/cfp/staff/track_form.html:14 @@ -109,7 +109,7 @@ msgstr "Programmé" msgid "Filter talks already / not yet scheduled" msgstr "Filtrer les exposés déjà / pas encore planifiées" -#: cfp/forms.py:123 cfp/models.py:320 +#: cfp/forms.py:123 cfp/models.py:323 #: cfp/templates/cfp/staff/talk_details.html:54 msgid "Materials" msgstr "Supports" @@ -146,7 +146,7 @@ msgstr "Ajouter une étiquette" msgid "Put in a room" msgstr "Assigner à une salle" -#: cfp/forms.py:167 cfp/models.py:139 cfp/models.py:190 cfp/models.py:433 +#: cfp/forms.py:167 cfp/models.py:141 cfp/models.py:193 cfp/models.py:436 #: cfp/templates/cfp/staff/participant_list.html:35 msgid "Name" msgstr "Nom" @@ -202,14 +202,22 @@ msgid "Schedule publishing date" msgstr "Date de publication du programme" #: cfp/models.py:38 +msgid "Schedule redirection URL" +msgstr "URL de redirection du programme" + +#: cfp/models.py:39 +msgid "If specified, schedule tab will redirect to this URL." +msgstr "Si spécifiée, l’onglet programme redirigera vers cette URL." + +#: cfp/models.py:40 msgid "Volunteers enrollment opening date" msgstr "Date d’ouverture de l’appel à bénévole" -#: cfp/models.py:39 +#: cfp/models.py:41 msgid "Volunteers enrollment closing date" msgstr "Date de fermeture de l’appel à bénévole" -#: cfp/models.py:77 +#: cfp/models.py:79 #, python-brace-format msgid "" "The reply email should be a formatable string accepting a token argument (e." @@ -218,82 +226,82 @@ msgstr "" "L’adresse de réponse doit être une chaine de texte formatable avec un " "argument « token » (e.g. ponyconf+{token}@exemple.com)." -#: cfp/models.py:97 cfp/models.py:411 +#: cfp/models.py:99 cfp/models.py:414 msgid "Your Name" msgstr "Votre Nom" -#: cfp/models.py:99 cfp/templates/cfp/staff/participant_details.html:12 +#: cfp/models.py:101 cfp/templates/cfp/staff/participant_details.html:12 msgid "Biography" msgstr "Biographie" -#: cfp/models.py:101 +#: cfp/models.py:103 msgid "Twitter" msgstr "Twitter" -#: cfp/models.py:102 +#: cfp/models.py:104 msgid "LinkedIn" msgstr "LinkedIn" -#: cfp/models.py:103 +#: cfp/models.py:105 msgid "Github" msgstr "Github" -#: cfp/models.py:104 +#: cfp/models.py:106 msgid "Website" msgstr "Site web" -#: cfp/models.py:105 +#: cfp/models.py:107 msgid "Facebook" msgstr "Facebook" -#: cfp/models.py:106 +#: cfp/models.py:108 msgid "Mastodon" msgstr "Mastodon" -#: cfp/models.py:107 cfp/models.py:414 +#: cfp/models.py:109 cfp/models.py:417 msgid "Phone number" msgstr "Numéro de téléphone" -#: cfp/models.py:110 cfp/models.py:302 +#: cfp/models.py:112 cfp/models.py:305 msgid "This field is only visible by organizers." msgstr "Ce champs est uniquement visible par les organisateurs." -#: cfp/models.py:192 +#: cfp/models.py:195 msgid "Color" msgstr "Couleur" -#: cfp/models.py:224 +#: cfp/models.py:227 msgid "Default duration (min)" msgstr "Durée par défaut (min)" -#: cfp/models.py:225 +#: cfp/models.py:228 msgid "Color on program" msgstr "Couleur sur le programme" -#: cfp/models.py:226 +#: cfp/models.py:229 msgid "Label on program" msgstr "Label dans le xml du programme" -#: cfp/models.py:297 cfp/templates/cfp/staff/base.html:15 +#: cfp/models.py:300 cfp/templates/cfp/staff/base.html:15 #: cfp/templates/cfp/staff/participant_list.html:8 #: cfp/templates/cfp/staff/talk_details.html:68 #: cfp/templates/cfp/staff/talk_list.html:45 msgid "Speakers" msgstr "Orateurs" -#: cfp/models.py:298 +#: cfp/models.py:301 msgid "Talk Title" msgstr "Titre de la proposition" -#: cfp/models.py:301 +#: cfp/models.py:304 msgid "Description of your talk" msgstr "Description de votre proposition" -#: cfp/models.py:305 +#: cfp/models.py:308 msgid "Message to organizers" msgstr "Message aux organisateurs" -#: cfp/models.py:306 +#: cfp/models.py:309 msgid "" "If you have any constraint or if you have anything that may help you to " "select your talk, like a video or slides of your talk, please write it down " @@ -303,63 +311,63 @@ msgstr "" "votre proposition, comme une vidéo, des slides, n'hésitez pas à les ajouter " "ici." -#: cfp/models.py:309 +#: cfp/models.py:312 msgid "Talk Category" msgstr "Catégorie de proposition" -#: cfp/models.py:310 +#: cfp/models.py:313 msgid "I'm ok to be recorded on video" msgstr "J’accepte d’être enregistré en vidéo" -#: cfp/models.py:312 +#: cfp/models.py:315 msgid "Video licence" msgstr "Licence vidéo" -#: cfp/models.py:313 +#: cfp/models.py:316 msgid "I need sound" msgstr "J’ai besoin de son" -#: cfp/models.py:316 +#: cfp/models.py:319 msgid "Beginning date and time" msgstr "Date et heure de début" -#: cfp/models.py:317 +#: cfp/models.py:320 msgid "Duration (min)" msgstr "Durée (min)" -#: cfp/models.py:321 +#: cfp/models.py:324 msgid "" "You can use this field to share some materials related to your intervention." msgstr "" "Vous pouvez utiliser ce champs pour partager les supports de votre " "intervention." -#: cfp/models.py:350 +#: cfp/models.py:353 msgid "Waiting confirmation" msgstr "En attente de confirmation" -#: cfp/models.py:352 +#: cfp/models.py:355 msgid "Refused" msgstr "Refusé" -#: cfp/models.py:354 +#: cfp/models.py:357 #, python-format msgid "Pending decision, score: %(score).1f" msgstr "En cours, score : %(score).1f" -#: cfp/models.py:417 +#: cfp/models.py:420 msgid "If you have some constraints, you can indicate them here." msgstr "Si vous avez des contraintes, vous pouvez les indiquer ici." -#: cfp/models.py:436 +#: cfp/models.py:439 msgid "Volunteer" msgstr "Bénévole" -#: cfp/models.py:440 +#: cfp/models.py:443 msgid "Activity" msgstr "Activité" -#: cfp/models.py:441 +#: cfp/models.py:444 msgid "Activities" msgstr "Activités" @@ -1025,6 +1033,9 @@ msgstr "Changement de mot de passe" msgid "Email address" msgstr "Adresse e-mail" +#~ msgid "External schedule URL" +#~ msgstr "URL programme externe" + #~ msgid "Apply a tag" #~ msgstr "Ajouter une étiquette"