Attention ! Gitlab fournissant maintenant nativement des certificats Let’s Encrypt aux domaines personnalisés des Gitlab Pages, nous avons coupé notre service qui le faisait automatiquement pour vous.

Il est impératif, pour que votre domaine personnalisé continue à avoir un certificat Let’s Encrypt à jour, d’activer la fonctionnalité native dans les paramètres de votre projet. Cette activation remplacera votre certificat actuel par un nouveau certificat Let’s Encrypt géré par Gitlab.

Voir les détails sur https://docs.framasoft.org/fr/gitlab/gitlab-pages-le.html

Commit 796877c6 authored by Nicolas G.'s avatar Nicolas G.

Soumission directe à l'Agenda Du Libre pour les évènements réguliers.

parent 1c0e0688
This diff is collapsed.
......@@ -62,3 +62,7 @@ class InscritsForm(forms.ModelForm):
else:
raise forms.ValidationError(_("Répondez à la question"))
class AgendaForm(forms.Form):
""" Formulaire de soumission à l'Agenda du Libre """
email = forms.EmailField(label="Adresse du soumetteur", max_length=100)
{% extends "base.html" %}
{% load i18n %}
{% block header %}
<h1>{{ jour }}
<sup>{% if perms.fj.change_ville %}<a href="{% url "admin:fj_ville_change" ville.id %}">Modifier</a>{% endif %}
{% if user.is_staff %}<a href="{% url 'fj:voir_ville' ville.code %}">Retour</a> {% endif %}
</sup>
</h1>
{% endblock %}
{% block content %}
<div id="milieu">
<hr class="separation">
{% if resultat %}
<p class="infos">{{ resultat }}</p>
{% else %}
<form action="" method="post">
{% csrf_token %}
<fieldset>
<legend>
{% trans "Soumission à l'Agenda du Libre" %}
</legend>
<p>
{% trans "Le XML ci-dessous sera soumis à l'Agenda du Libre, vous pouvez le modifier si besoin." %}
</p>
{% if form %}
<textarea rows="32" cols="82" id="xml" name="xml">{% include 'adl.xml' %}</textarea>
{{ form.as_p }}
<input type="submit" value="Envoyer" />
{% endif %}
</fieldset>
</form>
{% endif %}
</div>
{% endblock %}
#-*- coding: utf-8 -*-
from django.conf.urls import include, url
from fj.views import InscritsDelete, inscription, adl
from fj.views import InscritsDelete, inscription, adl, adlxml
#from ponctu.views import InscritsDeletePonctu
from django.contrib.admin.views.decorators import staff_member_required
......@@ -29,10 +29,16 @@ urlpatterns = [
# Génération du fichier XML pour la soumission à l'Agenda Du Libre
url(r'^agenda/(?P<code>.+)\.xml$',
adlxml,
name='adlxml'
),
#url(r'^(?P<code>.+)/stats$', 'fj.views.stats'),
# Page pour soumettre à l'Agenda du Libre
url(r'^agenda/(?P<code>.+)$',
adl,
name='adl'
),
#url(r'^(?P<code>.+)/stats$', 'fj.views.stats'),
# Page d'une ville : inscription
url(r'^(?P<code>.+)$', inscription, name="voir_ville"),
......
......@@ -15,6 +15,12 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Bricole pour l'exécution du script de soumission
import os
import tempfile
import subprocess
#from subprocess import Popen, PIPE
from django.shortcuts import render
from django.http import Http404
from django.shortcuts import render, get_object_or_404
......@@ -44,7 +50,7 @@ from django_ical.views import ICalFeed
from django.core.mail import send_mail
from fj.models import Ville, Inscrits
from fj.forms import InscritsForm
from fj.forms import InscritsForm, AgendaForm
from django.utils.translation import gettext_lazy as _
from ponctu.models import Rencontre
......@@ -170,7 +176,7 @@ def inscription(request, code):
from django.contrib.admin.views.decorators import staff_member_required
@staff_member_required
def adl(request, code):
def adlxml(request, code):
""" Génération du XML pour l'Agenda Du Libre
"""
......@@ -192,11 +198,70 @@ def adl(request, code):
for foo in jour:
if ville.debut:
date_adl = foo.strftime("%Y-%m-%d")
jour = foo.strftime('%A %e %B %Y').capitalize() # sans (seulement sous *nix)
contact_adl = settings.ADMINS[0][1]
url = "http://" + request.META["SERVER_NAME"] + "/" + ville.code
#url = "http://" + "www.perdu.com/" + ville.code
return render(request, "adl.xml", locals())
@staff_member_required
def adl(request, code):
""" Page de soumission directe pour l'Agenda Du Libre
"""
# Pour la description de la ville :
ville = get_object_or_404(Ville, code=code)
jr = (
(0,SU(ville.numweek)),
(1,MO(ville.numweek)),
(2,TU(ville.numweek)),
(3,WE(ville.numweek)),
(4,TH(ville.numweek)),
(5,FR(ville.numweek)),
(6,SA(ville.numweek)),
)
jour = list(rrule(MONTHLY, count=1, byweekday=jr[ville.numday][1]))
for foo in jour:
if ville.debut:
date_adl = foo.strftime("%Y-%m-%d")
jour = foo.strftime('%A %e %B %Y').capitalize() # sans (seulement sous *nix)
contact_adl = settings.ADMINS[0][1]
url = "http://" + request.META["SERVER_NAME"] + "/" + ville.code
#url = "http://" + "www.perdu.com/" + ville.code
if request.method== 'POST':
form = AgendaForm(request.POST)
if form.is_valid():
print('Le formulaire est valide')
print(form.cleaned_data['email'])
#print(request.POST['xml'])
#script = os.path.join(os.path.dirname(__file__),'../adl-submit.py')
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
script = BASE_DIR + '/adl-submit.py'
print(script)
with tempfile.TemporaryDirectory() as tempdir:
# Écrire le fichier XML
print("Le tempdir ⇒ " + tempdir)
fichier = tempdir + "/toto.xml"
print("Fichier ⇒ " + fichier)
f = open(fichier, "w")
f.write(request.POST['xml'])
f.close()
cmd = subprocess.Popen([script, '--submitter', request.POST['email'], '--file', fichier], stdout=subprocess.PIPE)
resultat = cmd.communicate()[0]
else:
form=AgendaForm()
# La liste des villes
liste_villes = Ville.objects.all()
# La liste des rencontres ponctuelles
liste_rencontres = Rencontre.objects.filter(date__gte = datetime.datetime.now())
# Le gabartit
return render(request, 'agenda.html', locals())
# ------- Page de suppression ----------------
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment