From 49504406c987a0015b1bd68cd363edb6240f5d34 Mon Sep 17 00:00:00 2001 From: Andrey Date: Thu, 22 Feb 2018 11:34:33 +0300 Subject: [PATCH] migrate update --- courses/models.py | 8 +++++--- courses/urls.py | 1 + courses/views.py | 12 ++++++++++++ finance/views.py | 11 +++++++---- 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/courses/models.py b/courses/models.py index 3bfd01a..035bf19 100755 --- a/courses/models.py +++ b/courses/models.py @@ -68,12 +68,14 @@ class Topic(models.Model): class CourseManager(models.Manager): - def update_or_create_course(self, image=None, big_image=None, id=0, - big_mobile_image=None, slug=None, + def update_or_create_course(self, image=None, big_image=None, statistic=None, + big_mobile_image=None, slug=None, teachers=None, level=None, direction=None, **kwargs): slug = slug if slug else slugify(unidecode.unidecode(kwargs['title'])) + kwargs['teacher_tokens'] = teachers + if image: kwargs['image'] = decode_base64(image, 'course/image%s.png' % slug) @@ -90,7 +92,7 @@ class CourseManager(models.Manager): kwargs['direction'] = get_real_name(COURSE_DIRECTION, direction) try: - course = self.get(id=id) + course = self.get(slug=slug) for i in kwargs: if kwargs[i]: setattr(course, i, kwargs[i]) diff --git a/courses/urls.py b/courses/urls.py index d1eb8b7..9c73b53 100644 --- a/courses/urls.py +++ b/courses/urls.py @@ -5,5 +5,6 @@ from courses import views as views urlpatterns = [ url(r'vertex/(?P.+)/$', views.LessonDetail.as_view()), url(r'tree/(?P.+)/$', views.TreeView.as_view()), + url(r'detail/(?P.+)/$', views.CourseDetailView.as_view()), url(r'^$', views.CourseListView.as_view()), ] \ No newline at end of file diff --git a/courses/views.py b/courses/views.py index 1000b5c..211eab4 100644 --- a/courses/views.py +++ b/courses/views.py @@ -2,6 +2,7 @@ from courses.models import Course, Lesson from rest_framework.renderers import JSONRenderer from rest_framework.response import Response from rest_framework.views import APIView +from django.contrib.auth import get_user_model from courses.serializers import CourseDetailSerializer, CourseTreeSerializer, LessonSerializer from progress.models import ProgressLesson @@ -25,6 +26,9 @@ class CourseListView(APIView): status_code = 200 def post(self, request): + # TODO: Костыль + teachers_emails = request.JSON.get('teachers', []) + request.JSON['teachers'] = [get_user_model().objects.get(email=i).out_key for i in teachers_emails] course = Course.objects.update_or_create_course(**request.JSON.dict()) return Response(CourseDetailSerializer(course).data, status=self.status_code) @@ -33,6 +37,14 @@ class CourseListView(APIView): return Response(res, self.status_code) +class CourseDetailView(APIView): + renderer_classes = (JSONRenderer,) + status_code = 200 + + def get(self, request, slug): + return Response(CourseDetailSerializer(Course.objects.get(slug=slug)).data, self.status_code) + + class LessonDetail(APIView): renderer_classes = (JSONRenderer,) diff --git a/finance/views.py b/finance/views.py index 60f09c6..ba2fa6c 100644 --- a/finance/views.py +++ b/finance/views.py @@ -37,13 +37,16 @@ class BillListView(APIView): or request.user.is_superuser): bill = request.JSON.get('bill') children = request.JSON.get('children', []) + bill_kwarg = dict() if bill: - bill['user'] = get_user_model().objects.get(email=bill['user']) - bill['opener'] = get_user_model().objects.get(email=bill['opener']) - bill.pop('invoices', None) + bill_kwarg['user'] = get_user_model().objects.get(email=bill['user']) + bill_kwarg['opener'] = get_user_model().objects.get(email=bill['opener']) + bill_kwarg['description'] = bill['description'] + bill_kwarg['comment'] = bill['comment'] + bill_kwarg['course_token'] = bill['course_token'] - bill_obj, is_create = Bill.objects.update_or_create(**bill) + bill_obj, is_create = Bill.objects.update_or_create(**bill_kwarg) invoices = bill_obj.invoice_set.all() for i in children: