示例#1
0
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))
示例#2
0
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))
示例#3
0
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, {}))
示例#4
0
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))
示例#5
0
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))
示例#6
0
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, {}))
示例#7
0
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}))
示例#8
0
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, {}))
示例#9
0
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))
示例#10
0
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))
示例#11
0
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}))
示例#12
0
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))
示例#13
0
def front_page(request):
    return render_to_response('radar/front_page.html', 
                              TemplateContext(request, {}))
示例#14
0
def signup(request):
    if request.method == 'GET':
        return render_to_response('radar/signup.html', TemplateContext(request, {}))
示例#15
0
def logout(request):
    request.context.set_session_user(None)
    return render_to_response('radar/logout.html', TemplateContext(request, {}))
示例#16
0
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))