From: Guillaume Pellerin Date: Thu, 11 Jul 2013 10:28:35 +0000 (+0200) Subject: add ProfessorListView with JSON pull method X-Git-Tag: 1.1~577 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=df969afa4f53099eb67eb0281e4215107deeb252;p=teleforma.git add ProfessorListView with JSON pull method --- diff --git a/teleforma/models/core.py b/teleforma/models/core.py index 6fae038d..3e109f18 100644 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -182,6 +182,14 @@ class Professor(Model): def __unicode__(self): return self.user.last_name + ' ' + self.user.first_name[0] + '.' + def to_json_dict(self): + data = {'username': self.user.username, + 'first_name': self.user.first_name, + 'last_name': self.user.last_name, + 'courses': [course.code for course in self.courses.all()], + } + return data + class Meta(MetaCore): db_table = app_label + '_' + 'professor' verbose_name = _('professor') diff --git a/teleforma/views/core.py b/teleforma/views/core.py index d702d41e..c05c133d 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -436,7 +436,7 @@ class ConferenceView(PeriodAccessMixin, DetailView): return super(ConferenceView, self).dispatch(*args, **kwargs) -class ConferenceListView(PeriodAccessMixin, View): +class ConferenceListView(View): @jsonrpc_method('teleforma.get_conference_list') def get_conference_list(request): @@ -586,6 +586,34 @@ class ConferenceRecordView(PeriodAccessMixin, FormView): s.teleforma.create_conference(conference.to_json_dict()) +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'], + first_name=professor_dict['first_name'], + last_name=professor_dict['last_name']) + if c: + professor = Professor.objects.get_or_create(user=user) + for course_code in professor_dict['courses']: + course = Course.objects.filter(code=course_code) + if course: + professor.courses.add(course) + professor.save() + + class HelpView(TemplateView): template_name='teleforma/help.html'