Add User query, get users in FilterBar, add Visibility node

This commit is contained in:
Pawel Kowalski 2018-09-11 17:18:50 +02:00
parent 2c2ad3f8f6
commit 4cb5c6ad63
8 changed files with 70 additions and 7 deletions

View File

@ -2,18 +2,37 @@
<div class="filter-bar"> <div class="filter-bar">
<checkbox label="Alles" :checked="true"></checkbox> <checkbox label="Alles" :checked="true"></checkbox>
<checkbox label="Klasse 3b - 2018/2019"></checkbox> <checkbox v-for="group in userGroups" :key="group.id" :label="group.name"></checkbox>
<checkbox label="Klasse 1a - 2018/2019"></checkbox>
<checkbox label="Klasse 2c"></checkbox>
</div> </div>
</template> </template>
<script> <script>
import USER_GROUPS_QUERY from '@/graphql/gql/userGroupsQuery.gql';
import Checkbox from '@/components/Checkbox.vue'; import Checkbox from '@/components/Checkbox.vue';
export default { export default {
components: { components: {
Checkbox Checkbox
},
apollo: {
userGroupsQuery: {
query: USER_GROUPS_QUERY,
manual: true,
result({data, loading, networkStatus}) {
if (!loading) {
const cleanedData = this.$getRidOfEdges(data)
this.userGroups = cleanedData.userGroups || {};
}
}
}
},
data() {
return {
userGroups: []
}
} }
} }
</script> </script>

View File

@ -0,0 +1,12 @@
query UserGroupsQuery {
userGroups {
edges {
node {
id
name
year
isDeleted
}
}
}
}

View File

@ -53,7 +53,6 @@
} }
}, },
// TODO: can we do better by defining a type for module?
data() { data() {
return { return {
module: { module: {

View File

@ -6,14 +6,14 @@ from graphene_django.debug import DjangoDebug
# Keep this import exactly here, it's necessary for StreamField conversion # Keep this import exactly here, it's necessary for StreamField conversion
from api import graphene_wagtail from api import graphene_wagtail
from book.schema.mutations import BookMutations from book.schema.mutations import BookMutations
from filteredbook.schema import BookQuery from filteredbook.schema import BookQuery
from objectives.schema import ObjectivesQuery from objectives.schema import ObjectivesQuery
from rooms.schema import RoomsQuery from rooms.schema import RoomsQuery
from user.schema import UsersQuery
class Query(RoomsQuery, ObjectivesQuery, BookQuery, graphene.ObjectType): class Query(UsersQuery, RoomsQuery, ObjectivesQuery, BookQuery, graphene.ObjectType):
node = relay.Node.Field() node = relay.Node.Field()
if settings.DEBUG: if settings.DEBUG:

View File

@ -0,0 +1,19 @@
# Generated by Django 2.0.6 on 2018-09-11 15:01
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('filteredbook', '0002_visibility_user_group'),
]
operations = [
migrations.AlterField(
model_name='visibility',
name='content_block',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='visible_to', to='book.ContentBlock'),
),
]

View File

@ -10,7 +10,7 @@ class Visibility(models.Model):
verbose_name_plural = 'Visibilities' verbose_name_plural = 'Visibilities'
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)
content_block = models.ForeignKey(ContentBlock, blank=False, null=False, on_delete=models.CASCADE) content_block = models.ForeignKey(ContentBlock, blank=False, null=False, on_delete=models.CASCADE, related_name='visible_to')
def __str__(self): def __str__(self):
return 'Visibility {}-{}'.format(self.user_group, self.content_block) return 'Visibility {}-{}'.format(self.user_group, self.content_block)

View File

@ -39,6 +39,13 @@ class FilteredChapterNode(DjangoObjectType):
return ContentBlock.get_by_parent(self) return ContentBlock.get_by_parent(self)
class VisibilityNode(DjangoObjectType):
class Meta:
model = Chapter
filter_fields = ['user_group', 'content_block']
interfaces = (relay.Node,)
class BookQuery(object): class BookQuery(object):
book = relay.Node.Field(BookNode) book = relay.Node.Field(BookNode)
topic = relay.Node.Field(TopicNode) topic = relay.Node.Field(TopicNode)

View File

@ -1,6 +1,7 @@
import graphene 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 user.models import UserGroup, User from user.models import UserGroup, User
@ -27,3 +28,9 @@ class UserGroupNode(DjangoObjectType):
def resolve_pk(self, *args, **kwargs): def resolve_pk(self, *args, **kwargs):
return self.id return self.id
class UsersQuery(object):
user_group = relay.Node.Field(UserGroupNode)
user_groups = DjangoFilterConnectionField(UserGroupNode)