From dc049a85d147d61c561e2a914b98063cf34d5e5b Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Wed, 17 Jul 2013 15:42:47 +0200 Subject: [PATCH] add course API --- teleforma/models/core.py | 21 +++++++++++++++++++++ teleforma/views/core.py | 23 +++++++++++++---------- 2 files changed, 34 insertions(+), 10 deletions(-) diff --git a/teleforma/models/core.py b/teleforma/models/core.py index ac7b52ae..be3c411e 100644 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -172,6 +172,27 @@ class Course(Model): def slug(self): return slugify(self.__unicode__()) + def to_dict(self): + dict = {'organization' : self.department.organization.name, + 'department' : self.department.name, + 'title' : self.title, + 'description' : self.description, + 'code' : self.code, + 'title_tweeter' : self.title_tweeter, + 'number' : str(self.number), + ] + return dict + + def from_dict(self, data): + organization, c = Organization.objects.get_or_create(name=data['organization']) + self.department, c = Department.objects.get_or_create(name=data['department'], organization=organization) + self.title = data['title'] + self.description = data['description'] + self.code = date['code'] + self.title_tweeter = data['title_tweeter'] + self.number = int(data['number']) + self.save() + class Meta(MetaCore): db_table = app_label + '_' + 'course' verbose_name = _('course') diff --git a/teleforma/views/core.py b/teleforma/views/core.py index f98ad0f8..9cd60bf0 100644 --- a/teleforma/views/core.py +++ b/teleforma/views/core.py @@ -229,6 +229,10 @@ class CourseListView(CourseAccessMixin, ListView): def dispatch(self, *args, **kwargs): return super(CourseListView, self).dispatch(*args, **kwargs) + @jsonrpc_method('teleforma.get_all_courses') + def get_dep_courses(request): + return [course.to_dict() for course in Course.objects.all()] + class CourseView(CourseAccessMixin, DetailView): @@ -254,16 +258,6 @@ class CourseView(CourseAccessMixin, DetailView): def dispatch(self, *args, **kwargs): return super(CourseView, 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(CourseAccessMixin, DetailView): @@ -591,6 +585,15 @@ class ConferenceRecordView(FormView): s = ServiceProxy(url) s.teleforma.create_conference(self.conference.to_json_dict()) + @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 ProfessorListView(View): -- 2.39.5