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