- 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
- role = query_db('select id from roles where name = ?', [request.form['role']], one=True)
- if role is None:
- role[id] = 1
- g.db.execute('insert into votes (title, description, category, date_begin, date_end, is_transparent, is_public, is_multiplechoice, id_role, id_author) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
- [request.form['title'], request.form['description'], request.form['category'], date_begin, date_end, transparent, public, multiplechoice, role['id'], session['user']['id']])
- g.db.commit()
- vote = query_db('select * from votes where title = ? and date_begin = ? order by id desc',
- [request.form['title'], date_begin], one=True) # :DEBUG:maethor:120528: Bug possible car le titre n'est pas unique
- if vote is None:
- flash(u'Une erreur est survenue !', 'error')
- return redirect(url_for('home'))
+ if query_db('select * from votes where title = ?', [request.form['title']], one=True) is None:
+ date_begin = date.today()
+ date_end = date.today() + timedelta(days=int(request.form['days']))
+ transparent = 0
+ public = 0
+ anonymous = 0
+ if 'transparent' in request.form:
+ transparent = 1
+ if 'public' in request.form:
+ public = 1
+ if 'anonymous' in request.form:
+ anonymous = 1
+ try: quorum = float(request.form.get('quorum'))
+ except ValueError:
+ quorum = 0
+ if not (0 <= quorum and quorum <= 1):
+ flash(u'Une erreur est survenue !', 'error')
+ group = query_db('select id from groups where name = ?', [request.form['group']], one=True)
+ if group is None:
+ group[id] = 1
+ try: cardinal = int(request.form.get('cardinal'))
+ except ValueError:
+ cardinal = None
+ if cardinal in cardinals:
+ cardinal_name = cardinals[cardinal]['name']
+ cardinal_values = cardinals[cardinal]['values']
+ weight = cardinals[cardinal]['first'] if not cardinals[cardinal]['first'] is None else -(cardinal/2)
+ if query_db('select * from cardinals where id = ?', [cardinal], one=True) is None:
+ g.db.execute('insert into cardinals (id, name) values (?, ?)', [len(cardinal_values), cardinal_name])
+ g.db.commit()
+ for name in cardinal_values:
+ g.db.execute('insert into values_ (id_cardinal, name, weight) values (?, ?, ?)'
+ , [cardinal, name, weight])
+ g.db.commit()
+ weight += 1
+ g.db.execute('insert into votes (title, description, category, \
+ date_begin, date_end, quorum, is_transparent, is_public, \
+ is_anonymous, id_group, id_author, id_cardinal) \
+ values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
+ [ request.form['title'], request.form['description'], request.form['category']
+ , date_begin, date_end, quorum, transparent, public, anonymous
+ , group['id'], session['user']['id'], cardinal ])
+ g.db.commit()
+ vote = query_db('select * from votes where title = ? and date_begin = ? order by id desc'
+ , [request.form['title'], date_begin], one=True)
+ if vote is None:
+ flash(u'Une erreur est survenue !', 'error')
+ return redirect(url_for('home'))
+ else:
+ if request.form['pattern'] in PATTERNS:
+ pattern = PATTERNS[request.form['pattern']]
+ for choice in pattern:
+ g.db.execute('insert into choices (name, id_vote) values (?, ?)', [choice, vote['id']])
+ g.db.commit()
+ flash(u"Le vote a été créé", 'info')
+ return redirect(url_for('admin_vote_edit', voteid=vote['id']))