示例#1
0
def courses_search(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    if request.is_ajax():
        query_string=""
        courses=[]
        query_string = request.GET['search_string']
        if query_string is not None:
            print "----------------------------------"+query_string+"\n"
            entry_query=normalize_query(query_string)
            allCourses = get_courses(request.user, request.META.get('HTTP_HOST'))
            for course in allCourses:
                title=get_course_about_section(course,'title').lower()
                flag=True
                for query in entry_query:
                    if not query.lower() in title:
                        flag=False
                        break
                if flag:
                    courses.append(course)
            courses = sort_by_announcement(courses)
            
            if courses:
                return render_to_response("courseware/courses_search.html", {'courses': courses})
            else:
                return HttpResponse("No Courses Found")
示例#2
0
def search_category(request):
    courses = get_courses2(request, request.user,
                           request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    c_list = []
    c_num = []
    c_len = CourseCategory.objects.all().count()
    for i in range(1, c_len + 1):
        c_name = CourseCategory.objects.get(id=i).category_name
        c_list.append(c_name)
    all_courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    all_c_num = len(all_courses)
    for j in range(1, 17):
        c_num.append(0)
    for c in all_courses:
        c_category = c.display_number_with_default[0:2]
        c_category_no = int(c_category)
        num_t = c_num[c_category_no - 1]
        c_num[c_category_no - 1] = num_t + 1

    return render_to_response(
        "courseware/courses.html", {
            'courses': courses,
            'c_list': c_list,
            'c_num': c_num,
            'all_c_num': all_c_num
        })
示例#3
0
def university_profile(request, org_id):
    """
    Return the profile for the particular org_id.  404 if it's not valid.
    """
    virtual_orgs_ids = settings.VIRTUAL_UNIVERSITIES
    meta_orgs = getattr(settings, 'META_UNIVERSITIES', {})

    # Get all the ids associated with this organization
    all_courses = modulestore().get_courses()
    valid_orgs_ids = set(c.org for c in all_courses)
    valid_orgs_ids.update(virtual_orgs_ids + meta_orgs.keys())

    if org_id not in valid_orgs_ids:
        raise Http404("University Profile not found for {0}".format(org_id))

    # Grab all courses for this organization(s)
    org_ids = set([org_id] + meta_orgs.get(org_id, []))
    org_courses = []
    domain = request.META.get('HTTP_HOST')
    for key in org_ids:
        cs = get_courses_by_university(request.user, domain=domain)[key]
        org_courses.extend(cs)

    org_courses = sort_by_announcement(org_courses)

    context = dict(courses=org_courses, org_id=org_id)
    template_file = "university_profile/{0}.html".format(org_id).lower()

    return render_to_response(template_file, context)
示例#4
0
def courses_search(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    if request.is_ajax():
        query_string = ""
        courses = []
        query_string = request.GET['search_string']
        if query_string is not None:
            print "----------------------------------" + query_string + "\n"
            entry_query = normalize_query(query_string)
            allCourses = get_courses(request.user,
                                     request.META.get('HTTP_HOST'))
            for course in allCourses:
                title = get_course_about_section(course, 'title').lower()
                flag = True
                for query in entry_query:
                    if not query.lower() in title:
                        flag = False
                        break
                if flag:
                    courses.append(course)
            courses = sort_by_announcement(courses)

            if courses:
                return render_to_response("courseware/courses_search.html",
                                          {'courses': courses})
            else:
                return HttpResponse("No Courses Found")
示例#5
0
def get_search_category(request):
    courses = get_courses2(request, request.user,
                           request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    json_list = json_courses(request, courses)
    decodejson = json.loads(json_list)
    c_list = []
    c_num = []
    c_len = CourseCategory.objects.all().count()
    for i in range(1, c_len + 1):
        c_name = CourseCategory.objects.get(id=i).category_name
        c_list.append(c_name)
    all_courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    all_c_num = len(all_courses)
    for j in range(1, 17):
        c_num.append(0)
    for c in all_courses:
        c_category = c.display_number_with_default[0:2]
        c_category_no = int(c_category)
        num_t = c_num[c_category_no - 1]
        c_num[c_category_no - 1] = num_t + 1
    decodejson.append(c_list)
    decodejson.append(c_num)
    decodejson.append(all_c_num)
    decodejson.append(c_len)

    return JsonResponse(decodejson)
示例#6
0
文件: views.py 项目: louyihua/edx-ss
def search_courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses1(request,request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    c_list=[]
    c_num=[]
    c_len=CourseCategory.objects.all().count()
    for i in range(1,c_len+1):
	    c_name=CourseCategory.objects.get(id = i).category_name
	    c_list.append(c_name)
    all_courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    all_c_num = len(all_courses)
    for j in range(1,17):
	    c_num.append(0)
    for c in all_courses:
        c_category = c.display_number_with_default[0:2]
        c_category_no = int(c_category)
        num_t=c_num[c_category_no-1]
        c_num[c_category_no-1]=num_t+1
    name_list=[]
    category_list=[]
    category_num=[]
    for i in range (0,len(c_num)):
        if c_num[i]!=0:
            if i<9:
                num='0'+str(int(i+1))
                name_list.append(num)
            else:
                name_list.append(i+1)
            category_list.append(c_list[i])
            category_num.append(c_num[i])
    none_zero=len(category_num)
    return render_to_response("courseware/courses.html", {'courses': courses,'name_list':name_list,'category_list':category_list,'category_num':category_num,'all_c_num':all_c_num,'none_zero':none_zero})
示例#7
0
def get_search_courses(request):
    courses = get_courses1(request, request.user,
                           request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    json_list = json_courses(request, courses)
    decodejson = json.loads(json_list)
    return JsonResponse(decodejson)
示例#8
0
def university_profile(request, org_id):
    """
    Return the profile for the particular org_id.  404 if it's not valid.
    """
    virtual_orgs_ids = settings.VIRTUAL_UNIVERSITIES
    meta_orgs = getattr(settings, 'META_UNIVERSITIES', {})

    # Get all the ids associated with this organization
    all_courses = modulestore().get_courses()
    valid_orgs_ids = set(c.org for c in all_courses)
    valid_orgs_ids.update(virtual_orgs_ids + meta_orgs.keys())

    if org_id not in valid_orgs_ids:
        raise Http404("University Profile not found for {0}".format(org_id))

    # Grab all courses for this organization(s)
    org_ids = set([org_id] + meta_orgs.get(org_id, []))
    org_courses = []
    domain = request.META.get('HTTP_HOST')
    for key in org_ids:
        cs = get_courses_by_university(request.user, domain=domain)[key]
        org_courses.extend(cs)

    org_courses = sort_by_announcement(org_courses)

    context = dict(courses=org_courses, org_id=org_id)
    template_file = "university_profile/{0}.html".format(org_id).lower()

    return render_to_response(template_file, context)
示例#9
0
文件: views.py 项目: louyihua/edx-ss
def get_search_category(request):
    courses = get_courses2(request,request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    json_list=json_courses(request,courses)
    decodejson = json.loads(json_list)
    c_list=[]
    c_num=[]
    c_len=CourseCategory.objects.all().count()
    for i in range(1,c_len+1):
	    c_name=CourseCategory.objects.get(id = i).category_name
	    c_list.append(c_name)
    all_courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    all_c_num = len(all_courses)
    for j in range(1,17):
	    c_num.append(0)
    for c in all_courses:
        c_category = c.display_number_with_default[0:2]
        c_category_no = int(c_category)
        num_t=c_num[c_category_no-1]
        c_num[c_category_no-1]=num_t+1
    decodejson.append(c_list)
    decodejson.append(c_num)
    decodejson.append(all_c_num)
    decodejson.append(c_len)

    return JsonResponse(decodejson)
示例#10
0
def index(request, extra_context=None, user=AnonymousUser()):
    """
    Render the edX main page.

    extra_context is used to allow immediate display of certain modal windows, eg signup,
    as used by external_auth.
    """
    if extra_context is None:
        extra_context = {}

    courses = get_courses(user)

    if configuration_helpers.get_value(
            "ENABLE_COURSE_SORTING_BY_START_DATE",
            settings.FEATURES["ENABLE_COURSE_SORTING_BY_START_DATE"],
    ):
        courses = sort_by_start_date(courses)
    else:
        courses = sort_by_announcement(courses)

    context = {'courses': courses}

    context['homepage_overlay_html'] = configuration_helpers.get_value(
        'homepage_overlay_html')

    # This appears to be an unused context parameter, at least for the master templates...
    context['show_partners'] = configuration_helpers.get_value(
        'show_partners', True)

    # TO DISPLAY A YOUTUBE WELCOME VIDEO
    # 1) Change False to True
    context['show_homepage_promo_video'] = configuration_helpers.get_value(
        'show_homepage_promo_video', False)

    # Maximum number of courses to display on the homepage.
    context['homepage_course_max'] = configuration_helpers.get_value(
        'HOMEPAGE_COURSE_MAX', settings.HOMEPAGE_COURSE_MAX)

    # 2) Add your video's YouTube ID (11 chars, eg "123456789xX"), or specify via site configuration
    # Note: This value should be moved into a configuration setting and plumbed-through to the
    # context via the site configuration workflow, versus living here
    youtube_video_id = configuration_helpers.get_value(
        'homepage_promo_video_youtube_id', "your-youtube-id")
    context['homepage_promo_video_youtube_id'] = youtube_video_id

    # allow for theme override of the courses list
    context['courses_list'] = theming_helpers.get_template_path(
        'courses_list.html')

    # Insert additional context for use in the template
    context.update(extra_context)

    # Add marketable programs to the context.
    context['programs_list'] = get_programs_with_type(request.site,
                                                      include_hidden=False)

    # TODO: Course Listing Plugin required
    context['journal_info'] = get_journals_context(request)

    return render_to_response('index.html', context)
示例#11
0
文件: views.py 项目: a-nassif/edraak
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses(request.user, request.META.get('HTTP_HOST'))[:9]
    courses = sort_by_announcement(courses)

    return render_to_response("courseware/courses.html", {'courses': courses, 'homepage_promo_video_youtube_id': 'yY2gsC8bL3U'})
示例#12
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)

    return render_to_response("courseware/courses.html", {'courses': courses})
示例#13
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)

    return render_to_response("courseware/courses.html", {'courses': courses})
示例#14
0
def audit_courses(request, user=AnonymousUser()):
    # The course selection work is done in courseware.courses.
    domain = settings.FEATURES.get('FORCE_UNIVERSITY_DOMAIN')  # normally False
    # do explicit check, because domain=None is valid
    if domain is False:
        domain = request.META.get('HTTP_HOST')

    courses = get_courses(user, domain=domain)

    return filter_audited_items(sort_by_announcement(courses))
示例#15
0
def courses(request, show_hidden):
    """
    Renders the courses list for the API.

    :param request: The django HttpRequest object.
    :param show_hidden: True or False, (controlled from the urls.py file) to show courses with
                        upcoming enrollment date.

    :return: JsonResponse with a list of the courses.
    """
    courses_list = branding.get_visible_courses()

    if not show_hidden:
        # Using `AnonymousUser()` to hide unpublished courses
        anonymous_user = AnonymousUser()

        # The logic bellow has been copied (with amendments) from `courseware.courses.get_courses`,
        # Just in case something changes with edX releases.
        permission_name = settings.COURSE_CATALOG_VISIBILITY_PERMISSION

        courses_list = [
            c for c in courses_list
            if has_access(anonymous_user, permission_name, c)
        ]

    courses_list = sort_by_announcement(courses_list)
    courses_list = edraak_courses_logic(courses_list)

    courses_json_list = []

    prefix = get_absolute_url_prefix(request)

    for course in courses_list:
        video_tag = get_course_about_section(course, "video")
        youtube_id = video_tag[video_tag.find("embed") + 6:video_tag.find("?")]

        courses_json_list.append({
            "id": unicode(course.id),
            "number": course.display_number_with_default,
            "name": course.display_name_with_default,
            "organization": course.display_org_with_default,
            "description": get_course_about_section(course, "short_description").strip(),
            "startDate": course.start,
            "endDate": course.end,
            "enrollmentStartDate": course.enrollment_start,
            "enrollmentEndDate": course.enrollment_end,
            "overview": get_course_about_section(course, "overview").strip(),
            "aboutPage": prefix + reverse('about_course', args=[unicode(course.id)]),
            "image": prefix + course_image_url(course),
            "state": _get_course_status(course),
            "youtube_id": youtube_id,
            "effort": get_course_about_section(course, "effort").strip(),
        })

    return JsonResponse(courses_json_list)
示例#16
0
def index(request, extra_context=None, user=AnonymousUser()):
    """
    Render the edX main page.

    extra_context is used to allow immediate display of certain modal windows, eg signup,
    as used by external_auth.
    """
    if extra_context is None:
        extra_context = {}

    courses = get_courses(user)

    if configuration_helpers.get_value(
            "ENABLE_COURSE_SORTING_BY_START_DATE",
            settings.FEATURES["ENABLE_COURSE_SORTING_BY_START_DATE"],
    ):
        courses = sort_by_start_date(courses)
    else:
        courses = sort_by_announcement(courses)

    context = {'courses': courses}

    context['homepage_overlay_html'] = configuration_helpers.get_value('homepage_overlay_html')

    # This appears to be an unused context parameter, at least for the master templates...
    context['show_partners'] = configuration_helpers.get_value('show_partners', True)

    # TO DISPLAY A YOUTUBE WELCOME VIDEO
    # 1) Change False to True
    context['show_homepage_promo_video'] = configuration_helpers.get_value('show_homepage_promo_video', False)

    # Maximum number of courses to display on the homepage.
    context['homepage_course_max'] = configuration_helpers.get_value(
        'HOMEPAGE_COURSE_MAX', settings.HOMEPAGE_COURSE_MAX
    )

    # 2) Add your video's YouTube ID (11 chars, eg "123456789xX"), or specify via site configuration
    # Note: This value should be moved into a configuration setting and plumbed-through to the
    # context via the site configuration workflow, versus living here
    youtube_video_id = configuration_helpers.get_value('homepage_promo_video_youtube_id', "your-youtube-id")
    context['homepage_promo_video_youtube_id'] = youtube_video_id

    # allow for theme override of the courses list
    context['courses_list'] = theming_helpers.get_template_path('courses_list.html')

    # Insert additional context for use in the template
    context.update(extra_context)

    # Add marketable programs to the context.
    context['programs_list'] = get_programs_with_type(request.site, include_hidden=False)

    # TODO: Course Listing Plugin required
    context['journal_info'] = get_journals_context(request)

    return render_to_response('index.html', context)
示例#17
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    universities = []
    for course in courses:
        university = get_course_about_section(course,'university')
        if not university in universities:
            universities.append(university)
    universities.sort()
    return render_to_response("courseware/courses.html", {'courses': courses,'universities':universities})
示例#18
0
文件: views.py 项目: alexmerser/lms
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses(request.user, request.META.get('HTTP_HOST'))

    if microsite.get_value("ENABLE_COURSE_SORTING_BY_START_DATE",
                           settings.FEATURES["ENABLE_COURSE_SORTING_BY_START_DATE"]):
        courses = sort_by_start_date(courses)
    else:
        courses = sort_by_announcement(courses)

    return render_to_response("courseware/courses.html", {'courses': courses})
示例#19
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses(request.user, request.META.get('HTTP_HOST'))

    if microsite.get_value("ENABLE_COURSE_SORTING_BY_START_DATE",
                           settings.FEATURES["ENABLE_COURSE_SORTING_BY_START_DATE"]):
        courses = sort_by_start_date(courses)
    else:
        courses = sort_by_announcement(courses)

    return render_to_response("courseware/courses.html", {'courses': courses})
示例#20
0
文件: views.py 项目: wwj718/murp-edx
def course_list(request, extra_context={}, user=AnonymousUser()):
    def course_filter(course,org='ncepu',subject=''):
        #print request    
        if course.org == org:
            return True
        return False	
    domain = settings.FEATURES.get('FORCE_UNIVERSITY_DOMAIN')
    if domain is False:
        domain = request.META.get('HTTP_HOST')
    courses = get_courses(user, domain=domain)
    courses = filter(course_filter,courses)
    courses = sort_by_announcement(courses)
    context = {'courses': courses,'request':request}
    #return render_to_response('murp/selects.html',context)
    return render_to_response('murp/mytest.html',context)
示例#21
0
def get_university_courses(user, university_code):
    """
    Returns an array containing courses object for the given
    organization.
    """
    courses = get_courses(user)
    if university_code == "other":
        # "other" courses that are associated to organizations that are not
        # listed in the university page.
        university_codes = University.objects.values_list('code', flat=True)
        courses = [c for c in courses if c.org not in university_codes]
    else:
        courses = [c for c in courses if c.org == university_code]
    courses = sort_by_announcement(courses)
    return courses
示例#22
0
def course_attr_list_handler(request, course_category, course_level=None):

    courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    courses_list = []

    for course in courses:
        if course_level:
            if course.course_level == course_level and course.course_category == course_category:
                courses_list.append(course)
        elif course.course_category == course_category:
            courses_list.append(course)
        else:
            continue

    return return_fixed_courses(request, courses_list, None)
示例#23
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    universities = []
    for course in courses:
        university = get_course_about_section(course, 'university')
        if not university in universities:
            universities.append(university)
    universities.sort()
    return render_to_response("courseware/courses.html", {
        'courses': courses,
        'universities': universities
    })
示例#24
0
def major_search(request):
    major_result = request.POST
    major_s = major_result.get('search').lower()
    major_m = major_result.get('major_name').lower()#choise major
    major_g = major_result.get('grade').lower()#choice grade
    course_select=[]
    courses_L = get_courses(request.user, request.META.get('HTTP_HOST'))

    courses_L = sort_by_announcement(courses_L)
    if major_s==None:
        return render_to_response("courseware/courses.html", {'courses': courses_L})
    else:
        for course in courses_L:
            major_title=get_course_about_section(course, 'title').lower()
            if major_s in major_title:
                course_select.append(course)
        return render_to_response("courseware/courses.html", {'courses': course_select})
示例#25
0
def sort_courses(courses):
    """Sort courses in a usefull order for user:
        - courses with enrollement date started should be first
        - then course to start to enroll should be ordered by enrollement start date (asc)
        - then course which started should be sorted by days to go (desc) or by start date asc
        - then courses ended by end data (asc)
    We also should try sort_by_announcement order
    """
    def _sort_by_novelty(a, b):
        # quick and dirty implementation wich probably works in most easy cases
        if a.enrollment_start and b.enrollment_start:
            return a.enrollment_start < b.enrollment_start
        elif a.enrollment_start and not b.enrollment_start:
            return True
        else:
            return a.start < b.start

    return sort_by_announcement(courses)  # sorted(courses, _sort_by_novelty)
示例#26
0
文件: views.py 项目: disisid/fun-apps
def _sort_courses(courses):
    """Sort courses in a usefull order for user:
        - courses with enrollement date started should be first
        - then course to start to enroll should be ordered by enrollement start date (asc)
        - then course which started should be sorted by days to go (desc) or by start date asc
        - then courses ended by end data (asc)
    We also should try sort_by_announcement order
    """

    def _sort_by_novelty(a, b):
        # quick and dirty implementation wich probably works in most easy cases
        if a.enrollment_start and b.enrollment_start:
            return a.enrollment_start < b.enrollment_start
        elif a.enrollment_start and not b.enrollment_start:
            return True
        else:
            return a.start < b.start
    return sort_by_announcement(courses)  # sorted(courses, _sort_by_novelty)
示例#27
0
def search_courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = get_courses1(request, request.user,
                           request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    c_list = []
    c_num = []
    c_len = CourseCategory.objects.all().count()
    for i in range(1, c_len + 1):
        c_name = CourseCategory.objects.get(id=i).category_name
        c_list.append(c_name)
    all_courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    all_c_num = len(all_courses)
    for j in range(1, 17):
        c_num.append(0)
    for c in all_courses:
        c_category = c.display_number_with_default[0:2]
        c_category_no = int(c_category)
        num_t = c_num[c_category_no - 1]
        c_num[c_category_no - 1] = num_t + 1
    name_list = []
    category_list = []
    category_num = []
    for i in range(0, len(c_num)):
        if c_num[i] != 0:
            if i < 9:
                num = '0' + str(int(i + 1))
                name_list.append(num)
            else:
                name_list.append(i + 1)
            category_list.append(c_list[i])
            category_num.append(c_num[i])
    none_zero = len(category_num)
    return render_to_response(
        "courseware/courses.html", {
            'courses': courses,
            'name_list': name_list,
            'category_list': category_list,
            'category_num': category_num,
            'all_c_num': all_c_num,
            'none_zero': none_zero
        })
示例#28
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    courses = sort_by_announcement(get_courses(request.user, request.META.get('HTTP_HOST')))
    course_list = []
    for course in courses:
        course_item = {
            "display_number": course.display_number_with_default,
            "course_title": get_course_about_section(course, 'title'),
            "course_description": get_course_about_section(course, 'short_description'),
            "display_organization": get_course_about_section(course, 'university'),
            "course_image_url": course_image_url(course),
            "course_start": course.start,
            "course_id": course.id.to_deprecated_string(),
        }
        course_list.append(course_item)

    return JsonResponse(course_list)
示例#29
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    q = request.GET.get('query', '')

    courses_aa = get_courses_by_search(request.META.get('HTTP_HOST'))
    courses_list = []
    if q != "":
        for course in courses_aa:
            if  q in course.org or q in course.id or q in course.display_name_with_default:
                courses_list.append(course)
            else:
                continue
    else:
       courses_list = courses_aa

    courses = sort_by_announcement(courses_list)
    return render_to_response("courseware/courses.html", {'courses': courses})
示例#30
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    q = request.GET.get('query', '')

    courses_aa = get_courses_by_search(request.META.get('HTTP_HOST'))
    courses_list = []
    if q != "":
        for course in courses_aa:
            if  q in course.org or q in course.id or q in course.display_name_with_default:
                courses_list.append(course)
            else:
                continue
    else:
       courses_list = courses_aa

    courses = sort_by_announcement(courses_list)
    return render_to_response("courseware/courses.html", {'courses': courses})
示例#31
0
文件: views.py 项目: louyihua/edx-ss
def search_category(request):
    courses = get_courses2(request,request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    c_list=[]
    c_num=[]
    c_len=CourseCategory.objects.all().count()
    for i in range(1,c_len+1):
	    c_name=CourseCategory.objects.get(id = i).category_name
	    c_list.append(c_name)
    all_courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    all_c_num = len(all_courses)
    for j in range(1,17):
	    c_num.append(0)
    for c in all_courses:
        c_category = c.display_number_with_default[0:2]
        c_category_no = int(c_category)
        num_t=c_num[c_category_no-1]
        c_num[c_category_no-1]=num_t+1
    
    return render_to_response("courseware/courses.html", {'courses': courses,'c_list':c_list,'c_num':c_num,'all_c_num':all_c_num})
示例#32
0
def index(request, extra_context={}, user=None):
    '''
    Render the edX main page.

    extra_context is used to allow immediate display of certain modal windows, eg signup,
    as used by external_auth.
    '''

    # The course selection work is done in courseware.courses.
    domain = settings.MITX_FEATURES.get('FORCE_UNIVERSITY_DOMAIN')  # normally False
    # do explicit check, because domain=None is valid
    if domain == False:
        domain = request.META.get('HTTP_HOST')

    courses = get_courses(None, domain=domain)
    courses = sort_by_announcement(courses)

    context = {'courses': courses}
    context.update(extra_context)
    return render_to_response('index.html', context)
示例#33
0
def major_search(request):
    major_result = request.POST
    major_s = major_result.get('search').lower()
    major_m = major_result.get('major_name').lower()  #choise major
    major_g = major_result.get('grade').lower()  #choice grade
    course_select = []

    courses_L = get_courses(request.user, request.META.get('HTTP_HOST'))
    courses_L = sort_by_announcement(courses_L)

    if major_s == None and major_g == None and major_m == None:
        return render_to_response("courseware/courses.html",
                                  {'courses': courses_L})
    elif major_s is not None:
        for course in courses_L:
            major_title = get_course_about_section(course, 'title').lower()
            if major_s in major_title:
                course_select.append(course)
        return render_to_response("courseware/courses.html",
                                  {'courses': course_select})
示例#34
0
def courses_list(request, status = "all", subject="all", destiny="all"):
    all_courses =  get_courses(request.user)
    courses = []
    for course in all_courses:
        if (status == "new"):
            if (not course.is_newish): continue
        elif (status ==  "past"):
            if (not course.has_ended()): continue
        elif (status == "current"):
            if (not course.has_started()): continue
        elif (status != "all"):
            continue
        if (subject != "all"):
            if not (subject in course.tags or dict(SUBJECTS).get(subject, '') in course.tags): continue
        if (destiny != "all"):
            if not (destiny in course.tags or dict(DESTINY).get(destiny, '') in course.tags): continue
        courses += [course]
    courses = sort_by_announcement(courses)
    context = {'courses': courses, 'destiny': destiny, 'subject': subject}
    return render_to_response("courses_list.html", context)
示例#35
0
    def get_courses_depend_action():
        """
        Return courses depend on action
            action: [homefalls, hot, lastest, my, search]
                homefalls: get all courses
                hot: Number of attended people > ?
                lastest: News last week
                my: I registered
                all: like 'homefalls'
        """

        courses = get_courses(user, request.META.get('HTTP_HOST'))
        courses = sort_by_announcement(courses)
        courses_list = []

        if action == "latest":
            default_count = 20
            if len(courses) < default_count:
                default_count = len(courses)

            courses_list = courses[0:default_count]
        elif action == "my":
            # filter my registered courses
            for course in courses:
                if registered_for_course(course, user):
                    courses_list.append(course)
        elif action == "rolling":
            default_count = 5
            courses_list = courses[0:default_count]
        elif action == 'search':
            keyword = request.GET.get("keyword")

            if keyword:
                for c in courses:
                    print (keyword in c.org or keyword in c.id or keyword in c.display_name_with_default)
                    if keyword in c.org or keyword in c.id or keyword in c.display_name_with_default:
                        courses_list.append(c)
        else:
            courses_list = courses

        return courses_list
示例#36
0
    def get_courses_depend_action():
        """
        Return courses depend on action
            action: [homefalls, hot, lastest, my, search]
                homefalls: get all courses
                hot: Number of attended people > ?
                lastest: News last week
                my: I registered
                all: like 'homefalls'
        """

        courses = get_courses(user, request.META.get('HTTP_HOST'))
        courses = sort_by_announcement(courses)
        courses_list = []

        if action == "latest":
            default_count = 20
            if len(courses) < default_count:
                default_count = len(courses)

            courses_list = courses[0:default_count]
        elif action == "my":
            # filter my registered courses
            for course in courses:
                if registered_for_course(course, user):
                    courses_list.append(course)
        elif action == "rolling":
            default_count = 5
            courses_list = courses[0:default_count]
        elif action == 'search':
            keyword = request.GET.get("keyword")

            if keyword:
                for c in courses:
                    print (keyword in c.org or keyword in c.id or keyword in c.display_name_with_default)
                    if keyword in c.org or keyword in c.id or keyword in c.display_name_with_default:
                        courses_list.append(c)
        else:
            courses_list = courses

        return courses_list
示例#37
0
def index(request, extra_context={}, user=None):
    '''
    Render the edX main page.

    extra_context is used to allow immediate display of certain modal windows, eg signup,
    as used by external_auth.
    '''

    # The course selection work is done in courseware.courses.
    domain = settings.MITX_FEATURES.get('FORCE_UNIVERSITY_DOMAIN')     # normally False
    # do explicit check, because domain=None is valid
    if domain == False:
        domain = request.META.get('HTTP_HOST')

    courses = get_courses(None, domain=domain)
    courses = sort_by_announcement(courses)

    # Get the 3 most recent news
    top_news = _get_news(top=3)

    context = {'courses': courses, 'news': top_news}
    context.update(extra_context)
    return render_to_response('index.html', context)
示例#38
0
def all_courses(request, extra_context={}, user=AnonymousUser()):
    """
    Render the edX main page.

    extra_context is used to allow immediate display of certain modal windows, eg signup,
    as used by external_auth.
    """

    # The course selection work is done in courseware.courses.
    domain = settings.FEATURES.get('FORCE_UNIVERSITY_DOMAIN')  # normally False
    # do explicit check, because domain=None is valid
    if domain is False:
        domain = request.META.get('HTTP_HOST')

    # Hardcoded `AnonymousUser()` to hide unpublished courses always
    courses = get_courses(AnonymousUser(), domain=domain)
    courses = sort_by_announcement(courses)

    courses = edraak_courses_logic(courses)

    context = {'courses': courses}

    context.update(extra_context)
    return render_to_response('all_courses.html', context)
示例#39
0
def dashboard(request):
    user = request.user
    enrollments = CourseEnrollment.objects.filter(user=user)

    # Build our courses list for the user, but ignore any courses that no longer
    # exist (because the course IDs have changed). Still, we don't delete those
    # enrollments, because it could have been a data push snafu.
    courses = []
    for enrollment in enrollments:
        try:
            courses.append(course_from_id(enrollment.course_id))
        except ItemNotFoundError:
            log.error("User {0} enrolled in non-existent course {1}"
                      .format(user.username, enrollment.course_id))

    message = ""
    if not user.is_active:
        message = render_to_string('registration/activate_account_notice.html', {'email': user.email})

    # Global staff can see what courses errored on their dashboard
    staff_access = False
    errored_courses = {}
    if has_access(user, 'global', 'staff'):
        # Show any courses that errored on load
        staff_access = True
        errored_courses = modulestore().get_errored_courses()

    show_courseware_links_for = frozenset(course.id for course in courses
                                          if has_access(request.user, course, 'load'))

    cert_statuses = {course.id: cert_info(request.user, course) for course in courses}

    exam_registrations = {course.id: exam_registration_info(request.user, course) for course in courses}

    # Get the 3 most recent news
    top_news = _get_news(top=3) if not settings.MITX_FEATURES.get('ENABLE_MKTG_SITE', False) else None
    username = str(request.user)
    #Recommended courses for the user
    cursor = connection.cursor()
    query_getuserid = "select id,username from auth_user where username='******'"
    user_id = -1;
    cursor.execute(query_getuserid)
    row = cursor.fetchall()
    for a in row:
        user_id = a[0]
    query = "select user_id,area_of_interest from auth_userprofile where user_id='"+str(user_id)+"'"
    cursor.execute(query)
    area_interest = ""
    row = cursor.fetchall() 
    for a in row: 
        area_interest = a[1]
    interested_category="" 
    for code,categ in UserProfile.COURSE_CATEGORIES:
        if code == str(area_interest):
            interested_category = categ
            break
    query_course_category = "select courseName,courseCategory from course_categories where courseCategory='"+area_interest+"'"
    cursor.execute(query_course_category)
    row = cursor.fetchall()
    similar_category_courses = []
    for a in row:
        similar_category_courses.append(a[0])
    
    recommended_courses = get_courses(request.user, request.META.get('HTTP_HOST'))
    recommend_courses = []
    for check_course in recommended_courses:
        registered = registered_for_course(check_course,request.user)
        loc = check_course.location
        reverse_loc = loc[::-1]
        for simCourse in similar_category_courses:
            if simCourse == str(reverse_loc[1]):
                if not registered:
                    recommend_courses.append(check_course)
    recommended_courses = sort_by_announcement(recommended_courses)
    context = {'courses': courses,
	       'recommended_courses': recommend_courses,
               'message': message,
               'staff_access': staff_access,
               'errored_courses': errored_courses,
               'show_courseware_links_for': show_courseware_links_for,
               'cert_statuses': cert_statuses,
               'news': top_news,
               'exam_registrations': exam_registrations,
	       'categ':interested_category,
               }

    return render_to_response('dashboard.html', context)
示例#40
0
def courses(request, show_hidden):
    """
    Renders the courses list for the API.

    :param request: The django HttpRequest object.
    :param show_hidden: True or False, (controlled from the urls.py file) to show courses with
                        upcoming enrollment date.

    :return: JsonResponse with a list of the courses.
    """
    courses_list = branding.get_visible_courses()

    if not show_hidden:
        # Using `AnonymousUser()` to hide unpublished courses
        anonymous_user = AnonymousUser()

        # The logic bellow has been copied (with amendments) from `courseware.courses.get_courses`,
        # Just in case something changes with edX releases.
        permission_name = settings.COURSE_CATALOG_VISIBILITY_PERMISSION

        courses_list = [
            c for c in courses_list
            if has_access(anonymous_user, permission_name, c)
        ]

    courses_list = sort_by_announcement(courses_list)
    courses_list = edraak_courses_logic(courses_list)

    courses_json_list = []

    prefix = get_absolute_url_prefix(request)

    for course_overview in courses_list:

        try:
            course = get_course(course_overview.id)

            video_tag = get_course_about_section(request, course, "video")
            youtube_id = video_tag[video_tag.find("embed") + 6:video_tag.find("?")]

            courses_json_list.append({
                "id": unicode(course.id),
                "number": course.display_number_with_default,
                "name": course.display_name_with_default_escaped,
                "organization": course.display_org_with_default,
                "description": get_course_about_section(request, course, "short_description").strip(),
                "startDate": course.start,
                "endDate": course.end,
                "enrollmentStartDate": course.enrollment_start,
                "enrollmentEndDate": course.enrollment_end,
                "overview": get_course_about_section(request, course, "overview").strip(),
                "aboutPage": prefix + reverse('about_course', args=[unicode(course.id)]),
                "image": prefix + course_image_url(course),
                "state": _get_course_status(course),
                "youtube_id": youtube_id,
                "effort": get_course_about_section(request, course, "effort").strip(),
            })
        except ValueError:
            log.error(u"Course with id '{0}' not found".format(course_overview.id))


    return JsonResponse(courses_json_list)
示例#41
0
文件: views.py 项目: louyihua/edx-ss
def get_search_courses(request):
    courses = get_courses1(request,request.user, request.META.get('HTTP_HOST'))
    courses = sort_by_announcement(courses)
    json_list=json_courses(request,courses)
    decodejson = json.loads(json_list)
    return JsonResponse(decodejson)
示例#42
0
def courses(request):
    """
    Render "find courses" page.  The course selection work is done in courseware.courses.
    """
    user = request.user or AnonymousUser()
    crude_courses = audit_courses(request, user)

    q = request.GET.get('query', '')

    courses_aa = get_courses_by_search(request.META.get('HTTP_HOST'))
    courses_list = []
    if q != "":
        for course in courses_aa:
            if  q in course.org or q in course.id or q in course.display_name_with_default:
                courses_list.append(course)
            else:
                continue
    else:
       courses_list = courses_aa

    courses = sort_by_announcement(courses_list)


    # format string
    def format_course(course):
        format_course_json = {
            "id": course.id,
            "is_new": course.is_newish,
            "course_about_url": reverse('about_course', args=[course.id]),
            "course_number": course.display_number_with_default or "",
            "title": get_course_about_section(course, 'title'),
            "short_description": get_course_about_section(course, "short_description"),
            "img_src": course_image_url(course),
            "university": get_course_about_section(course, 'university'),
            "is_start_date_default": course.start_date_is_still_default,
            }

        if not format_course_json["is_start_date_default"]:
            format_course_json.update({"start_date_text": course.start_date_text})

        return format_course_json

    sel_items = {
        "subject": [
            ["LCHYX", "临床医学"],
            ["JCHYX", "基础医学"],
            ["ZHYZHY", "中医中药"],
            ["KQYX", "口腔医学"],
            ["YX", "药学"],
            ["HL", "护理"],
            ["GGWSHYFYX", "公共卫生与预防医学"],
            ["YXYJ", "医学检验"],
        ]

    }

    sel_items = {
        "subject": [[item[0], item[1]] for item in settings.COURSE_CLASS_LIST]
    }

    con_col = {}
    con_courses = []

    subject_con = request.GET.get("subject", "")
    con_col.update({"subCon": subject_con.split(',')})

    for course in crude_courses:
        # acquire subject condition
        subject_flag = False
        if subject_con:
            if "all" in con_col['subCon'] or ("all" not in con_col['subCon'] and course.course_category in con_col['subCon']):
                if course in con_courses:
                    continue
                con_courses.append(course)
        else:
            subject_flag = True

        if subject_flag :
            con_courses = crude_courses
            break


#    # acquire course_id condition
#    def course_dep(crucourses, course_id):
#        course_index = 0
#        try:
#            for idx, c in enumerate(crucourses):
#                if c.id == course_id:
#                    course_index = (idx + 1)
#                    break
#        except:
#            course_index = 0
#
#        courses_list = crucourses[course_index: course_index +3]
#
#        return courses_list

    id_con = request.GET.get('course_id', '').strip().encode("utf-8")

    con_col.update({'course_id': id_con})
#    con_courses = course_dep(con_courses, id_con)


    context = {"courses": con_courses}
    context.update(sel_items)
    context.update(con_col)

    if request.is_ajax():
        context["courses"] = map(format_course, context["courses"])
        return JsonResponse(context)

    return render_to_response("courseware/courses.html", {'courses': filter_audited_items(courses)})