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))), }))
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, }))
def index(request): return template(request, 'lists/list_home.html', with_showcases({ 'main_header': 'Recently created lists', 'main_showcase': recent()[:6], }))