parent
0801b8ec16
commit
fabad32955
@ -1,22 +1,38 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import StringField, SubmitField, TextAreaField
|
||||
from wtforms.fields.html5 import DateTimeField
|
||||
from wtforms.validators import InputRequired
|
||||
from wtforms.validators import InputRequired, Optional
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
class FPollForm(FlaskForm):
|
||||
class PollForm(FlaskForm):
|
||||
title = StringField(
|
||||
'Question',
|
||||
validators=[
|
||||
InputRequired(),
|
||||
],
|
||||
]
|
||||
)
|
||||
choices = PasswordField(
|
||||
choices = TextAreaField(
|
||||
'Choix (un par ligne)',
|
||||
validators=[
|
||||
InputRequired(),
|
||||
],
|
||||
# TODO: add a validator to check if there is at least one choice
|
||||
]
|
||||
)
|
||||
start = DateTimeField(
|
||||
'Début',
|
||||
default=datetime.now(),
|
||||
validators=[
|
||||
Optional()
|
||||
]
|
||||
)
|
||||
end = DateTimeField(
|
||||
'Fin',
|
||||
default=datetime.now() + timedelta(days=1),
|
||||
validators=[
|
||||
Optional()
|
||||
]
|
||||
)
|
||||
submit = SubmitField(
|
||||
'Créer le sondage',
|
||||
'Créer le sondage'
|
||||
)
|
||||
|
@ -0,0 +1,23 @@
|
||||
from app import app, db
|
||||
from flask import abort, flash, redirect, request, url_for
|
||||
from flask_login import current_user
|
||||
|
||||
from app.models.polls.simple import SimplePoll
|
||||
from app.forms.poll import PollForm
|
||||
from app.utils.render import render
|
||||
|
||||
@app.route("/compte/sondages", methods=['GET', 'POST'])
|
||||
def account_polls():
|
||||
form = PollForm()
|
||||
polls = current_user.polls
|
||||
|
||||
if form.validate_on_submit():
|
||||
choices = list(filter(None, form.choices.data.split('\n')))
|
||||
p = SimplePoll(current_user, form.title.data, choices,
|
||||
start=form.start.data, end=form.end.data)
|
||||
db.session.add(p)
|
||||
db.session.commit()
|
||||
|
||||
flash(f"Le sondage {p.id} a été créé", "info")
|
||||
|
||||
return render("account/polls.html", polls=polls, form=form)
|
@ -1,9 +0,0 @@
|
||||
from app import app, db
|
||||
from flask import abort, redirect, request, url_for
|
||||
from flask_login import current_user
|
||||
|
||||
from app.models.poll import Poll
|
||||
|
||||
@app.route("/poll/new", methods=['GET', 'POST'])
|
||||
def poll_create(poll_id):
|
||||
return redirect(url_for('index'))
|
@ -0,0 +1,53 @@
|
||||
{% extends "base/base.html" %}
|
||||
{% import "widgets/poll.html" as poll_widget with context %}
|
||||
|
||||
{% block title %}
|
||||
<h1>Gestion des sondages</h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<section class="form">
|
||||
<h1>Créer un sondage</h1>
|
||||
<form action="" method="post">
|
||||
{{ form.hidden_tag() }}
|
||||
<div>
|
||||
{{ form.title.label }}<br>
|
||||
{{ form.title(size=32) }}<br>
|
||||
{% for error in form.title.errors %}
|
||||
<span style="color: red;">{{ error }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div>
|
||||
{{ form.choices.label }}
|
||||
<textarea id="{{ form.choices.name }}" name="{{ form.choices.name }}"></textarea>
|
||||
{% for error in form.choices.errors %}
|
||||
<span class="msgerror">{{ error }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div>
|
||||
{{ form.start.label }}
|
||||
{{ form.start() }}
|
||||
{% for error in form.start.errors %}
|
||||
<span class="msgerror">{{ error }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div>
|
||||
{{ form.end.label }}
|
||||
{{ form.end() }}
|
||||
{% for error in form.end.errors %}
|
||||
<span class="msgerror">{{ error }}</span>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div>{{ form.submit(class_="bg-ok") }}</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h1>Mes sondages</h1>
|
||||
<div>
|
||||
{% for p in polls %}
|
||||
{{ poll_widget.wpoll(p) }}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
Loading…
Reference in new issue