]> git.parisson.com Git - teleforma.git/commitdiff
add ProfessorListView with JSON pull method
authorGuillaume Pellerin <yomguy@parisson.com>
Thu, 11 Jul 2013 10:28:35 +0000 (12:28 +0200)
committerGuillaume Pellerin <yomguy@parisson.com>
Thu, 11 Jul 2013 10:28:35 +0000 (12:28 +0200)
teleforma/models/core.py
teleforma/views/core.py

index 6fae038df26f8fd3f6dcd3f1361360a9b8a80aea..3e109f184e7305b1ff601cf93562285f77726bcb 100644 (file)
@@ -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')
index d702d41ef2b81eaf76f2dbade1c4dcf6c4813154..c05c133d490bbe83a692d87419056e63a9a5138a 100644 (file)
@@ -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'