def home(request, cat_name=None, sec_name=None): c = get_common_context(request) if not request.user.is_authenticated(): if cat_name is None: category = Category.get_by_slug('first') else: category = Category.get_by_slug(cat_name) if sec_name is None: section = Section.objects.filter(category=category)[0] else: section = Section.get_by_slug(category, sec_name) c['title'] = u'' c['can_request'] = (category.id == 1) c['category'] = category c['section'] = section c['request_url'] = '/'.join(['edu', category.slug, section.slug]) return render_to_response('section_deny.html', c, context_instance=RequestContext(request)) user = request.user profile = user.get_profile() have_access = list(profile.have_access()) if cat_name is None: if len(have_access) > 0: category = have_access[-1] else: category = Category.get_by_slug('first') else: category = Category.get_by_slug(cat_name) can_access = category in have_access request_form = RequestForm() if request.method == "POST": if request.POST['action'] == 'request': request_form = RequestForm(request.POST) if request_form.is_valid(): r = request_form.save(commit=False) r.profile = profile r.category = category r.save() r.send() return HttpResponseRedirect(request.path) c['request_form'] = request_form if sec_name is None: section = Section.objects.filter(category=category)[0] if 'section' in request.session: sections = Section.objects.filter(category=category, id=request.session['section']) if sections: section = sections[0] else: section = Section.get_by_slug(category, sec_name) request.session['section'] = section.id c['category'] = category c['section'] = section c['request_url'] = '/'.join(['edu', category.slug, section.slug]) if can_access: c['title'] = section.name return render_to_response('section_allow.html', c, context_instance=RequestContext(request)) else: c['title'] = u'' c['can_request'] = (category.id == 1) or (category.id == (len(have_access) + 1)) c['status'] = profile.status(category) return render_to_response('section_deny.html', c, context_instance=RequestContext(request))