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")
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 })
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)
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")
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)
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})
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)
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)
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)
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'})
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})
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))
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)
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)
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})
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})
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)
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
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)
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 })
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})
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)
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)
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 })
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)
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})
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})
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)
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})
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)
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
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)
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)
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)
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)
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)
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)})