LIL-163-167. Add app Content with models Content, Image, Text, ImageText, Video

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 43582f40a4
commit 670a1f485e
  1. 0
      apps/content/__init__.py
  2. 43
      apps/content/admin.py
  3. 6
      apps/content/apps.py
  4. 93
      apps/content/migrations/0001_initial.py
  5. 29
      apps/content/migrations/0002_auto_20180205_1212.py
  6. 0
      apps/content/migrations/__init__.py
  7. 47
      apps/content/models.py
  8. 3
      apps/content/tests.py
  9. 2
      apps/content/views.py
  10. 1
      project/settings.py

@ -0,0 +1,43 @@
from django.contrib import admin
from polymorphic.admin import (
PolymorphicParentModelAdmin,
PolymorphicChildModelAdmin,
PolymorphicChildModelFilter,
)
from .models import Content, Image, ImageText, Text, Video
class ContentChildAdmin(PolymorphicChildModelAdmin):
base_model = Content
@admin.register(Image)
class ImageAdmin(ContentChildAdmin):
base_model = Image
@admin.register(Text)
class TextAdmin(ContentChildAdmin):
base_model = Text
@admin.register(ImageText)
class ImageTextAdmin(ContentChildAdmin):
base_model = ImageText
@admin.register(Video)
class VideoAdmin(ContentChildAdmin):
base_model = Video
@admin.register(Content)
class ContentAdmin(PolymorphicParentModelAdmin):
base_model = Content
child_models = (
Image,
Text,
ImageText,
Video
)

@ -0,0 +1,6 @@
from django.apps import AppConfig
class ContentConfig(AppConfig):
name = 'content'
verbose_name = 'Контент'

@ -0,0 +1,93 @@
# Generated by Django 2.0.2 on 2018-02-05 12:05
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
initial = True
dependencies = [
('course', '0020_auto_20180202_1716'),
('contenttypes', '0002_remove_content_type_name'),
]
operations = [
migrations.CreateModel(
name='Content',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(default='', max_length=100, verbose_name='Заголовок')),
('position', models.PositiveSmallIntegerField(default=1, unique=True, verbose_name='Положение на странице')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
),
migrations.CreateModel(
name='Image',
fields=[
('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='content.Content')),
('img', models.ImageField(upload_to='content/images', verbose_name='Изображение')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('content.content',),
),
migrations.CreateModel(
name='ImageText',
fields=[
('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='content.Content')),
('img', models.ImageField(upload_to='content/images', verbose_name='Изображение')),
('txt', models.TextField(default='', verbose_name='Текст')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('content.content',),
),
migrations.CreateModel(
name='Text',
fields=[
('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='content.Content')),
('txt', models.TextField(default='', verbose_name='Текст')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('content.content',),
),
migrations.CreateModel(
name='Video',
fields=[
('content_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='content.Content')),
('url', models.URLField(verbose_name='Ссылка')),
],
options={
'abstract': False,
'base_manager_name': 'objects',
},
bases=('content.content',),
),
migrations.AddField(
model_name='content',
name='course',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='course.Course', verbose_name='Курс'),
),
migrations.AddField(
model_name='content',
name='lesson',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='course.Lesson', verbose_name='Урок'),
),
migrations.AddField(
model_name='content',
name='polymorphic_ctype',
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_content.content_set+', to='contenttypes.ContentType'),
),
]

@ -0,0 +1,29 @@
# Generated by Django 2.0.2 on 2018-02-05 12:12
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('content', '0001_initial'),
]
operations = [
migrations.AlterModelOptions(
name='content',
options={'verbose_name': 'Контент', 'verbose_name_plural': 'Контент'},
),
migrations.AddField(
model_name='content',
name='created_at',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
migrations.AddField(
model_name='content',
name='update_at',
field=models.DateTimeField(auto_now=True),
),
]

@ -0,0 +1,47 @@
from django.db import models
from polymorphic.models import PolymorphicModel
from apps.course.models import Course, Lesson
class Content(PolymorphicModel):
course = models.ForeignKey(
Course, on_delete=models.CASCADE,
null=True, blank=True,
verbose_name='Курс'
)
lesson = models.ForeignKey(
Lesson, on_delete=models.CASCADE,
null=True, blank=True,
verbose_name='Урок'
)
title = models.CharField('Заголовок', max_length=100, default='')
position = models.PositiveSmallIntegerField(
'Положение на странице',
default=1, unique=True
)
created_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = 'Контент'
verbose_name_plural = 'Контент'
class Image(Content):
img = models.ImageField('Изображение', upload_to='content/images')
class Text(Content):
txt = models.TextField('Текст', default='')
class ImageText(Content):
img = models.ImageField('Изображение', upload_to='content/images')
txt = models.TextField('Текст', default='')
class Video(Content):
url = models.URLField('Ссылка')

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

@ -0,0 +1,2 @@
from django.shortcuts import render

@ -53,6 +53,7 @@ INSTALLED_APPS = [
'apps.notification',
'apps.payment',
'apps.course',
'apps.content',
]
if DEBUG:
INSTALLED_APPS += ['silk']

Loading…
Cancel
Save