From: Guillaume Pellerin Date: Thu, 11 Jul 2013 15:59:43 +0000 (+0200) Subject: Merge branch 'crfpa' into tc202dev X-Git-Tag: 1.3-TC~45 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=05e645131ac8ef8ee518f914533d7db5651593b4;p=teleforma.git Merge branch 'crfpa' into tc202dev Conflicts: teleforma/locale/fr/LC_MESSAGES/django.mo --- 05e645131ac8ef8ee518f914533d7db5651593b4 diff --cc teleforma/templates/teleforma/course_media.html index 5c91979a,d311d6d5..b021665e --- a/teleforma/templates/teleforma/course_media.html +++ b/teleforma/templates/teleforma/course_media.html @@@ -93,9 -96,9 +96,9 @@@ $(document).ready(function() {% if "video" in media.mime_type %}
-
diff --cc teleforma/templatetags/teleforma_tags.py index 56c24572,ec8b7e32..9bbfd641 --- a/teleforma/templatetags/teleforma_tags.py +++ b/teleforma/templatetags/teleforma_tags.py @@@ -193,7 -193,10 +193,7 @@@ def get_video_id(media) return @register.filter -def get_host(url, host): +def set_host(url, host): u = urlparse(url) - if host == '127.0.0.1' or host == 'localhost': - nu = u.scheme + '://' + host + ':' + str(u.port) + u.path - return nu - else: - return url + return u.scheme + '://' + host + ':' + str(u.port) + u.path - ++ diff --cc teleforma/views/core.py index 3eea6852,8adef8d4..afbac032 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@@ -82,20 -82,27 +82,20 @@@ except pass -def render(request, template, data = None, mimetype = None): - return render_to_response(template, data, context_instance=RequestContext(request), - mimetype=mimetype) - def format_courses(courses, course=None, queryset=None, types=None): - if queryset: - for c in queryset: - if c and c.code != 'X': - courses.append({'course': c, 'types': types.all(), - 'date': c.date_modified, 'number': c.number}) - elif course: - if course.code != 'X': - courses.append({'course': course, 'types': types.all(), - 'date': course.date_modified, 'number': course.number}) - return courses + if settings.TELEFORMA_E_LEARNING_TYPE == 'CRFPA': + from teleforma.views.crfpa import format_crfpa_courses + return format_crfpa_courses(courses, course, queryset, types) + + elif settings.TELEFORMA_E_LEARNING_TYPE == 'AE': + from teleforma.views.ae import format_ae_courses + return format_ae_courses(courses, course, queryset, types) - def get_courses(user, date_order=False, num_order=False): + def get_courses(user, date_order=False, num_order=False, num_courses=False, period=None): if settings.TELEFORMA_E_LEARNING_TYPE == 'CRFPA': from teleforma.views.crfpa import get_crfpa_courses - return get_crfpa_courses(user, date_order, num_order) + return get_crfpa_courses(user, date_order, num_order, period) elif settings.TELEFORMA_E_LEARNING_TYPE == 'AE': from teleforma.views.ae import get_ae_courses @@@ -224,18 -252,26 +245,36 @@@ class CoursesView(ListView) def dispatch(self, *args, **kwargs): return super(CoursesView, self).dispatch(*args, **kwargs) + @jsonrpc_method('teleforma.get_dep_courses') + def get_dep_courses(request, id): + department = Department.objects.get(id=id) + return [{'id': str(c.id), 'name': unicode(c)} for c in department.course.all()] + + @jsonrpc_method('teleforma.get_dep_periods') + def get_dep_periods(request, id): + department = Department.objects.get(id=id) + return [{'id': str(c.id), 'name': unicode(c)} for c in department.period.all()] + - class MediaView(DetailView): + class PeriodListView(PeriodAccessMixin, CoursesView): + + def get_queryset(self): + self.period = None + period = Period.objects.filter(id=int(self.kwargs['period_id'])) + if period: + self.period = period[0] + + self.all_courses = get_courses(self.request.user, date_order=True, period=self.period) + return self.all_courses[:5] + + def get_context_data(self, **kwargs): + context = super(PeriodListView, self).get_context_data(**kwargs) + context['period'] = self.period + context['list_view'] = True + return context + + + class MediaView(PeriodAccessMixin, DetailView): model = Media template_name='teleforma/course_media.html' @@@ -412,8 -438,43 +441,43 @@@ class ConferenceView(PeriodAccessMixin return super(ConferenceView, self).dispatch(*args, **kwargs) + class ConferenceListView(View): + + @jsonrpc_method('teleforma.get_conference_list') + def get_conference_list(request): + conferences = Conference.objects.all() + return [c.to_json_dict() for c in conferences] + + def pull(request, host=None): + if host: + url = 'http://' + host + '/json/' + else: + url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/' + + s = ServiceProxy(url) + remote_list = s.teleforma.get_conference_list() + for conf_dict in remote_list['result']: + conference = Conference.objects.filter(public_id=conf_dict['id']) + if not conference: + conference = Conference() + conference.from_json_dict(conf_dict) + + def push(request, host=None): + if not host: + host = settings.TELECASTER_MASTER_SERVER + url = 'http://' + host + '/json/' + + s = ServiceProxy(url) + remote_list = s.teleforma.get_conference_list()['result'] + remote_ids = [conf['id'] for conf in remote_list] + + for conference in Conference.objects.all(): + if not conference.public_id in remote_ids and conference.date_end: + s.teleforma.create_conference(conference.to_json_dict()) + + class ConferenceRecordView(FormView): - "Conference record form : TeleCaster module required" + "Conference record form : telecaster module required" model = Conference form_class = ConferenceForm @@@ -540,18 -571,45 +583,49 @@@ stream_type=stream_type, streaming=True) stream.save() else: - raise 'Error : Bad Conference dictionnary' + raise 'Error : input must be a conference dictionnary' def push(self, conference): - url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/' + url = 'http://' + conference.department.domain + '/json/' s = ServiceProxy(url) - s.teleforma.create_conference(conference.to_json_dict()) + try: + streaming = settings.TELECASTER_MASTER_STREAMING + except: + streaming = True + s.teleforma.create_conference(conference.to_json_dict(streaming=streaming)) + class ProfessorListView(View): + + @jsonrpc_method('teleforma.get_professor_list') + def get_professor_list(request): + professors = Professor.objects.all() + return [p.to_json_dict() for p in professors] + + def pull(request, host=None): + if host: + url = 'http://' + host + '/json/' + else: + url = 'http://' + settings.TELECASTER_MASTER_SERVER + '/json/' + s = ServiceProxy(url) + + remote_list = s.teleforma.get_professor_list() + for professor_dict in remote_list['result']: + user, c = User.objects.get_or_create(username=professor_dict['username']) + user.first_name = professor_dict['first_name'] + user.last_name = professor_dict['last_name'] + user.email = professor_dict['email'] + user.save() + + professor, c = Professor.objects.get_or_create(user=user) + for course_code in professor_dict['courses']: + course = Course.objects.filter(code=course_code) + if course: + if not course[0] in professor.courses.all(): + professor.courses.add(course[0]) + professor.save() + + class HelpView(TemplateView): template_name='teleforma/help.html' diff --cc teleforma/views/crfpa.py index 42493e43,6de30c8e..18107a19 --- a/teleforma/views/crfpa.py +++ b/teleforma/views/crfpa.py @@@ -74,24 -71,24 +71,24 @@@ def get_crfpa_courses(user, date_order= } for course in s_courses: - courses = format_courses(courses, course=course, + courses = format_crfpa_courses(courses, course=course, types=s_courses[course]) - synthesis_note = student.training.synthesis_note + synthesis_note = training.synthesis_note if synthesis_note: - courses = format_courses(courses, + courses = format_crfpa_courses(courses, queryset=Course.objects.filter(synthesis_note=True), types=synthesis_note) - obligation = student.training.obligation + obligation = training.obligation if obligation: - courses = format_courses(courses, + courses = format_crfpa_courses(courses, queryset=Course.objects.filter(obligation=True), types=obligation) - magistral = student.training.magistral + magistral = training.magistral if magistral: - courses = format_courses(courses, + courses = format_crfpa_courses(courses, queryset=Course.objects.filter(magistral=True), types=magistral)