# Copyright (c) 2013 by Pablo Martín <*****@*****.**>
#
# This software is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with this software.  If not, see <http://www.gnu.org/licenses/>.
from django.template import Library

from inplaceeditform_bootstrap import settings as inplaceeditform_bootstrap_settings

register = Library()


def inplace_bootstrap_extra_options(context):
    return {
        'tooltip_text':
        inplaceeditform_bootstrap_settings.INPLACEEDIT_EDIT_TOOLTIP_TEXT,
    }


register.inclusion_tag("inplaceeditform_bootstrap/extra_options.html",
                       takes_context=True)(inplace_bootstrap_extra_options)
Beispiel #2
0
        {% mywork user %}
    
    settings required::

        MIDDLEWARE_CLASSES = (
            'django.middleware.common.CommonMiddleware',
            ...
        )

    **Tip**

    this can be used instead, if *workitems* variable is available
    in the context::

        {% include "goflow/workitems.html" %}
    
    when using *render_to_response* shortcut, don't forget
    to add a *RequestContext* as following::

        def some_view(request):
        # ...
        return render_to_response('my_template.html',
                                  my_data_dictionary,
                                  context_instance=RequestContext(request))
    '''
    workitems = WorkItem.objects.list_safe(user=user, noauto=True)
    return {'workitems':workitems}
mywork = register.inclusion_tag("goflow/workitems.html")(mywork)

Beispiel #3
0
# See license file (LICENSE.txt) for info about license terms.

from django import template
from django.core.urlresolvers import reverse
from django.conf import settings
from django.template import Context, Library, Template, Variable

from clms.models import Layout, FavouriteLayout

register = Library()


def favourite(context, user, layout, view):
    favourite_layout = FavouriteLayout.objects.filter(user=user)
    return {
        'layout':
        layout,
        'is_favourite':
        not favourite_layout or not layout in favourite_layout[0].layout.all(),
        'view':
        view,
        'MEDIA_URL':
        settings.MEDIA_URL,
    }


register.inclusion_tag("favourite.html", takes_context=True)(favourite)
Beispiel #4
0
            auth_url = settings.LOGIN_URL
            auth_icon_class = 'icon-signin'
            auth_link_text = _('Log in')
        except Exception:
            auth_url = ''
            auth_icon_class = ''
            auth_link_text = ''

    return {
        'auth_link': auth_url,
        'auth_icon_class': auth_icon_class,
        'auth_link_text': auth_link_text
    }


register.inclusion_tag('fobi/snippets/render_auth_link.html',
                       takes_context=True)(render_auth_link)


@register.inclusion_tag(THEME.forms_list_template, takes_context=True)
def render_fobi_forms_list(context, queryset, *args, **kwargs):
    """Render the list of fobi forms.

    :syntax:

        {% render_fobi_forms_list [queryset] [show_edit_link] \
                                             [show_delete_link] \
                                             [show_export_link] %}

    :example:

        {% render_fobi_forms_list queryset show_edit_link=True \
Beispiel #5
0
                page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1))
                page_range.append(DOT)
                page_range.extend(range(paginator.pages - ON_ENDS, paginator.pages))
            else:
                page_range.extend(range(page_num + 1, paginator.pages))

    need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
    return {
        'cl': cl,
        'pagination_required': pagination_required,
        'show_all_url': need_show_all_link and cl.get_query_string({ALL_VAR: ''}),
        'page_range': page_range,
        'ALL_VAR': ALL_VAR,
        '1': 1,
    }
pagination = register.inclusion_tag('admin/pagination.html')(pagination)

def result_headers(cl):
    lookup_opts = cl.lookup_opts

    for i, field_name in enumerate(lookup_opts.admin.list_display):
        try:
            f = lookup_opts.get_field(field_name)
            admin_order_field = None
        except models.FieldDoesNotExist:
            # For non-field list_display values, check for the function
            # attribute "short_description". If that doesn't exist, fall
            # back to the method name. And __str__ is a special-case.
            if field_name == '__str__':
                header = lookup_opts.verbose_name
            else:
from django.contrib.admin.templatetags.admin_list import items_for_result, result_headers
from django.core.urlresolvers import reverse
from django.template import Library
from django.utils.safestring import mark_safe


register = Library()

def project_result_list(cl):
    headers = list(result_headers(cl))
    headers.append({'text': mark_safe('&nbsp;')})

    results = list()

    for project in cl.result_list:
        rl = list(items_for_result(cl,project,None))

        url = reverse('admin_project_sendcredentials', args=[project.projectname])
        content = mark_safe('<td><a href="%s">Send Credentials</a></td>' % url)

        rl.append(content)
        results.append(rl)

    return {
        'cl': cl,
        'result_headers': headers,
        'results': results
    }
project_result_list = register.inclusion_tag("admin/change_list_results.html")(project_result_list)
            else:
                page_range.extend(range(page_num + 1, paginator.pages))

    need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
    return {
        'cl': cl,
        'pagination_required': pagination_required,
        'show_all_url': need_show_all_link
        and cl.get_query_string({ALL_VAR: ''}),
        'page_range': page_range,
        'ALL_VAR': ALL_VAR,
        '1': 1,
    }


pagination = register.inclusion_tag('admin/pagination.html')(pagination)


def result_headers(cl):
    lookup_opts = cl.lookup_opts

    for i, field_name in enumerate(lookup_opts.admin.list_display):
        try:
            f = lookup_opts.get_field(field_name)
        except models.FieldDoesNotExist:
            # For non-field list_display values, check for the function
            # attribute "short_description". If that doesn't exist, fall
            # back to the method name. And __str__ is a special-case.
            if field_name == '__str__':
                header = lookup_opts.verbose_name
            else:
Beispiel #8
0
from django.template import Library, Node

register = Library()

def field_errors(field):
    return {'errors': field.errors}

register.inclusion_tag('domes/templatetags/field_errors.html')(field_errors)

def form_errors(form):

    has_field_errors = False
    
    #Any field errors?
    for field in form:
        if field.errors:
            has_field_errors = True
            break
    
    return {'has_field_errors': has_field_errors, 'form': form}

register.inclusion_tag('domes/templatetags/form_errors.html')(form_errors)
Beispiel #9
0
def row_count(row, page):
    return row + (page.number - 1) * page.paginator.per_page


register.filter('row_count', row_count)


def table_header(context, headers=None):
    # add things for the header here
    if headers:
        context["headers"] = headers
    return context


register.inclusion_tag('table_header.html', takes_context=True)(table_header)


def paginator(context, adjacent_pages=2):
    """
    To be used in conjunction with the object_list generic view.

    Adds pagination context variables for use in displaying first, adjacent and
    last page links in addition to those created by the object_list generic
    view.

    """
    results_this_page = context["page"].object_list.count()
    context.update({
        'results_this_page': results_this_page,
    })
    new_context['record_url'] = context['doc']['record_url']
    try:
        full_title = context['doc']['full_title']
    except KeyError:
        full_title = _('Untitled')
    try:
        short_title = context['doc']['title']
    except KeyError:
        short_title = full_title
    new_context['short_title'] = short_title
    rest_of_title = full_title.replace(short_title, '', 1)
    new_context['rest_of_title'] = rest_of_title
    return new_context


register.inclusion_tag('discovery/snippets/result_title.html',
                       takes_context=True)(title_link)


def add_sort(context, sort_type):
    params = []
    query = context['query']
    if query:
        params.append(('q', query.encode('utf8')))
    limits_param = context['limits_param']
    if limits_param:
        params.append(('limits', limits_param.encode('utf8')))
    params.append(('sort', sort_type.encode('utf8')))
    return {'urlparams': urllib.urlencode(params)}


register.inclusion_tag('discovery/snippets/search_url.html',
        'size_x'        : size[0],
        'size_y'        : size[1],
        'placehold_size': "%sx%s" % (placehold_size[0], placehold_size[1]),
        'real'          : alias in ('real', 'real_inverted'),
        'url'           : url,
        'show_tooltip'  : show_tooltip,
        'request'       : request,
        'caption_cache_key': "%d_%s_%s_%s" % (
            image.id, revision, alias, request.LANGUAGE_CODE if hasattr(request, "LANGUAGE_CODE") else "en"),
        'badges'        : badges,
        'animated'      : animated,
        'get_thumb_url' : get_thumb_url,
        'thumb_url'     : thumb_url,
        'link'          : link,
        'nav_ctx'       : nav_ctx,
        'nav_ctx_extra': nav_ctx_extra,
    }.items())
register.inclusion_tag(
    'astrobin_apps_images/snippets/image.html',
    takes_context = True)(astrobin_image)


@register.simple_tag(takes_context = True)
def random_id(context, size = 8, chars = string.ascii_uppercase + string.digits):
    id = ''.join(random.choice(chars) for x in range(size))
    context['randomid'] = id
    return ''



Beispiel #12
0
from django.template import Library

register = Library()


def totals_row(cl):
    total_functions = getattr(cl.model_admin, 'total_functions', {})
    totals = []
    for field_name in cl.list_display:
        if field_name in total_functions:
            values = [getattr(i, field_name) for i in cl.result_list]
            totals.append(total_functions[field_name](values))
        else:
            totals.append('')
    return {'cl': cl, 'totals_row': totals}


totals_row = register.inclusion_tag("admin/facturas/totals_row.html")(totals_row)
Beispiel #13
0
from django.template import Library
from django.utils.translation import ugettext as _

from cmsutils.log import get_and_delete_messages, send_error

register = Library()


def messagebox(context):
    """ Render message box """
    request = context['request']
    portal_messages = context['messages']
    if not portal_messages:
        portal_messages = get_and_delete_messages(request)
    if not portal_messages:
        if 'form' in context:
            form = context['form']
            if getattr(form, 'errors', []):
                if form.non_field_errors():
                    send_error(request, form.non_field_errors())
                send_error(request, _('Form filled has errors. Please correct'))
                portal_messages = get_and_delete_messages(request)
    return { 'portal_messages':  portal_messages }
messagebox = register.inclusion_tag('cmsutils/messagebox.html',
                                   takes_context=True)(messagebox)
    all_letters = list(_get_default_letters(cl.model_admin) | letters_used)
    all_letters.sort()
    
    choices = [{
        'link': link({alpha_field: letter}), 
        'title': letter,
        'active': letter == alpha_lookup,
        'has_entries': letter in letters_used,} for letter in all_letters]
    all_letters = [{
        'link': cl.get_query_string(None, [alpha_field]),
        'title': _('All'),
        'active': '' == alpha_lookup,
        'has_entries': True
    },]
    return {'choices': all_letters + choices}
alphabet = register.inclusion_tag('admin/alphabet.html')(alphabet)

class AlphabetFilterNode(Node):
    """
    Provide a list of links for first characters on items in a queryset
    
    {% qs_alphabet_filter objects "lastname" "myapp/template.html" %}
    """
    def __init__(self, qset, field_name, filtered=None,
        template_name="alphafilter/alphabet.html"):
        self.qset = Variable(qset)
        self.field_name = Variable(field_name)
        self.template_name = Variable(template_name)
        self.filtered = filtered
    
    def render(self, context):
Beispiel #15
0
from django.utils.dateformat import format
from blog.templatetags.themes import theme_template_url

register = Library()
def get_tagged_posts(tags,number_of_posts,exclude_id = None):
    '''get tagged related posts'''
    posts = []
    for tag in tags:
        if len(posts) < number_of_posts:
            for p in tag.post_set.filter(post_type__iexact='post')[:number_of_posts-len(posts)]:
                if (not exclude_id or p.id != exclude_id) and p not in posts:
                    posts.append(p)
        else:
            break
    return {'posts':posts}
register.inclusion_tag('blog/tags/related_posts.html')(get_tagged_posts)

class archive:
    link = ''
    title = ''

def get_archivelist(context):
    '''
    get the month list which have posts
    '''
    months = Post.objects.dates('pubdate','month',order='DESC')
    archive_months = []
    for mon in months:
        m = archive()
        m.link = "/" + format(mon,'Y/m') + "/"
        m.title = format(mon,'b,Y')
Beispiel #16
0
        'unsaved_changes':
        inplace_settings.INPLACEEDIT_UNSAVED_TEXT,
        'inplace_get_field_url':
        inplace_settings.INPLACE_GET_FIELD_URL or reverse('inplace_get_field'),
        'inplace_save_url':
        inplace_settings.INPLACE_SAVE_URL or reverse('inplace_save'),
        'field_types':
        inplace_settings.INPLACE_FIELD_TYPES,
        'focus_when_editing':
        json.dumps(inplace_settings.INPLACE_FOCUS_WHEN_EDITING),
        'inplace_js_extra':
        getattr(request, 'inplace_js_extra', '')
    }


register.inclusion_tag("inplaceeditform/inplace_js.html",
                       takes_context=True)(inplace_js)


def inplace_css(context, toolbar=False):
    request = context['request']
    request.inplace_css_rendered = True
    return {
        'STATIC_URL': get_static_url(),
        'ADMIN_MEDIA_PREFIX': get_admin_static_url(),
        'toolbar': toolbar,
        'inplace_js_extra': getattr(request, 'inplace_css_extra', '')
    }


register.inclusion_tag("inplaceeditform/inplace_css.html",
                       takes_context=True)(inplace_css)
Beispiel #17
0
    except TypeError:
        return name


class GetNavigationLinks(Node):
    def __init__(self, *args):
        self.menu_name = None
        if args:
            self.menu_name = args[0]

    def render(self, context):
        menu_name = resolve_template_variable(context, self.menu_name)
        context['object_navigation_links'] = _get_object_navigation_links(context, menu_name)
        return ''


@register.tag
def get_object_navigation_links(parser, token):
    args = token.split_contents()
    return GetNavigationLinks(*args[1:])


def object_navigation_template(context):
    return {
        'horizontal':True,
        'object_navigation_links':_get_object_navigation_links(context)
    }
    return new_context
register.inclusion_tag('generic_navigation.html', takes_context=True)(object_navigation_template)

Beispiel #18
0
from django.template import Library, RequestContext
from django.conf import settings
from satchmo_store.contact.models import Contact
from livesettings.functions import config_value
import sys

register = Library()

def show_tracker(context, secure=False):
    """
    Output the google tracker code.
    """
    return ({"GOOGLE_CODE": config_value('GOOGLE', 'ANALYTICS_CODE'), "secure" : secure})

register.inclusion_tag("shop/google-analytics/tracker.html", takes_context=True)(show_tracker)

def show_receipt(context):
    """
    Output our receipt in the format that Google Analytics needs.
    """
    return({'Store': settings.SITE_NAME,
            'order': context['order']})

register.inclusion_tag("shop/google-analytics/receipt.html", takes_context=True)(show_receipt)

def google_track_signup(context):
    """
    Output a a new user signup in the format that Google Analytics needs.
    """
    request = context['request']
    try:
Beispiel #19
0

def profile_menu(request, profile, silk_request=None):
    context = {'request': request, 'profile': profile}
    if silk_request:
        context['silk_request'] = silk_request
    return context


def profile_summary(profile):
    return {'profile': profile}


def heading(text):
    return {'text': text}


def code(lines, actual_line):
    return {'code': lines, 'actual_line': [x.strip() for x in actual_line]}


register.inclusion_tag('silk/inclusion/request_summary.html')(request_summary)
register.inclusion_tag('silk/inclusion/request_summary_row.html')(
    request_summary_row)
register.inclusion_tag('silk/inclusion/profile_summary.html')(profile_summary)
register.inclusion_tag('silk/inclusion/code.html')(code)
register.inclusion_tag('silk/inclusion/request_menu.html')(request_menu)
register.inclusion_tag('silk/inclusion/profile_menu.html')(profile_menu)
register.inclusion_tag('silk/inclusion/root_menu.html')(root_menu)
register.inclusion_tag('silk/inclusion/heading.html')(heading)
Beispiel #20
0
from django.template import Library, Node

register = Library()

def user_menu(user):
  return {'user' : user}


register.inclusion_tag('blocks/user_menu.html')(user_menu)
Beispiel #21
0
        qe_form = False
    if cl.formset:
        if qe_form:
            for res, form in zip(cl.result_list, cl.formset.forms):
                yield {'fields':list(items_for_result(cl, res, form)), 
                'quickedit':form}
                #'quickedit':form(instance=res)}
        else:
            for res, form in zip(cl.result_list, cl.formset.forms):
                yield list(items_for_result(cl, res, form))
    else:
        if qe_form:
            for res in cl.result_list:
                yield {'fields':list(items_for_result(cl, res, None)), 
                'quickedit':form}
                #'quickedit':form(instance=res)}
        else:
            for res in cl.result_list:
                yield list(items_for_result(cl, res, None))

def qe_result_list(context, cl):
    if context.has_key('STATIC_URL'):
        static_url = 'STATIC_URL'
    else:
        static_url = 'MEDIA_URL'
    return {'cl': cl,
            'result_headers': list(result_headers(cl)),
            'results': list(results(cl)),
            'STATIC_URL': context[static_url]}
qe_result_list = register.inclusion_tag("admin/qe_change_list_results.html", takes_context=True)(qe_result_list)
Beispiel #22
0
    parameter:

    form
        form variable

    Usage::

        {% form_ext form %}
    
    the current implementation is equivalent to::

        {% include "goflow/apptools/edit_form.html" %}
    '''
    return {'form':form}
form_ext = register.inclusion_tag("goflow/apptools/edit_form.html")(form_ext)

def _get_transitions_out_images(activity):
    if activity.split_mode == 'and':
        raise Exception('_get_transitions_out_images: xor split_mode required')
    transitions = Transition.objects.filter(input=activity)
    icons = []
    for t in transitions:
        if t.icon: icons.append(t.icon)


def input_buttons(context):
    '''
    This will insert submit buttons in application templates.

    The template *goflow/apptools/input_buttons.html* is used for rendering.
Beispiel #23
0
    if form and not form[cl.model._meta.pk.name].is_hidden:
        yield mark_safe('<td>%s</td>' % force_text(form[cl.model._meta.pk.name]))


def mptt_results(cl):
    if cl.formset:
        for res, form in zip(cl.result_list, cl.formset.forms):
            yield list(mptt_items_for_result(cl, res, form))
    else:
        for res in cl.result_list:
            yield list(mptt_items_for_result(cl, res, None))


def mptt_result_list(cl):
    """
    Displays the headers and data list together
    """
    return {'cl': cl,
            'result_hidden_fields': list(result_hidden_fields(cl)),
            'result_headers': list(result_headers(cl)),
            'results': list(mptt_results(cl))}

# custom template is merely so we can strip out sortable-ness from the column headers
# Based on admin/change_list_results.html (1.3.1)
if IS_GRAPPELLI_INSTALLED:
    mptt_result_list = register.inclusion_tag(
        "admin/grappelli_mptt_change_list_results.html")(mptt_result_list)
else:
    mptt_result_list = register.inclusion_tag(
        "admin/mptt_change_list_results.html")(mptt_result_list)
Beispiel #24
0
from django.template import Library
from blog.util.code_hilite import to_html

register = Library()

register.filter("to_html", to_html)

def show_post_brief(context, post):
    return {
        "post": post,
        "last": context["forloop"]["last"],
        "can_edit": context["user"].is_staff,
    }
register.inclusion_tag("blog/post_brief.html", takes_context=True)(show_post_brief)

@register.filter
def date_microformat(d):
    '''
        Microformat version of a date.
        2009-02-10T02:58:00+00:00 (ideal)
        2009-02-09T17:54:41.181868-08:00 (mine)
    '''
    return d.isoformat()
# coding: utf-8
from django.template import Library

register = Library()


def custom_admin_list_filter(cl, spec):
    return {
        'title': spec.title if not callable(spec.title) else spec.title(),
        'choices': list(spec.choices(cl))
    }


custom_admin_list_filter = register.inclusion_tag('admin/custom_filter.html')(
    custom_admin_list_filter)
Beispiel #26
0
        html = rst_to_html(obj.content)
    else:
        html = obj.content

    return mark_safe(html)
register.filter("to_html", to_html)


def show_post_brief(context, post):
    return {
        "post": post,
        "last": context["forloop"]["last"],
        "can_edit": context["user"].is_staff,
    }

register.inclusion_tag("blog/post_brief.html",
                       takes_context=True)(show_post_brief)


@register.filter
def date_microformat(d):
    '''
        Microformat version of a date.
        2009-02-10T02:58:00+00:00 (ideal)
        2009-02-09T17:54:41.181868-08:00 (mine)
    '''
    return d.isoformat()

STRIKE_REPL_RE = re.compile("< *strike *>[^<]*</ *strike *>", re.IGNORECASE)


def html_to_text(html):
Beispiel #27
0
            auth_icon_class = ""
            auth_link_text = ""
    else:
        try:
            auth_url = settings.LOGIN_URL
            auth_icon_class = "icon-signin"
            auth_link_text = _("Log in")
        except Exception as e:
            auth_url = ""
            auth_icon_class = ""
            auth_link_text = ""

    return {"auth_link": auth_url, "auth_icon_class": auth_icon_class, "auth_link_text": auth_link_text}


register.inclusion_tag("fobi/snippets/render_auth_link.html", takes_context=True)(render_auth_link)

# *****************************************************************************
# *****************************************************************************
# *****************************************************************************
# **************************** Permission tags ********************************
# *****************************************************************************
# *****************************************************************************
# *****************************************************************************


class HasEditFormEntryPermissionsNode(Node):
    """
    Node for ``has_edit_form_entry_permissions`` tag.
    """
Beispiel #28
0
from django.template import Library

register = Library()

def award_table(award):
    return {'award':award}

register.inclusion_tag('scoreboard/award_table.html')(award_table)
Beispiel #29
0
from django.utils.dateformat import format
from blog.templatetags.themes import theme_template_url

register = Library()
def get_tagged_posts(tags,number_of_posts,exclude_id = None):
    '''get tagged related posts'''
    posts = []
    for tag in tags:        
        if len(posts) < number_of_posts:
            for p in tag.post_set.filter(post_type__iexact='post')[:number_of_posts-len(posts)]:
                if (not exclude_id or p.id != exclude_id) and p not in posts:
                    posts.append(p)                   
        else:
            break    
    return {'posts':posts}
register.inclusion_tag(['%s/blog/tags/related_posts.html' % theme_template_url(),
                        'blog/tags/related_posts.html'])(get_tagged_posts)

class archive:
    link = ''
    title = ''
    
def get_archivelist(context):
    '''
    get the month list which have posts
    ''' 
    months = Post.objects.dates('pubdate','month',order='DESC')
    archive_months = []    
    for mon in months:
        m = archive()
        m.link = "/" + format(mon,'Y/m') + "/"
        m.title = format(mon,'b,Y')
            page_numbers.append(None)

        for i in range(page_obj.number - before_after_amount, page_obj.number):
            page_numbers.append(i)

    else:
        for i in range(1, page_obj.number):
            page_numbers.append(i)

    # Current page and pages after current page
    if page_obj.number + first_last_amount + before_after_amount < paginator.num_pages:
        for i in range(page_obj.number, page_obj.number + before_after_amount + 1):
            page_numbers.append(i)

        page_numbers.append(None)

        for i in range(paginator.num_pages - first_last_amount + 1, paginator.num_pages + 1):
            page_numbers.append(i)

    else:
        for i in range(page_obj.number, paginator.num_pages + 1):
            page_numbers.append(i)

    return {
        'paginator': paginator,
        'page_obj': page_obj,
        'page_numbers': page_numbers
    }

register.inclusion_tag('pagination.html', takes_context=True)(render_paginator)
    """
    if cl.formset:
        for res, form in zip(cl.result_list, cl.formset.forms):
            patch_document(serializable_value, res)
            yield ResultList(form, items_for_result(cl, res, form))
    else:
        for res in cl.result_list:
            patch_document(serializable_value, res)
            res._meta = res._admin_opts
            yield ResultList(None, items_for_result(cl, res, None))

def document_result_list(cl):
    """
    Displays the headers and data list together
    """
    headers = list(result_headers(cl))
    try:
        num_sorted_fields = 0
        for h in headers:
            if h['sortable'] and h['sorted']:
                num_sorted_fields += 1
    except KeyError:
        pass

    return {'cl': cl,
            'result_hidden_fields': list(result_hidden_fields(cl)),
            'result_headers': headers,
            'num_sorted_fields': num_sorted_fields,
            'results': list(results(cl))}
result_list = register.inclusion_tag("admin/change_list_results.html")(document_result_list)
from django.template import Library

register = Library()

def field_errors(field):
    return {'errors': field.errors}

register.inclusion_tag('frontend/templatetags/field_errors.html')(field_errors)

def form_errors(form):

    has_field_errors = False
    
    #Any field errors?
    for field in form:
        if field.errors:
            has_field_errors = True
            break
    
    return {'has_field_errors': has_field_errors, 'form': form}

register.inclusion_tag('frontend/templatetags/form_errors.html')(form_errors)
        for res in cl.result_list:
            patch_document(serializable_value, res)
            yield ResultList(None, items_for_result(cl, res, None))


def document_result_list(cl):
    """
    Displays the headers and data list together
    """
    headers = list(result_headers(cl))
    try:
        num_sorted_fields = 0
        for h in headers:
            if h["sortable"] and h["sorted"]:
                num_sorted_fields += 1
    except KeyError:
        pass

    return {
        "cl": cl,
        "result_hidden_fields": list(result_hidden_fields(cl)),
        "result_headers": headers,
        "num_sorted_fields": num_sorted_fields,
        "results": list(results(cl)),
    }


result_list = register.inclusion_tag("admin/change_list_results.html")(
    document_result_list
)
Beispiel #34
0
        'title': letter,
        'active': letter == alpha_lookup,
        'has_entries': letter in letters_used,
    } for letter in all_letters]
    all_letters = [
        {
            'link': cl.get_query_string(None, [alpha_field]),
            'title': _('All'),
            'active': '' == alpha_lookup,
            'has_entries': True
        },
    ]
    return {'choices': all_letters + choices}


alphabet = register.inclusion_tag('admin/alphabet.html')(alphabet)


class AlphabetFilterNode(Node):
    """
    Provide a list of links for first characters on items in a queryset

    {% qs_alphabet_filter objects "lastname" "myapp/template.html" %}
    """
    def __init__(self,
                 qset,
                 field_name,
                 filtered=None,
                 template_name="alphafilter/alphabet.html",
                 strip_params=None):
        self.qset = Variable(qset)
Beispiel #35
0
from django.template import Library

register = Library()


def award_table(award):
    return {'award': award}


register.inclusion_tag('scoreboard/award_table.html')(award_table)
Beispiel #36
0
            'nome': u'administrativos',
            'rel': administrativos
        })
    if len(tecnicos) > 0:
        retorno['relatorios'].append({'nome': u'técnicos', 'rel': tecnicos})
    if len(verificacoes) > 0:
        retorno['relatorios'].append({
            'nome': u'de verificações (Acesso restrito)',
            'rel': verificacoes
        })

    return retorno


# Register the custom tag as an inclusion tag with takes_context=True.
register.inclusion_tag('admin/relatorios.html',
                       takes_context=True)(lista_relatorios)


@register.filter(name='moeda_css')
def moeda_css(value, nac=1):
    """
    Novo metodo para formatar o valor em moeda, com valor negativo em cor vermelha em css
    """
    return mark_safe(moeda(value, nac, False, True))


@register.filter(name='moeda_valor')
def moeda_valor(value, nac=1):
    """
    Novo metodo para formatar o valor em moeda, mas remover o prefixo da moeda (ex: R$)
    """
register = Library()

assignment_tag = getattr(register, 'assignment_tag', register.simple_tag)


def filer_actions(context):
    """
    Track the number of times the action field has been rendered on the page,
    so we know which value to use.
    """
    context['action_index'] = context.get('action_index', -1) + 1
    return context


filer_actions = register.inclusion_tag("admin/filer/actions.html",
                                       takes_context=True)(filer_actions)


@register.simple_tag(takes_context=True)
def filer_admin_context_url_params(context, first_separator='?'):
    return admin_url_params_encoded(context['request'],
                                    first_separator=first_separator)


@register.simple_tag(takes_context=True)
def filer_admin_context_hidden_formfields(context):
    request = context.get('request')
    return format_html_join(
        '\n',
        '<input type="hidden" name="{0}" value="{1}">',
        admin_url_params(request).items(),
from django.template import Node, NodeList
from django.template import TemplateSyntaxError
from django.template import Library
from product.models import Product
from livesettings.functions import config_value

register = Library()


def recentlyviewed(recent, slug=""):
    """Build a list of recent products, skipping the current one if given."""
    if slug:
        recent = [r for r in recent if slug != r.slug]

    rmax = config_value('PRODUCT', 'RECENT_MAX')
    if len(recent) > rmax:
        recent = recent[:rmax]
    return {
        'recent_products': recent,
    }


register.inclusion_tag('recentlist/_recently_viewed.html',
                       takes_context=False)(recentlyviewed)
                    # We've processed the next item now too.
                    i += 1
            if sublist_item:
                sublist = _helper(sublist_item, tabs+1)
                sublist = '\n%s<ul>\n%s\n%s</ul>\n%s' % (indent, sublist,
                                                         indent, indent)
            hyperlink = "<a href='%s'>%s</a>" % (title.get_absolute_url(),
                                                 title.name)
            output.append('%s<li>%s%s</li>' % (indent,
                    escaper(force_unicode(hyperlink)), sublist))
            i += 1
        return '\n'.join(output)
    value, converted = convert_old_style_list(value)
    return mark_safe(_helper(value))
org_outline.is_safe = True
org_outline.needs_autoescape = True

register.filter(org_outline)

def show_task(task):
    return {"task": task}
register.inclusion_tag("orgs/task_item.html")(show_task)

def show_aim(aim):
    return {"aim": aim}
register.inclusion_tag("orgs/aim_item.html")(show_aim)

def show_meeting_topic(topic):
    return {"topic": topic}
register.inclusion_tag("orgs/topic_item.html")(show_meeting_topic)
Beispiel #40
0
from django.template import Library
from django.contrib.flatpages.models import FlatPage

register = Library()

def get_pages():
    return {'pages':FlatPage.objects.order_by('-pk')[:5]}
    
register.inclusion_tag('pagelist.html')(get_pages)
Beispiel #41
0
    brands_group = dict(heading='Brands', rows=[], cols=cols)
    brands_list = Brand.objects.filter(id__in =
            Product.objects.filter(
                category__in = cat_list,status='active').distinct(
                    'brand').values('brand'))[:limit]
    split_and_add(brands_list, cols, brands_group)
    groups.append(brands_group)
    return groups

def render_mobile_menu_clearance(request):
    menu_context = {}
    menu_context['clearance_sale']=get_clearance_tags(request)
    menu_context['request'] = request
    return menu_context
register.inclusion_tag('web/clearance_list.html')(render_mobile_menu_clearance)

def render_mobile_menu_category(request):
    menu_key = 'menu#%s' % (request.client.client.id)
    menu_context = cache.get(menu_key)
    if not menu_context:
        menu_context = get_menu(request)
        cache.set(menu_key, menu_context, 3600)
    menu_context['request'] = request
    return menu_context
register.inclusion_tag('web/category_list.html')(render_mobile_menu_category)

def render_daily_deal(request):
    daily_deal_context = {}
    _client = request.client.client
    steal_of_the_day = DailyDeal.objects.filter(type='hero_deal', starts_on__lte = datetime.now(), ends_on__gte = datetime.now(), client=_client)
Beispiel #42
0
#coding=utf-8
from django.template import Library

from blog.models import Links
from blog.templatetags.themes import theme_template_url

register = Library()
def get_links(context):  
    links = Links.objects.all()
    return {'links':links}   
register.inclusion_tag(['%s/blog/tags/links.html' % theme_template_url(),
                        'blog/tags/links.html'],
                        takes_context=True)(get_links)
Beispiel #43
0
        view = context['view']
    if view is None:
        view = context['request'].GET.get('view', 'default')

    return {
        'image_list': object_list,
        'request': context['request'],
        'paginate_by': paginate_by,
        'alias': alias,
        'view': view,
        'nav_ctx': nav_ctx,
        'nav_ctx_extra': nav_ctx_extra,
    }


register.inclusion_tag('inclusion_tags/image_list.html', takes_context=True)(image_list)


@register.inclusion_tag('inclusion_tags/search_image_list.html', takes_context=True)
def search_image_list(context, paginate=True, **kwargs):
    request = context['request']
    q = request.GET.get('q')
    telescope = request.GET.get('telescope')
    camera = request.GET.get('camera')
    country = get_client_country_code(request)
    equipment_brand_listings = None

    if telescope or camera or q:
        equipment_brand_listings = EquipmentBrandListing.objects \
            .annotate(distance=TrigramDistance('brand__name', telescope or camera or q)) \
            .filter(distance__lte=.85, retailer__countries__icontains=country)
Beispiel #44
0
            yield mark_safe(u'<td%s%s>%s</td>' %
                            (row_class, padding_attr, result_repr))
    if form:
        yield mark_safe(u'<td>%s</td>' %
                        force_unicode(form[cl.model._meta.pk.name]))


def mptt_results(cl):
    if cl.formset:
        for res, form in zip(cl.result_list, cl.formset.forms):
            yield list(mptt_items_for_result(cl, res, form))
    else:
        for res in cl.result_list:
            yield list(mptt_items_for_result(cl, res, None))


def mptt_result_list(cl):
    """
    Displays the headers and data list together
    """
    return {
        'cl': cl,
        'result_headers': list(result_headers(cl)),
        'results': list(mptt_results(cl))
    }


# custom template is merely so we can strip out sortable-ness from the column headers
mptt_result_list = register.inclusion_tag(
    "admin/mptt_change_list_results.html")(mptt_result_list)
Beispiel #45
0
        'revision_title': image_revision.title if hasattr(image_revision, 'label') else None,
        'w': w,
        'h': h,
        'instant': instant,
        'fancybox': fancybox,
        'fancybox_url': reverse('image_rawthumb', kwargs={
            'id': image.get_id(),
            'alias': 'hd',
            'r': revision_label,
        }) + '?sync',
        'rel': rel,
    }.items()))


register.inclusion_tag(
    'astrobin_apps_images/snippets/image.html',
    takes_context=True)(astrobin_image)


@register.simple_tag(takes_context=True)
def random_id(context, size=8, chars=string.ascii_uppercase + string.digits):
    id = ''.join(random.choice(chars) for x in range(size))
    context['randomid'] = id
    return ''


@register.simple_tag(takes_context=True)
def cache_image_list(context):
    # Don't cache for gallery owner.
    if context['requested_user'] and context['request'].user == context['requested_user']:
        return False
Beispiel #46
0
			try :
				c = get_definition_with_path(d)
				if c is not None :
					d = c
			except:
				pass
			
			res = r.search( path )
			if res is not None :
				if callable(d):
					desc = d(res)
				else:
					desc = d
	
	return '<meta name="description" content="%s"/>' % desc

render_post = register.inclusion_tag("posts/post_view.html")(render_post)
render_post_with_id = register.inclusion_tag("posts/post_view.html")(render_post_with_id)
render_orphan = register.inclusion_tag("posts/orphan_view.html")(render_orphan)

register.simple_tag( get_gravatar_md5 )
register.simple_tag( render_categories_list )
register.simple_tag( get_page_description_meta )
register.tag( get_post )
register.tag( get_post_by_comment_id )
register.tag( get_post_category_list )
register.tag( get_post_archives_list )
register.tag( get_comment_archives_list )
register.tag( get_post_tags_list )
register.tag( get_site_links_list )
Beispiel #47
0
def image_sorter(context, model):
    """
    Adds a sortable list of images for models with a RelatedImagesField
    """
    form = AddRelatedImageForm(initial={
        'id': model.id,
        'model': "%s.%s" % (model._meta.app_label, model._meta.object_name),
    })

    context.update({
        'model' : model,
        'form' : form,
        'meta': model._meta
    })
    return context
register.inclusion_tag("admin/media/includes/image_sort.html", takes_context=True)(image_sorter)

def file_sorter(context, model):
    """
    Adds a sortable list of files for models with a RelatedFilesField
    """
    form = AddRelatedFileForm(initial={
        'id':model.id,
        'model': "%s.%s" % (model._meta.app_label, model._meta.object_name),
    })

    context.update({
        'model' : model,
        'form' : form,
        'meta': model._meta
    })
Beispiel #48
0
from django.template import Library
from rt_www.admin.templatetags.admin_list import result_list, pagination

register = Library()

pagination = register.inclusion_tag('admin/pagination.html')(pagination)
result_list = register.inclusion_tag('admin/change_list_results.html')(
    result_list)
Beispiel #49
0
            else:
                page_range.extend(range(page_num + 1, paginator.num_pages))

    need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
    return {
        'cl': cl,
        'pagination_required': pagination_required,
        'show_all_url': need_show_all_link
        and cl.get_query_string({ALL_VAR: ''}),
        'page_range': page_range,
        'ALL_VAR': ALL_VAR,
        '1': 1,
    }


pagination = register.inclusion_tag('admin/pagination.html')(pagination)


def result_headers(cl):
    """
    Generates the list column headers.
    """
    lookup_opts = cl.lookup_opts

    for i, field_name in enumerate(cl.list_display):
        header, attr = label_for_field(field_name,
                                       cl.model,
                                       model_admin=cl.model_admin,
                                       return_attr=True)
        if attr:
            # if the field is the action checkbox: no sorting and special class
from django.template import Library, Node, Variable, VariableDoesNotExist
from django.utils.translation import ugettext as _

register = Library()


def filter_form(context):
    new_context = context

    new_context.update({
        'form':context['filter_form'],
        'submit_method':'get',
        'title':_(u'Filter'),
    })
    return new_context
register.inclusion_tag('generic_form_subtemplate.html', takes_context=True)(filter_form)
Beispiel #51
0

def submit_row_inline(context):
    opts = context['opts']
    change = context['change']
    is_popup = context['is_popup']
    save_as = context['save_as']
    return {
        'onclick_attrib': (opts.get_ordered_objects() and change
                           and 'onclick="submitOrderForm();"' or ''),
        'show_delete_link': (not is_popup and context['has_delete_permission']
                             and (change or context['show_delete'])),
        'show_save_as_new':
        not is_popup and change and save_as,
        'show_save_and_add_another':
        context['has_add_permission'] and not is_popup
        and (not save_as or context['add']),
        'show_save_and_continue':
        not is_popup and context['has_change_permission'],
        'is_popup':
        is_popup,
        'show_save':
        True
    }


# As you can see, we really want the first template dir. UPDATE: Templates MUST be in the project, not in EMMA.
submit_row_inline = register.inclusion_tag(
    os.path.join(settings.TEMPLATE_DIRS[0],
                 'admin/interface/metadata/submit_line.html'),
    takes_context=True)(submit_row_inline)
Beispiel #52
0
from __future__ import print_function
from django.template import Library
from django.conf import settings
from satchmo_store.contact.models import Contact
from livesettings.functions import config_value
import sys

register = Library()

def show_tracker(context, secure=False):
    """
    Output the google tracker code.
    """
    return ({"GOOGLE_CODE": config_value('GOOGLE', 'ANALYTICS_CODE'), "secure" : secure})

register.inclusion_tag("shop/google-analytics/tracker.html", takes_context=True)(show_tracker)

def show_receipt(context):
    """
    Output our receipt in the format that Google Analytics needs.
    """
    return({'Store': settings.SITE_NAME,
            'order': context['order']})

register.inclusion_tag("shop/google-analytics/receipt.html", takes_context=True)(show_receipt)

def google_track_signup(context):
    """
    Output a a new user signup in the format that Google Analytics needs.
    """
    request = context['request']
            else:
                result_repr = conditional_escape(result_repr)
            yield mark_safe(u'%s' % (result_repr))
    if form:
        yield mark_safe(force_unicode(form[cl.model._meta.pk.name]))
    

def results(cl):
    if cl.formset:
        for res, form in zip(cl.result_list, cl.formset.forms):
            yield list(thumbnails_for_result(cl, res, form))
    else:
        for res in cl.result_list:
            yield list(thumbnails_for_result(cl, res, None))

def thumbnail_result_list(context, cl):
    if context.has_key('STATIC_URL'):
        static_url = 'STATIC_URL'
    else:
        static_url = 'MEDIA_URL'
    result_list = list(results(cl))
    if len(result_list) % 4:
        empty_spaces = range(4 - (len(result_list) % 4))
    else:
        empty_spaces = []
    return {'cl': cl,
            'results': result_list,
            'empty_spaces': empty_spaces,
            'STATIC_URL': context[static_url]}
thumbnail_result_list = register.inclusion_tag("admin/massmedia/change_list_results.html", takes_context=True)(thumbnail_result_list)
            # Insert "smart" pagination links, so that there are always ON_ENDS
            # links at either end of the list of pages, and there are always
            # ON_EACH_SIDE links at either end of the "current page" link.
            page_range = []
            if page_num > (ON_EACH_SIDE + ON_ENDS):
                page_range.extend(range(0, ON_EACH_SIDE - 1))
                page_range.append(DOT)
                page_range.extend(range(page_num - ON_EACH_SIDE, page_num + 1))
            else:
                page_range.extend(range(0, page_num + 1))
            if page_num < (paginator.num_pages - ON_EACH_SIDE - ON_ENDS - 1):
                page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1))
                page_range.append(DOT)
                page_range.extend(range(paginator.num_pages - ON_ENDS, paginator.num_pages))
            else:
                page_range.extend(range(page_num + 1, paginator.num_pages))
    return {
        'cl': cl,
        'pagination_required': pagination_required,
        'ALL_VAR': ALL_VAR,
        '1': 1,
        'has_change_permission': has_change_permission,
        "previous": cl.page_num - 1 if current_page.has_previous() else 0,
        "has_previous": current_page.has_previous(),
        "next": cl.page_num + 1 if current_page.has_next() else page_num - 1,
        "has_next": current_page.has_next(),
        "page_range": page_range,
    }

pagination = register.inclusion_tag('admin/pagination.html')(pagination)
Beispiel #55
0
                page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1))
                page_range.append(DOT)
                page_range.extend(range(paginator.num_pages - ON_ENDS, paginator.num_pages))
            else:
                page_range.extend(range(page_num + 1, paginator.num_pages))

    need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
    return {
        'cl': cl,
        'pagination_required': pagination_required,
        'show_all_url': need_show_all_link and cl.get_query_string({ALL_VAR: ''}),
        'page_range': page_range,
        'ALL_VAR': ALL_VAR,
        '1': 1,
    }
pagination = register.inclusion_tag('admin/pagination.html')(pagination)

def result_headers(cl):
    """
    Generates the list column headers.
    """
    lookup_opts = cl.lookup_opts

    for i, field_name in enumerate(cl.list_display):
        header, attr = label_for_field(field_name, cl.model,
            model_admin = cl.model_admin,
            return_attr = True
        )
        if attr:
            # if the field is the action checkbox: no sorting and special class
            if field_name == 'action_checkbox':
Beispiel #56
0
        'rate_plans':
        rate_plans,
        'occupancies': [(x, f"{x} " + _('prices:page:ppl'))
                        for x in range(1, RATES_MAX_OCCUPANCY)],
        'phone_codes':
        sorted(select_phone_codes(), key=lambda x: x[0]),
        'rooms':
        select_rooms(house, room_types),
        'close_reasons':
        RoomCloseReasons.choices(),
        'policies':
        select_policies(house, rate_plans),
    }


register.inclusion_tag('board/top.reservation_create.html',
                       takes_context=True)(reservation_shortcut_menu)


@inject.autoparams('roomtypes_repo')
def select_room_types(house: 'House', user: '******',
                      roomtypes_repo: RoomTypesRepo) -> List[RoomType]:
    try:
        return roomtypes_repo.select(house, user=user)
    except Exception as err:
        Logger.warning(
            __name__,
            f"Error select Room Types for House ID={house.id} : {err}")
    return []


@inject.autoparams('prices_repo')