def get(self): keys = session.get('account_keys', '').split(',') stmt = Session.query(Account.id).filter(Account.key.in_(keys)).subquery() data = Session.query(History, Account.domain, Account.username, Account.id).filter( Account.id == History.account_id).\ filter(History.account_id.in_(stmt)).\ order_by(History.published.desc()).\ all() res = [] for h, d, u, i in data: r = h.to_dict() r['domain'] = d r['username'] = u r['userid'] = i res.append(r) return res
def get(self, id): num_id = int(id, 16) #print "ID is ", num_id link = Session.query(Link).filter_by(id = num_id).first() #import sys #print >> sys.stderr, link.to_dict() #print "LONG_URL = ", link.long_url resp = get_redirect_response(link.long_url, additional_headers=[ ('x-shortened-by', link.userkey), ('x-shortened-for', link.audience), ]) raise resp.exception
def get_or_create(longurl, author=None): try: return Session.query(Link).filter_by(long_url=longurl).one() except NoResultFound: l = Link() l.long_url = longurl l.userkey = author Session.add(l) if asbool(config.get('test_shortener')): # add and commit to get the id, then shorten Session.commit() Session.flush() l.shorten() Session.commit() return l
def _get_or_create_account(self, domain, userid, username): keys = [k for k in session.get('account_keys', '').split(',') if k] # Find or create an account try: acct = Session.query(Account).filter(and_(Account.domain==domain, Account.userid==userid)).one() except NoResultFound: acct = Account() acct.domain = domain acct.userid = userid acct.username = username Session.add(acct) if acct.key not in keys: keys.append(acct.key) session['account_keys'] = ','.join(keys) session[acct.key] = acct.to_dict() session.save() return acct
def signout(self): domain = request.params.get('domain') username = request.params.get('username') userid = request.params.get('userid') if domain and username or userid: try: keys = [k for k in session.get('account_keys', '').split(',') if k] for k in keys: session.pop(k) _and = [Account.domain==domain] if username: _and.append(Account.username==username) if userid: _and.append(Account.userid==userid) accts = Session.query(Account).filter(Account.key.in_(keys)).filter(not_(and_(*_and))).all() session['account_keys'] = ','.join([a.key for a in accts]) for a in accts: session[a.key] = a.to_dict() except: session.clear() else: session.clear() session.save()