Esempio n. 1
0
def mobile_view(request, url='/'):
    "Returns the same page in mobile view"
    
    if not url:
        url = '/'
    
    view, args, kwargs = resolve(url)
    
    if view == mobile_view:
        raise Http404("OMG, I see myself!")
     
    kwargs['request'] = request
    kwargs['response_format'] = 'html'
    response = view(*args, **kwargs)
    
    response = csrf().process_response(request, response)
    
    if response.status_code == 302 and not response['Location'][:2] == '/m':
        response['Location'] = '/m' + response['Location']  
    
    return response
Esempio n. 2
0
def mobile_view(request, url='/'):
    "Returns the same page in mobile view"

    if not url:
        url = '/'

    view, args, kwargs = resolve(url)

    if view == mobile_view:
        raise Http404("OMG, I see myself!")

    kwargs['request'] = request
    kwargs['response_format'] = 'html'
    response = view(*args, **kwargs)

    response = csrf().process_response(request, response)

    if response.status_code == 302 and not response['Location'][:2] == '/m':
        response['Location'] = '/m' + response['Location']

    return response
Esempio n. 3
0
def ajax_popup(request, popup_id='', url='/'):
    "Handles pop up forms and requests, by extracting only the required content from response content"
    
    view, args, kwargs = resolve(url)
    
    if not request.user.username:
        return HttpResponseRedirect('/accounts/login')
    
    modules = Module.objects.all()
    active = None
    for module in modules:
        try:
            import_name = module.name + "." + settings.HARDTREE_MODULE_IDENTIFIER
            hmodule = __import__(import_name, fromlist=[str(module.name)])
            urls = hmodule.URL_PATTERNS
            for regexp in urls:
                if re.match(regexp, url):
                    active = module
        except ImportError:
            pass
        except AttributeError:
            pass
    
    response = None
    if active:
        if not request.user.get_profile().has_permission(active):
            response = user_denied(request, "You do not have access to the %s module" % unicode(active), 
                                   response_format='ajax')
    
    if not response:
        if view == ajax_popup:
            raise Http404("OMG, I see myself!")
        
        kwargs['request'] = request
        kwargs['response_format'] = 'ajax'
        response = view(*args, **kwargs)
            
        response = csrf().process_response(request, response)
    
    module_inner = ""
    regexp = r"<!-- module_content_inner -->(?P<module_inner>.*?)<!-- /module_content_inner -->"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        module_inner += block.group('module_inner').strip()
    
    title = ""
    regexp = r"<div class=\\\"title\\\">(?P<title>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        title += block.group('title').replace('\\n', '').strip()
    if not title:
        blocks = re.finditer(r"<title>(?P<title>.*?)</title>", response.content, re.DOTALL)
        for block in blocks:
            title += block.group('title').replace('\\n', '').strip()
    
    subtitle = ""
    regexp = r"<div class=\\\"subtitle-block\\\">(?P<subtitle>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        subtitle += block.group('subtitle').replace('\\n', '').strip()
    
    context = {'content': module_inner,
               'title': title,
               'subtitle': subtitle}
        
    context['popup_id'] = popup_id
    context['url']      = request.path

    if settings.HARDTREE_RESPONSE_FORMATS['json'] in response.get('Content-Type', 'text/html'):
        new_response = render_to_response('core/ajax_popup', context,
                                          context_instance=RequestContext(request), response_format='json')
    else:
        new_response = HttpResponse(json.dumps({'popup': context}))

    new_response.mimetype = settings.HARDTREE_RESPONSE_FORMATS['json']
    try:
        jsonresponse = json.loads(response.content)
        if 'redirect' in jsonresponse:
            new_response.status_code = 302
    except Exception:
        new_response.status_code = response.status_code
    
    
    return new_response
Esempio n. 4
0
def ajax_popup(request, popup_id='', url='/'):
    "Handles pop up forms and requests, by extracting only the required content from response content"

    view, args, kwargs = resolve(url)

    if not request.user.username:
        return HttpResponseRedirect('/accounts/login')

    modules = Module.objects.all()
    active = None
    for module in modules:
        try:
            import_name = module.name + "." + settings.HARDTREE_MODULE_IDENTIFIER
            hmodule = __import__(import_name, fromlist=[str(module.name)])
            urls = hmodule.URL_PATTERNS
            for regexp in urls:
                if re.match(regexp, url):
                    active = module
        except ImportError:
            pass
        except AttributeError:
            pass

    response = None
    if active:
        if not request.user.get_profile().has_permission(active):
            response = user_denied(request,
                                   "You do not have access to the %s module" %
                                   unicode(active),
                                   response_format='ajax')

    if not response:
        if view == ajax_popup:
            raise Http404("OMG, I see myself!")

        kwargs['request'] = request
        kwargs['response_format'] = 'ajax'
        response = view(*args, **kwargs)

        response = csrf().process_response(request, response)

    module_inner = ""
    regexp = r"<!-- module_content_inner -->(?P<module_inner>.*?)<!-- /module_content_inner -->"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        module_inner += block.group('module_inner').strip()

    title = ""
    regexp = r"<div class=\\\"title\\\">(?P<title>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        title += block.group('title').replace('\\n', '').strip()
    if not title:
        blocks = re.finditer(r"<title>(?P<title>.*?)</title>",
                             response.content, re.DOTALL)
        for block in blocks:
            title += block.group('title').replace('\\n', '').strip()

    subtitle = ""
    regexp = r"<div class=\\\"subtitle-block\\\">(?P<subtitle>.*?)</div>"
    blocks = re.finditer(regexp, response.content, re.DOTALL)
    for block in blocks:
        subtitle += block.group('subtitle').replace('\\n', '').strip()

    context = {'content': module_inner, 'title': title, 'subtitle': subtitle}

    context['popup_id'] = popup_id
    context['url'] = request.path

    if settings.HARDTREE_RESPONSE_FORMATS['json'] in response.get(
            'Content-Type', 'text/html'):
        new_response = render_to_response(
            'core/ajax_popup',
            context,
            context_instance=RequestContext(request),
            response_format='json')
    else:
        new_response = HttpResponse(json.dumps({'popup': context}))

    new_response.mimetype = settings.HARDTREE_RESPONSE_FORMATS['json']
    try:
        jsonresponse = json.loads(response.content)
        if 'redirect' in jsonresponse:
            new_response.status_code = 302
    except Exception:
        new_response.status_code = response.status_code

    return new_response