Example #1
0
def countries(request):
    context = RequestContext(request)
    countries = Country.objects.all()
    countries_disbursement_values = []
    countries_execution_values = []

    for country in countries:
        countries_disbursement_values.append({
            'name': str(country.name),
            'url_ongoing': reverse('countries_ongoing', args=[country.slug, 'disbursement'])
        })
        countries_execution_values.append({
            'name': str(country.name),
            'url_ongoing': reverse('countries_ongoing', args=[country.slug, 'execution'])
        })

    context.update({'countries_disbursement': countries_disbursement_values,
                    'countries_execution': countries_execution_values})

    if context.get('user').is_anonymous():
        countries_user = Country.objects.all()
        context.update({'user': {'is_anonymous': True}})
    else:
        countries = context.get('user').dashboarduser.countries.all()
        context.update({'user': context.get('user')})

    context.update({'countries': countries})
    return render_to_response("countries.html", context)
Example #2
0
def life_save(request):
    context = RequestContext(request)
    user = context.get('user')
    if user.dashboarduser.have_database_access is False:
        return redirect('index')
    countries = context.get('user').dashboarduser.countries.all()

    context.update({'countries': countries})
    return render_to_response("life_save.html", context)
Example #3
0
def life_save(request):
    context = RequestContext(request)
    user = context.get('user')
    if user.dashboarduser.have_database_access is False:
        return redirect('index')
    countries = context.get('user').dashboarduser.countries.all()

    context.update({'countries': countries})
    return render_to_response("life_save.html", context)
    def handle_pdf(self, request, queryset):
        if "pdf" not in formats:
            raise ImportError, "The site is not configured to handle pdf."

        # this is again some quick and dirty sample code
        elements = []
        styles = getSampleStyleSheet()
        styles["Title"].alignment = TA_LEFT
        styles["Title"].fontName = styles["Heading2"].fontName = "Helvetica"
        styles["Normal"].fontName = "Helvetica"
        filename = mkstemp(".pdf")[-1]
        doc = SimpleDocTemplate(filename)
        doc.pagesize = pagesizes.landscape(pagesizes.LETTER)

        request = WSGIRequest({"REQUEST_METHOD": "GET"})
        site = RequestContext(request).get("site")
        if site and site.get("title"):
            elements.append(Paragraph(site.get("title"), styles["Title"]))

        elements.append(Paragraph("%s List" % self.model.__name__, styles["Heading2"]))

        data = []
        header = False
        for row in queryset:
            if not header:
                data.append([f["name"] for f in self.fields])
                header = True
            ctx = Context({"object": row})
            values = [Template(h["bit"]).render(ctx) for h in self.fields]
            data.append(values)

        table = PDFTable(data)
        table.setStyle(
            TableStyle(
                [
                    ("ALIGNMENT", (0, 0), (-1, -1), "LEFT"),
                    ("LINEBELOW", (0, 0), (-1, -0), 2, colors.black),
                    ("LINEBELOW", (0, 1), (-1, -1), 0.8, colors.lightgrey),
                    ("FONT", (0, 0), (-1, -1), "Helvetica"),
                    ("ROWBACKGROUNDS", (0, 0), (-1, -1), [colors.whitesmoke, colors.white]),
                ]
            )
        )
        elements.append(table)
        elements.append(Paragraph("Created: %s" % datetime.now().strftime("%d/%m/%Y"), styles["Normal"]))
        doc.build(elements)

        response = HttpResponse(mimetype="application/pdf")
        response["Content-Disposition"] = "attachment; filename=report.pdf"
        response.write(open(filename).read())
        os.remove(filename)
        return response
    def test_render_context_processor_get(self):
        """ Context preprocessor GET
        """
        path = '/page/1'
        query = {'foo': 'bar'}
        request = RequestFactory().get(path, query)
        context = RequestContext(request, [context_processors.render_ctx])

        location = context.get('location')
        self.assertEqual(location.scheme, 'http')
        self.assertEqual(location.netloc, 'testserver:80')
        self.assertEqual(location.path, path)
        
        self.assertEqual('foo=bar', context.get('query').urlencode())
        self.assertEqual('', context.get('post').urlencode())
Example #6
0
 def render_oembed(self, oembed_resource, original_url, template_dir=None,
                   context=None):
     """
     Render the oembed resource and return as a string.
     
     Template directory will always fall back to 'oembed/[type].html', but
     a custom template dir can be passed in using the kwargs.
     
     Templates are given two context variables:
     - response: an OEmbedResource
     - original_url: the url that was passed to the consumer
     """
     provided_context = context or Context()
     context = RequestContext(context.get("request") or mock_request())
     context.update(provided_context)
     
     # templates are named for the resources they display, i.e. video.html
     template_name = '%s.html' % oembed_resource.type
     
     # set up template finder to fall back to the link template
     templates = [os.path.join('oembed', template_name), 'oembed/link.html']
     
     # if there's a custom template dir, look there first
     if template_dir:
         templates.insert(0, os.path.join('oembed', template_dir, template_name))
     
     template = select_template(templates)
     
     context.push()
     context['response'] = oembed_resource
     context['original_url'] = original_url
     rendered = template.render(context)
     context.pop()
     
     return rendered.strip() # rendering template may add whitespace
Example #7
0
    def get(self, request):
        request_args = dict(getattr(settings, 'BROWSERID_REQUEST_ARGS', {}))

        # Only pass an email to the JavaScript if the current user was
        # authed with our auth backend.
        backend_name = self.request.session.get(auth.BACKEND_SESSION_KEY)
        backend = auth.load_backend(backend_name) if backend_name else None

        if isinstance(backend, BrowserIDBackend):
            email = getattr(request.user, 'email', '')
        else:
            email = ''

        # Different CSRF libraries (namely session_csrf) store the CSRF
        # token in different places. The only way to retrieve the token
        # that works with both the built-in CSRF and session_csrf is to
        # pull it from the template context processors via
        # RequestContext.
        context = RequestContext(request)
        csrf_token = context.get('csrf_token', None)

        return JSONResponse({
            'userEmail': email,
            'loginUrl': reverse('browserid.login'),
            'logoutUrl': reverse('browserid.logout'),
            'requestArgs': request_args,
            'csrfToken': csrf_token,
        })
Example #8
0
def register(request):
    request_context = RequestContext(request)
    if request.user.is_authenticated():
        return HttpResponseRedirect("/login")

    next = request.REQUEST.get('next', '')

    if request.method == 'POST':
        form = NewUserForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            user = authenticate(email=form.cleaned_data['email'],
                                password=form.cleaned_data['password1'])
            auth_login(request, user)
            p = UserProfile(id=user.id).assign_slug()
            p.settings["interface_language"] = request_context.get("interfaceLang")
            p.save()
            if "noredirect" in request.POST:
                return HttpResponse("ok")
            elif "new?assignment=" in request.POST.get("next",""):
                next = request.POST.get("next", "")
                return HttpResponseRedirect(next)
            else:
                next = request.POST.get("next", "/") + "?welcome=to-sefaria"
                return HttpResponseRedirect(next)
    else:
        form = NewUserForm()

    return render_to_response("registration/register.html", 
                                {'form' : form, 'next': next}, 
                                RequestContext(request))
Example #9
0
def project_view(request, project_id=None):
    c = RequestContext(request)
    profile = request.user.profile    
    client = AsanaClient(profile)
    if not request.session.get('workspace'):
        workspaces = client.get_workspaces()
        if len(workspaces) > 0:
            workspace = workspaces[0].get('id')
            request.session['workspace'] = workspace
        else:
            return redirect('/logout')
        
    if not request.session.get('user_projects'):
        request.session['user_projects'] = client.get_projects_for_user(workspace)

    c['user_projects'] = request.session['user_projects']
    
    for project in c['user_projects']:
        if project.get('id') == int(project_id):
            c['default_user_project'] = project
            break
        
    if c.get('default_user_project') is None:
        return redirect('/logout')

    c['followers'] = c['default_user_project'].get('followers')

    #get tasks for the default user project
    c['tasks'] = client.get_tasks_for_project(c['user_projects'][0].get('id'))
        
    return render_to_response('logged_in_home.html', c)
Example #10
0
def get_response(request, context, template_name):
    context.update({'user': request.user})
    context_instance = RequestContext(request)
    csrf_token = context_instance.get('csrf_token')
    context.update({'csrf_token': csrf_token})
    msg_response = render_to_string(template_name, context)
    return HttpResponse(msg_response)
    def test_render_context_processor_post(self):
        """ Context preprocessor POST
        """
        path = '/page/1'
        query = path + '?foo=bar'
        params = {'record_id': '420'}
        request = RequestFactory().post(query, params)
        context = RequestContext(request, [context_processors.render_ctx])

        location = context.get('location')
        self.assertEqual(location.scheme, 'http')
        self.assertEqual(location.netloc, 'testserver:80')
        self.assertEqual(location.path, path)
        
        self.assertEqual('foo=bar', context.get('query').urlencode())
        self.assertEqual('record_id=420', context.get('post').urlencode())
Example #12
0
def generate_menu(request):
    request_context = RequestContext(request)
    active_url = request.path
    menu = request_context.get('menu', []) + [
        {
            'title': 'Home',
            'url': determine_url('home'),
            # 'classes': '',
        },
        {
            'title': 'About',
            'url': determine_url('about'),
        },
        {
            'title': 'Chat',
            'url': determine_url('chat:chat-session'),
        },
    ]
    for item in menu:
        if active_url == item['url']:
            item['active'] = 'active'
    return {
        'menu': menu,
        'authentication_installed': True,
        # 'authentication_installed': 'authentication' in settings.INSTALLED_APPS and not settings.DISABLE_AUTHENTICATION,
    }
Example #13
0
def register(request):
    request_context = RequestContext(request)
    if request.user.is_authenticated():
        return HttpResponseRedirect("/login")

    next = request.REQUEST.get('next', '')

    if request.method == 'POST':
        form = NewUserForm(request.POST)
        if form.is_valid():
            new_user = form.save()
            user = authenticate(email=form.cleaned_data['email'],
                                password=form.cleaned_data['password1'])
            auth_login(request, user)
            p = UserProfile(id=user.id).assign_slug()
            p.settings["interface_language"] = request_context.get("interfaceLang")
            p.save()
            if "noredirect" in request.POST:
                return HttpResponse("ok")
            elif "new?assignment=" in request.POST.get("next",""):
                next = request.POST.get("next", "")
                return HttpResponseRedirect(next)
            else:
                next = request.POST.get("next", "/") + "?welcome=to-sefaria"
                return HttpResponseRedirect(next)
    else:
        form = NewUserForm()

    return render_to_response("registration/register.html", 
                                {'form' : form, 'next': next}, 
                                RequestContext(request))
Example #14
0
def show_group_list(request, object_type='projects', identity=None, return_message=None):
    """
    The landing page in the "profile" section of Local Ground, where the user
    gets to view the projects/views to which s/he is authorized.
    """
    from localground.account.models import Project, View
    context = RequestContext(request)
    r = request.GET or request.POST
    object_list, object_name = None, None
    ModelClass = Form_LU.get(object_type).get('model_class')
    if request.POST:
        return_message = _batch_update(request, ModelClass, identity)
    object_list = ModelClass.objects.get_objects_with_counts(identity, ordering='id')
    group_object = ModelClass()
    context.update({
        'username': identity.username if identity is not None else 'all',
        'object_list': object_list,
        'group_object': group_object,
        'raw_url': '/profile/%s/' % object_type, #todo: deprecate
        'url': '/profile/%s/' % object_type,
        'url_raw': '/profile/%s/' % object_type, #todo: deprecate
        'object_type': object_type
    })
    if return_message is not None:
        context.update({ 'return_message': return_message })
    if request.user.is_superuser or context.get('is_impersonation'):
        context.update({'users': Project.get_users()})
    context.update(prep_paginator(request, object_list))
    return render_to_response('groups.html', context)
    def get(self, request):
        request_args = dict(getattr(settings, 'BROWSERID_REQUEST_ARGS', {}))

        # Only pass an email to the JavaScript if the current user was
        # authed with our auth backend.
        backend_name = self.request.session.get(auth.BACKEND_SESSION_KEY)
        backend = auth.load_backend(backend_name) if backend_name else None

        if isinstance(backend, BrowserIDBackend):
            email = getattr(request.user, 'email', '')
        else:
            email = ''

        # Different CSRF libraries (namely session_csrf) store the CSRF
        # token in different places. The only way to retrieve the token
        # that works with both the built-in CSRF and session_csrf is to
        # pull it from the template context processors via
        # RequestContext.
        context = RequestContext(request)
        csrf_token = context.get('csrf_token', None)

        return JSONResponse({
            'userEmail': email,
            'loginUrl': reverse('browserid.login'),
            'logoutUrl': reverse('browserid.logout'),
            'requestArgs': request_args,
            'csrfToken': csrf_token,
        })
Example #16
0
def sm2015milestone(request):
    context = RequestContext(request)
    user = context.get('user')
    if user.dashboarduser.have_database_access is False:
        return redirect('index')
    dates = Sm2015Milestone.get_dates()
    context.update({'dates': dates})
    return render_to_response("sm2015milestone.html", context)
Example #17
0
def environment(request):
    logger.debug("Inside Context Processor constants")
    request_context = RequestContext(request)
    object = request_context.get("object",otherwise="NotSet")
    return {
        'constants':constants,
        'object':object
    }
Example #18
0
def sm2015milestone(request):
    context = RequestContext(request)
    user = context.get('user')
    if user.dashboarduser.have_database_access is False:
        return redirect('index')
    dates = Sm2015Milestone.get_dates()
    context.update({'dates': dates})
    return render_to_response("sm2015milestone.html", context)
Example #19
0
    def test_context_processor(self):
        """Test context_processors.django_settings
        """
        processors = settings.TEMPLATE_CONTEXT_PROCESSORS
        self.assertIn('t42cc.context_processors.django_settings', processors)

        #check for availability of django_settings attribute in context
        context = RequestContext(HttpRequest())
        self.assertTrue(context.get('django_settings') is not None)
Example #20
0
    def get(self, request):
        # Different CSRF libraries (namely session_csrf) store the CSRF
        # token in different places. The only way to retrieve the token
        # that works with both the built-in CSRF and session_csrf is to
        # pull it from the template context processors via
        # RequestContext.
        context = RequestContext(request)
        csrf_token = context.get('csrf_token', None)

        return HttpResponse(csrf_token)
Example #21
0
    def get(self, request):
        # Different CSRF libraries (namely session_csrf) store the CSRF
        # token in different places. The only way to retrieve the token
        # that works with both the built-in CSRF and session_csrf is to
        # pull it from the template context processors via
        # RequestContext.
        context = RequestContext(request)
        csrf_token = context.get('csrf_token', None)

        return HttpResponse(csrf_token)
Example #22
0
def ajax_notifications(request):
    if request.user.is_authenticated():
        context = RequestContext(request)
        count = 0
        # TODO use reduce
        for h in context.get('header', [])():
            count += h[0].get('count', 0)
    else:
        count = -1

    return HttpResponse('{"count": %d}' % count)
Example #23
0
def ajax_notifications(request):
    if request.user.is_authenticated():
        context = RequestContext(request)
        count = 0
        # TODO use reduce
        for h in context.get('header', [])():
            count += h[0].get('count', 0)
    else:
        count = -1

    return HttpResponse('{"count": %d}' % count)
Example #24
0
def page(request, menu_slug=None, submenu_slug=None):
    """ This is, basically, a wrapper around the 
        menu RequestContextProcessor, allowing us
        to capture URL's that have not been captured
        elsewhere in the URL space. 
        
        Templates are looked for in several directories,
        making it easy to customize the looks of a particular
        part of the site:
        
        simplesite/page.html
        simplesite/<menu_current.slug>/page.html
        simplesite/<menu_current.slug>/<submenu_current.slug>/page.html
        
        In these menu, all the variables from the context_processor are
        fully available, as in other pages within the site.
    """
    
    context = RequestContext(request)

    page = context.get('page_current')
    if not (page and page.publish):
        raise Http404
        
    submenu = context.get('submenu_current')
    menu = context.get('menu_current')

    template_names = []
    if submenu:
        template_names.append('simplesite/%s/%s/page.html' % \
                                (menu.slug, submenu.slug))
    if menu:
        template_names.append('simplesite/%s/page.html' % menu.slug)
    
    template_names.append('simplesite/page.html')
    
    logger.debug('Searching for templates in %s' % template_names)
    
    return render_to_response(template_names, context)

    
Example #25
0
def federation_view(request, federation_slug=None):
    if federation_slug:
        request.session['%s_process_done' % federation_slug] = False
        request.session['%s_num_entities' % federation_slug] = 0
        request.session['%s_cur_entities' % federation_slug] = 0
        request.session.save()

    federation = get_object_or_404(Federation, slug=federation_slug)

    entity_type = None
    if request.GET and 'entity_type' in request.GET:
        entity_type = request.GET['entity_type']
        ob_entities = Entity.objects.filter(federations__id=federation.id).filter(types__xmlname=entity_type)
    else:
        ob_entities = Entity.objects.filter(federations__id=federation.id)
    
    ob_entities = ob_entities.prefetch_related('types', 'federations')
    pagination = _paginate_fed(ob_entities, request.GET.get('page'))

    entities = []
    for entity in ob_entities:
        entities.append({
            'entityid': entity.entityid,
            'name': entity.name,
            'absolute_url': entity.get_absolute_url(),
            'types': [unicode(item) for item in entity.types.all()],
            'federations': [(unicode(item.name), item.get_absolute_url()) for item in entity.federations.all()],
        })

    if 'format' in request.GET:
        return export_query_set(request.GET.get('format'), entities,
                                'entities_search_result', ('entityid', 'types', 'federations'))

    context = RequestContext(request)
    user = context.get('user', None)
    add_entity = user and user.has_perm('metadataparser.add_federation')
    pie_chart = fed_pie_chart(request, federation.id)

    return render_to_response('metadataparser/federation_view.html',
            {'settings': settings,
             'federation': federation,
             'entity_types': DESCRIPTOR_TYPES,
             'entity_type': entity_type or 'All',
             'fed_types': dict(FEDERATION_TYPES),
             'entities': entities,
             'show_filters': True,
             'add_entity': add_entity,
             'lang': request.GET.get('lang', 'en'),
             'update_entities': request.GET.get('update', 'false'),
             'statcharts': [pie_chart],
             'pagination': pagination,
            }, context_instance=context)
    def test_content_of_template_context_processor(self):
        """
        Compare settings in template context processor
        with file settings.py(from django.conf import settings)
        """
        rf = RequestFactory()
        request = rf.get(reverse('home'))
        request_context = RequestContext(request)
        django_settings = request_context.get('SETTINGS')
        self.assertEqual(django_settings.INSTALLED_APPS,
                         settings.INSTALLED_APPS)

        request_context = RequestContext(request)
        django_settings = request_context.get('SETTINGS')
        self.assertEqual(django_settings.MIDDLEWARE_CLASSES,
                         settings.MIDDLEWARE_CLASSES)

        request = rf.get(reverse('request'))
        request_context = RequestContext(request)
        django_settings = request_context.get('SETTINGS')
        self.assertEqual(django_settings.STATICFILES_DIRS,
                         settings.STATICFILES_DIRS)
Example #27
0
def milestonesResponder(request, activeMenuItem=None):
    from PManager.viewsExt import headers

    headerValues = headers.initGlobals(request)
    create_milestone_from_post(request, headerValues)
    user = request.user
    if not user.is_authenticated():
        return HttpResponseRedirect('/')

    context = RequestContext(request)
    selected_project = context.get("CURRENT_PROJECT")
    if selected_project:
        mprojects = (selected_project, )
    else:
        mprojects = context.get("projects")

    return render(
        request, 'milestones/index.html', {
            'm_projects': mprojects,
            'pageTitle': u'Цели',
            'activeMenuItem': activeMenuItem
        })
Example #28
0
    def get(self, request):
        # Different CSRF libraries (namely session_csrf) store the CSRF
        # token in different places. The only way to retrieve the token
        # that works with both the built-in CSRF and session_csrf is to
        # pull it from the template context processors via
        # RequestContext.
        context = RequestContext(request)

        # csrf_token might be a lazy value that triggers side-effects,
        # so we need to force it to a string.
        csrf_token = six.text_type(context.get('csrf_token', ''))

        return HttpResponse(csrf_token)
Example #29
0
    def get(self, request):
        # Different CSRF libraries (namely session_csrf) store the CSRF
        # token in different places. The only way to retrieve the token
        # that works with both the built-in CSRF and session_csrf is to
        # pull it from the template context processors via
        # RequestContext.
        context = RequestContext(request)

        # csrf_token might be a lazy value that triggers side-effects,
        # so we need to force it to a string.
        csrf_token = six.text_type(context.get('csrf_token', ''))

        return HttpResponse(csrf_token)
Example #30
0
def page(request, menu_slug=None, submenu_slug=None):
    """ This is, basically, a wrapper around the 
        menu RequestContextProcessor, allowing us
        to capture URL's that have not been captured
        elsewhere in the URL space. 
        
        Templates are looked for in several directories,
        making it easy to customize the looks of a particular
        part of the site:
        
        simplesite/page.html
        simplesite/<menu_current.slug>/page.html
        simplesite/<menu_current.slug>/<submenu_current.slug>/page.html
        
        In these menu, all the variables from the context_processor are
        fully available, as in other pages within the site.
    """

    context = RequestContext(request)

    page = context.get('page_current')
    if not (page and page.publish):
        raise Http404

    submenu = context.get('submenu_current')
    menu = context.get('menu_current')

    template_names = []
    if submenu:
        template_names.append('simplesite/%s/%s/page.html' % \
                                (menu.slug, submenu.slug))
    if menu:
        template_names.append('simplesite/%s/page.html' % menu.slug)

    template_names.append('simplesite/page.html')

    logger.debug('Searching for templates in %s' % template_names)

    return render_to_response(template_names, context)
Example #31
0
def get_plugin_index_data(base_plugin, request):
    text_bits = []

    instance, plugin_type = base_plugin.get_plugin_instance()

    if instance is None or instance.plugin_type in EXCLUDED_PLUGINS:
        # this is an empty plugin or excluded from search
        return text_bits

    search_fields = getattr(instance, 'search_fields', [])
    if hasattr(instance, 'search_fulltext'):
        # check if the plugin instance has search enabled
        search_contents = instance.search_fulltext
    elif hasattr(base_plugin, 'search_fulltext'):
        # now check in the base plugin instance (CMSPlugin)
        search_contents = base_plugin.search_fulltext
    elif hasattr(plugin_type, 'search_fulltext'):
        # last check in the plugin class (CMSPluginBase)
        search_contents = plugin_type.search_fulltext
    else:
        # disabled if there's search fields defined,
        # otherwise it's enabled.
        search_contents = not bool(search_fields)

    if search_contents:
        context = RequestContext(request)
        updates = {}
        engine = Engine.get_default()

        for processor in engine.template_context_processors:
            updates.update(processor(context.request))
        context.dicts[context._processors_index] = updates

        try:
            # django-cms>=3.5
            renderer = request.toolbar.content_renderer
        except AttributeError:
            # django-cms>=3.4
            renderer = context.get('cms_content_renderer')

        plugin_contents = _render_plugin(instance, context, renderer)

        if plugin_contents:
            text_bits = get_cleaned_bits(plugin_contents)
    else:
        values = (get_field_value(instance, field) for field in search_fields)

        for value in values:
            cleaned_bits = get_cleaned_bits(value or '')
            text_bits.extend(cleaned_bits)
    return text_bits
Example #32
0
def student_list(request):
	"""Return student list as JSON for adding into the DOM dynamically."""
	context = RequestContext(request)
	murl = context.get("MEDIA_URL")
	data = serializers.serialize('json',Student.objects.filter(user=request.user))
	js = json.loads(data)

	# Fix the image fields, which for some reason are not properly referenced to settings.MEDIA_URL
	for student in js:
		if murl not in student['fields']['student_image']:
			student['fields']['student_image'] = murl + student['fields']['student_image']

	data = json.dumps(js)
	return HttpResponse(data,content_type='application/json')
Example #33
0
def decode_jinga_template(self, request, filename, context={},mimetype=''):
    template_dirs = settings.TEMPLATE_DIRS
    if mimetype == '':
        mimetype = settings.DEFAULT_CONTENT_TYPE
    env = Environment(loader=FileSystemLoader(template_dirs))
        
    request_context = RequestContext(request, context)
    csrf = request_context.get('csrf_token')

    context['csrf_token'] = csrf
    template = env.get_template(filename)
    rendered = template.render(**context)        
        
    return rendered
Example #34
0
def decode_jinga_template(self, request, filename, context={}, mimetype=''):
    template_dirs = settings.TEMPLATE_DIRS
    if mimetype == '':
        mimetype = settings.DEFAULT_CONTENT_TYPE
    env = Environment(loader=FileSystemLoader(template_dirs),
                      extensions=[CompressorExtension])

    request_context = RequestContext(request, context)
    csrf = request_context.get('csrf_token')

    context['csrf_token'] = csrf
    template = env.get_template(filename)
    rendered = template.render(**context)

    return rendered
Example #35
0
def account_form(request, id=None):
    '''
    edit account info
    '''

    if not has_elevated_perm(request, 'membership', 'add_account'):
        return HttpResponseRedirect(reverse('welcome'))

    context = RequestContext(request)
    if id:
        account = get_object_or_404(models.Account, id=id)
        context['edit'] = True
        old_values = copy.deepcopy(account.__dict__)
    else:
        account = models.Account()
    if request.method == 'POST':
        if 'cancel' in request.POST:
            if id:
                return HttpResponseRedirect(reverse('account', args=[id]))
            else:
                return HttpResponseRedirect(reverse('accounts'))
        if 'delete' in request.POST:
            account.delete()
            log(request, account, 'delete')
            return HttpResponseRedirect(reverse('accounts'))
        form = forms.AccountForm(request.POST, instance=account)
        related_member_formset = forms.RelatedMemberFormSet(request.POST, 
                instance=account, prefix='related_member')
        if form.is_valid() and related_member_formset.is_valid():
            if context.get('edit'):
                account = form.save()
                log(request, account, 'edit', old_values=old_values)
            else:
                account = form.save()
                log(request, account, 'add')
            _setattr_formset_save(request, related_member_formset, 'account', account)
            return HttpResponseRedirect(reverse('account', args=[account.id]))
    else:
        form = forms.AccountForm(instance=account)
        related_member_formset = forms.RelatedMemberFormSet(instance=account, 
                prefix='related_member')
    context['account'] = account
    context['form'] = form
    context['formsets'] = [
        (related_member_formset, 'Members'), 
    ]
    template = get_template('membership/account_form.html')
    return HttpResponse(template.render(context))
Example #36
0
def persona_csrf(request):
    """Fetch a CSRF token for the frontend JavaScript."""
    # Bluntly stolen from django-browserid

    # Different CSRF libraries (namely session_csrf) store the CSRF
    # token in different places. The only way to retrieve the token
    # that works with both the built-in CSRF and session_csrf is to
    # pull it from the template context processors via
    # RequestContext.
    context = RequestContext(request)

    # csrf_token might be a lazy value that triggers side-effects,
    # so we need to force it to a string.
    csrf_token = unicode(context.get('csrf_token', ''))

    return HttpResponse(csrf_token)
Example #37
0
File: views.py Project: Osmose/kuma
def persona_csrf(request):
    """Fetch a CSRF token for the frontend JavaScript."""
    # Bluntly stolen from django-browserid

    # Different CSRF libraries (namely session_csrf) store the CSRF
    # token in different places. The only way to retrieve the token
    # that works with both the built-in CSRF and session_csrf is to
    # pull it from the template context processors via
    # RequestContext.
    context = RequestContext(request)

    # csrf_token might be a lazy value that triggers side-effects,
    # so we need to force it to a string.
    csrf_token = unicode(context.get('csrf_token', ''))

    return HttpResponse(csrf_token)
Example #38
0
def index(request):
    maps = Map.objects.filter(language__acronym=request.LANGUAGE_CODE)
    countries_map = []
    for country_map in maps:
        try:
            table_avances = AvanceFisicoFinanciero.objects \
                .filter(country=country_map.country,
                                            language__acronym=
                                            request.LANGUAGE_CODE).last()

            variation_physical = table_avances.avance_fisico_planificado - table_avances.avance_fisico_real
            variation_financial = table_avances.avance_financiero_planificado - table_avances.avance_financiero_actual
            if variation_physical <= 25 and variation_financial <= 25:
                pin_color = 'green'
            elif variation_physical >= 25 or variation_financial >= 25:
                pin_color = 'yellow'
            elif variation_physical >= 25 and variation_financial >= 25:
                pin_color = 'red'

            if country_map.more_info_link:
                link = country_map.more_info_link.strip().lstrip('/')
                infos_url = "/{0}".format(link)
            else:
                infos_url = "{0}?country={1}&country_slug={2}".format(
                    reverse('country'), country_map.country.id,
                    country_map.country.slug)
            country = {
                'lat': str(country_map.country.latlng.split(',')[0]),
                'lng': str(country_map.country.latlng.split(',')[1]),
                'name': str(country_map.country.name),
                'goal': str(country_map.goal),
                'short_description': unicode(country_map.short_description),
                'pin_color': pin_color,
                'infos_url': infos_url
            }
            countries_map.append(country)
        except (AvanceFisicoFinanciero.DoesNotExist, IndexError,
                AttributeError):
            continue

    context = RequestContext(request)
    countries_user = context.get('user').dashboarduser.countries.all()

    context.update({'countries_map': json.dumps(countries_map)})
    context.update({'countries_user': countries_user})

    return render_to_response('index.html', context)
Example #39
0
def index(request):
    maps = Map.objects.filter(language__acronym=request.LANGUAGE_CODE)
    countries_map = []
    for country_map in maps:
        try:
            table_avances = AvanceFisicoFinanciero.objects \
                .filter(country=country_map.country,
                                            language__acronym=
                                            request.LANGUAGE_CODE).last()

            variation_physical = table_avances.avance_fisico_planificado - table_avances.avance_fisico_real
            variation_financial = table_avances.avance_financiero_planificado - table_avances.avance_financiero_actual
            if variation_physical <= 25 and variation_financial <= 25:
                pin_color = 'green'
            elif variation_physical >= 25 or variation_financial >= 25:
                pin_color = 'yellow'
            elif variation_physical >= 25 and variation_financial >= 25:
                pin_color = 'red'

            if country_map.more_info_link:
                link = country_map.more_info_link.strip().lstrip('/')
                infos_url = "/{0}".format(link)
            else:
                infos_url = "{0}?country={1}&country_slug={2}".format(reverse('country'),
                                                                      country_map.country.id,
                                                                      country_map.country.slug)
            country = {
                'lat': str(country_map.country.latlng.split(',')[0]),
                'lng': str(country_map.country.latlng.split(',')[1]),
                'name': str(country_map.country.name),
                'goal': str(country_map.goal),
                'short_description': unicode(country_map.short_description),
                'pin_color': pin_color,
                'infos_url': infos_url
            }
            countries_map.append(country)
        except (AvanceFisicoFinanciero.DoesNotExist, IndexError, AttributeError):
            continue


    context = RequestContext(request)
    countries_user = context.get('user').dashboarduser.countries.all()

    context.update({'countries_map': json.dumps(countries_map)})
    context.update({'countries_user': countries_user})

    return render_to_response('index.html', context)
Example #40
0
def dashboard_login_external(request, language_code):
    context = RequestContext(request)
    if context.get('user').is_authenticated():
        return redirect('index_external', language_code=language_code)

    if request.method == "POST":
        form_login = LoginForm(request.POST)
        if form_login.validate():
            user = form_login.get_user()
            login(request, user)
            if request.POST.get('remember', None):
                request.session.set_expiry(0)
            return redirect('index')
    else:
        form_login = LoginForm()
    context.update({'form_login': form_login, 'language_code': language_code})
    return render_to_response('login_external.html', context_instance=context)
Example #41
0
def change_password(request):
    context = RequestContext(request)
    usuario = context.get('user')

    if request.method == "GET":
        change_password_form = ChangePasswordForm()
    else:
        change_password_form = ChangePasswordForm(request.POST)

        if change_password_form.validate(usuario):
            usuario.set_password(request.POST.get('new_password'))
            usuario.save()
            change_password_form.errors.update(
                {'success': u"Password changed!"})

    context.update({'form': change_password_form})
    return render_to_response('change_password.html', context_instance=context)
Example #42
0
def change_password(request):
    context = RequestContext(request)
    usuario = context.get('user')
    
    if request.method == "GET":
        change_password_form = ChangePasswordForm()
    else:
        change_password_form = ChangePasswordForm(request.POST)

        if change_password_form.validate(usuario):
            usuario.set_password(request.POST.get('new_password'))
            usuario.save()
            change_password_form.errors.update({'success': u"Password changed!"})

    context.update({'form': change_password_form})
    return render_to_response('change_password.html',
                          context_instance=context)
Example #43
0
def get_objects(request, object_type, identity=None, project=None, return_message=None):
    context = RequestContext(request)
    r = request.GET or request.POST
    is_barcoded = (object_type == 'map-image' or object_type == 'attachment')
    objects = None
    class_name, template_name = _get_object_variables(object_type)
    if class_name is None:
        return HttpResponse('object_type "%s" is invalid' % (object_type))
     
    #update form values, if form post:   
    if request.POST:
        return_message = _batch_update(request, object_type, class_name, identity)
     
    ordering_field = None #'-id'   
    if project is not None:
        objects = class_name.objects.by_project(project, ordering_field=ordering_field)
    else:
        objects = class_name.objects.get_all(ordering_field=ordering_field, user=identity)
        #if identity is not None:
        #    objects = objects.filter(owner=identity)
    username = identity.username if identity is not None else 'all'
    projects = Project.objects.get_objects(identity)
    if request.user.is_superuser and username == 'all':
        projects = Project.objects.all().order_by('name')
    project_id = 'all'
    if project is not None: project_id = str(project.id)
    
    context.update({
        'username': username,
        'url': '/profile/%s/?a=a' % object_type,
        #'project_url': '/profile/%s/?alias=%s' % (object_type, username),
        #'user_url': '/profile/%s/?project_id=%s' % (object_type, project_id),
        'raw_url': '/profile/%s/' % (object_type),
        'projects': projects,
        'selected_project': project,
        'selected_project_id': project_id,
        'object_type': object_type.replace('-', ' ')
    })
    if is_barcoded:
        context.update({ 'statuses': StatusCode.objects.all().order_by('id') })    
    if return_message is not None:
        context.update({ 'return_message': return_message })
    if request.user.is_superuser or context.get('is_impersonation'):
        context.update({'users': Project.get_users()})
    context.update(prep_paginator(request, objects))
    return render_to_response(template_name, context)
Example #44
0
def dashboard_login(request):
    context = RequestContext(request)
    if context.get('user').is_authenticated():
        return redirect('index')

    if request.method == "POST":
        form_login = LoginForm(request.POST)
        if form_login.validate():
            user = form_login.get_user()
            login(request, user)
            if request.POST.get('remember', None):
                request.session.set_expiry(0)
            return redirect('index')
    else:
        form_login = LoginForm()
    context.update({'form_login': form_login})
    return render_to_response('login.html',
                              context_instance=context)
Example #45
0
File: views.py Project: GEANT/met
def federation_edit(request, federation_slug=None):
    federation = get_object_or_404(Federation, slug=federation_slug) if federation_slug else None

    if request.method == 'POST':
        form = FederationForm(request.POST, request.FILES, instance=federation)
        if not form.is_valid():
            messages.error(request, _('Please correct the errors indicated below'))
        else:
            return federation_edit_post(request, federation, form)
    else:
        form = FederationForm(instance=federation)

    context = RequestContext(request)
    user = context.get('user', None)
    delete_federation = user and user.has_perm('metadataparser.delete_federation')
    return render_to_response('metadataparser/federation_edit.html',
                              {'settings': settings, 'form': form, 'delete_federation': delete_federation},
                              context_instance=RequestContext(request))
Example #46
0
def federation_edit(request, federation_slug=None):
    federation = get_object_or_404(Federation, slug=federation_slug) if federation_slug else None

    if request.method == 'POST':
        form = FederationForm(request.POST, request.FILES, instance=federation)
        if not form.is_valid():
            messages.error(request, _('Please correct the errors indicated below'))
        else:
            return federation_edit_post(request, federation, form)
    else:
        form = FederationForm(instance=federation)

    context = RequestContext(request)
    user = context.get('user', None)
    delete_federation = user and user.has_perm('metadataparser.delete_federation')
    return render_to_response('metadataparser/federation_edit.html',
                              {'settings': settings, 'form': form, 'delete_federation': delete_federation},
                              context_instance=RequestContext(request))
Example #47
0
    def render_to_response(self, request, filename, context={}, mimetype=''):
        #add recent items to context
        user = request.user
        context['user_searches'] = UserSearch.get_user_recent(user)
        context['INTERNAL_IPS'] = settings.INTERNAL_IPS
        context['ENABLE_GOOGLE_ANALYTICS'] = settings.ENABLE_GOOGLE_ANALYTICS

        template_dirs = settings.TEMPLATE_DIRS
        if mimetype == '':
            mimetype = settings.DEFAULT_CONTENT_TYPE
        env = Environment(loader=FileSystemLoader(template_dirs))

        request_context = RequestContext(request, context)
        csrf = request_context.get('csrf_token')

        context['csrf_token'] = csrf
        context['request'] = request
        template = env.get_template(filename)
        rendered = template.render(**context)
        return HttpResponse(rendered, mimetype=mimetype)
    def render_to_response(self, request, filename, context={},mimetype=''):
        #add recent items to context
        user = request.user
        context['user_searches'] = UserSearch.get_user_recent(user)
        context['INTERNAL_IPS'] = settings.INTERNAL_IPS   
        context['ENABLE_GOOGLE_ANALYTICS'] = settings.ENABLE_GOOGLE_ANALYTICS              
        
        template_dirs = settings.TEMPLATE_DIRS
        if mimetype == '':
            mimetype = settings.DEFAULT_CONTENT_TYPE
        env = Environment(loader=FileSystemLoader(template_dirs))
        
        request_context = RequestContext(request, context)
        csrf = request_context.get('csrf_token')
 
        context['csrf_token'] = csrf
        context['request'] = request
        template = env.get_template(filename)
        rendered = template.render(**context)
        return HttpResponse(rendered,mimetype=mimetype)
Example #49
0
def countries(request):
    context = RequestContext(request)
    countries = Country.objects.all()
    countries_disbursement_values = []
    countries_execution_values = []

    for country in countries:
        countries_disbursement_values.append({
            'name': str(country.name),
            'url_ongoing': reverse('countries_ongoing', args=[country.slug, 'disbursement'])
        })
        countries_execution_values.append({
            'name': str(country.name),
            'url_ongoing': reverse('countries_ongoing', args=[country.slug, 'execution'])
        })

    context.update({'countries_disbursement': countries_disbursement_values,
                    'countries_execution': countries_execution_values})

    countries = context.get('user').dashboarduser.countries.all()
    context.update({'countries': countries})
    return render_to_response("countries.html", context)
Example #50
0
    def decode_jinga_template(self,
                              request,
                              filename,
                              context={},
                              mimetype=''):
        template_dirs = settings.TEMPLATE_DIRS
        if mimetype == '':
            mimetype = settings.DEFAULT_CONTENT_TYPE
        env = Environment(loader=FileSystemLoader(template_dirs))

        context['INTERNAL_IPS'] = settings.INTERNAL_IPS
        context['ENABLE_GOOGLE_ANALYTICS'] = settings.ENABLE_GOOGLE_ANALYTICS

        request_context = RequestContext(request, context)
        csrf = request_context.get('csrf_token')

        context['csrf_token'] = csrf
        context['request'] = request
        template = env.get_template(filename)
        rendered = template.render(**context)

        return rendered
Example #51
0
    def render_oembed(self,
                      oembed_resource,
                      original_url,
                      template_dir=None,
                      context=None):
        """
        Render the oembed resource and return as a string.
        
        Template directory will always fall back to 'oembed/[type].html', but
        a custom template dir can be passed in using the kwargs.
        
        Templates are given two context variables:
        - response: an OEmbedResource
        - original_url: the url that was passed to the consumer
        """
        provided_context = context or Context()
        context = RequestContext(context.get("request") or mock_request())
        context.update(provided_context)

        # templates are named for the resources they display, i.e. video.html
        template_name = '%s.html' % oembed_resource.type

        # set up template finder to fall back to the link template
        templates = [os.path.join('oembed', template_name), 'oembed/link.html']

        # if there's a custom template dir, look there first
        if template_dir:
            templates.insert(
                0, os.path.join('oembed', template_dir, template_name))

        template = select_template(templates)

        context.push()
        context['response'] = oembed_resource
        context['original_url'] = original_url
        rendered = template.render(context)
        context.pop()

        return rendered.strip()  # rendering template may add whitespace
Example #52
0
def country_operation(request):
    context = RequestContext(request)
    user = context.get('user')
    if user.dashboarduser.have_database_access is False:
        return redirect('index')
    return render_to_response("country_operation.html", context)
Example #53
0
 def test_context_processor(self):
     f = RequestFactory()
     c = RequestContext(f.request())
     self.assertTrue(c.get('settings') is settings)
Example #54
0
def render_export_hitos_and_avances(request, country_slug):
    context = RequestContext(request)
    root_dir_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    hitos = Hito.objects.filter(country__slug=country_slug)
    estados_actuais = EstadoActual.objects.all()
    country = Country.objects.get(slug=country_slug)
    options_estados_actuais = {}
    triangle_path, triangle_file_name = TriangleGraph.export_graph(
        country=country, lang=request.LANGUAGE_CODE)
    operation = Operation.objects.get(country=country)
    for estado in estados_actuais:
        options_estados_actuais.update(
            {"{id}".format(id=estado.id): str(estado.name)})

    avances = AvanceFisicoFinanciero.objects.filter(country=country)

    # DOCX
    document_font = 'Times New Roman'
    document = Docx()

    logo_salud = Image(
        "{root}/tables/files/logo_saludmesoam.png".format(root=root_dir_path),
        document=document,
        width="70%",
        height="70%")
    logo_bid = Image(
        "{root}/tables/files/logo-del-BID.jpg".format(root=root_dir_path),
        document=document,
        width="70%",
        height="70%")
    table_logos = Table(width="100%")
    table_logos.add_row(
        [Cell(logo_salud, width="50%"),
         Cell(logo_bid, width="50%")])
    document.append(table_logos)
    document.append(Break())

    # Heading
    date_today_str = date.today().strftime("%d de {MONTH} de %Y").lstrip("0")
    month_translated = _(date.today().strftime("%B"))
    date_today_str = date_today_str.replace("{MONTH}", month_translated)
    heading = Block([
        InlineText(u"División de Protección Social y Salud, SCL/SPH",
                   bold=True,
                   font=document_font),
        Break(),
        InlineText(u"Iniciativa Salud Mesoamérica 2015, SM2015",
                   bold=True,
                   font=document_font),
        Break(),
        InlineText(u"Conclusiones de la reunión realizada el: {0}".format(
            date_today_str),
                   bold=True,
                   font=document_font),
        Break(),
        Break(),
        InlineText(u"Operación: ", bold=True, font=document_font),
        InlineText(operation.name, font=document_font),
        Break(),
        InlineText(u"Tipo de Reunión: ", bold=True, font=document_font),
        InlineText(u"Seguimiento Mensual de la Ejecución", font=document_font),
        Break(),
        InlineText(u"Participantes: ", bold=True, font=document_font),
        InlineText(u"{0}, Ferdinando Regalia, Emma Iriarte".format(
            context.get('user').get_full_name()),
                   font=document_font)
    ])
    document.append(heading)

    document.append(Break())

    # Avances
    if avances:
        avance = avances[0]
        document.append(
            Block(InlineText("AVANCE FISICO Y FINANCIERO",
                             size=12,
                             font=document_font,
                             bold=True),
                  align='center'))

        if avance.fecha_de_actualizacion:
            fecha_de_actualization_str = avance.fecha_de_actualizacion.strftime(
                "%d de {MONTH} de %Y").lstrip("0")
            month_translated = _(avance.fecha_de_actualizacion.strftime("%B"))
            fecha_de_actualization_str = fecha_de_actualization_str.replace(
                "{MONTH}", month_translated)
        else:
            fecha_de_actualization_str = ''

        row1 = [
            Cell(
                BlockText(
                    u'¿Cuándo fue la última vez que actualizó los datos?',
                    bold=True,
                    font=document_font,
                    size=10)),
            Cell(
                BlockText(u'Avances Fisicos Planificados (Meta Ejecución)',
                          bold=True,
                          font=document_font,
                          size=10)),
            Cell(
                BlockText(
                    u'Avances Físicos Reales (Avance en la ejecución real)',
                    bold=True,
                    font=document_font,
                    size=10)),
            Cell(
                BlockText(
                    u'Avances Financieros Planificados (Ejecución financiera planificados)',
                    bold=True,
                    font=document_font,
                    size=10)),
            Cell(
                BlockText(
                    u'Avances Financieros Actuales (Ejecución financiera real)',
                    bold=True,
                    font=document_font,
                    size=10)),
            Cell(
                BlockText(u'Monto Desembolsado',
                          bold=True,
                          font=document_font,
                          size=10))
        ]

        row2 = [
            Cell(
                BlockText(fecha_de_actualization_str,
                          size=10,
                          font=document_font)),
            Cell(
                BlockText("{0}%".format(avance.avance_fisico_planificado),
                          size=10,
                          font=document_font)),
            Cell(
                BlockText("{0}%".format(avance.avance_fisico_real),
                          size=10,
                          font=document_font)),
            Cell(
                BlockText("{0}%".format(avance.avance_financiero_planificado),
                          size=10,
                          font=document_font)),
            Cell(
                BlockText("{0}%".format(avance.avance_financiero_actual),
                          size=10,
                          font=document_font)),
            Cell(
                BlockText(avance.monto_desembolsado,
                          size=10,
                          font=document_font))
        ]

        table_avances = Table(width="100%",
                              padding='3pt',
                              border={
                                  'top': {
                                      'color': '#000000',
                                      'size': '1pt',
                                      'style': 'solid'
                                  },
                                  'right': {
                                      'color': '#000000',
                                      'size': '1pt',
                                      'style': 'solid'
                                  },
                                  'bottom': {
                                      'color': '#000000',
                                      'size': '1pt',
                                      'style': 'solid'
                                  },
                                  'left': {
                                      'color': '#000000',
                                      'size': '1pt',
                                      'style': 'solid'
                                  }
                              })
        table_avances.add_row(row1)
        table_avances.add_row(row2)
        document.append(table_avances)

    document.append(Break())
    # Add Triangle Graph
    document.append(
        Block(InlineText(u"Gráficos del Tablero de Control",
                         size=12,
                         font=document_font,
                         bold=True),
              align='center'))
    document.append(
        Image("{0}".format(triangle_path), document=document, align='center'))
    document.append(Break())

    # ALERTS, RECOMENDATIONS AND UPCOMING... FROM AVANCES
    row1 = [
        Cell(BlockText(u'Alertas Temprana en General',
                       color='#6F7B8A',
                       font=document_font),
             bgcolor='#ECF0F2',
             width='7cm',
             valign='center'),
        Cell(BlockText(avance.alerta, size=10, font=document_font),
             valign='center')
    ]

    row2 = [
        Cell(BlockText(u'Recomendaciones', color='#6F7B8A',
                       font=document_font),
             bgcolor='#ECF0F2',
             width='7cm',
             valign='center'),
        Cell(BlockText(avance.recomendacion, size=10, font=document_font),
             valign='center')
    ]

    row3 = [
        Cell(BlockText(u'Upcoming Policy Dialogue Events',
                       color='#6F7B8A',
                       font=document_font),
             bgcolor='#ECF0F2',
             width='7cm',
             valign='center'),
        Cell(BlockText(avance.upcoming_policy_dialogue_events,
                       size=10,
                       font=document_font),
             valign='center')
    ]

    table_avances2 = Table(width="100%", padding='3pt')
    table_avances2.add_row(row1)
    table_avances2.add_row(row2)
    table_avances2.add_row(row3)
    document.append(table_avances2)
    document.append(Break())

    # HITOS
    is_avaliable_hito = False
    table_hitos = Table(width="100%", padding='3pt')
    table_hitos.add_row([
        Cell(
            Block(InlineText(u'Indicador de Pago',
                             bold=True,
                             font=document_font,
                             size=10),
                  align='center')),
        Cell(
            Block(InlineText(u'Hito', bold=True, font=document_font, size=10),
                  align='center')),
        Cell(
            Block(InlineText(u'Trimestre',
                             bold=True,
                             font=document_font,
                             size=10),
                  align='center')),
        Cell(
            Block(InlineText(u'Audiencia',
                             bold=True,
                             font=document_font,
                             size=10),
                  align='center')),
        Cell(
            Block(InlineText(u'Estado Actual',
                             bold=True,
                             font=document_font,
                             size=10),
                  align='center')),
        Cell(
            Block(InlineText(u'Alerta/Notas',
                             bold=True,
                             font=document_font,
                             size=10),
                  align='center')),
        Cell(
            Block(InlineText(u'Recomendación',
                             bold=True,
                             font=document_font,
                             size=10),
                  align='center')),
        Cell(
            Block(InlineText(u'Acuerdo',
                             bold=True,
                             font=document_font,
                             size=10),
                  align='center'))
    ])

    for hito in hitos:
        if hito.recomendacion \
           or hito.alerta_notas \
           or (hito.estado_actual and hito.estado_actual.name
               in ['Retrasado', 'En proceso']):
            is_avaliable_hito = True

            audiencias = []
            for audiencia in hito.audiencia.all():
                audiencias.append(audiencia.name)

            bg_estado = '#FFFFFF'
            if hito.estado_actual:
                if hito.estado_actual.name == 'Cumplido':
                    bg_estado = '#77FF77'
                elif hito.estado_actual.name == 'Retrasado':
                    bg_estado = '#FF8888'
                elif hito.estado_actual.name == 'En proceso':
                    bg_estado = '#FEFF00'
                estado_actual_name = hito.estado_actual.name
            else:
                estado_actual_name = ''

            table_hitos.add_row([
                Cell(
                    BlockText(hito.indicador_de_pago,
                              font=document_font,
                              size=10)),
                Cell(BlockText(hito.hito, font=document_font, size=10)),
                Cell(BlockText(hito.quarter.name, font=document_font,
                               size=10)),
                Cell(
                    BlockText(", ".join(audiencias),
                              font=document_font,
                              size=10)),
                Cell(BlockText(estado_actual_name, font=document_font,
                               size=10),
                     bgcolor=bg_estado),
                Cell(
                    BlockText(hito.alerta_notas or '',
                              font=document_font,
                              size=10)),
                Cell(
                    BlockText(hito.recomendacion or '',
                              font=document_font,
                              size=10)),
                Cell(BlockText(hito.acuerdo or '', font=document_font,
                               size=10))
            ])

    if is_avaliable_hito:
        document.append(
            Block(InlineText(u"ALERTAS TEMPRANAS Y ESTADO DE LOS HITOS",
                             size=12,
                             font=document_font,
                             bold=True),
                  align='center'))
        document.append(table_hitos)

    document.append(Break())
    document.append(BlockText(""))

    # EMPTY TABLE TO BE FILLED OUT DURING THE MEETING
    border_cell = {
        'left': {
            'color': '#000000',
            'size': '1pt',
            'style': 'solid'
        },
        'bottom': {
            'color': '#000000',
            'size': '1pt',
            'style': 'solid'
        },
        'top': {
            'color': '#000000',
            'size': '1pt',
            'style': 'solid'
        },
        'right': {
            'color': '#000000',
            'size': '1pt',
            'style': 'solid'
        }
    }

    table_empty = Table(width="100%", padding='3pt')
    table_empty.add_row([
        Cell(Block(InlineText(u'DISCUSION CON EL JEFE DE DIVISION Y UC',
                              font=document_font),
                   align="center"),
             valign='center',
             border=border_cell)
    ])
    table_empty.add_row(
        [Cell(BlockText(""), valign='center', border=border_cell)])

    table_empty.add_row([
        Cell(Block(InlineText(u'AVANCES PARA EL INFORME TRIMESTRAL',
                              font=document_font),
                   align="center"),
             valign='center',
             border=border_cell)
    ])
    table_empty.add_row(
        [Cell(BlockText(""), valign='center', border=border_cell)])

    table_empty.add_row([
        Cell(Block(InlineText(
            u'ACUERDOS CON EL JEFE DE DIVISION Y LA UNIDAD COORDINADORA',
            font=document_font),
                   align="center"),
             valign='center',
             border=border_cell)
    ])
    table_empty.add_row(
        [Cell(BlockText(""), valign='center', border=border_cell)])
    document.append(table_empty)

    # Save our document
    path = "{root}/tables/files/{country_slug}_hitos_y_avances.docx".format(
        country_slug=country_slug, root=root_dir_path)
    document.save(path)

    file_docx = open(path, 'r')
    response = HttpResponse(mimetype='text/html')
    response[
        'Content-Disposition'] = 'attachment; filename={country_slug}_hitos_y_avances.docx'.format(
            country_slug=country_slug)
    response['Content-Encoding'] = 'UTF-8'
    response['Content-type'] = 'text/html; charset=UTF-8'
    response.write(file_docx.read())
    file_docx.close()
    return response
Example #55
0
def grants_finances_editable(request):
    context = RequestContext(request)
    user = context.get('user')
    if user.dashboarduser.have_database_access is False:
        return redirect('index')
    return render_to_response("grants_finances_editable.html", context)
Example #56
0
 def test_context_processor(self):
     f = RequestFactory()
     c = RequestContext(f.request())
     self.assertTrue(c.get('settings') is settings)
Example #57
0
def getCurrentUser(request):
    context = RequestContext(request)
    return context.get('user')