forget-cancellare-vecchi-toot/routes.py

79 lines
2.3 KiB
Python
Raw Normal View History

2017-07-25 09:52:24 +02:00
from app import app
from flask import render_template, url_for, redirect, request, g, Response
from datetime import datetime
2017-07-27 00:35:53 +02:00
import lib.twitter
2017-07-31 00:07:34 +02:00
from model import Account, Session, Post, TwitterArchive
2017-07-27 00:35:53 +02:00
from app import db
2017-07-30 13:53:14 +02:00
import tasks
2017-07-25 09:52:24 +02:00
@app.before_request
def load_viewer():
g.viewer = None
sid = request.cookies.get('forget_sid', None)
if sid:
g.viewer = Session.query.get(sid)
@app.after_request
def touch_viewer(resp):
if g.viewer:
g.viewer.touch()
db.session.commit()
return resp
2017-07-25 09:52:24 +02:00
@app.route('/')
def index():
if g.viewer:
2017-07-28 12:48:00 +02:00
posts = Post.query.filter_by(author_id = g.viewer.account_id).order_by(db.desc(Post.created_at)).limit(30)
return render_template('index.html', posts=posts)
else:
return render_template('index.html')
2017-07-25 09:52:24 +02:00
@app.route('/login/twitter')
2017-07-27 00:35:53 +02:00
def twitter_login_step1():
return redirect(lib.twitter.get_login_url(
callback = url_for('twitter_login_step2', _external=True),
**app.config.get_namespace("TWITTER_")
))
@app.route('/login/twitter/callback')
def twitter_login_step2():
oauth_token = request.args['oauth_token']
oauth_verifier = request.args['oauth_verifier']
token = lib.twitter.receive_verifier(oauth_token, oauth_verifier, **app.config.get_namespace("TWITTER_"))
2017-07-30 13:53:14 +02:00
session = Session(account_id = token.account_id)
db.session.add(session)
db.session.commit()
2017-07-30 13:53:14 +02:00
tasks.fetch_acc.s(token.account_id).delay()
2017-07-31 00:07:34 +02:00
resp = Response(status=302, headers={"location": url_for('index')})
2017-07-30 14:08:37 +02:00
resp.set_cookie('forget_sid', session.id,
max_age=60*60*48,
2017-07-30 14:09:41 +02:00
httponly=True,
2017-07-30 14:08:37 +02:00
secure=app.config.get("HTTPS"))
return resp
2017-07-31 00:07:34 +02:00
@app.route('/upload_twitter_archive', methods=('POST',))
def upload_twitter_archive():
if not g.viewer or 'file' not in request.files:
return "no"
return redirect(url_for('index'))
ta = TwitterArchive(account = g.viewer.account,
body = request.files['file'].read())
db.session.add(ta)
db.session.commit()
tasks.import_twitter_archive.s(ta.id).apply_async()
return "cool. your file's being processed probably"
@app.route('/logout')
def logout():
if(g.viewer):
db.session.delete(g.viewer)
db.session.commit()
g.viewer = None
return redirect(url_for('index'))