Move common functions into Wagtail superclass
This commit is contained in:
parent
2157d4e630
commit
2f52f67b64
|
|
@ -1,8 +1,10 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-14 14:08
|
# Generated by Django 2.0.6 on 2018-08-16 15:24
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
import wagtail.core.blocks
|
||||||
import wagtail.core.fields
|
import wagtail.core.fields
|
||||||
|
import wagtail.images.blocks
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
@ -10,7 +12,7 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('wagtailimages', '0020_add-verbose-name'),
|
('wagtailimages', '0021_image_file_hash'),
|
||||||
('wagtailcore', '0040_page_draft_title'),
|
('wagtailcore', '0040_page_draft_title'),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
@ -37,6 +39,19 @@ class Migration(migrations.Migration):
|
||||||
},
|
},
|
||||||
bases=('wagtailcore.page',),
|
bases=('wagtailcore.page',),
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='ContentBlock',
|
||||||
|
fields=[
|
||||||
|
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')),
|
||||||
|
('contents', wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='doc-full')), ('modal_text', wagtail.core.blocks.StructBlock([('description', wagtail.core.blocks.RichTextBlock()), ('url', wagtail.core.blocks.URLBlock())], icon='placeholder')), ('student_entry', wagtail.core.blocks.StructBlock([('task_text', wagtail.core.blocks.RichTextBlock())], icon='download')), ('image_block', wagtail.images.blocks.ImageChooserBlock(icon='image')), ('task', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='tick'))], blank=True, null=True)),
|
||||||
|
('type', models.CharField(choices=[('plain', 'Normal'), ('yellow', 'Gelb'), ('green', 'Grün'), ('blue', 'Blau')], max_length=100)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Inhaltsblock',
|
||||||
|
'verbose_name_plural': 'Inhaltsblöcke',
|
||||||
|
},
|
||||||
|
bases=('wagtailcore.page',),
|
||||||
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Module',
|
name='Module',
|
||||||
fields=[
|
fields=[
|
||||||
|
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-15 08:45
|
|
||||||
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import wagtail.core.blocks
|
|
||||||
import wagtail.core.fields
|
|
||||||
import wagtail.images.blocks
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('wagtailcore', '0040_page_draft_title'),
|
|
||||||
('book', '0001_initial'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.CreateModel(
|
|
||||||
name='ContentBlock',
|
|
||||||
fields=[
|
|
||||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')),
|
|
||||||
('contents', wagtail.core.fields.StreamField([('text', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='doc-full')), ('modal_text', wagtail.core.blocks.StructBlock([('description', wagtail.core.blocks.RichTextBlock()), ('modal_content', wagtail.core.blocks.RichTextBlock())], icon='placeholder')), ('student_entry', wagtail.core.blocks.StructBlock([('task_text', wagtail.core.blocks.CharBlock())], icon='download')), ('image', wagtail.images.blocks.ImageChooserBlock(icon='image')), ('task', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='tick'))])),
|
|
||||||
('type', models.CharField(choices=[('plain', 'Normal'), ('yellow', 'Gelb'), ('green', 'Grün'), ('blue', 'Blau')], max_length=100)),
|
|
||||||
],
|
|
||||||
options={
|
|
||||||
'verbose_name_plural': 'Inhaltsblöcke',
|
|
||||||
'verbose_name': 'Inhaltsblock',
|
|
||||||
},
|
|
||||||
bases=('wagtailcore.page',),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-15 13:49
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
import wagtail.core.blocks
|
|
||||||
import wagtail.core.fields
|
|
||||||
import wagtail.images.blocks
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('book', '0002_contentblock'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='contentblock',
|
|
||||||
name='contents',
|
|
||||||
field=wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='doc-full')), ('modal_text', wagtail.core.blocks.StructBlock([('description', wagtail.core.blocks.RichTextBlock()), ('modal_content', wagtail.core.blocks.RichTextBlock())], icon='placeholder')), ('student_entry', wagtail.core.blocks.StructBlock([('task_text', wagtail.core.blocks.CharBlock())], icon='download')), ('image', wagtail.images.blocks.ImageChooserBlock(icon='image')), ('task', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='tick'))], blank=True, null=True),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-15 16:29
|
|
||||||
|
|
||||||
from django.db import migrations
|
|
||||||
import wagtail.core.blocks
|
|
||||||
import wagtail.core.fields
|
|
||||||
import wagtail.images.blocks
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('book', '0003_auto_20180815_1349'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='contentblock',
|
|
||||||
name='contents',
|
|
||||||
field=wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='doc-full')), ('modal_text', wagtail.core.blocks.StructBlock([('description', wagtail.core.blocks.RichTextBlock()), ('modal_content', wagtail.core.blocks.RichTextBlock())], icon='placeholder')), ('student_entry', wagtail.core.blocks.StructBlock([('task_text', wagtail.core.blocks.CharBlock())], icon='download')), ('image_block', wagtail.images.blocks.ImageChooserBlock(icon='image')), ('task', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock())], icon='tick'))], blank=True, null=True),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
|
|
@ -1,12 +1,13 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList
|
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList
|
||||||
from wagtail.core.models import Page
|
|
||||||
|
from core.wagtail_utils import StrictHierarchyPage
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Book(Page):
|
class Book(StrictHierarchyPage):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Buch'
|
verbose_name = 'Buch'
|
||||||
verbose_name_plural = 'Bücher'
|
verbose_name_plural = 'Bücher'
|
||||||
|
|
@ -27,6 +28,3 @@ class Book(Page):
|
||||||
template = 'generic_page.html'
|
template = 'generic_page.html'
|
||||||
|
|
||||||
subpage_types = ['book.Topic']
|
subpage_types = ['book.Topic']
|
||||||
|
|
||||||
def get_child_ids(self):
|
|
||||||
return self.get_children().values_list('id', flat=True)
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, \
|
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList
|
||||||
ObjectList
|
|
||||||
from wagtail.core.models import Page
|
from core.wagtail_utils import StrictHierarchyPage
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Chapter(Page):
|
class Chapter(StrictHierarchyPage):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Kapitel'
|
verbose_name = 'Kapitel'
|
||||||
verbose_name_plural = 'Kapitel'
|
verbose_name_plural = 'Kapitel'
|
||||||
|
|
@ -30,9 +30,3 @@ class Chapter(Page):
|
||||||
parent_page_types = ['book.Module']
|
parent_page_types = ['book.Module']
|
||||||
subpage_types = ['book.ContentBlock']
|
subpage_types = ['book.ContentBlock']
|
||||||
|
|
||||||
def get_child_ids(self):
|
|
||||||
return self.get_children().values_list('id', flat=True)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_module_chapters(cls, module):
|
|
||||||
return cls.objects.filter(id__in=module.get_child_ids()).live()
|
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,17 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList, StreamFieldPanel
|
||||||
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, \
|
|
||||||
ObjectList, StreamFieldPanel
|
|
||||||
from wagtail.core.fields import StreamField
|
from wagtail.core.fields import StreamField
|
||||||
from wagtail.core.models import Page
|
|
||||||
from wagtail.images.blocks import ImageChooserBlock
|
from wagtail.images.blocks import ImageChooserBlock
|
||||||
|
|
||||||
from book.blocks import TextBlock, ModalTextBlock, StudentEntryBlock
|
from book.blocks import TextBlock, ModalTextBlock, StudentEntryBlock
|
||||||
|
from core.wagtail_utils import StrictHierarchyPage
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class ContentBlock(Page):
|
class ContentBlock(StrictHierarchyPage):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Inhaltsblock'
|
verbose_name = 'Inhaltsblock'
|
||||||
verbose_name_plural = 'Inhaltsblöcke'
|
verbose_name_plural = 'Inhaltsblöcke'
|
||||||
|
|
@ -55,6 +53,3 @@ class ContentBlock(Page):
|
||||||
|
|
||||||
parent_page_types = ['book.Chapter']
|
parent_page_types = ['book.Chapter']
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_chapter_content_blocks(cls, chapter):
|
|
||||||
return cls.objects.filter(id__in=chapter.get_child_ids()).live()
|
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,17 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, \
|
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList
|
||||||
ObjectList
|
|
||||||
from wagtail.core.fields import RichTextField
|
from wagtail.core.fields import RichTextField
|
||||||
from wagtail.core.models import Page
|
|
||||||
from wagtail.images.edit_handlers import ImageChooserPanel
|
from wagtail.images.edit_handlers import ImageChooserPanel
|
||||||
|
|
||||||
from book.blocks import DEFAULT_RICH_TEXT_FEATURES
|
from book.blocks import DEFAULT_RICH_TEXT_FEATURES
|
||||||
|
from core.wagtail_utils import StrictHierarchyPage
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Module(Page):
|
class Module(StrictHierarchyPage):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Modul'
|
verbose_name = 'Modul'
|
||||||
verbose_name_plural = 'Module'
|
verbose_name_plural = 'Module'
|
||||||
|
|
@ -57,7 +56,3 @@ class Module(Page):
|
||||||
|
|
||||||
def get_child_ids(self):
|
def get_child_ids(self):
|
||||||
return self.get_children().values_list('id', flat=True)
|
return self.get_children().values_list('id', flat=True)
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_topic_modules(cls, topic):
|
|
||||||
return cls.objects.filter(id__in=topic.get_child_ids()).live()
|
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,16 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, \
|
from wagtail.admin.edit_handlers import FieldPanel, TabbedInterface, ObjectList
|
||||||
ObjectList
|
|
||||||
from wagtail.core.fields import RichTextField
|
from wagtail.core.fields import RichTextField
|
||||||
from wagtail.core.models import Page
|
|
||||||
|
|
||||||
from book.blocks import DEFAULT_RICH_TEXT_FEATURES
|
from book.blocks import DEFAULT_RICH_TEXT_FEATURES
|
||||||
|
from core.wagtail_utils import StrictHierarchyPage
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class Topic(Page):
|
class Topic(StrictHierarchyPage):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Thema'
|
verbose_name = 'Thema'
|
||||||
verbose_name_plural = 'Themen'
|
verbose_name_plural = 'Themen'
|
||||||
|
|
@ -40,10 +39,3 @@ class Topic(Page):
|
||||||
|
|
||||||
parent_page_types = ['book.Book']
|
parent_page_types = ['book.Book']
|
||||||
subpage_types = ['book.Module']
|
subpage_types = ['book.Module']
|
||||||
|
|
||||||
def get_child_ids(self):
|
|
||||||
return self.get_children().values_list('id', flat=True)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def get_book_topics(cls, book):
|
|
||||||
return cls.objects.filter(id__in=book.get_child_ids()).live()
|
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ class ChapterNode(DjangoObjectType):
|
||||||
interfaces = (relay.Node,)
|
interfaces = (relay.Node,)
|
||||||
|
|
||||||
def resolve_content_blocks(self, *args, **kwargs):
|
def resolve_content_blocks(self, *args, **kwargs):
|
||||||
return ContentBlock.get_chapter_content_blocks(self)
|
return ContentBlock.get_by_parent(self)
|
||||||
|
|
||||||
|
|
||||||
class ModuleNode(DjangoObjectType):
|
class ModuleNode(DjangoObjectType):
|
||||||
|
|
@ -59,7 +59,7 @@ class ModuleNode(DjangoObjectType):
|
||||||
return self.hero_image.file.url
|
return self.hero_image.file.url
|
||||||
|
|
||||||
def resolve_chapters(self, *args, **kwargs):
|
def resolve_chapters(self, *args, **kwargs):
|
||||||
return Chapter.get_module_chapters(self)
|
return Chapter.get_by_parent(self)
|
||||||
|
|
||||||
|
|
||||||
class TopicNode(DjangoObjectType):
|
class TopicNode(DjangoObjectType):
|
||||||
|
|
@ -81,7 +81,7 @@ class TopicNode(DjangoObjectType):
|
||||||
return self.id
|
return self.id
|
||||||
|
|
||||||
def resolve_modules(self, *args, **kwargs):
|
def resolve_modules(self, *args, **kwargs):
|
||||||
return Module.get_topic_modules(self)
|
return Module.get_by_parent(self)
|
||||||
|
|
||||||
|
|
||||||
class BookNode(DjangoObjectType):
|
class BookNode(DjangoObjectType):
|
||||||
|
|
@ -103,7 +103,7 @@ class BookNode(DjangoObjectType):
|
||||||
return self.id
|
return self.id
|
||||||
|
|
||||||
def resolve_topics(self, *args, **kwargs):
|
def resolve_topics(self, *args, **kwargs):
|
||||||
return Topic.get_book_topics(self)
|
return Topic.get_by_parent(self)
|
||||||
|
|
||||||
|
|
||||||
class BookQuery(object):
|
class BookQuery(object):
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,17 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from wagtail.core.models import Page
|
||||||
|
|
||||||
|
|
||||||
|
class StrictHierarchyPage(Page):
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
def get_child_ids(self):
|
||||||
|
return self.get_children().values_list('id', flat=True)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def get_by_parent(cls, parent):
|
||||||
|
return cls.objects.filter(id__in=parent.get_child_ids()).live()
|
||||||
|
|
||||||
|
|
||||||
def wagtail_parent_filter(parent_cls, child_cls):
|
def wagtail_parent_filter(parent_cls, child_cls):
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-14 14:08
|
# Generated by Django 2.0.6 on 2018-08-16 15:24
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
@ -10,8 +9,6 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('book', '0001_initial'),
|
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
@ -31,8 +28,6 @@ class Migration(migrations.Migration):
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('title', models.CharField(blank=True, max_length=255, verbose_name='title')),
|
('title', models.CharField(blank=True, max_length=255, verbose_name='title')),
|
||||||
('module', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='book.Module')),
|
|
||||||
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Lernziel Gruppe',
|
'verbose_name': 'Lernziel Gruppe',
|
||||||
|
|
@ -45,16 +40,10 @@ class Migration(migrations.Migration):
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('done', models.BooleanField(default=False, verbose_name='Lernziel erledigt?')),
|
('done', models.BooleanField(default=False, verbose_name='Lernziel erledigt?')),
|
||||||
('objective', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='objectives.Objective')),
|
('objective', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='objectives.Objective')),
|
||||||
('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'verbose_name': 'Lernzielstatus',
|
'verbose_name': 'Lernzielstatus',
|
||||||
'verbose_name_plural': 'Lernzielstatus',
|
'verbose_name_plural': 'Lernzielstatus',
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
migrations.AddField(
|
|
||||||
model_name='objective',
|
|
||||||
name='group',
|
|
||||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='objectives.ObjectiveGroup'),
|
|
||||||
),
|
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
# Generated by Django 2.0.6 on 2018-08-16 15:24
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('book', '0001_initial'),
|
||||||
|
('objectives', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='objectiveprogressstatus',
|
||||||
|
name='user',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='objectivegroup',
|
||||||
|
name='module',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='book.Module'),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='objectivegroup',
|
||||||
|
name='user',
|
||||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||||
|
),
|
||||||
|
migrations.AddField(
|
||||||
|
model_name='objective',
|
||||||
|
name='group',
|
||||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='objectives.ObjectiveGroup'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-14 12:41
|
# Generated by Django 2.0.6 on 2018-08-16 15:24
|
||||||
|
|
||||||
import django.contrib.auth.models
|
import django.contrib.auth.models
|
||||||
import django.contrib.auth.validators
|
import django.contrib.auth.validators
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue