def courses_lessons(request): queryset = Lesson.objects.none() if request.GET: queryset = Lesson.objects.all() form = LessonSearchForm(request.GET) if form.is_valid(): queryset = _search_lessons(queryset, form) else: form = LessonSearchForm() return django_object_list(request, queryset=queryset, template_name='courses/lesson_list.html', extra_context={'form':form})
def lesson_list(request, course_id): def _remove_course_field(form): del form.fields['course'] return form course = get_object_or_404(Course, pk=course_id) queryset = course.lesson_set.all() if request.GET: form = _remove_course_field(LessonSearchForm(request.GET)) if form.is_valid(): queryset = _search_lessons(queryset, form) else: form = _remove_course_field(LessonSearchForm()) return django_object_list(request, queryset=queryset, extra_context={'course':course, 'form':form})
def object_list(request, queryset, paginate_by=None, page=None, allow_empty=False, template_name=None, template_loader=loader, extra_context=None, context_processors=None, template_object_name='object', mimetype=None): can_access = reports_perm_checker(request.user, request.path) if not can_access: return HttpResponseRedirect('/accounts/profile/') model_list = get_model_list(request.user) can_access = False for f in model_list: if re.compile('/reports/%s.*' % f['url']).match(request.path): can_access = True break if not can_access: return HttpResponseRedirect('/accounts/profile/') all_fields = [f.name for f in queryset.model._meta.fields] if not extra_context: extra_context = {} if 'admin_user' not in extra_context: if request.user.is_staff: extra_context['admin_user'] = True if 'title' not in extra_context: extra_context['title'] = queryset.model._meta.verbose_name_plural.title() if 'field_list' not in extra_context: extra_context['field_list'] = all_fields filter_select = {} for i in xrange(len(all_fields)): name = all_fields[i] filter = Filter(name) field_type = type(queryset.model._meta.fields[i]) if field_type == BooleanField: filter.items[-1] = (Item('All', -1)) filter.items[0] = (Item('False', 0)) filter.items[1] = (Item('True', 1)) else: continue filter_select[name] = filter urlparts = [] for f in request.GET: if not f.startswith('filter__'): continue urlparts.append('%s=%s&' % (f, request.GET[f])) name = f[8:] field_type = type(queryset.model._meta.fields[all_fields.index(name)]) if name and name in filter_select: if field_type == BooleanField: filter = filter_select[name] try: value = int(request.GET[f]) except ValueError: continue if value in filter.items and value != -1: filter.selected = value query_string = '%s = %%s' % paranoid_strip(name) queryset = queryset.extra(where=[query_string], params=[value]) extra_context['filter_select'] = filter_select.values() extra_context['urlpart'] = ''.join([part for part in urlparts]) extra_context['numbers'] = queryset.count() return django_object_list(request, queryset, paginate_by, page, allow_empty, template_name, template_loader, extra_context, context_processors, template_object_name, mimetype)
def object_list(request, queryset, paginate_by=None, page=None, allow_empty=False, template_name=None, template_loader=loader, extra_context=None, context_processors=None, template_object_name='object', mimetype=None): can_access = services_perm_checker(request.user, request.path) if not can_access: return HttpResponseRedirect('/accounts/profile/') model_list = get_model_list(request.user) can_access = False for f in model_list: if re.compile('/reports/%s.*' % f['url']).match(request.path): can_access = True break if not can_access: return HttpResponseRedirect('/accounts/profile/') all_fields = [f.name for f in queryset.model._meta.fields] if not extra_context: extra_context = {} if 'admin_user' not in extra_context: if request.user.is_staff: extra_context['admin_user'] = True if 'title' not in extra_context: extra_context[ 'title'] = queryset.model._meta.verbose_name_plural.title() if 'field_list' not in extra_context: extra_context['field_list'] = all_fields filter_select = {} for i in xrange(len(all_fields)): name = all_fields[i] filter = Filter(name) field_type = type(queryset.model._meta.fields[i]) if field_type == BooleanField: filter.items[-1] = (Item('All', -1)) filter.items[0] = (Item('False', 0)) filter.items[1] = (Item('True', 1)) else: continue filter_select[name] = filter urlparts = [] for f in request.GET: if not f.startswith('filter__'): continue urlparts.append('%s=%s&' % (f, request.GET[f])) name = f[8:] field_type = type(queryset.model._meta.fields[all_fields.index(name)]) if name and name in filter_select: if field_type == BooleanField: filter = filter_select[name] try: value = int(request.GET[f]) except ValueError: continue if value in filter.items and value != -1: filter.selected = value query_string = '%s = %%s' % paranoid_strip(name) queryset = queryset.extra(where=[query_string], params=[value]) extra_context['filter_select'] = filter_select.values() extra_context['urlpart'] = ''.join([part for part in urlparts]) extra_context['numbers'] = queryset.count() return django_object_list(request, queryset, paginate_by, page, allow_empty, template_name, template_loader, extra_context, context_processors, template_object_name, mimetype)
def object_list( request, queryset, paginate_by=None, page=None, allow_empty=False, template_name=None, template_loader=loader, extra_context=None, context_processors=None, template_object_name="object", mimetype=None, ): can_access = services_perm_checker(request.user, request.path) if not can_access: return HttpResponseRedirect("/accounts/profile/") model_list = get_model_list(request.user) can_access = False for f in model_list: if re.compile("/reports/%s.*" % f["url"]).match(request.path): can_access = True break if not can_access: return HttpResponseRedirect("/accounts/profile/") all_fields = [f.name for f in queryset.model._meta.fields] if not extra_context: extra_context = {} if "admin_user" not in extra_context: if request.user.is_staff: extra_context["admin_user"] = True if "title" not in extra_context: extra_context["title"] = queryset.model._meta.verbose_name_plural.title() if "field_list" not in extra_context: extra_context["field_list"] = all_fields filter_select = {} for i in xrange(len(all_fields)): name = all_fields[i] filter = Filter(name) field_type = type(queryset.model._meta.fields[i]) if field_type == BooleanField: filter.items[-1] = Item("All", -1) filter.items[0] = Item("False", 0) filter.items[1] = Item("True", 1) else: continue filter_select[name] = filter urlparts = [] for f in request.GET: if not f.startswith("filter__"): continue urlparts.append("%s=%s&" % (f, request.GET[f])) name = f[8:] field_type = type(queryset.model._meta.fields[all_fields.index(name)]) if name and name in filter_select: if field_type == BooleanField: filter = filter_select[name] try: value = int(request.GET[f]) except ValueError: continue if value in filter.items and value != -1: filter.selected = value query_string = "%s = %%s" % paranoid_strip(name) queryset = queryset.extra(where=[query_string], params=[value]) extra_context["filter_select"] = filter_select.values() extra_context["urlpart"] = "".join([part for part in urlparts]) extra_context["numbers"] = queryset.count() return django_object_list( request, queryset, paginate_by, page, allow_empty, template_name, template_loader, extra_context, context_processors, template_object_name, mimetype, )