Beispiel #1
0
def advanced_search(request):

    filters = {}

    for filter_name, collapsed in ADVANCED_SEARCH_FILTERS:
        filter = FILTERS[filter_name]
        filter_data = {"name": filter_name,
                       "title": filter.title,
                       "options": [],
                       "request_name": filter.request_name,
                       "collapsed": collapsed}
        if isinstance(filter, VocabularyFilter):
            for option in filter.model.objects.values("id", "slug", "name"):
                option["input_id"] = "%s-%i" % \
                                (filter_data["request_name"].replace(".", "-"),
                                 option["id"])
                filter_data["options"].append(option)
        elif isinstance(filter, ChoicesFilter):
            for i, (slug, name) in enumerate(filter.choices):
                option = {"id": i, "slug": slug, "name": name}
                option["input_id"] = "%s-%i" % \
                                (filter_data["request_name"].replace(".", "-"),
                                 option["id"])
                filter_data["options"].append(option)
        filters[filter_name] = filter_data

    license_types_dict = dict(LICENSE_TYPES)
    license_hierarchy_dict = dict(LICENSE_HIERARCHY)
    filters["cou_bucket"]["sub_option_request_name"] = FILTERS["license_type"].request_name
    for option in filters["cou_bucket"]["options"]:
        option["options"] = []
        for i, license_type in enumerate(license_hierarchy_dict[option["slug"]]):
            sub_option = {"id": i,
                          "slug": license_type,
                          "name": license_types_dict[license_type]}
            sub_option["input_id"] = "%s-%i%i" % \
                                (filters["cou_bucket"]["sub_option_request_name"].replace(".", "-"),
                                 option["id"], sub_option["id"])
            option["options"].append(sub_option)

    page_title = u"Advanced Search"
    breadcrumbs = [{"url": reverse("materials:advanced_search"),
                    "title": page_title}]

    rubrics = [dict(id=id, name=name) for id, name in get_rubric_choices()]

    return direct_to_template(request, "materials/advanced-search.html",
                              locals())
Beispiel #2
0
                value = map(int, value)
            except (TypeError, ValueError):
                raise Http404()
        return value


FILTERS = {
    "general_subjects": VocabularyFilter("general_subjects", "f.general_subject", GeneralSubject, u"Subject Area"),
    "grade_levels": VocabularyFilter("grade_levels", "f.edu_level", GradeLevel, u"Grade Level"),
    "course_material_types": VocabularyFilter("course_material_types", "f.material_types", CourseMaterialType, u"Material Type"),
    "library_material_types": VocabularyFilter("library_material_types", "f.lib_material_types", LibraryMaterialType, u"Material Type"),
    "media_formats": VocabularyFilter("media_formats", "f.media_formats", MediaFormat, u"Media Format"),
    "languages": VocabularyFilter("languages", "f.language", Language, u"Language"),
    "geographic_relevance": VocabularyFilter("geographic_relevance", "f.geographic_relevance", GeographicRelevance, u"Intended Regional Relevance"),
    "community_types": VocabularyFilter("community_types", "f.oer_type", CommunityType, u"OER Community Type"),
    "community_topics": VocabularyFilter("community_topics", "f.oer_topic", CommunityTopic, u"OER Community Topic"),
    "course_or_module": ChoicesFilter("course_or_module", "f.course_or_module", COURSE_OR_MODULE, u"Course Type"),
    "cou_bucket": ChoicesFilter("cou_bucket", "f.cou_bucket", COU_BUCKETS, u"Conditions of Use"),
    "license_type": ChoicesFilter("license", "f.license", LICENSE_TYPES, u"Conditions of Use"),
    "member_activities": ChoicesFilter("member_activities", "f.member_activity", MEMBER_ACTIVITY_TYPES, u"Member Activity"),
    "collection": VocabularyFilter("collection", "f.collection", Collection, u"Collection"),
    "keywords": KeywordFilter("keywords", "f.keyword"),
    "microsite": VocabularyFilter("microsites", "f.microsite", Microsite, u"Topic", ignore_all_values=False),
    "topics": VocabularyFilter("indexed_topics", "f.subtopic", Topic, u"SubTopic"),
    "featured": BooleanFilter("featured", "f.featured", u"Featured Resources"),
    "alignment": AlignmentFilter("alignment_tags", "f.alignment"),
    "evaluated_rubrics": RubricFilter("evaluated_rubrics", "f.rubric", get_rubric_choices(), u"Rubric"),
    "search": SearchFilter(),
}