示例#1
0
    def render(self, context):
        try:
            # This evaluates to a ImageWithThumbsField, as long as the
            # user specified a valid model field.
            relative_source = Variable(self.source_var).resolve(context)
        except VariableDoesNotExist:
            if settings.TEMPLATE_DEBUG:
                raise VariableDoesNotExist("Variable '%s' does not exist." %
                        self.source_var)
            else:
                relative_source = None

        try:
            requested_name = Variable(self.thumb_name_var).resolve(context)
        except VariableDoesNotExist:
            if settings.TEMPLATE_DEBUG:
                raise TemplateSyntaxError("Name argument '%s' is not a valid thumbnail." % self.thumb_name_var)
            else:
                requested_name = None

        if relative_source is None or requested_name is None:
            # Couldn't resolve the given template variable. Fail silently.
            thumbnail = ''
        else:
            # Spaces at the end of sizes is just not OK.
            requested_name = requested_name.strip()
            # This is typically a athumb.fields.ImageWithThumbsFieldFile object.
            try:
                # Allow the user to override the protocol in the tag.
                force_ssl = self.kwargs.get('force_ssl', False)
                # Try to detect SSL mode in the request context. Front-facing
                # server or proxy must be passing the correct headers for
                # this to work. Also, factor in force_ssl.
                ssl_mode = self.is_secure(context) or force_ssl
                # Get the URL for the thumbnail from the
                # ImageWithThumbsFieldFile object.
                try:
                    thumbnail = relative_source.generate_url(requested_name,
                                                             ssl_mode=ssl_mode)
                except:
                    #import traceback
                    #traceback.print_stack()
                    print "ERROR: Using {% thumbnail %} tag with "\
                          "a regular ImageField instead of ImageWithThumbsField:", self.source_var
                    return ''
            except ValueError:
                # This file object doesn't actually have a file. Probably
                # model field with a None value.
                thumbnail = ''

        # Return the thumbnail class, or put it on the context
        if self.context_name is None:
            return thumbnail

        # We need to get here so we don't have old values in the context
        # variable.
        context[self.context_name] = thumbnail

        return ''
示例#2
0
    def render(self, context):
        try:
            # This evaluates to a ImageWithThumbsField, as long as the
            # user specified a valid model field.
            relative_source = Variable(self.source_var).resolve(context)
        except VariableDoesNotExist:
            if settings.TEMPLATE_DEBUG:
                raise VariableDoesNotExist("Variable '%s' does not exist." %
                                           self.source_var)
            else:
                relative_source = None

        try:
            requested_name = Variable(self.thumb_name_var).resolve(context)
        except VariableDoesNotExist:
            if settings.TEMPLATE_DEBUG:
                raise TemplateSyntaxError("Name argument '%s' is not a valid thumbnail." % self.thumb_name_var)
            else:
                requested_name = None

        if relative_source is None or requested_name is None:
            # Couldn't resolve the given template variable. Fail silently.
            thumbnail = ''
        else:
            # Spaces at the end of sizes is just not OK.
            requested_name = requested_name.strip()
            # This is typically a athumb.fields.ImageWithThumbsFieldFile object.
            try:
                # Allow the user to override the protocol in the tag.
                force_ssl = self.kwargs.get('force_ssl', False)
                # Try to detect SSL mode in the request context. Front-facing
                # server or proxy must be passing the correct headers for
                # this to work. Also, factor in force_ssl.
                ssl_mode = self.is_secure(context) or force_ssl
                # Get the URL for the thumbnail from the
                # ImageWithThumbsFieldFile object.
                try:
                    thumbnail = relative_source.generate_url(requested_name,
                                                             ssl_mode=ssl_mode)
                except:
                    #import traceback
                    #traceback.print_stack()
                    print "ERROR: Using {% thumbnail %} tag with " \
                          "a regular ImageField instead of ImageWithThumbsField:", self.source_var
                    return ''
            except ValueError:
                # This file object doesn't actually have a file. Probably
                # model field with a None value.
                thumbnail = ''

        # Return the thumbnail class, or put it on the context
        if self.context_name is None:
            return thumbnail

        # We need to get here so we don't have old values in the context
        # variable.
        context[self.context_name] = thumbnail

        return ''
    def render(self, context):
        original_querystring = self.original_querystring.resolve(context)

        if isinstance(original_querystring, QueryDict):
            qs = original_querystring.copy()
        else:
            qs = QueryDict(original_querystring, mutable=True)

        qs.pop("page", None)

        key = self.key
        val = self.value

        if not (key[0] == key[-1] == '"'):
            key = Variable(key).resolve(context)
        else:
            key = key.strip('"')

        if not (val[0] == val[-1] == '"'):
            val = Variable(val).resolve(context)
        else:
            val = val.strip('"')

        field_values = qs.getlist(key)

        if self.mode == "add":
            field_values.append(val)
        else:
            if val in field_values:
                field_values.remove(val)

        qs.setlist(key, field_values)

        output = escape(qs.urlencode())

        if self.output_variable_name:
            context[self.output_variable_name] = output
        else:
            return output
示例#4
0
def folding_fan(context, token):
    parts = token.split_contents()[1:]
    fan_name = None
    for part in parts:
        part = Variable(part).resolve(context)
        fan_name = part.strip('/')

    if fan_name.startswith('blog/category/'):
        fan_name = "whatsnew"
    elif fan_name == 'blog':
        fan_name = "whatsnew"

    exist = False
    if fan_name:
        p = path.join(settings.MEDIA_ROOT,
                      'uploads', 'fans', '{0}.png'.format(fan_name))
        exist = path.exists(p)

    context['exist'] = exist
    context['image_url'] = 'media/uploads/fans/{0}.png'.format(fan_name)
    t = get_template("common/menus/fans.html")
    return t.render(Context(context))
    def render(self, context):
        base_qs = self.base_qs.resolve(context)

        if isinstance(base_qs, QueryDict):
            qs = base_qs.copy()
        else:
            qs = QueryDict(base_qs, mutable=True)

        for arg in self.args:
            if arg.startswith("delete:"):
                v = arg[7:]
                if v in qs:
                    del qs[v]
            elif arg.startswith("delete_value:"):
                field, value = arg[13:].split(",", 2)
                value = Variable(value).resolve(context)

                if not (field[0] == '"' and field[-1] == '"'):
                    field = Variable(field).resolve(context)
                else:
                    field = field.strip('"\'')

                f_list = qs.getlist(field)
                if value in f_list:
                    f_list.remove(value)
                    qs.setlist(field, f_list)

            else:
                k, v = arg.split("=", 2)
                qs[k] = Variable(v).resolve(context)

        encoded_qs = escape(qs.urlencode())
        if self.as_variable:
            context[self.as_variable] = encoded_qs
            return ""
        else:
            return encoded_qs