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))
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
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