def workshop_edit(workshop_hash=None): workshop_data = {} user_data = check_auth() if workshop_hash: workshop_data = get_workshop(workshop_hash) if user_data['user_hash'] != workshop_data['user']: abort(403) # uzivatel tohle nemuze editovat if request.method == "POST": form = WorkshopForm(request.form) if form.validate(): old_hash = workshop_hash workshop_hash = create_or_update_workshop(form.data, workshop_hash) user_user_go(user_data) flash(u'Workshop byl uložen', 'success') if workshop_hash != old_hash: return redirect(url_for('workshop_edit', workshop_hash=workshop_hash)) else: form = WorkshopForm(**workshop_data) return render_template( 'workshop_form.html', informace=markdown_markup('pro-workshopisty'), form=form, workshop=workshop_data )
def create_or_update_workshop(data, workshop_hash=None): user_data = check_auth() if workshop_hash is None: workshop_hash = get_workshop_hash(data) data['workshop_hash'] = workshop_hash data['status'] = 'waiting' # send workshop mail send_feedback_mail( u"Nový workshop: %s" % data['title'], "data/new-workshop.md", data, user_data, url_for( 'workshop_detail', workshop_hash=workshop_hash, _external=True ) ) data.update({ 'user': user_data['user_hash'], 'workshop_hash': workshop_hash, }) app.redis.set(KEYS['workshop'] % workshop_hash, json.dumps(data)) # zalozime hlasovani - bezpecne pres zincrby (namisto zadd s if podminkou) app.redis.zincrby(KEYS['workshops'], workshop_hash, 0) return workshop_hash
def attend_add(): user = check_auth() if user_user_go(user): flash(u'Na akci už jsi byl přihlášen dříve', 'success') else: flash(u'Nyní jsi přihlášen jako účastník akce', 'success') return redirect(url_for('index')) # , _anchor="entrants"))
def program_aktualne(): t = times[::] t.insert(0, {'block_from': time(18, 0), 'block_to': time(19, 0), 'date': date(2013, 6, 14), 'data': Markup(u'<a href="/stranka/warmup/">Honza Řezáč</a>')} ) t.insert(1, {'block_from': time(20, 0), 'block_to': time(23, 59), 'date': date(2013, 6, 14), 'data': Markup(u'<a href="/stranka/warmup/">Warm-up párty</a>')} ) actual_date = datetime.now().date() actual_time = datetime.now().time() next_times = [] for event in t: if (event['date'] == actual_date and event['block_to'] >= actual_time)\ or event['date'] > actual_date: next_times.append(event) return render_template( 'aktualne.html', menu=menu(), talks=get_talks_dict(), times=next_times, user=check_auth() )
def login(): next = session.get('next', None) if request.method == "POST": form = LoginForm(request.form) if form.validate(): user_hash = resolve_user_by_email( form.data.get('email'), form.data.get('password')) if not user_hash: session['default_email'] = form.data.get('email') flash( u'Neplatná kombinace e-mailu a hesla, zkuste to znovu.', 'warning') else: session.clear() session['user_hash'] = user_hash else: form = LoginForm() if check_auth(): flash(u'Nyní jste přihlášen', 'success') return redirect(next or url_for('login_settings')) return render_template("login.html", form=form)
def talk_edit(talk_hash=None): talk_data = {} user_data = check_auth() if talk_hash: talk_data = get_talk(talk_hash) if user_data['user_hash'] != talk_data['user']: abort(403) # uzivatel tohle nemuze editovat if request.method == "POST": form = TalkForm(request.form) if form.validate(): old_hash = talk_hash talk_hash = create_or_update_talk(form.data, talk_hash) user_user_go(user_data) flash(u'Přednáška byla uložena', 'success') if talk_hash != old_hash: return redirect(url_for('talk_edit', talk_hash=talk_hash)) else: form = TalkForm(**talk_data) return render_template( 'talk_form.html', informace=markdown_markup('pro-prednasejici'), form=form, talk=talk_data )
def index(): user = check_auth() user_hash = None if "PROGRAM_READY" in app.config['STAGES']: talks = get_talks_dict() extra_talks = [] else: talks, extra_talks = get_talks() # bez razeni talks = sorted(talks, key=lambda x: x['title']) if user: user_hash = user['user_hash'] stage_template = "index.html" if "END" in app.config['STAGES']: stage_template = "end.html" if "PREVIEW" in app.config['STAGES']: stage_template = "preview.html" return render_template( stage_template, user=user, menu=menu(), times=times, entrant_count=get_count(), entrants=get_entrants()[:50], user_votes=get_user_votes(user_hash), novinky=markdown_markup('novinky'), sponsors_main=markdown_markup('sponsors_main'), sponsors_medial=markdown_markup('sponsors_medial'), workshops=markdown_markup('workshopy-program'), sponsors=markdown_markup('sponsors'), talks=talks, extra_talks=extra_talks, talks_dict=get_talks_dict())
def attend_add(): user = check_auth() if user_user_go(user): flash(u"Na akci už jsi byl přihlášen dříve", "success") else: flash(u"Nyní jsi přihlášen jako účastník akce", "success") return redirect(url_for("index")) # , _anchor="entrants"))
def workshop_edit(workshop_hash=None): workshop_data = {} user_data = check_auth() if workshop_hash: workshop_data = get_workshop(workshop_hash) if user_data['user_hash'] != workshop_data['user']: abort(403) # uzivatel tohle nemuze editovat if request.method == "POST": form = WorkshopForm(request.form) if form.validate(): old_hash = workshop_hash workshop_hash = create_or_update_workshop(form.data, workshop_hash) user_user_go(user_data) flash(u'Workshop byl uložen', 'success') if workshop_hash != old_hash: return redirect( url_for('workshop_edit', workshop_hash=workshop_hash)) else: form = WorkshopForm(**workshop_data) return render_template('workshop_form.html', informace=markdown_markup('pro-workshopisty'), form=form, workshop=workshop_data)
def program(): return render_template( 'program.html', menu=menu(), times=times, talks=get_talks_dict(), user=check_auth() )
def entrants(): return render_template( "entrants.html", user=check_auth(), menu=menu(), entrant_count=get_count(), entrants=reversed(get_entrants()) )
def sponsors(): return render_template( "partneri.html", user=check_auth(), menu=menu(), sponsors_main=markdown_markup('sponsors_main'), sponsors=markdown_markup('sponsors'), sponsors_other=markdown_markup('sponsors_other'), )
def talks_all(): talks, extra_talks = get_talks() return render_template( "talks.html", user=check_auth(), menu=menu(), talks=talks, extra_talks=extra_talks )
def plneni_newsletteru(): user = check_auth() if user['email'] != u'*****@*****.**': abort(418) entrants = get_entrants() for entrant in entrants: app.redis.sadd('newsletter', entrant['email']) return 'omg'
def workshop_delete(workshop_hash): workshop_data = get_workshop(workshop_hash) user_data = check_auth() if user_data['user_hash'] != workshop_data['user']: abort(403) # uzivatel nema pravo app.redis.delete(KEYS['workshop'] % workshop_hash) app.redis.zrem(KEYS['workshops'], workshop_hash) flash(u'Workshop byl smazán', 'success') return redirect(url_for('index'))
def talk_detail(talk_hash): talk = get_talk(talk_hash) if not talk: abort(404) author = get_account(talk['user']) return render_template('talk_detail.html', talk=talk, author=author, user=check_auth())
def talk_delete(talk_hash): talk_data = get_talk(talk_hash) user_data = check_auth() if user_data['user_hash'] != talk_data['user']: abort(403) # uzivatel nema pravo app.redis.delete(KEYS['talk'] % talk_hash) app.redis.zrem(KEYS['talks'], talk_hash) flash(u'Přednáška byla smazána', 'success') return redirect(url_for('index'))
def login_settings(): user = check_auth() if request.method == "POST": form = SettingsForm(request.form) if form.validate(): create_update_profile(form.data, user['user_hash']) flash(u'Profil aktualizován', 'success') return redirect(url_for('login_settings')) else: form = SettingsForm(**user) return render_template('nastaveni.html', user=user, form=form)
def test_newsletteru(): user = check_auth() if user['email'] != u'*****@*****.**': abort(418) send_mail( u'Barcamp Brno 2013, ohlédnutí za akcí', '*****@*****.**', 'data/newsletter.md') return 'uff'
def profile(user_hash): data = get_account(user_hash) if not data: abort(404) return render_template( 'profil.html', user=check_auth(), menu=menu(), profile=data )
def mexico_tequilla(): user = check_auth() if user['email'] != u'*****@*****.**': abort(418) talks = get_talks() for talk in talks: user_user_go(talk['user']) flash(u'Prezentující přidáni jako účastníci') return redirect(url_for('index'))
def talk_detail(talk_hash): talk = get_talk(talk_hash) if not talk: abort(404) author = get_account(talk['user']) return render_template( 'talk_detail.html', talk=talk, author=author, user=check_auth())
def attend_remove(): user = check_auth() if not user.get('going_%s' % app.config['YEAR'], False): flash(u'Na akci jsi doposud nebyl přihlášen', 'warning') else: user['going_%s' % app.config['YEAR']] = False create_update_profile(user, user['user_hash']) app.redis.zrem(KEYS['entrants'], user['user_hash']) app.redis.decr(KEYS['entrant_count']) remove_user_votes(user['user_hash']) flash(u'Již nejsi přihlášen na akci', 'success') return redirect(url_for('index')) # , _anchor="entrants"))
def attend_remove(): user = check_auth() if not user.get('going', False): flash(u'Na akci jsi doposud nebyl přihlášen', 'warning') else: user['going'] = False create_update_profile(user, user['user_hash']) app.redis.zrem(KEYS['entrants'], user['user_hash']) app.redis.decr(KEYS['entrant_count']) remove_user_votes(user['user_hash']) flash(u'Již nejsi přihlášen na akci', 'success') return redirect(url_for('index')) # , _anchor="entrants"))
def attend_remove(): user = check_auth() if not user.get("going_%s" % app.config["YEAR"], False): flash(u"Na akci jsi doposud nebyl přihlášen", "warning") else: user["going_%s" % app.config["YEAR"]] = False create_update_profile(user, user["user_hash"]) app.redis.zrem(KEYS["entrants"], user["user_hash"]) app.redis.decr(KEYS["entrant_count"]) remove_user_votes(user["user_hash"]) flash(u"Již nejsi přihlášen na akci", "success") return redirect(url_for("index")) # , _anchor="entrants"))
def markdown_static_page(uri): pages = Pages(app.redis, app.config['YEAR']) page = pages.get(uri) if not page: abort(404) return render_template( '_markdown.html', content=Markup(markdown.markdown(page['body'])), title=page['title'], user=check_auth())
def markdown_static_page(page): try: with open('data/brno2013/%s.md' % page) as f: raw_data = f.read().decode('utf-8') content = Markup(markdown.markdown(raw_data)) except: raise if not content: abort(404) return render_template('_markdown.html', content=content, user=check_auth())
def talk_edit(talk_hash=None): talk_data = {} if talk_hash: talk_data = get_talk(talk_hash) user_data = check_auth() if user_data['user_hash'] != talk_data['user']: abort(403) # uzivatel tohle nemuze editovat if request.method == "POST": form = TalkForm(request.form) if form.validate(): old_hash = talk_hash talk_hash = create_or_update_talk(form.data, talk_hash) flash(u'Přednáska byla uložena', 'success') if talk_hash != old_hash: return redirect(url_for('talk_edit', talk_hash=talk_hash)) else: form = TalkForm(**talk_data) return render_template('talk_form.html', form=form, user=check_auth(), talk=talk_data)
def create_or_update_talk(data, talk_hash=None): user_data = check_auth() if talk_hash is None: talk_hash = get_talk_hash(data) data['talk_hash'] = talk_hash data.update({ 'user': user_data['user_hash'], 'talk_hash': talk_hash, }) app.redis.set(KEYS['talk'] % talk_hash, json.dumps(data)) # zalozime hlasovani - bezpecne pres zincrby (namisto zadd s if podminkou) app.redis.zincrby(KEYS['talks'], talk_hash, 0) return talk_hash
def markdown_static_page(page): try: with open('data/brno2013/%s.md' % page) as f: raw_data = f.read().decode('utf-8') content = Markup(markdown.markdown(raw_data)) except: raise if not content: abort(404) return render_template( '_markdown.html', content=content, user=check_auth())
def talks_all(): user = check_auth() user_hash = None if stage_is_active(app.config['YEAR'], 'PROGRAM'): talks = get_talks_dict() else: talks = get_talks_by_type() if user: user_hash = user['user_hash'] return render_template("talks.html", talks=talks, times=times, user_votes=get_user_votes(user_hash))
def my_invoices(): user = check_auth() user_invoices = app.redis.smembers(KEYS['user_invoices'] % user['user_hash']) invoices = [] if user_invoices: invoices = sorted(filter( lambda x: bool(x), map(lambda invoice: json.loads(invoice or 'false'), app.redis.mget(user_invoices))), key=lambda x: x['number'], reverse=True) return render_template('moje-objednavky.html', user=user, invoices=invoices, sizes=SIZES)
def poslani_newsletteru(): user = check_auth() if user['email'] != u'*****@*****.**': abort(418) for mail in app.redis.smembers('newsletter'): print mail app.redis.srem('newsletter', mail) continue send_mail( u'Barcamp Brno 2013, ohlédnutí za akcí', '', #mail, 'data/newsletter.md') return 'omg2'
def create_or_update_talk(data, talk_hash=None): user_data = check_auth() print data if talk_hash is None: talk_hash = get_talk_hash(data) data['talk_hash'] = talk_hash data.update({ 'user': user_data['user_hash'], 'talk_hash': talk_hash, }) app.redis.set(KEYS['talk'] % talk_hash, json.dumps(data)) if not app.redis.zrank(KEYS['talks'], talk_hash): app.redis.zadd(KEYS['talks'], talk_hash, 0) return talk_hash
def talk_detail(talk_hash): talk = get_talk(talk_hash) if not talk: abort(404) author = get_account(talk['user']) user = check_auth() user_hash = None if user: user_hash = user['user_hash'] return render_template('talk_detail.html', talk=talk, user_votes=get_user_votes(user_hash), author=author)
def markdown_static_page(page): try: with open('data/%s/%s.md' % (app.config['YEAR'], page)) as f: raw_data = f.read().decode('utf-8') content = Markup(markdown.markdown(raw_data)) except: content = None if app.debug: raise if content is None: abort(404) return render_template( '_markdown.html', content=content, user=check_auth())
def index(): user = check_auth() user_hash = None talks, extra_talks = get_talks() if user: user_hash = user['user_hash'] return render_template( "index.html", user=user, menu=menu(), times=times, entrant_count=get_count(), entrants=get_entrants()[50:0:-1], #user_votes=get_user_votes(user_hash), sponsors_main=markdown_markup('sponsors_main'), sponsors=markdown_markup('sponsors'), talks=get_talks_dict())
def invoices(): user = check_auth() if request.method == "POST": form = InvoiceForm(request.form) if form.validate(): invoice = form.data invoice['total_price'] = sum([UNIT_PRICE * invoice.get(size, 0) for size in SIZES]) invoice = insert_invoice(invoice, user) flash(u'Objednávka číslo {number} za {total_price} kč zaznamenána'.format(**invoice), 'success') user_user_go(user) return redirect(url_for('my_invoices')) else: default = dict((size, 0) for size in SIZES) default['name'] = user['name'] default['email'] = user['email'] form = InvoiceForm(** default) return render_template('objednavka.html', user=user, form=form, shirt_price=UNIT_PRICE)
def vote_for_talk(talk_hash): user = check_auth() user_hash = user['user_hash'] old_votes = app.redis.smembers(KEYS['votes'] % user_hash) or set() method = request.args.get('method', 'decrease') if method == 'increase' and talk_hash not in old_votes: app.redis.zincrby(KEYS['talks'], talk_hash, 1) app.redis.sadd(KEYS['votes'] % user_hash, talk_hash) if method == 'decrease' and talk_hash in old_votes: app.redis.zincrby(KEYS['talks'], talk_hash, -1) app.redis.srem(KEYS['votes'] % user_hash, talk_hash) if request.headers.get('X-Requested-With') == 'XMLHttpRequest': return str(int(app.redis.zscore(KEYS['talks'], talk_hash)) or 0) flash(u'Hlas byl zaznamenán', 'success') return redirect(url_for('talks_all'))
def talk_detail(talk_hash): talk = get_talk(talk_hash) if not talk: abort(404) author = get_account(talk['user']) user = check_auth() user_hash = None if user: user_hash = user['user_hash'] return render_template( 'talk_detail.html', talk=talk, user_votes=get_user_votes(user_hash), author=author )
def my_invoices(): user = check_auth() user_invoices = app.redis.smembers(KEYS['user_invoices'] % user['user_hash']) invoices = [] if user_invoices: invoices = sorted( filter( lambda x: bool(x), map( lambda invoice: json.loads(invoice or 'false'), app.redis.mget( user_invoices ) ) ), key=lambda x: x['number'], reverse=True ) return render_template('moje-objednavky.html', user=user, invoices=invoices, sizes=SIZES)
def create_or_update_talk(data, talk_hash=None): user_data = check_auth() if talk_hash is None: talk_hash = get_talk_hash(data) data['talk_hash'] = talk_hash # send talk mail send_feedback_mail( u"Nová přednáška: %s" % data['title'], "data/new-talk.md", data, user_data, url_for('talk_detail', talk_hash=talk_hash, _external=True)) data.update({ 'user': user_data['user_hash'], 'talk_hash': talk_hash, }) app.redis.set(KEYS['talk'] % talk_hash, json.dumps(data)) # zalozime hlasovani - bezpecne pres zincrby (namisto zadd s if podminkou) app.redis.zincrby(KEYS['talks'], talk_hash, 0) return talk_hash
def invoices(): user = check_auth() if request.method == "POST": form = InvoiceForm(request.form) if form.validate(): invoice = form.data invoice['total_price'] = sum( [UNIT_PRICE * invoice.get(size, 0) for size in SIZES]) invoice = insert_invoice(invoice, user) flash( u'Objednávka číslo {number} za {total_price} kč zaznamenána'. format(**invoice), 'success') user_user_go(user) return redirect(url_for('my_invoices')) else: default = dict((size, 0) for size in SIZES) default['name'] = user['name'] default['email'] = user['email'] form = InvoiceForm(**default) return render_template('objednavka.html', user=user, form=form, shirt_price=UNIT_PRICE)
def create_or_update_workshop(data, workshop_hash=None): user_data = check_auth() if workshop_hash is None: workshop_hash = get_workshop_hash(data) data['workshop_hash'] = workshop_hash data['status'] = 'waiting' # send workshop mail send_feedback_mail( u"Nový workshop: %s" % data['title'], "data/new-workshop.md", data, user_data, url_for('workshop_detail', workshop_hash=workshop_hash, _external=True)) data.update({ 'user': user_data['user_hash'], 'workshop_hash': workshop_hash, }) app.redis.set(KEYS['workshop'] % workshop_hash, json.dumps(data)) # zalozime hlasovani - bezpecne pres zincrby (namisto zadd s if podminkou) app.redis.zincrby(KEYS['workshops'], workshop_hash, 0) return workshop_hash
def index(): return render_template("index.html", user=check_auth(), talks=get_talks())
def user(): return {'user': check_auth()}
def login_settings(): #TODO formular na ukladani detailu uzivatele return render_template('nastaveni.html', user=check_auth())
def test(): return render_template("page.html", user=check_auth())