Add User query, get users in FilterBar, add Visibility node
This commit is contained in:
parent
2c2ad3f8f6
commit
4cb5c6ad63
|
|
@ -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>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
query UserGroupsQuery {
|
||||||
|
userGroups {
|
||||||
|
edges {
|
||||||
|
node {
|
||||||
|
id
|
||||||
|
name
|
||||||
|
year
|
||||||
|
isDeleted
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -53,7 +53,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// TODO: can we do better by defining a type for module?
|
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
module: {
|
module: {
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
|
|
@ -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'),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue