def manage_subscriptions(request, mailbox_slug): ctx = request.context mb = ctx.get_mailbox(mailbox_slug) if mb is None: return HttpResponse(status=404) if not ctx.user.has_perm(PERM_READ, mb): return handle_unauth(request) info = MailboxInfo.get(mb) subs = [] for sub in Subscription.view(mb, Subscription.by_type, include_docs=True): subs.append(sub) ctx = {} ctx['mailbox'] = mb ctx['mailbox_slug'] = mailbox_slug ctx['mailbox_title'] = info.title or mailbox_slug ctx['subscriptions'] = sorted(subs, key=attrgetter('title')) if request.headers.get('X-Requested-With') == 'XMLHttpRequest': return render_to_response('radar/subscriptions_table.html', TemplateContext(request, ctx)) else: return render_to_response('radar/subscriptions.html', TemplateContext(request, ctx))
def login(request): ctx = {} next_page = request.params.get('next') if next_page: ctx = {'next': next_page} return render_to_response('radar/login.html', TemplateContext(request, ctx))
def create_mailbox(request): if request.method != 'GET': res = HttpResponse(status=405) res.allow = ['GET'] return res return render_to_response('radar/create_mailbox.html', TemplateContext(request, {}))
def _render_messages(request, mailbox, messages, next_params=None): ctx = request.context entries = [] for message in messages: renderer = _get_hatom_renderer(message, request) if renderer is not None: entries.append(renderer) info = MailboxInfo.get(mailbox) mailbox_slug = request.context.get_mailbox_slug(mailbox.name) ctx = {} ctx['mailbox'] = mailbox ctx['mailbox_slug'] = mailbox_slug ctx['mailbox_title'] = info.title or mailbox_slug ctx['entries'] = entries if next_params: q = dict(request.GET) q.update(next_params) qs = '' for k, v in q.items(): qs += '&%s=%s' % (quote_plus(k), quote_plus(v)) next_link = request.path + '?' + qs[1:] ctx['next_link'] = next_link return render_to_response('radar/view_mailbox.html', TemplateContext(request, ctx))
def manage_info(request, mailbox_slug): ctx = request.context mb = ctx.get_mailbox(mailbox_slug) if mb is None: return HttpResponse(status=404) ctx = {} ctx['mailbox_slug'] = mailbox_slug return render_to_response('radar/edit.html', TemplateContext(request, ctx))
def create_mailbox(request): if request.method != 'GET': res = HttpResponse(status=405) res.allow = ['GET'] return res ctx = request.context if not ctx.user.has_perm(PERM_CREATE_MAILBOX): return handle_unauth(request) return render_to_response('radar/create_mailbox.html', TemplateContext(request, {}))
def list_mailboxes(request): ctx = request.context mailboxes = [] for mb in ctx.iter_mailboxes(): slug = ctx.get_mailbox_slug(mb.name) info = MailboxInfo.get(mb) mailboxes.append({ 'slug': slug, 'title': info.title or slug }) return render_to_response('radar/list_mailboxes.html', TemplateContext(request, {'mailboxes': mailboxes}))
def handle_unauth(request): if request.context.user.is_anonymous(): # redirect to login with any additional info login_url = request.context.url_for('login', next=request.url) login_url = request.relative_url(login_url) res = HttpResponse(status=301) res.location = login_url return res else: # logged in, but current user does not have permission # show message indicating unauthorized. return render_to_response('radar/unauthorized.html', TemplateContext(request, {}))
def manage_info(request, mailbox_slug): ctx = request.context mb = ctx.get_mailbox(mailbox_slug) if mb is None: return HttpResponse(status=404) if not ctx.user.has_perm(PERM_UPDATE, mb): return handle_unauth(request) ctx = {} ctx['mailbox'] = mb ctx['mailbox_slug'] = mailbox_slug return render_to_response('radar/edit.html', TemplateContext(request, ctx))
def manage_subscriptions(request, mailbox_slug): ctx = request.context mb = ctx.get_mailbox(mailbox_slug) if mb is None: return HttpResponse(status=404) info = MailboxInfo.get(mb) ctx = {} ctx['mailbox_slug'] = mailbox_slug ctx['mailbox_title'] = info.title or mailbox_slug return render_to_response('radar/subscriptions.html', TemplateContext(request, ctx))
def list_mailboxes(request): ctx = request.context mailboxes = [] for mb in ctx.iter_mailboxes(): if not ctx.user.has_perm(PERM_READ, mb): continue slug = ctx.get_mailbox_slug(mb.name) info = MailboxInfo.get(mb) mailboxes.append({ 'slug': slug, 'title': info.title or 'Untitled', 'db': mb }) return render_to_response('radar/list_mailboxes.html', TemplateContext(request, {'mailboxes': mailboxes}))
def view_mailbox(request, mailbox_slug): ctx = request.context mb = ctx.get_mailbox(mailbox_slug) if mb is None: return HttpResponse(status=404) params = {'limit': 10, 'include_docs': True, 'reduce': False, 'descending': True} info = MailboxInfo.get(mb) items = Message.view(mb, Message.by_timestamp, **params) ctx = {} ctx['mailbox_slug'] = mailbox_slug ctx['mailbox_title'] = info.title or mailbox_slug ctx['items'] = items return render_to_response('radar/view_mailbox.html', TemplateContext(request, ctx))
def front_page(request): return render_to_response('radar/front_page.html', TemplateContext(request, {}))
def signup(request): if request.method == 'GET': return render_to_response('radar/signup.html', TemplateContext(request, {}))
def logout(request): request.context.set_session_user(None) return render_to_response('radar/logout.html', TemplateContext(request, {}))
def login(request): next_page = request.params.get('next', request.context.url_for('front_page')) ctx = {'next': next_page} return render_to_response('radar/login.html', TemplateContext(request, ctx))