Add rooms model, factories, dummy_data generation, graphql node
This commit is contained in:
parent
64dec5e3ee
commit
5656b15135
|
|
@ -1,13 +1,13 @@
|
||||||
import graphene
|
import graphene
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from graphene_django.debug import DjangoDebug
|
from graphene_django.debug import DjangoDebug
|
||||||
from api import graphene_wagtail
|
|
||||||
|
|
||||||
from book.schema import BookQuery
|
from book.schema import BookQuery
|
||||||
from objectives.schema import ObjectivesQuery
|
from objectives.schema import ObjectivesQuery
|
||||||
|
from rooms.schema import RoomsQuery
|
||||||
|
|
||||||
|
|
||||||
class Query(ObjectivesQuery, BookQuery, graphene.ObjectType):
|
class Query(RoomsQuery, ObjectivesQuery, BookQuery, graphene.ObjectType):
|
||||||
# This class will inherit from multiple Queries
|
# This class will inherit from multiple Queries
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
|
|
|
||||||
|
|
@ -6,28 +6,31 @@ from django.conf import settings
|
||||||
from django.contrib.auth import get_user_model
|
from django.contrib.auth import get_user_model
|
||||||
from django.core.management import BaseCommand
|
from django.core.management import BaseCommand
|
||||||
|
|
||||||
|
from rooms.factories import RoomFactory
|
||||||
|
from rooms.models import Room
|
||||||
from user.factories import UserGroupFactory
|
from user.factories import UserGroupFactory
|
||||||
|
from user.models import UserGroup
|
||||||
|
|
||||||
# room_data = [{
|
data = [
|
||||||
# {
|
{
|
||||||
# 'title': 'Ein historisches Festival',
|
'title': 'Ein historisches Festival',
|
||||||
# 'type': 'red',
|
'appearance': 'red',
|
||||||
# 'group': 'Klasse 3b - 2018/2019'
|
# 'group': 'Klasse 3b - 2018/2019'
|
||||||
# # 'entries': [1, 1, 1, 1, 1, 1]
|
# 'entries': [1, 1, 1, 1, 1, 1]
|
||||||
# },
|
},
|
||||||
# {
|
{
|
||||||
# 'title': 'Erfahrungen Lehrbeginn',
|
'title': 'Erfahrungen Lehrbeginn',
|
||||||
# 'type': 'green',
|
'appearance': 'green',
|
||||||
# 'group': 'Klasse 3b - 2018/2019'
|
# 'group': 'Klasse 3b - 2018/2019'
|
||||||
# # 'entries': [1]
|
# 'entries': [1]
|
||||||
# },
|
},
|
||||||
# {
|
{
|
||||||
# 'title': 'Interview «Mein neues Umfeld»',
|
'title': 'Interview «Mein neues Umfeld»',
|
||||||
# 'type': 'brown',
|
'appearance': 'brown',
|
||||||
# 'group': 'Hans Muster und 12 weitere Personen'
|
# 'group': 'Hans Muster und 12 weitere Personen'
|
||||||
# # 'entries': [1, 1, 1, 1, 1, 1]
|
# 'entries': [1, 1, 1, 1, 1, 1]
|
||||||
# }
|
}
|
||||||
# }]
|
]
|
||||||
|
|
||||||
|
|
||||||
class Command(BaseCommand):
|
class Command(BaseCommand):
|
||||||
|
|
@ -57,9 +60,15 @@ class Command(BaseCommand):
|
||||||
# is_superuser=True
|
# is_superuser=True
|
||||||
# )
|
# )
|
||||||
|
|
||||||
|
Room.objects.all().delete()
|
||||||
|
UserGroup.objects.all().delete()
|
||||||
|
|
||||||
for i in range(0, 6):
|
for i in range(0, 6):
|
||||||
UserGroupFactory(users=(random.choices(get_user_model().objects.all(), k=3)))
|
UserGroupFactory(users=(random.choices(get_user_model().objects.all(), k=3)))
|
||||||
|
|
||||||
|
for room_idx, room_data in enumerate(data):
|
||||||
|
RoomFactory.create(**room_data)
|
||||||
|
|
||||||
# for book_idx, book_data in enumerate(data):
|
# for book_idx, book_data in enumerate(data):
|
||||||
# book = BookFactory.create(parent=site.root_page, **self.filter_data(book_data, 'topics'))
|
# book = BookFactory.create(parent=site.root_page, **self.filter_data(book_data, 'topics'))
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ class ObjectiveGroup(models.Model):
|
||||||
# a user can define her own objectives, hence this optional param
|
# a user can define her own objectives, hence this optional 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)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __str__(self):
|
||||||
return 'ObjectiveGroup {}-{}-{}'.format(self.id, self.module, self.title)
|
return 'ObjectiveGroup {}-{}-{}'.format(self.id, self.module, self.title)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -27,7 +27,7 @@ class Objective(models.Model):
|
||||||
text = models.CharField('text', blank=True, null=False, max_length=255)
|
text = models.CharField('text', blank=True, null=False, max_length=255)
|
||||||
group = models.ForeignKey(ObjectiveGroup, blank=False, null=False, on_delete=models.CASCADE)
|
group = models.ForeignKey(ObjectiveGroup, blank=False, null=False, on_delete=models.CASCADE)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __str__(self):
|
||||||
return 'Objective {}-{}'.format(self.id, self.text)
|
return 'Objective {}-{}'.format(self.id, self.text)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -40,5 +40,5 @@ class ObjectiveProgressStatus(models.Model):
|
||||||
objective = models.ForeignKey(Objective, blank=False, null=False, on_delete=models.CASCADE)
|
objective = models.ForeignKey(Objective, blank=False, null=False, on_delete=models.CASCADE)
|
||||||
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)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __str__(self):
|
||||||
return 'Lernzielstatus {}-{}'.format(self.objective, self.done)
|
return 'Lernzielstatus {}-{}'.format(self.objective, self.done)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
from rooms.models import Room
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(Room)
|
||||||
|
class RoomAdmin(admin.ModelAdmin):
|
||||||
|
list_display = ('id', 'title', 'user_group', 'appearance')
|
||||||
|
list_filter = ('user_group', 'appearance',)
|
||||||
|
|
@ -4,7 +4,7 @@ import factory
|
||||||
|
|
||||||
from core.factories import fake
|
from core.factories import fake
|
||||||
from rooms.models import Room
|
from rooms.models import Room
|
||||||
from user.factories import UserGroupFactory
|
from user.models import UserGroup
|
||||||
|
|
||||||
|
|
||||||
class RoomFactory(factory.django.DjangoModelFactory):
|
class RoomFactory(factory.django.DjangoModelFactory):
|
||||||
|
|
@ -12,5 +12,5 @@ class RoomFactory(factory.django.DjangoModelFactory):
|
||||||
model = Room
|
model = Room
|
||||||
|
|
||||||
title = factory.LazyAttribute(lambda x: fake.sentence(nb_words=random.randint(4, 8)))
|
title = factory.LazyAttribute(lambda x: fake.sentence(nb_words=random.randint(4, 8)))
|
||||||
user_group = factory.SubFactory(UserGroupFactory)
|
user_group = factory.Iterator(UserGroup.objects.all())
|
||||||
appearance = factory.LazyAttribute(lambda x: random.choice(['red', 'green', 'brown']))
|
appearance = factory.LazyAttribute(lambda x: random.choice(['red', 'green', 'brown']))
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,16 @@
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django_extensions.db.models import TitleDescriptionModel
|
from django_extensions.db.models import TitleDescriptionModel, TitleSlugDescriptionModel
|
||||||
|
|
||||||
from user.models import UserGroup
|
from user.models import UserGroup
|
||||||
|
|
||||||
|
|
||||||
class Room(models.Model):
|
class Room(TitleSlugDescriptionModel):
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = 'Raum'
|
verbose_name = 'Raum'
|
||||||
verbose_name_plural = 'Räume'
|
verbose_name_plural = 'Räume'
|
||||||
|
|
||||||
title = models.CharField(blank=True, null=False, max_length=255)
|
|
||||||
user_group = models.ForeignKey(UserGroup, blank=False, null=False, on_delete=models.CASCADE)
|
user_group = models.ForeignKey(UserGroup, blank=False, null=False, on_delete=models.CASCADE)
|
||||||
appearance = models.CharField(blank=True, null=False, max_length=255)
|
appearance = models.CharField(blank=True, null=False, max_length=255)
|
||||||
|
|
||||||
def __unicode__(self):
|
def __str__(self):
|
||||||
return 'Room {}-{}-{}'.format(self.id, self.title, self.user_group)
|
return 'Room {}-{}-{}'.format(self.id, self.title, self.user_group)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
import graphene
|
||||||
|
from graphene import relay
|
||||||
|
from graphene_django import DjangoObjectType
|
||||||
|
from graphene_django.filter import DjangoFilterConnectionField
|
||||||
|
|
||||||
|
from rooms.models import Room
|
||||||
|
|
||||||
|
|
||||||
|
class RoomNode(DjangoObjectType):
|
||||||
|
pk = graphene.Int()
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = Room
|
||||||
|
filter_fields = ['slug', 'user_group', 'appearance']
|
||||||
|
interfaces = (relay.Node,)
|
||||||
|
|
||||||
|
def resolve_pk(self, *args, **kwargs):
|
||||||
|
return self.id
|
||||||
|
|
||||||
|
|
||||||
|
class RoomsQuery(object):
|
||||||
|
room = relay.Node.Field(RoomNode)
|
||||||
|
rooms = DjangoFilterConnectionField(RoomNode)
|
||||||
|
|
@ -14,5 +14,5 @@ class UserGroup(models.Model):
|
||||||
is_deleted = models.BooleanField(blank=False, null=False, default=False)
|
is_deleted = models.BooleanField(blank=False, null=False, default=False)
|
||||||
users = models.ManyToManyField(get_user_model())
|
users = models.ManyToManyField(get_user_model())
|
||||||
|
|
||||||
def __unicode__(self):
|
def __str__(self):
|
||||||
return 'ObjectiveGroup {}-{}-{}'.format(self.id, self.module, self.title)
|
return 'UserGroup {}-{}-{}'.format(self.id, self.name, self.year)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue