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">
<checkbox label="Alles" :checked="true"></checkbox>
<checkbox label="Klasse 3b - 2018/2019"></checkbox>
<checkbox label="Klasse 1a - 2018/2019"></checkbox>
<checkbox label="Klasse 2c"></checkbox>
<checkbox v-for="group in userGroups" :key="group.id" :label="group.name"></checkbox>
</div>
</template>
<script>
import USER_GROUPS_QUERY from '@/graphql/gql/userGroupsQuery.gql';
import Checkbox from '@/components/Checkbox.vue';
export default {
components: {
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>

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() {
return {
module: {

View File

@ -6,14 +6,14 @@ from graphene_django.debug import DjangoDebug
# Keep this import exactly here, it's necessary for StreamField conversion
from api import graphene_wagtail
from book.schema.mutations import BookMutations
from filteredbook.schema import BookQuery
from objectives.schema import ObjectivesQuery
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()
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'
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):
return 'Visibility {}-{}'.format(self.user_group, self.content_block)

View File

@ -39,6 +39,13 @@ class FilteredChapterNode(DjangoObjectType):
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):
book = relay.Node.Field(BookNode)
topic = relay.Node.Field(TopicNode)

View File

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