def render(self, context):
     result = ['<script type="text/javascript">']
     self.form = context[self.form]
     self.formcls = self.form.__class__
     try:
         # admin formset
         fields = self.form.form.fields
         prefix = '%s-' % self.form.prefix if self.form.form.prefix else ''
     except AttributeError:
         try:
             # regular form
             fields = self.form.fields
         except AttributeError:
             raise template.TemplateSyntaxError('Form %s has no fields' %
                                                self.form)
         prefix = '%s-' % self.form.prefix if self.form.prefix else ''
     for name, field in fields.items():
         result.append(self.do_field('%s%s' % (prefix, name), field))
     try:
         result.append(LV_EXTRA_SCRIPT %
                       {'fieldname': 'id_%s' % fields.keys()[1]})
     except:
         return ''
     result.append('</script>')
     return '\n\n'.join(filter(None, result))
 def render(self, context):
     result = ['<script type="text/javascript">']
     self.form = context[self.form]
     self.formcls = self.form.__class__
     try:
         # admin formset
         fields = self.form.form.fields
         prefix = '%s-' % self.form.prefix if self.form.form.prefix else ''
     except AttributeError:
         try:
             # regular form
             fields = self.form.fields
         except AttributeError:
             raise template.TemplateSyntaxError('Form %s has no fields' %
                                                self.form)
         prefix = '%s-' % self.form.prefix if self.form.prefix else ''
     used_fields = {}
     for name, field in fields.items():
         if isinstance(field.widget, widgets.HiddenInput):
             continue
         used_fields[name] = field
     fields = used_fields
     for name, field in fields.items():
         result.append(self.do_field('%s%s' % (prefix, name), field))
     try:
         _prefix = prefix.replace('-', '_')
         result.append(
             LV_EXTRA_SCRIPT % {
                 'prefix': _prefix,
                 'fieldname': 'id_%s%s' % (_prefix, fields.keys()[-1])
             })
     except:
         return ''
     result.append('</script>')
     return '\n\n'.join(filter(None, result))
 def render(self, context):
     result = ['<script type="text/javascript">']
     self.form = context[self.form]
     self.formcls = self.form.__class__
     try:
         # admin formset
         fields = self.form.form.fields
         prefix = '%s-'%self.form.prefix if self.form.form.prefix else ''
     except AttributeError:
         try:
             # regular form
             fields = self.form.fields
         except AttributeError:
             raise template.TemplateSyntaxError('Form %s has no fields'%self.form)
         prefix = '%s-'%self.form.prefix if self.form.prefix else ''
     used_fields = {}
     for name,field in fields.items():
         if isinstance(field.widget, widgets.HiddenInput):
             continue
         used_fields[name] = field
     fields = used_fields
     for name,field in fields.items():
         result.append(self.do_field('%s%s'%(prefix,name),field))
     try:
         _prefix = prefix.replace('-', '_')
         result.append(LV_EXTRA_SCRIPT % {
             'prefix': _prefix,
             'fieldname':'id_%s%s' % (_prefix, fields.keys()[-1])
         })
     except:
         return ''
     result.append('</script>')
     return '\n\n'.join(filter(None,result))
 def render(self, context):
     result = ['<script type="text/javascript">']
     self.form = context[self.form]
     self.formcls = self.form.__class__
     try:
         # admin formset
         fields = self.form.form.fields
         prefix = '%s-'%self.form.prefix if self.form.form.prefix else ''
     except AttributeError:
         try:
             # regular form
             fields = self.form.fields
         except AttributeError:
             raise template.TemplateSyntaxError('Form %s has no fields'%self.form)
         prefix = '%s-'%self.form.prefix if self.form.prefix else ''
     for name,field in fields.items():
         result.append(self.do_field('%s%s'%(prefix,name),field))
     try:
         result.append(LV_EXTRA_SCRIPT%{'fieldname':'id_%s'%fields.keys()[1]})
     except:
         return ''
     result.append('</script>')
     return '\n\n'.join(filter(None,result))
Example #5
0
def query_from_request(request, queryset, fields):
    """Modify a queryset with request args

    Params :
     - request
     - queryset : queryset to modify
     - fields : dict with query <=> django field associations

    For example request with::

        name=toto&sort=id

    With fields::

        fields = {"name": "group__name", "id": "id"}

    Is equivalent to::

        queryset.filter(group__name__icontains="toto").order_by(['id'])

    queryset can be limited with start= & limit=

    """
    # Filter time
    for extfield, djfield in fields.items():
        if extfield in request.REQUEST:
            value = request.REQUEST.get(extfield)
            filter_args = {"%s__icontains" % djfield: value}
            queryset = queryset.filter(**filter_args)

    # Sort time
    if "sort" in request.REQUEST:
        sort = request.REQUEST.get("sort")
        if sort not in fields.keys():
            raise IndexError("Sort criter not listed in fields")
        dj_sort = fields[sort]

        if "dir" in request.REQUEST:
            direction = request.REQUEST.get("dir")
            if direction == "DESC":
                dj_sort = "-%s" % (dj_sort)
        queryset = queryset.order_by(dj_sort)

    # get start time
    start = request.REQUEST.get("start", 0)
    try:
        start = int(start)
    except ValueError:
        # Silent error because of user
        return queryset.none()

    # limit time
    if "limit" in request.REQUEST:
        limit = request.REQUEST.get("limit")
        try:
            limit = int(limit)
        except ValueError:
            # Silent error because of user
            return queryset.none()
        queryset = queryset[start : start + limit]
    elif start:
        queryset = queryset[start:]

    return queryset
Example #6
0
def query_from_request(request, queryset, fields):
    """Modify a queryset with request args

    Params :
     - request
     - queryset : queryset to modify
     - fields : dict with query <=> django field associations

    For example request with::

        name=toto&sort=id

    With fields::

        fields = {"name": "group__name", "id": "id"}

    Is equivalent to::

        queryset.filter(group__name__icontains="toto").order_by(['id'])

    queryset can be limited with start= & limit=

    """
    # Filter time
    for extfield, djfield in fields.items():
        if extfield in request.REQUEST:
            value = request.REQUEST.get(extfield)
            filter_args = {'%s__icontains' % djfield : value}
            queryset = queryset.filter(**filter_args)

    # Sort time
    if 'sort' in request.REQUEST:
        sort = request.REQUEST.get('sort')
        if sort not in fields.keys():
            raise IndexError("Sort criter not listed in fields")
        dj_sort = fields[sort]

        if 'dir' in request.REQUEST:
            direction = request.REQUEST.get('dir')
            if direction == 'DESC':
                dj_sort = '-%s' % (dj_sort)
        queryset = queryset.order_by(dj_sort)

    # get start time
    start = request.REQUEST.get("start", 0)
    try:
        start = int(start)
    except ValueError:
        # Silent error because of user
        return queryset.none()

    # limit time
    if 'limit' in request.REQUEST:
        limit = request.REQUEST.get('limit')
        try:
            limit = int(limit)
        except ValueError:
            # Silent error because of user
            return queryset.none()
        queryset = queryset[start:start+limit]
    elif start:
        queryset = queryset[start:]

    return queryset