From 5a042bb11578e70b11f8c86f078a0238119b777a Mon Sep 17 00:00:00 2001 From: Christian Cueni Date: Wed, 20 May 2020 11:55:06 +0200 Subject: [PATCH] Add models and graphql --- server/api/schema_public.py | 14 ++++------- .../migrations/0006_auto_20200520_0954.py | 21 ++++++++++++++++ .../migrations/0021_auto_20200520_0954.py | 24 +++++++++++++++++++ server/core/settings.py | 1 + server/newsteaser/__init__.py | 0 server/newsteaser/apps.py | 5 ++++ server/newsteaser/models.py | 11 +++++++++ server/newsteaser/schema.py | 20 ++++++++++++++++ server/users/mutations_public.py | 10 -------- 9 files changed, 87 insertions(+), 19 deletions(-) create mode 100644 server/basicknowledge/migrations/0006_auto_20200520_0954.py create mode 100644 server/books/migrations/0021_auto_20200520_0954.py create mode 100644 server/newsteaser/__init__.py create mode 100644 server/newsteaser/apps.py create mode 100644 server/newsteaser/models.py create mode 100644 server/newsteaser/schema.py diff --git a/server/api/schema_public.py b/server/api/schema_public.py index 1f643dae..1ee5e028 100644 --- a/server/api/schema_public.py +++ b/server/api/schema_public.py @@ -2,6 +2,7 @@ import graphene from django.conf import settings from graphene_django.debug import DjangoDebug +from newsteaser.schema import AllNewsTeasersQuery from users.mutations_public import UserMutations from registration.mutations_public import RegistrationMutations @@ -12,16 +13,11 @@ class Mutation(UserMutations, RegistrationMutations, graphene.ObjectType): debug = graphene.Field(DjangoDebug, name='__debug') -# graphene neets some kind of schema in order to create a schema -class DummyQuery(object): - meaning_of_life = graphene.Int() +class Query(AllNewsTeasersQuery, graphene.ObjectType): + node = graphene.relay.Node.Field() - def resolve_meaning_of_life(self, info, **kwargs): - return 42 - - -class Query(DummyQuery, graphene.ObjectType): - pass + if settings.DEBUG: + debug = graphene.Field(DjangoDebug, name='_debug') schema = graphene.Schema(mutation=Mutation, query=Query) diff --git a/server/basicknowledge/migrations/0006_auto_20200520_0954.py b/server/basicknowledge/migrations/0006_auto_20200520_0954.py new file mode 100644 index 00000000..2e19d313 --- /dev/null +++ b/server/basicknowledge/migrations/0006_auto_20200520_0954.py @@ -0,0 +1,21 @@ +# Generated by Django 2.1.15 on 2020-05-20 09:54 + +from django.db import migrations +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.images.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0005_auto_20200408_0834'), + ] + + operations = [ + migrations.AlterField( + model_name='basicknowledge', + name='contents', + field=wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock(features=['bold', 'ul', 'brand', 'secondary']))])), ('image_block', wagtail.images.blocks.ImageChooserBlock()), ('link_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('video_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('document_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('section_title', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock())])), ('infogram_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock()), ('title', wagtail.core.blocks.TextBlock())])), ('genially_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock())])), ('thinglink_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock())])), ('subtitle', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock())]))], blank=True, null=True), + ), + ] diff --git a/server/books/migrations/0021_auto_20200520_0954.py b/server/books/migrations/0021_auto_20200520_0954.py new file mode 100644 index 00000000..157e632a --- /dev/null +++ b/server/books/migrations/0021_auto_20200520_0954.py @@ -0,0 +1,24 @@ +# Generated by Django 2.1.15 on 2020-05-20 09:54 + +import assignments.models +from django.db import migrations +import surveys.models +import wagtail.core.blocks +import wagtail.core.fields +import wagtail.images.blocks +import wagtail.snippets.blocks + + +class Migration(migrations.Migration): + + dependencies = [ + ('books', '0020_topic_instructions'), + ] + + operations = [ + migrations.AlterField( + model_name='contentblock', + name='contents', + field=wagtail.core.fields.StreamField([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock(features=['ul']))])), ('basic_knowledge', wagtail.core.blocks.StructBlock([('description', wagtail.core.blocks.RichTextBlock(required=False)), ('basic_knowledge', wagtail.core.blocks.PageChooserBlock(required=True, target_model=['basicknowledge.BasicKnowledge']))])), ('assignment', wagtail.core.blocks.StructBlock([('assignment_id', wagtail.snippets.blocks.SnippetChooserBlock(assignments.models.Assignment))])), ('survey', wagtail.core.blocks.StructBlock([('survey_id', wagtail.snippets.blocks.SnippetChooserBlock(surveys.models.Survey))])), ('image_block', wagtail.images.blocks.ImageChooserBlock()), ('image_url_block', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('link_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('solution', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock(features=['ul']))], icon='tick')), ('video_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('document_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('infogram_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock()), ('title', wagtail.core.blocks.TextBlock())])), ('genially_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock())])), ('thinglink_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock())])), ('subtitle', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock())])), ('instruction', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock()), ('text', wagtail.core.blocks.TextBlock(required=False))])), ('module_room_slug', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.TextBlock())])), ('content_list_item', wagtail.core.blocks.StreamBlock([('text_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock(features=['ul']))])), ('basic_knowledge', wagtail.core.blocks.StructBlock([('description', wagtail.core.blocks.RichTextBlock(required=False)), ('basic_knowledge', wagtail.core.blocks.PageChooserBlock(required=True, target_model=['basicknowledge.BasicKnowledge']))])), ('assignment', wagtail.core.blocks.StructBlock([('assignment_id', wagtail.snippets.blocks.SnippetChooserBlock(assignments.models.Assignment))])), ('survey', wagtail.core.blocks.StructBlock([('survey_id', wagtail.snippets.blocks.SnippetChooserBlock(surveys.models.Survey))])), ('image_block', wagtail.images.blocks.ImageChooserBlock()), ('image_url_block', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('link_block', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock()), ('url', wagtail.core.blocks.URLBlock())])), ('solution', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.RichTextBlock(features=['ul']))], icon='tick')), ('video_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('document_block', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock())])), ('infogram_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock()), ('title', wagtail.core.blocks.TextBlock())])), ('genially_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock())])), ('thinglink_block', wagtail.core.blocks.StructBlock([('id', wagtail.core.blocks.TextBlock())])), ('subtitle', wagtail.core.blocks.StructBlock([('text', wagtail.core.blocks.TextBlock())])), ('instruction', wagtail.core.blocks.StructBlock([('url', wagtail.core.blocks.URLBlock()), ('text', wagtail.core.blocks.TextBlock(required=False))])), ('module_room_slug', wagtail.core.blocks.StructBlock([('title', wagtail.core.blocks.TextBlock())]))]))], blank=True, null=True), + ), + ] diff --git a/server/core/settings.py b/server/core/settings.py index d96c84d3..741d7749 100644 --- a/server/core/settings.py +++ b/server/core/settings.py @@ -57,6 +57,7 @@ INSTALLED_APPS = [ 'surveys', 'notes', 'registration', + 'newsteaser', 'wagtail.contrib.forms', 'wagtail.contrib.redirects', diff --git a/server/newsteaser/__init__.py b/server/newsteaser/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/server/newsteaser/apps.py b/server/newsteaser/apps.py new file mode 100644 index 00000000..874c4b14 --- /dev/null +++ b/server/newsteaser/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UserConfig(AppConfig): + name = 'newsteaser' diff --git a/server/newsteaser/models.py b/server/newsteaser/models.py new file mode 100644 index 00000000..283996ba --- /dev/null +++ b/server/newsteaser/models.py @@ -0,0 +1,11 @@ +from django.utils.translation import ugettext_lazy as _ +from django.db import models + + +class NewsTeaser(models.Model): + image_url = models.URLField(_('Image URL'), blank=False, null=True) + title = models.CharField(_('Title'), max_length=300, blank=False, null=False) + description = models.TextField(_('Description'), blank=False, null=True) + date = models.DateField(blank=False, null=True) + order_id = models.IntegerField(blank=False, null=False, default=-1) + news_article_url = models.URLField(_('News Article URL'), blank=False, null=True) diff --git a/server/newsteaser/schema.py b/server/newsteaser/schema.py new file mode 100644 index 00000000..2cd39079 --- /dev/null +++ b/server/newsteaser/schema.py @@ -0,0 +1,20 @@ +from graphene import relay +from graphene_django import DjangoObjectType +from graphene_django.filter import DjangoFilterConnectionField + +from newsteaser.models import NewsTeaser + + +class NewsTeaserNode(DjangoObjectType): + + class Meta: + model = NewsTeaser + filter_fields = [] + interfaces = (relay.Node,) + + +class AllNewsTeasersQuery(object): + articles = DjangoFilterConnectionField(NewsTeaserNode) + + def resolve_articles(self, info, **kwargs): + return AllNewsTeasersQuery.objects.all() diff --git a/server/users/mutations_public.py b/server/users/mutations_public.py index 4ed9a3ae..0e262b7d 100644 --- a/server/users/mutations_public.py +++ b/server/users/mutations_public.py @@ -1,13 +1,3 @@ -# -*- coding: utf-8 -*- -# -# ITerativ GmbH -# http://www.iterativ.ch/ -# -# Copyright (c) 2019 ITerativ GmbH. All rights reserved. -# -# Created on 2019-10-01 -# @author: chrigu - import graphene from django.conf import settings from django.contrib.auth import authenticate, login