def new_playset(): if not utils.logged_in(session): return redirect(url_for('login')) error = None form = fforms.NewPlayset(request.form) if request.method == 'POST' and form.validate(): # check if playset name is unique playset = models.Playset(name=form.name.data, desc=form.description.data, owner=session['uid']) app.db.db_session.add(playset) app.db.db_session.commit() # Create default Detail object need_detail = detail.Detail() obj_detail = detail.Detail() loc_detail = detail.Detail() rel_detail = detail.Detail() n_table = models.Details(playset.id, 'need', need_detail) o_table = models.Details(playset.id, 'object', obj_detail) l_table = models.Details(playset.id, 'location', loc_detail) r_table = models.Details(playset.id, 'relationship', rel_detail) app.db.db_session.add(n_table) app.db.db_session.add(o_table) app.db.db_session.add(l_table) app.db.db_session.add(r_table) app.db.db_session.commit() flash('Playset added successfully!') return redirect('/edit_playset/' + str(playset.id)) return render_template('new_playset.html', error=error, form=form)
def register(): if utils.logged_in(session): return redirect(url_for('index')) error = None if request.method == 'POST': u = models.User() if not request.form['username']: error = 'Missing username' elif not request.form['email']: error = 'Missing email' elif not request.form['password1'] or not request.form['password2']: error = 'Missing password' elif u.user_exists(request.form['username']): error = 'Username is already taken' elif request.form['password1'] != request.form['password2']: error = 'Passwords do not match' else: # let's assume everything is ok, will need more work obviously salt = utils.make_salt() pw = bcrypt.generate_password_hash(request.form['password1'] + salt) new_user = models.User(request.form['username'], request.form['email'], pw, salt) app.db.db_session.add(new_user) app.db.db_session.commit() flash('Registered successfully!') return render_template('login.html') return render_template('register.html', error=error)
def new_game(): if not utils.logged_in(session): flash('You need to login first.') return redirect(url_for('login')) error = None from fiasco import fforms form = fforms.NewGame(request.form) form.playset.choices = [(g.id, g.name) for g in models.Playset().query.order_by('name')] if request.method == 'POST' and form.validate(): flash('placeholder!') return render_template('new_game.html', error=error, form=form)
def edit_playset(pl_id): if not utils.logged_in(session): flash('You need to login first.') return redirect(url_for('login')) error = None # Permissions checking playset = models.Playset.query.filter(models.Playset.id == pl_id).first() if not playset: flash('Wrong Playset.') return redirect(url_for('playsets')) elif playset.owner != session['uid']: flash('You do not own this Playset.') return redirect(url_for('playsets')) details = models.Details.query.filter(models.Details.playset_id == pl_id).all() # MODIFY the playset if request.method == 'POST' and form.validate(): pl_data.name = form.name.data pl_data.description = form.description.data app.db.db_session.commit() flash('Playset edited successfully!') # GET the playset data elif request.method == 'GET': class Derp(fforms.EditPlayset): pass for det in details: detail = det.data detail.unpack() if det.detail_type == 'relationship': blarg = detail.unpacked for d in detail.unpacked.items(): setattr(Derp, d[0], TextField()) form = Derp(request.form) form.name.data = pl_data.name form.description.data = pl_data.description for det in details: detail = det.data if det.detail_type == 'relationship': for e in detail.unpacked.items(): form[e[0]].data = e[1] return render_template('edit_playset.html', error=error, form=form, blarg=blarg)
def login(): if utils.logged_in(session): return redirect(url_for('index')) error = None if request.method == 'POST': if not request.form['username'] or not request.form['password']: return render_template('login.html', error='Missing field') #u = models.User() valid_user = models.User.query.filter(models.User.username == request.form['username']).first() if not valid_user: return render_template('login.html', error='Invalid username or password') if bcrypt.check_password_hash(valid_user.password, request.form['password'] + valid_user.salt): session['logged_in'] = True session['username'] = valid_user.username session['uid'] = valid_user.id flash('You were logged in') return redirect(url_for('index')) else: return render_template('login.html', error='Invalid username or password') return render_template('login.html', error=error)
def settings(): if not utils.logged_in(session): return redirect(url_for('login')) return render_template('settings.html')