remotes/origin/hasaccess
Sanasol 8 years ago
parent eeceb74956
commit e27899c5da
  1. 101
      api/v1/serializers/school.py
  2. 18
      apps/school/migrations/0006_schoolschedule_start_at.py
  3. 30
      apps/school/migrations/0007_schoolscheduleimage.py
  4. 24
      apps/school/models.py
  5. 2
      apps/user/fixtures/superuser.json
  6. 18
      apps/user/migrations/0020_auto_20180409_1144.py
  7. 4
      apps/user/models.py
  8. 2
      apps/user/templates/user/payment-history.html
  9. 2
      project/templates/lilcity/edit_index.html
  10. 2
      project/templates/lilcity/index.html

@ -1,9 +1,44 @@
from rest_framework import serializers
from apps.school.models import SchoolSchedule
from apps.school.models import (
SchoolSchedule, SchoolScheduleImage, ImageObject
)
from .content import (
ImageObjectSerializer
)
from pprint import pprint
class GalleryImageCreateSerializer(serializers.ModelSerializer):
class Meta:
model = SchoolScheduleImage
fields = (
'id',
'img',
'created_at',
'update_at',
)
read_only_fields = (
'id',
'created_at',
'update_at',
)
class GalleryImageSerializer(GalleryImageCreateSerializer):
img = ImageObjectSerializer()
class SchoolScheduleSerializer(serializers.ModelSerializer):
start_at = serializers.TimeField(format='%H:%M')
schoolschedule_images = serializers.ListSerializer(
child=GalleryImageCreateSerializer(),
required=False,
)
class Meta:
model = SchoolSchedule
@ -16,8 +51,72 @@ class SchoolScheduleSerializer(serializers.ModelSerializer):
'age',
'month_price',
'day_discount',
'start_at',
'schoolschedule_images',
)
read_only_fields = (
'id',
)
def create(self, validated_data):
gallery = validated_data.pop('schoolschedule_images', [])
schoolschedule = super().create(validated_data)
pprint('before create dispatch gallery')
pprint(schoolschedule)
pprint(gallery)
self.dispatch_gallery(schoolschedule, gallery)
return schoolschedule
def update(self, instance, validated_data):
gallery = validated_data.pop('schoolschedule_images', [])
schoolschedule = super().update(instance, validated_data)
self.dispatch_gallery(schoolschedule, gallery)
return schoolschedule
def dispatch_gallery(self, schoolschedule, gallery):
for image in gallery:
imgs = SchoolScheduleImage.objects.filter(
schoolschedule=schoolschedule,
img=image['img']
)
if imgs.count() > 0:
pass
else:
si = SchoolScheduleImage.objects.create(
schoolschedule=schoolschedule,
img=image['img'],
)
def to_representation(self, instance):
return SchoolScheduleSerializerImg(instance, context=self.context).to_representation(instance)
class SchoolScheduleSerializerImg(serializers.ModelSerializer):
start_at = serializers.TimeField(format='%H:%M')
schoolschedule_images = serializers.ListSerializer(
child=GalleryImageSerializer(),
required=False,
)
class Meta:
model = SchoolSchedule
fields = (
'id',
'weekday',
'title',
'description',
'materials',
'age',
'month_price',
'day_discount',
'start_at',
'schoolschedule_images',
)
read_only_fields = (
'id',
)

@ -0,0 +1,18 @@
# Generated by Django 2.0.3 on 2018-04-09 12:51
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('school', '0005_schoolschedule_day_discount'),
]
operations = [
migrations.AddField(
model_name='schoolschedule',
name='start_at',
field=models.TimeField(null=True, verbose_name='Начало урока'),
),
]

@ -0,0 +1,30 @@
# Generated by Django 2.0.3 on 2018-04-09 13:01
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('content', '0017_auto_20180406_1847'),
('school', '0006_schoolschedule_start_at'),
]
operations = [
migrations.CreateModel(
name='SchoolScheduleImage',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created_at', models.DateTimeField(auto_now_add=True)),
('update_at', models.DateTimeField(auto_now=True)),
('img', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='schoolschedule_images', to='content.ImageObject', verbose_name='Объект изображения')),
('schoolschedule', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='schoolschedule_images', to='school.SchoolSchedule', verbose_name='День занятия')),
],
options={
'verbose_name': 'Изображение в галерее',
'verbose_name_plural': 'Изображения в галерее',
'ordering': ('-created_at',),
},
),
]

@ -1,5 +1,7 @@
from django.db import models
from apps.content.models import ImageObject
class SchoolSchedule(models.Model):
WEEKDAY_CHOICES = (
@ -18,6 +20,7 @@ class SchoolSchedule(models.Model):
age = models.PositiveSmallIntegerField('Возраст', default=0)
month_price = models.DecimalField('Цена', max_digits=8, decimal_places=2, default=0)
day_discount = models.DecimalField('Скидка, в валюте', max_digits=8, decimal_places=2, default=0)
start_at = models.TimeField('Начало урока', null=True)
class Meta:
ordering = ('weekday',)
@ -26,3 +29,24 @@ class SchoolSchedule(models.Model):
def __str__(self):
return dict(self.WEEKDAY_CHOICES).get(self.weekday, '')
class SchoolScheduleImage(models.Model):
schoolschedule = models.ForeignKey(
SchoolSchedule, on_delete=models.CASCADE,
verbose_name='День занятия', related_name='schoolschedule_images'
)
img = models.ForeignKey(
ImageObject, related_name='schoolschedule_images',
verbose_name='Объект изображения', on_delete=models.CASCADE,
null=True, blank=True,
)
created_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'Изображение в галерее'
verbose_name_plural = 'Изображения в галерее'
ordering = ('-created_at',)

@ -13,7 +13,7 @@
"is_active": true,
"date_joined": "2018-01-28T08:41:19Z",
"email": "admin@lil.city",
"role": 2,
"role": 3,
"gender": "n",
"country": "",
"city": "",

@ -0,0 +1,18 @@
# Generated by Django 2.0.3 on 2018-04-09 11:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('user', '0019_user_show_in_mainpage'),
]
operations = [
migrations.AlterField(
model_name='user',
name='role',
field=models.PositiveSmallIntegerField(choices=[(0, 'пользователь'), (1, 'автор'), (2, 'преподаватель'), (3, 'администратор')], default=0, verbose_name='Роль'),
),
]

@ -19,10 +19,12 @@ from apps.user.tasks import user_to_mixpanel
class User(AbstractUser):
USER_ROLE = 0
AUTHOR_ROLE = 1
ADMIN_ROLE = 2
TEACHER_ROLE = 2
ADMIN_ROLE = 3
ROLE_CHOICES = (
(USER_ROLE, 'пользователь'),
(AUTHOR_ROLE, 'автор'),
(TEACHER_ROLE, 'преподаватель'),
(ADMIN_ROLE, 'администратор'),
)
NOT_DEFINED = 'n'

@ -31,7 +31,7 @@
</div>
</div>
{% endif %}
{% if request.user.role == 1 or request.user.role == 2 %}
{% if request.user.role >= request.user.AUTHOR_ROLE %}
<div class="section section_gray">
<div class="section__center center center_xs">
<div class="title title_sm">Вывести деньги со счета</div>

@ -64,7 +64,7 @@
<div class="header__drop">
{% comment %} <a class="header__link header__link_border" href="#">234.120.345 руб.</a> {% endcomment %}
{% if request.user.auth_token %}
{% if request.user.role == 1 or request.user.role == 2 %}
{% if request.user.role >= request.user.AUTHOR_ROLE %}
<a class="header__link header__link_green" href="{% url 'course_create' %}">
{% comment %} <a class="header__link header__link_gray disabled" href="#"> {% endcomment %}
<div class="header__title">ДОБАВИТЬ КУРС</div>

@ -147,7 +147,7 @@
<div class="header__ava ava"><img class="ava__pic" src="{% static 'img/user.jpg' %}"></div>
{% endif %}
<div class="header__drop">
{% if request.user.role == 1 or request.user.role == 2 %}
{% if request.user.role >= request.user.AUTHOR_ROLE %}
<a class="header__link header__link_border" href="{% url 'user-edit-payments' request.user.id %}">{{ request.user.balance }} руб.</a>
{% if request.user.auth_token %}
<a class="header__link header__link_green" href="{% url 'course_create' %}">

Loading…
Cancel
Save