Esempio n. 1
0
def create(request):
    '''Create a list'''
    if request.method == 'POST':
        form = ListForm(request.POST)
        if form.is_valid():
            # POLISH: Optimize 'path' and 'domain' kwargs of set_cookie for minimum HTTP load
            list = form.save(commit=False)
            list.record_request(request)
            list.published = True
            list.save()
            result = HttpResponseRedirect('/lists/%d/' % list.id)
            # The following cookies weren't being set properly.
#            result.set_cookie('nickname', value=list.nickname, max_age=157680000,
#                expires='Mon, 31-Dec-68 10:00:00 GMT', path='/')
#            result.set_cookie('email', value=list.email, max_age=157680000,
#                expires='Mon, 31-Dec-68 10:00:00 GMT', path='/')
            return result
    else:
        form = None

    empty_list(request=request)

    return template(request, "lists/list_create.html", with_showcases({
        'form': ListForm(instance=(form or empty_list(request=request))),
    }))
Esempio n. 2
0
def detail(request, object_id, access_code=None):
    '''View a (possibly unpublished) list'''
    list = get_object_or_404(List, pk=object_id)
    if not list.published and access_code != list.access_code:
        return HttpResponseForbidden()
    if list.censored:
        # This should probably be an HttpResponseGone
        # but we'll leave it this way since this is a common access case
        # and it'll be nice to be able to use our standard 404 page
        raise Http404
    list.views = F('views') + 1
    list.save()

    # Get uncensored entries and sort them by average rating
    entries = list.entry_set.filter(
        censored=False,
    )
    entries = entries.extra(select={
        'sophisticated_rating': \
        '((100/%s*rating_score/(rating_votes+%s))+100)/2' % \
        (Entry.rating.range, Entry.rating.weight),
    })
    entries = entries.order_by('-sophisticated_rating')[:50]

    comments = list.listcomment_set.filter(
        censored=False,
    )[:50]

    # Determine if the user is the list's adminstrator
    # As of 2010-8-6, the only adminstrator privilege is publishing the list
    try:
        admin_code = request.GET['admin_code']
    except (AttributeError, KeyError):
        admin_code = None
    if admin_code == list.admin_code:
        admin_access = True
    else:
        admin_access = False

    return template(request, 'lists/list_detail.html', with_showcases({
        'list': list,
        'entries': entries,
        'comments': comments,
        'entry_form': EntryForm(instance=empty_entry(list, request=request)),
        'comment_form': CommentForm(instance=empty_comment(list, request=request)),
        'admin_access': admin_access,
    }))
Esempio n. 3
0
def index(request):
    return template(request, 'lists/list_home.html', with_showcases({
        'main_header': 'Recently created lists',
        'main_showcase': recent()[:6],
    }))