Example #1
0
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})
Example #2
0
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})
Example #3
0
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)
Example #4
0
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)
Example #5
0
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,
    )