Add testdata generation for objectives, optimize imports
This commit is contained in:
parent
fc1b0519c4
commit
1341589f89
|
|
@ -3,9 +3,10 @@ from django.conf import settings
|
||||||
from graphene_django.debug import DjangoDebug
|
from graphene_django.debug import DjangoDebug
|
||||||
|
|
||||||
from book.schema import ModulesQuery
|
from book.schema import ModulesQuery
|
||||||
|
from objectives.schema import ObjectivesQuery
|
||||||
|
|
||||||
|
|
||||||
class Query(ModulesQuery, graphene.ObjectType):
|
class Query(ObjectivesQuery, ModulesQuery, graphene.ObjectType):
|
||||||
# This class will inherit from multiple Queries
|
# This class will inherit from multiple Queries
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
|
|
||||||
|
|
@ -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-14 14:08
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
|
from .book import *
|
||||||
from .module import *
|
from .module import *
|
||||||
from .topic import *
|
from .topic import *
|
||||||
from .book import *
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,8 @@
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
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.models import Page
|
from wagtail.core.models import Page
|
||||||
from wagtail.images.edit_handlers import ImageChooserPanel
|
|
||||||
|
|
||||||
from book.blocks import DEFAULT_RICH_TEXT_FEATURES
|
|
||||||
from book.models import Book
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
|
import graphene
|
||||||
from graphene import relay
|
from graphene import relay
|
||||||
from graphene_django import DjangoObjectType
|
from graphene_django import DjangoObjectType
|
||||||
from graphene_django.filter import DjangoFilterConnectionField
|
from graphene_django.filter import DjangoFilterConnectionField
|
||||||
import graphene
|
|
||||||
|
|
||||||
from .models import Book, Topic, Module
|
from .models import Book, Topic, Module
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
|
import os
|
||||||
import random
|
import random
|
||||||
|
|
||||||
import os
|
|
||||||
import wagtail_factories
|
|
||||||
import factory
|
import factory
|
||||||
|
import wagtail_factories
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from factory.django import ImageField, FileField
|
from factory.django import ImageField, FileField
|
||||||
|
|
|
||||||
|
|
@ -27,27 +27,27 @@ data = [
|
||||||
'title': 'Video',
|
'title': 'Video',
|
||||||
'meta_title': 'Intro',
|
'meta_title': 'Intro',
|
||||||
'teaser': 'Die Berufsbildung ist ein neuer Lebensabschnitt',
|
'teaser': 'Die Berufsbildung ist ein neuer Lebensabschnitt',
|
||||||
# 'objective_groups': [
|
'objective_groups': [
|
||||||
# {
|
{
|
||||||
# 'title': 'Gesellschaft',
|
'title': 'Gesellschaft',
|
||||||
# 'objectives': [
|
'objectives': [
|
||||||
# {'title': 'Ich kann wichtige personelle und organisatorische Strukturen der Berufsfachschule beschreiben.'},
|
{'text': 'Ich kann wichtige personelle und organisatorische Strukturen der Berufsfachschule beschreiben.'},
|
||||||
# {'title': 'Ich kenne die Angebote und Regeln meiner Schule.'},
|
{'text': 'Ich kenne die Angebote und Regeln meiner Schule.'},
|
||||||
# {'title': 'Ich kenne den Aufbau des Schullehrplans ABU und können das Qualifikationsverfahren des allgemeinbildenden Unterrichts ABU beschreiben.'},
|
{'text': 'Ich kenne den Aufbau des Schullehrplans ABU und können das Qualifikationsverfahren des allgemeinbildenden Unterrichts ABU beschreiben.'},
|
||||||
# {'title': 'Ich kann die drei Lernorte unterscheiden.'}
|
{'text': 'Ich kann die drei Lernorte unterscheiden.'}
|
||||||
# ]
|
]
|
||||||
# },
|
},
|
||||||
# {
|
{
|
||||||
# 'title': 'Sprache und Kommunikation',
|
'title': 'Sprache und Kommunikation',
|
||||||
# 'objectives': [
|
'objectives': [
|
||||||
# {'title': 'Ich kenne verschiedene Arten von Fragen.'},
|
{'text': 'Ich kenne verschiedene Arten von Fragen.'},
|
||||||
# {'title': 'Ich kann ein Interview mit geeigneten Fragen vorbereiten.'},
|
{'text': 'Ich kann ein Interview mit geeigneten Fragen vorbereiten.'},
|
||||||
# {'title': 'Ich kann ein Interview führen und auf interessante oder ausweichende Antworten näher eingehen.'},
|
{'text': 'Ich kann ein Interview führen und auf interessante oder ausweichende Antworten näher eingehen.'},
|
||||||
# {'title': 'Ich kann ein mündlich geführtes Interview schriftlich in Standardsprache festhalten.'},
|
{'text': 'Ich kann ein mündlich geführtes Interview schriftlich in Standardsprache festhalten.'},
|
||||||
# {'title': 'Ich kann mein Arbeitsplatz genau beschreiben.'}
|
{'text': 'Ich kann mein Arbeitsplatz genau beschreiben.'}
|
||||||
# ]
|
]
|
||||||
# }
|
}
|
||||||
# ]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'order': 2,
|
'order': 2,
|
||||||
|
|
@ -75,46 +75,46 @@ data = [
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
# {
|
||||||
'order': 2,
|
# 'order': 2,
|
||||||
'title': '2. Geld und Kauf'
|
# 'title': '2. Geld und Kauf'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 3,
|
# 'order': 3,
|
||||||
'title': '3. Risiko und Sicherheit'
|
# 'title': '3. Risiko und Sicherheit'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 4,
|
# 'order': 4,
|
||||||
'title': '4. Demokratie und Mitgestaltung'
|
# 'title': '4. Demokratie und Mitgestaltung'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 5,
|
# 'order': 5,
|
||||||
'title': '5. Kultur und Kunst'
|
# 'title': '5. Kultur und Kunst'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 6,
|
# 'order': 6,
|
||||||
'title': '6. Die Schweiz in Europa und der Welt'
|
# 'title': '6. Die Schweiz in Europa und der Welt'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 7,
|
# 'order': 7,
|
||||||
'title': '7. Markt und Konsum'
|
# 'title': '7. Markt und Konsum'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 8,
|
# 'order': 8,
|
||||||
'title': '8. Globale Herausforderungen'
|
# 'title': '8. Globale Herausforderungen'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 9,
|
# 'order': 9,
|
||||||
'title': '9. Wohnen und Zusammenleben'
|
# 'title': '9. Wohnen und Zusammenleben'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 10,
|
# 'order': 10,
|
||||||
'title': '10. Arbeit und Zukunft'
|
# 'title': '10. Arbeit und Zukunft'
|
||||||
},
|
# },
|
||||||
{
|
# {
|
||||||
'order': 11,
|
# 'order': 11,
|
||||||
'title': '11. Grundsätzliches zum Recht'
|
# 'title': '11. Grundsätzliches zum Recht'
|
||||||
},
|
# },
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -169,15 +169,18 @@ class Command(BaseCommand):
|
||||||
modules_data = topic_data.get('modules', default_modules)
|
modules_data = topic_data.get('modules', default_modules)
|
||||||
|
|
||||||
for module_idx, module_data in enumerate(modules_data):
|
for module_idx, module_data in enumerate(modules_data):
|
||||||
module = ModuleFactory.create(parent=topic, **module_data)
|
module = ModuleFactory.create(parent=topic, **self.filter_data(module_data, 'objective_groups'))
|
||||||
|
|
||||||
default_objective_groups = [{} for i in range(0, 2)]
|
default_objective_groups = [{} for i in range(0, 2)]
|
||||||
objective_group_data = module_data.get('objective_groups', default_objective_groups)
|
objective_group_data = module_data.get('objective_groups', default_objective_groups)
|
||||||
|
|
||||||
for objective_group_idx, objective_group_entry in enumerate(objective_group_data):
|
for objective_group_idx, objective_group_entry in enumerate(objective_group_data):
|
||||||
objective_group = ObjectiveGroupFactory.create(module=module, **self.filter_data(objective_group_entry, 'objectives'))
|
factory_params = self.filter_data(objective_group_entry, 'objectives')
|
||||||
|
objective_group = ObjectiveGroupFactory.create(module=module,
|
||||||
|
user=None,
|
||||||
|
**factory_params)
|
||||||
|
|
||||||
default_objectives = [{} for i in range(0, 6)]
|
default_objectives = [{} for i in range(0, 4)]
|
||||||
objectives_data = objective_group_entry.get('objectives', default_objectives)
|
objectives_data = objective_group_entry.get('objectives', default_objectives)
|
||||||
|
|
||||||
for objective_idx, objective_data in enumerate(objectives_data):
|
for objective_idx, objective_data in enumerate(objectives_data):
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
from django.conf import settings
|
|
||||||
from django.http import Http404, HttpResponsePermanentRedirect, HttpResponseRedirect
|
|
||||||
from django.utils.deprecation import MiddlewareMixin
|
|
||||||
from django.shortcuts import redirect
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.http import Http404, HttpResponsePermanentRedirect
|
||||||
|
from django.shortcuts import redirect
|
||||||
|
from django.utils.deprecation import MiddlewareMixin
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from threading import local
|
from threading import local
|
||||||
except ImportError:
|
except ImportError:
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,14 @@
|
||||||
|
from django.conf import settings
|
||||||
from django.conf.urls import url, include
|
from django.conf.urls import url, include
|
||||||
from django.urls import re_path
|
from django.conf.urls.static import static
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
|
from django.urls import re_path
|
||||||
|
|
||||||
from wagtail.core import urls as wagtail_urls
|
|
||||||
from wagtail.admin import urls as wagtailadmin_urls
|
from wagtail.admin import urls as wagtailadmin_urls
|
||||||
|
from wagtail.core import urls as wagtail_urls
|
||||||
from wagtail.documents import urls as wagtaildocs_urls
|
from wagtail.documents import urls as wagtaildocs_urls
|
||||||
from wagtail.search import urls as wagtailsearch_urls
|
from wagtail.search import urls as wagtailsearch_urls
|
||||||
|
|
||||||
from core import views
|
from core import views
|
||||||
from django.conf import settings
|
|
||||||
from django.conf.urls.static import static
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
url(r'^guru/', admin.site.urls),
|
url(r'^guru/', admin.site.urls),
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
||||||
import requests
|
import requests
|
||||||
|
from django.conf import settings
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.http.response import HttpResponse
|
from django.http.response import HttpResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.views.decorators.csrf import ensure_csrf_cookie
|
from django.views.decorators.csrf import ensure_csrf_cookie
|
||||||
from graphene_django.views import GraphQLView
|
from graphene_django.views import GraphQLView
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
|
|
||||||
class PrivateGraphQLView(LoginRequiredMixin, GraphQLView):
|
class PrivateGraphQLView(LoginRequiredMixin, GraphQLView):
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1 @@
|
||||||
from django.contrib import admin
|
|
||||||
|
|
||||||
# Register your models here.
|
# Register your models here.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
from django.db import models
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ from objectives.models import ObjectiveGroup, Objective, ObjectiveProgressStatus
|
||||||
@admin.register(ObjectiveGroup)
|
@admin.register(ObjectiveGroup)
|
||||||
class ObjectiveGroupAdmin(admin.ModelAdmin):
|
class ObjectiveGroupAdmin(admin.ModelAdmin):
|
||||||
list_display = ('title', 'module', 'user')
|
list_display = ('title', 'module', 'user')
|
||||||
list_filter = ('module', 'user')
|
list_filter = ('title', 'module', 'user')
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Objective)
|
@admin.register(Objective)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import factory
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
from book.factories import ModuleFactory
|
from book.factories import ModuleFactory
|
||||||
from core.factories import fake, UserFactory
|
from core.factories import fake
|
||||||
from objectives.models import ObjectiveGroup, Objective
|
from objectives.models import ObjectiveGroup, Objective
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,8 +12,7 @@ class ObjectiveGroupFactory(factory.django.DjangoModelFactory):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = ObjectiveGroup
|
model = ObjectiveGroup
|
||||||
|
|
||||||
# title = factory.LazyAttribute(lambda x: fake.sentence(nb_words=random.randint(4, 8)))
|
title = factory.Iterator(['Gesellschaft', 'Sprache und Kommunikation'])
|
||||||
title = factory.Sequence(lambda n: 'Title: %s' % n)
|
|
||||||
|
|
||||||
module = factory.SubFactory(ModuleFactory)
|
module = factory.SubFactory(ModuleFactory)
|
||||||
user = factory.Iterator(get_user_model().objects.all())
|
user = factory.Iterator(get_user_model().objects.all())
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-14 12:41
|
# Generated by Django 2.0.6 on 2018-08-14 14:08
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
@ -9,6 +10,8 @@ class Migration(migrations.Migration):
|
||||||
initial = True
|
initial = True
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('book', '0001_initial'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
|
|
@ -28,6 +31,8 @@ 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',
|
||||||
|
|
@ -40,10 +45,16 @@ 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'),
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,39 +0,0 @@
|
||||||
# Generated by Django 2.0.6 on 2018-08-14 12:41
|
|
||||||
|
|
||||||
from django.conf import settings
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
initial = True
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('objectives', '0001_initial'),
|
|
||||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
||||||
('book', '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,7 +1,5 @@
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
|
||||||
# Create your models here.
|
|
||||||
from django_extensions.db.models import TitleDescriptionModel
|
from django_extensions.db.models import TitleDescriptionModel
|
||||||
|
|
||||||
from book.models import Module
|
from book.models import Module
|
||||||
|
|
@ -15,8 +13,8 @@ class ObjectiveGroup(models.Model):
|
||||||
title = models.CharField('title', blank=True, null=False, max_length=255)
|
title = models.CharField('title', blank=True, null=False, max_length=255)
|
||||||
|
|
||||||
module = models.ForeignKey(Module, blank=False, null=False, on_delete=models.CASCADE)
|
module = models.ForeignKey(Module, blank=False, null=False, on_delete=models.CASCADE)
|
||||||
|
# a user can define her own objectives, hence this param
|
||||||
user = models.ForeignKey(get_user_model(), blank=True, null=True, on_delete=models.CASCADE)
|
user = models.ForeignKey(get_user_model(), blank=True, null=True, on_delete=models.CASCADE)
|
||||||
# klass = models.ForeignKey(Klass, null=True, on_delete=models.CASCADE)
|
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return 'ObjectiveGroup {}-{}-{}'.format(self.id, self.module, self.title)
|
return 'ObjectiveGroup {}-{}-{}'.format(self.id, self.module, self.title)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
import graphene
|
||||||
|
from graphene import relay
|
||||||
|
from graphene_django import DjangoObjectType
|
||||||
|
from graphene_django.filter import DjangoFilterConnectionField
|
||||||
|
|
||||||
|
from objectives.models import ObjectiveGroup, Objective, ObjectiveProgressStatus
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectiveGroupNode(DjangoObjectType):
|
||||||
|
pk = graphene.Int()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ObjectiveGroup
|
||||||
|
filter_fields = ['title', 'module__slug']
|
||||||
|
interfaces = (relay.Node,)
|
||||||
|
|
||||||
|
def resolve_pk(self, *args, **kwargs):
|
||||||
|
return self.id
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectiveNode(DjangoObjectType):
|
||||||
|
pk = graphene.Int()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Objective
|
||||||
|
filter_fields = ['text']
|
||||||
|
interfaces = (relay.Node,)
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectiveProgressStatusNode(DjangoObjectType):
|
||||||
|
pk = graphene.Int()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ObjectiveProgressStatus
|
||||||
|
filter_fields = ['objective__text', 'user__username', 'done']
|
||||||
|
interfaces = (relay.Node,)
|
||||||
|
|
||||||
|
def resolve_pk(self, *args, **kwargs):
|
||||||
|
return self.id
|
||||||
|
|
||||||
|
|
||||||
|
class ObjectivesQuery(object):
|
||||||
|
user_focus = DjangoFilterConnectionField(ObjectiveGroupNode)
|
||||||
|
|
@ -1,3 +1 @@
|
||||||
from django.test import TestCase
|
|
||||||
|
|
||||||
# Create your tests here.
|
# Create your tests here.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1 @@
|
||||||
from django.shortcuts import render
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.contrib.auth.admin import UserAdmin
|
from django.contrib.auth.admin import UserAdmin
|
||||||
|
|
||||||
from .models import User
|
from .models import User
|
||||||
|
|
||||||
|
|
||||||
admin.site.register(User, UserAdmin)
|
admin.site.register(User, UserAdmin)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue