Merge remote-tracking branch 'origin/dev' into dev

remotes/origin/hasaccess
Vitaly Baev 8 years ago
commit ccc07a99a3
  1. 2
      api/v1/serializers/course.py
  2. 8
      api/v1/views.py
  3. 18
      apps/course/fixtures/course.json
  4. 19
      apps/course/migrations/0033_auto_20180214_1346.py
  5. 2
      apps/course/models.py
  6. 6
      apps/course/views.py
  7. 2
      apps/user/templates/user/profile.html
  8. 3
      web/src/sass/_common.sass

@ -77,6 +77,8 @@ class CourseCreateSerializer(DispatchContentMixin,
DispatchMaterialMixin,
serializers.ModelSerializer
):
title = serializers.CharField(allow_blank=True)
short_description = serializers.CharField(allow_blank=True)
slug = serializers.SlugField(allow_unicode=True, required=False)
content = serializers.ListSerializer(
child=ContentCreateSerializer(),

@ -81,6 +81,7 @@ class CourseViewSet(ExtendedModelViewSet):
serializer_class_map = {
'list': CourseSerializer,
'retrieve': CourseSerializer,
'draft': CourseSerializer,
}
filter_fields = ('category', 'status', 'is_infinite', 'is_featured',)
search_fields = ('author__email', 'title', 'category__title',)
@ -91,6 +92,13 @@ class CourseViewSet(ExtendedModelViewSet):
# 'delete': IsAdmin,
# }
@list_route(methods=['get'])
def draft(self, request):
drafts = Course.objects.filter(author=request.user, status=Course.DRAFT)
serializer = self.get_serializer_class()
serialized_data = serializer(instance=drafts.last())
return Response(serialized_data.data)
class LessonViewSet(ExtendedModelViewSet):
queryset = Lesson.objects.select_related(

@ -13,7 +13,7 @@
"category": 2,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:04:41.113Z",
"update_at": "2018-01-31T15:03:47.118Z",
"likes": [],
@ -34,7 +34,7 @@
"category": 1,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.437Z",
"update_at": "2018-01-31T15:03:47.115Z",
"likes": [],
@ -55,7 +55,7 @@
"category": 9,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.442Z",
"update_at": "2018-01-31T15:03:47.112Z",
"likes": [],
@ -76,7 +76,7 @@
"category": 8,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.445Z",
"update_at": "2018-01-31T15:03:47.108Z",
"likes": [],
@ -97,7 +97,7 @@
"category": 7,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.449Z",
"update_at": "2018-01-31T15:03:47.104Z",
"likes": [],
@ -118,7 +118,7 @@
"category": 6,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.452Z",
"update_at": "2018-01-31T15:03:47.101Z",
"likes": [],
@ -139,7 +139,7 @@
"category": 5,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.455Z",
"update_at": "2018-01-31T15:03:47.097Z",
"likes": [],
@ -160,7 +160,7 @@
"category": 4,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.458Z",
"update_at": "2018-01-31T15:03:47.093Z",
"likes": [],
@ -181,7 +181,7 @@
"category": 3,
"duration": 1,
"is_featured": false,
"status": 0,
"status": 1,
"created_at": "2018-01-27T07:09:03.461Z",
"update_at": "2018-01-31T15:03:47.089Z",
"likes": [],

@ -0,0 +1,19 @@
# Generated by Django 2.0.2 on 2018-02-14 13:46
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('course', '0032_auto_20180214_1336'),
]
operations = [
migrations.AlterField(
model_name='course',
name='category',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='course.Category'),
),
]

@ -68,7 +68,7 @@ class Course(BaseModel, DeactivatedMixin):
'Отложенный запуск курса', help_text='Заполнить если курс отложенный',
null=True, blank=True
)
category = models.ForeignKey('Category', on_delete=models.PROTECT)
category = models.ForeignKey('Category', null=True, blank=True, on_delete=models.PROTECT)
duration = models.IntegerField('Продолжительность курса', default=0)
is_featured = models.BooleanField(default=False)
status = models.PositiveSmallIntegerField(

@ -141,14 +141,18 @@ def lessoncomment(request, lesson_id):
})
@method_decorator(login_required, name='dispatch')
class CourseEditView(TemplateView):
template_name = 'course/course_edit.html'
def get(self, request, pk=None):
drafts = Course.objects.filter(author=request.user, status=Course.DRAFT)
if pk:
self.object = get_object_or_404(Course, pk=pk)
elif drafts.exists():
self.object = drafts.last()
else:
self.object = None
self.object = Course.objects.create()
return super().get(request)
def get_context_data(self):

@ -59,7 +59,7 @@
</div>
</div>
</div>
<div class="section section_gray section_tabs">
<div class="section section_pink-light section_tabs">
<div class="section__center center">
<div class="tabs js-tabs">
<div class="tabs__nav">

@ -25,6 +25,7 @@
font-family: 'ProximaNova-Light', serif
$pink: #FF9393
$pink-light: #FDF8F9
$purple: #B995D9
$green: #8ECFC0
$green-light: #5BD700
@ -742,6 +743,8 @@ a[name]
background: url(../img/bg-elephants.jpg) 0 0 / 100px 102px
&_gray
background: $bg
&_pink-light
background: $pink-light
&_border
position: relative
&:after

Loading…
Cancel
Save