Add rooms model, factories, dummy_data generation, graphql node
This commit is contained in:
parent
64dec5e3ee
commit
5656b15135
|
|
@ -1,13 +1,13 @@
|
|||
import graphene
|
||||
from django.conf import settings
|
||||
from graphene_django.debug import DjangoDebug
|
||||
from api import graphene_wagtail
|
||||
|
||||
from book.schema import BookQuery
|
||||
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
|
||||
|
||||
if settings.DEBUG:
|
||||
|
|
|
|||
|
|
@ -6,28 +6,31 @@ from django.conf import settings
|
|||
from django.contrib.auth import get_user_model
|
||||
from django.core.management import BaseCommand
|
||||
|
||||
from rooms.factories import RoomFactory
|
||||
from rooms.models import Room
|
||||
from user.factories import UserGroupFactory
|
||||
from user.models import UserGroup
|
||||
|
||||
# room_data = [{
|
||||
# {
|
||||
# 'title': 'Ein historisches Festival',
|
||||
# 'type': 'red',
|
||||
# 'group': 'Klasse 3b - 2018/2019'
|
||||
# # 'entries': [1, 1, 1, 1, 1, 1]
|
||||
# },
|
||||
# {
|
||||
# 'title': 'Erfahrungen Lehrbeginn',
|
||||
# 'type': 'green',
|
||||
# 'group': 'Klasse 3b - 2018/2019'
|
||||
# # 'entries': [1]
|
||||
# },
|
||||
# {
|
||||
# 'title': 'Interview «Mein neues Umfeld»',
|
||||
# 'type': 'brown',
|
||||
# 'group': 'Hans Muster und 12 weitere Personen'
|
||||
# # 'entries': [1, 1, 1, 1, 1, 1]
|
||||
# }
|
||||
# }]
|
||||
data = [
|
||||
{
|
||||
'title': 'Ein historisches Festival',
|
||||
'appearance': 'red',
|
||||
# 'group': 'Klasse 3b - 2018/2019'
|
||||
# 'entries': [1, 1, 1, 1, 1, 1]
|
||||
},
|
||||
{
|
||||
'title': 'Erfahrungen Lehrbeginn',
|
||||
'appearance': 'green',
|
||||
# 'group': 'Klasse 3b - 2018/2019'
|
||||
# 'entries': [1]
|
||||
},
|
||||
{
|
||||
'title': 'Interview «Mein neues Umfeld»',
|
||||
'appearance': 'brown',
|
||||
# 'group': 'Hans Muster und 12 weitere Personen'
|
||||
# 'entries': [1, 1, 1, 1, 1, 1]
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
class Command(BaseCommand):
|
||||
|
|
@ -57,9 +60,15 @@ class Command(BaseCommand):
|
|||
# is_superuser=True
|
||||
# )
|
||||
|
||||
Room.objects.all().delete()
|
||||
UserGroup.objects.all().delete()
|
||||
|
||||
for i in range(0, 6):
|
||||
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):
|
||||
# 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
|
||||
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)
|
||||
|
||||
|
||||
|
|
@ -27,7 +27,7 @@ class Objective(models.Model):
|
|||
text = models.CharField('text', blank=True, null=False, max_length=255)
|
||||
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)
|
||||
|
||||
|
||||
|
|
@ -40,5 +40,5 @@ class ObjectiveProgressStatus(models.Model):
|
|||
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)
|
||||
|
||||
def __unicode__(self):
|
||||
def __str__(self):
|
||||
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 rooms.models import Room
|
||||
from user.factories import UserGroupFactory
|
||||
from user.models import UserGroup
|
||||
|
||||
|
||||
class RoomFactory(factory.django.DjangoModelFactory):
|
||||
|
|
@ -12,5 +12,5 @@ class RoomFactory(factory.django.DjangoModelFactory):
|
|||
model = Room
|
||||
|
||||
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']))
|
||||
|
|
|
|||
|
|
@ -1,17 +1,16 @@
|
|||
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
|
||||
|
||||
|
||||
class Room(models.Model):
|
||||
class Room(TitleSlugDescriptionModel):
|
||||
class Meta:
|
||||
verbose_name = 'Raum'
|
||||
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)
|
||||
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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
users = models.ManyToManyField(get_user_model())
|
||||
|
||||
def __unicode__(self):
|
||||
return 'ObjectiveGroup {}-{}-{}'.format(self.id, self.module, self.title)
|
||||
def __str__(self):
|
||||
return 'UserGroup {}-{}-{}'.format(self.id, self.name, self.year)
|
||||
|
|
|
|||
Loading…
Reference in New Issue