Add ContentBlock factory, add apollo-link first steps

This commit is contained in:
Pawel Kowalski 2018-08-15 13:59:21 +02:00
parent ca6c5742b4
commit 640af9b047
4 changed files with 60 additions and 6 deletions

View File

@ -13,6 +13,7 @@
"dependencies": {
"apollo-cache-inmemory": "^1.2.2",
"apollo-client": "^2.3.2",
"apollo-link": "^1.2.2",
"apollo-link-http": "^1.5.4",
"appolo": "^6.0.19",
"autoprefixer": "^7.1.2",

View File

@ -1,6 +1,7 @@
import {InMemoryCache} from 'apollo-cache-inmemory/lib/index'
import {HttpLink} from 'apollo-link-http/lib/index'
import {ApolloClient} from 'apollo-client/index'
import {ApolloLink} from 'apollo-link'
import fetch from 'unfetch'
const httpLink = new HttpLink({
@ -12,9 +13,19 @@ const httpLink = new HttpLink({
}
})
const consoleLink = new ApolloLink((operation, forward) => {
console.log(`starting request for ${operation.operationName}`);
return forward(operation).map((data) => {
console.log(`ending request for ${operation.operationName}`);
return data;
})
})
const composedLink = ApolloLink.from([consoleLink, httpLink]);
// Create the apollo client
export default new ApolloClient({
link: httpLink,
link: composedLink,
cache: new InMemoryCache(),
connectToDevTools: true
})

View File

@ -2,7 +2,7 @@ import random
import factory
from book.models import Book, Topic, Module
from book.models import Book, Topic, Module, Chapter, ContentBlock
from core.factories import BasePageFactory, fake, DummyImageFactory
@ -30,3 +30,15 @@ class ModuleFactory(BasePageFactory):
intro = factory.LazyAttribute(lambda x: fake.text(max_nb_chars=200))
hero_image = factory.SubFactory(DummyImageFactory)
class ChapterFactory(BasePageFactory):
class Meta:
model = Chapter
class ContentBlockFactory(BasePageFactory):
class Meta:
model = ContentBlock
type = factory.LazyAttribute(lambda x: random.choice(['plain', 'yellow', 'green', 'blue']))

View File

@ -9,7 +9,7 @@ from django.core.management import BaseCommand
from django.db import connection
from wagtail.core.models import Page
from book.factories import BookFactory, TopicFactory, ModuleFactory
from book.factories import BookFactory, TopicFactory, ModuleFactory, ChapterFactory, ContentBlockFactory
from core.factories import UserFactory
from objectives.factories import ObjectiveGroupFactory, ObjectiveFactory
@ -29,7 +29,6 @@ data = [
'teaser': 'Die Berufsbildung ist ein neuer Lebensabschnit',
'intro': """
<p>Sie stehen am Anfang eines neuen Lebensabschnitts. In Ihrer Rolle als Berufslernende oder Berufslernender haben Sie Verantwortung übernommen.</p>
<p>Wie erging es Ihnen am ersten Arbeits- und Schultag?</p>
""",
'objective_groups': [
@ -52,6 +51,24 @@ data = [
{'text': 'Ich kann mein Arbeitsplatz genau beschreiben.'}
]
}
],
'chapters': [
{
'title': '1.1 Lehrbeginn',
'content_blocks': [
{'type': 'plain', 'title': 'Auftrag 1', 'content': 'Sie haben diesen Sommer ihre Lehre begonnen. Was bedeutet dieser neue Abschnitt für Sie?'},
{'type': 'yellow', 'title': 'Auftrag 2', 'content': 'Sie haben diesen Sommer ihre Lehre begonnen. Was bedeutet dieser neue Abschnitt für Sie?'},
{'type': 'plain', 'title': 'Auftrag 3', 'content': 'Sie haben diesen Sommer ihre Lehre begonnen. Was bedeutet dieser neue Abschnitt für Sie?'}
]
},
{
'title': '1.2 Die drei Lernorte',
'content_blocks': [
{'type': 'plain', 'title': 'Auftrag 1', 'content': 'Sie haben diesen Sommer ihre Lehre begonnen. Was bedeutet dieser neue Abschnitt für Sie?'},
{'type': 'yellow', 'title': 'Auftrag 2', 'content': 'Sie haben diesen Sommer ihre Lehre begonnen. Was bedeutet dieser neue Abschnitt für Sie?'},
{'type': 'blue', 'title': 'Auftrag 3', 'content': 'Sie haben diesen Sommer ihre Lehre begonnen. Was bedeutet dieser neue Abschnitt für Sie?'}
]
}
]
},
{
@ -135,7 +152,8 @@ class Command(BaseCommand):
os.makedirs(path)
def filter_data(self, input_data, filter_keyword):
return {k: v for (k, v) in input_data.items() if not (k == filter_keyword)}
filters = [filter_keyword] if not isinstance(filter_keyword, list) else filter_keyword
return {k: v for (k, v) in input_data.items() if not (k in filters)}
def handle(self, *args, **options):
with connection.cursor() as cursor:
@ -174,7 +192,7 @@ class Command(BaseCommand):
modules_data = topic_data.get('modules', default_modules)
for module_idx, module_data in enumerate(modules_data):
module = ModuleFactory.create(parent=topic, **self.filter_data(module_data, 'objective_groups'))
module = ModuleFactory.create(parent=topic, **self.filter_data(module_data, ['objective_groups', 'chapters']))
default_objective_groups = [{} for i in range(0, 2)]
objective_group_data = module_data.get('objective_groups', default_objective_groups)
@ -190,3 +208,15 @@ class Command(BaseCommand):
for objective_idx, objective_data in enumerate(objectives_data):
objective = ObjectiveFactory.create(group=objective_group, **objective_data)
default_chapters = [{} for i in range(0, 2)]
chapters_data = module_data.get('chapters', default_chapters)
for chapter_idx, chapter_data in enumerate(chapters_data):
chapter = ChapterFactory.create(parent=module, **self.filter_data(chapter_data, 'content_blocks'))
default_content_blocks = [{} for i in range(0, 4)]
content_blocks_data = chapter_data.get('content_blocks', default_content_blocks)
for content_block_idx, content_block_data in enumerate(content_blocks_data):
ContentBlockFactory.create(parent=chapter, **self.filter_data(content_block_data, 'content'))