#------------
# User admin
+@app.route('/users/admin/add', methods=['GET', 'POST'])
+def add_user():
+ if not session.get('is_admin'):
+ abort(401)
+ if request.method == 'POST':
+ if request.form['email']:
+ # :TODO:maethor:120528: Check fields
+ password = "toto" # :TODO:maethor:120528: Generate password
+ admin = 0
+ if 'admin' in request.form.keys():
+ admin = 1
+ g.db.execute('insert into users (email, name, organization, password, is_admin) values (?, ?, ?, ?, ?)',
+ [request.form['email'], request.form['username'], request.form['organization'], password, admin])
+ g.db.commit()
+ # :TODO:maethor:120528: Send mail
+ flash(u'Le nouvel utilisateur a été créé avec succès', 'success')
+ return redirect(url_for('home'))
+ else:
+ flash(u"Vous devez spécifier une adresse email.", 'error')
+ return render_template('add_user.html')
#------------
# Votes list
#-------------
# Votes admin
-@app.route('/votes/admin/new')
-def new_vote():
- if not session.get('is_admin'):
- abort(401)
- return render_template('new_vote.html')
-
-@app.route('/votes/admin/add', methods=['POST'])
+@app.route('/votes/admin/add', methods=['GET', 'POST'])
def add_vote():
if not session.get('is_admin'):
abort(401)
- date_begin = date.today()
- date_end = date.today() + timedelta(days=int(request.form['days']))
- transparent = 0
- public = 0
- multiplechoice = 0
- if 'transparent' in request.form.keys():
- transparent = 1
- if 'public' in request.form.keys():
- public = 1
- if 'multiplechoice' in request.form.keys():
- multiplechoice = 1
- g.db.execute('insert into votes (title, description, date_begin, date_end, is_transparent, is_public, is_multiplechoice) values (?, ?, ?, ?, ?, ?, ?)',
- [request.form['title'], request.form['description'], date_begin, date_end, transparent, public, multiplechoice])
- g.db.commit()
- flash('New entry was successfully posted', 'info')
- return redirect(url_for('home'))
+ if request.method == 'POST':
+ if request.form['title']:
+ date_begin = date.today()
+ date_end = date.today() + timedelta(days=int(request.form['days']))
+ transparent = 0
+ public = 0
+ multiplechoice = 0
+ if 'transparent' in request.form.keys():
+ transparent = 1
+ if 'public' in request.form.keys():
+ public = 1
+ if 'multiplechoice' in request.form.keys():
+ multiplechoice = 1
+ g.db.execute('insert into votes (title, description, date_begin, date_end, is_transparent, is_public, is_multiplechoice) values (?, ?, ?, ?, ?, ?, ?)',
+ [request.form['title'], request.form['description'], date_begin, date_end, transparent, public, multiplechoice])
+ g.db.commit()
+ flash('New entry was successfully posted', 'info')
+ return redirect(url_for('home'))
+ else:
+ flash(u'Vous devez spécifier un titre.', 'error')
+ return render_template('new_vote.html')
#------
# Main
--- /dev/null
+{% extends "layout.html" %}
+{% block body %}
+
+<div class="row">
+ <div class="span7 well">
+<form action="{{ url_for('add_user') }}" method="post" class="form-horizontal">
+<fieldset><legend>Ajouter un utilisateur</legend>
+ <div class="control-group">
+ <label class="control-label" for="email">E-mail</label>
+ <div class="controls">
+ <input type="text" name="email" id="email" value="{{ request.form.email }}" />
+ <span class="help-inline"><font color="red">*</font></span>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="username">Nom</label>
+ <div class="controls">
+ <input type="text" name="username" id="username" value="{{ request.form.username }}" />
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="organization">Association</label>
+ <div class="controls">
+ <input type="text" data-provide="typeahead" data-source='["FDN","Ilico","Aquilenet"]' size=30 name="organization" id="organization" value="{{ request.form.organization }}" />
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label" for="role">Groupes</label>
+ <div class="controls">
+ <select name="role" id="role" multiple>
+ <option selected>CA</option>
+ <option>Membres</option>
+ </select>
+ </div>
+ </div>
+ <div class="control-group">
+ <label class="control-label">Options</label>
+ <div class="controls">
+ <label class="checkbox">
+ <input type="checkbox" name="admin" />
+ L'utilisateur est-il administrateur ?
+ </label>
+ </div>
+ </div>
+ <div class="form-actions">
+ <input type="submit" class="btn btn-primary" value="Créer l'utilisateur" />
+ </div>
+</fieldset>
+</form>
+ </div>
+</div>
+
+{% endblock %}
{% if session.is_admin %}
<a href="#" class="btn btn-warning dropdown-toggle" data-toggle="dropdown">Admin <b class="caret"></b></a>
<ul class="dropdown-menu pull-right">
- <li><a href="{{ url_for('new_vote') }}">Nouveau vote</a></li>
+ <li><a href="{{ url_for('add_vote') }}">Nouveau vote</a></li>
+ <li class="divider"></li>
+ <!--<li><a href="404">Utilisateurs</a></li>-->
+ <li><a href="{{ url_for('add_user') }}">Nouvel utilisateur</a></li>
</ul>
{% endif %}
</div>
<div class="btn-group pull-right">
- {% if 'username' in session %}
+ {% if 'userid' in session %}
<a href="{{ url_for('show_user', userid=session.userid) }}" class="btn"><i class="icon-user"></i> {{ session.username }}</a>
<a href="#" class="btn dropdown-toggle" data-toggle="dropdown"><b class="caret"></b></a>
<ul class="dropdown-menu pull-right">
<div class="control-group">
<label class="control-label" for="title">Titre</label>
<div class="controls">
- <input type="text" size=30 name="title" id="title" />
+ <input type="text" size=30 name="title" id="title" value="{{ request.form.title }}" />
<span class="help-inline"><font color="red">*</font></span>
</div>
</div>
<div class="control-group">
<label class="control-label" for="description">Description</label>
<div class="controls">
- <textarea class="input-xlarge" name="description" id="description"></textarea>
+ <textarea class="input-xlarge" name="description" id="description" value="{{ request.form.description }}"></textarea>
</div>
</div>
<div class="control-group">
<label class="control-label" for="category">Catégorie</label>
<div class="controls">
- <input type="text" data-provide="typeahead" data-source='["ca","membres"]' size=30 name="category" id="category" />
+ <input type="text" data-provide="typeahead" data-source='["ca","membres"]' size=30 name="category" id="category" value="{{ request.form.category }}" />
</div>
</div>
<div class="control-group">