/unsourced/handlers/activity.py

https://github.com/bcampbell/unsourced · Python · 62 lines · 39 code · 19 blank · 4 comment · 3 complexity · fb7ae0a67e4bf21c29576fb7a71eb420 MD5 · raw file

  1. import datetime
  2. from collections import defaultdict
  3. import itertools
  4. import random
  5. import urllib
  6. import tornado.auth
  7. from sqlalchemy import Date,not_
  8. from sqlalchemy.sql.expression import cast,func
  9. from sqlalchemy.orm import subqueryload,joinedload
  10. from base import BaseHandler
  11. from unsourced.models import Source,Article,Action,Lookup,Tag,TagKind,UserAccount,Comment,article_tags,comment_user_map
  12. from unsourced.queries import build_action_query
  13. from unsourced.cache import cache
  14. from unsourced.paginator import SAPaginator
  15. from unsourced import uimodules
  16. import util
  17. class ActionBrowseHandler(BaseHandler):
  18. def get(self):
  19. page = int(self.get_argument('p',1))
  20. view = self.get_argument('view',None)
  21. filters = {}
  22. # paginate the results
  23. def page_url(page):
  24. """ generate url for the given page of this query"""
  25. params = {}
  26. # preserve all request params, and override page number
  27. for k in self.request.arguments:
  28. params[k] = self.get_argument(k)
  29. params['p'] = page
  30. url = "/activity?" + urllib.urlencode(params)
  31. return url
  32. actions = build_action_query(self.session,view,current_user=self.current_user)
  33. paged_results = SAPaginator(actions, page, page_url, per_page=100)
  34. if self.is_xhr():
  35. # if ajax, just render a new #searchresults instead of whole page
  36. module = uimodules.actionbrowser(self)
  37. html = module.render(filters=filters,paged_results=paged_results)
  38. self.finish({'status':'ok', 'results_html': html})
  39. else:
  40. self.render("activity.html",filters=filters,paged_results=paged_results)
  41. handlers = [
  42. (r'/activity', ActionBrowseHandler),
  43. ]