Merge branch 'dev' into 'master'

Dev

See merge request !71
master
Andrey 8 years ago
commit 640359faee
  1. 8
      courses/models.py
  2. 1
      courses/urls.py
  3. 12
      courses/views.py
  4. 11
      finance/views.py

@ -68,12 +68,14 @@ class Topic(models.Model):
class CourseManager(models.Manager): class CourseManager(models.Manager):
def update_or_create_course(self, image=None, big_image=None, id=0, def update_or_create_course(self, image=None, big_image=None, statistic=None,
big_mobile_image=None, slug=None, big_mobile_image=None, slug=None, teachers=None,
level=None, direction=None, **kwargs): level=None, direction=None, **kwargs):
slug = slug if slug else slugify(unidecode.unidecode(kwargs['title'])) slug = slug if slug else slugify(unidecode.unidecode(kwargs['title']))
kwargs['teacher_tokens'] = teachers
if image: if image:
kwargs['image'] = decode_base64(image, 'course/image%s.png' % slug) 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) kwargs['direction'] = get_real_name(COURSE_DIRECTION, direction)
try: try:
course = self.get(id=id) course = self.get(slug=slug)
for i in kwargs: for i in kwargs:
if kwargs[i]: if kwargs[i]:
setattr(course, i, kwargs[i]) setattr(course, i, kwargs[i])

@ -5,5 +5,6 @@ from courses import views as views
urlpatterns = [ urlpatterns = [
url(r'vertex/(?P<token>.+)/$', views.LessonDetail.as_view()), url(r'vertex/(?P<token>.+)/$', views.LessonDetail.as_view()),
url(r'tree/(?P<slug>.+)/$', views.TreeView.as_view()), url(r'tree/(?P<slug>.+)/$', views.TreeView.as_view()),
url(r'detail/(?P<slug>.+)/$', views.CourseDetailView.as_view()),
url(r'^$', views.CourseListView.as_view()), url(r'^$', views.CourseListView.as_view()),
] ]

@ -2,6 +2,7 @@ from courses.models import Course, Lesson
from rest_framework.renderers import JSONRenderer from rest_framework.renderers import JSONRenderer
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.views import APIView from rest_framework.views import APIView
from django.contrib.auth import get_user_model
from courses.serializers import CourseDetailSerializer, CourseTreeSerializer, LessonSerializer from courses.serializers import CourseDetailSerializer, CourseTreeSerializer, LessonSerializer
from progress.models import ProgressLesson from progress.models import ProgressLesson
@ -25,6 +26,9 @@ class CourseListView(APIView):
status_code = 200 status_code = 200
def post(self, request): 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()) course = Course.objects.update_or_create_course(**request.JSON.dict())
return Response(CourseDetailSerializer(course).data, status=self.status_code) return Response(CourseDetailSerializer(course).data, status=self.status_code)
@ -33,6 +37,14 @@ class CourseListView(APIView):
return Response(res, self.status_code) 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): class LessonDetail(APIView):
renderer_classes = (JSONRenderer,) renderer_classes = (JSONRenderer,)

@ -37,13 +37,16 @@ class BillListView(APIView):
or request.user.is_superuser): or request.user.is_superuser):
bill = request.JSON.get('bill') bill = request.JSON.get('bill')
children = request.JSON.get('children', []) children = request.JSON.get('children', [])
bill_kwarg = dict()
if bill: if bill:
bill['user'] = get_user_model().objects.get(email=bill['user']) bill_kwarg['user'] = get_user_model().objects.get(email=bill['user'])
bill['opener'] = get_user_model().objects.get(email=bill['opener']) bill_kwarg['opener'] = get_user_model().objects.get(email=bill['opener'])
bill.pop('invoices', None) 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() invoices = bill_obj.invoice_set.all()
for i in children: for i in children:

Loading…
Cancel
Save