Ejemplo n.º 1
0
Archivo: views.py Proyecto: kpx13/vv
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))