Re-add leave button and inactive members to group list
This commit is contained in:
parent
5202ecdc8e
commit
9ea9b9be1b
|
|
@ -27,37 +27,39 @@
|
||||||
data-cy="group-list-member"
|
data-cy="group-list-member"
|
||||||
v-for="member in activeMembers">
|
v-for="member in activeMembers">
|
||||||
<span class="member-item__name">{{ fullName(member) }}</span>
|
<span class="member-item__name">{{ fullName(member) }}</span>
|
||||||
<span class="member-item__role">{{ role(member) }}</span>
|
<span class="member-item__role">{{ role(member) }} </span>
|
||||||
<a
|
<a
|
||||||
class="member-item__action simple-list__action"
|
class="member-item__action simple-list__action"
|
||||||
data-cy="leave-group"
|
data-cy="leave-group"
|
||||||
v-if="member.isMe"
|
v-if="member.isMe"
|
||||||
@click="$emit('leave')">Verlassen</a>
|
@click="$emit('leave', member)">Verlassen</a>
|
||||||
<!-- <a-->
|
<a
|
||||||
<!-- class="member-item__action simple-list__action"-->
|
class="member-item__action simple-list__action"
|
||||||
<!-- data-cy="remove-from-class"-->
|
data-cy="remove-from-class"
|
||||||
<!-- v-if="teacher"-->
|
v-if="canEdit && enableDeactivate && !member.isMe"
|
||||||
<!-- @click="$emit('remove', member)">Deaktivieren</a>-->
|
@click="$emit('remove', member)">Deaktivieren</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<!-- <template v-if="inactiveMembers.length">-->
|
<template v-if="inactiveMembers.length">
|
||||||
<!-- <h3 class="group-list__inactive-heading">Deaktivierte Personen</h3>-->
|
<h3 class="group-list__inactive-heading">Deaktivierte Personen</h3>
|
||||||
<!-- <ul data-cy="inactive-class-members-list" class="simple-list simple-list--inactive">-->
|
<ul
|
||||||
<!-- <li-->
|
data-cy="inactive-class-members-list"
|
||||||
<!-- class="simple-list__item member-item"-->
|
class="simple-list simple-list--inactive">
|
||||||
<!-- data-cy="group-list-member"-->
|
<li
|
||||||
<!-- v-for="member in inactiveMembers"-->
|
:key="member.id"
|
||||||
<!-- :key="member.id">-->
|
class="simple-list__item member-item"
|
||||||
<!-- <span class="member-item__name">{{fullName(member)}}</span>-->
|
data-cy="group-list-member"
|
||||||
<!-- <span class="member-item__role">{{role(member)}}</span>-->
|
v-for="member in inactiveMembers">
|
||||||
<!-- <a-->
|
<span class="member-item__name">{{ fullName(member) }}</span>
|
||||||
<!-- class="member-item__action simple-list__action"-->
|
<span class="member-item__role">{{ role(member) }}</span>
|
||||||
<!-- data-cy="add-to-class"-->
|
<a
|
||||||
<!-- v-if="teacher"-->
|
class="member-item__action simple-list__action"
|
||||||
<!-- @click="$emit('add', member)">Aktivieren</a>-->
|
data-cy="add-to-class"
|
||||||
<!-- </li>-->
|
v-if="canEdit"
|
||||||
<!-- </ul>-->
|
@click="$emit('add', member)">Aktivieren</a>
|
||||||
<!-- </template>-->
|
</li>
|
||||||
|
</ul>
|
||||||
|
</template>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -99,6 +101,10 @@
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: false,
|
default: false,
|
||||||
},
|
},
|
||||||
|
enableDeactivate: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ query MySchoolClassQuery {
|
||||||
lastName
|
lastName
|
||||||
isTeacher
|
isTeacher
|
||||||
active
|
active
|
||||||
|
isMe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,13 @@
|
||||||
:show-code="me.isTeacher"
|
:show-code="me.isTeacher"
|
||||||
:show-code-route="showCodeRoute"
|
:show-code-route="showCodeRoute"
|
||||||
:can-edit="me.isTeacher"
|
:can-edit="me.isTeacher"
|
||||||
|
:enable-deactivate="true"
|
||||||
title="Klassenliste"
|
title="Klassenliste"
|
||||||
class="my-class__class"
|
class="my-class__class"
|
||||||
@add="add"
|
@add="add"
|
||||||
@edit="editClassName"
|
@edit="editClassName"
|
||||||
|
@remove="remove"
|
||||||
|
@leave="remove"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ from django.db.models import Q
|
||||||
from books.models import Chapter, ContentBlock, ContentBlockSnapshot
|
from books.models import Chapter, ContentBlock, ContentBlockSnapshot
|
||||||
from core.logger import get_logger
|
from core.logger import get_logger
|
||||||
from objectives.models import ObjectiveSnapshot
|
from objectives.models import ObjectiveSnapshot
|
||||||
|
from users.models import User, SchoolClass
|
||||||
|
|
||||||
logger = get_logger(__name__)
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
@ -124,7 +125,7 @@ class Snapshot(models.Model):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'Snapshot {self.id}'
|
return f'Snapshot {self.id}'
|
||||||
|
|
||||||
def reset(self, user, selected_class):
|
def reset(self, user: User, selected_class: SchoolClass):
|
||||||
for chapter in Chapter.get_by_parent(self.module):
|
for chapter in Chapter.get_by_parent(self.module):
|
||||||
qs = ContentBlock.get_by_parent(chapter)
|
qs = ContentBlock.get_by_parent(chapter)
|
||||||
default_content = Q(user_created=False)
|
default_content = Q(user_created=False)
|
||||||
|
|
@ -139,7 +140,7 @@ class Snapshot(models.Model):
|
||||||
for content_block in qs.filter(owner_user):
|
for content_block in qs.filter(owner_user):
|
||||||
content_block.visible_for.remove(selected_class)
|
content_block.visible_for.remove(selected_class)
|
||||||
|
|
||||||
def apply(self, user, selected_class):
|
def apply(self, user: User, selected_class: SchoolClass):
|
||||||
for content_block in self.hidden_content_blocks.all():
|
for content_block in self.hidden_content_blocks.all():
|
||||||
content_block.hidden_for.add(selected_class)
|
content_block.hidden_for.add(selected_class)
|
||||||
for custom_content_block in self.custom_content_blocks.all():
|
for custom_content_block in self.custom_content_blocks.all():
|
||||||
|
|
|
||||||
|
|
@ -252,6 +252,7 @@ type ClassMemberNode {
|
||||||
lastName: String
|
lastName: String
|
||||||
isTeacher: Boolean
|
isTeacher: Boolean
|
||||||
id: ID
|
id: ID
|
||||||
|
isMe: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
type ContentBlockBookmarkNode implements Node {
|
type ContentBlockBookmarkNode implements Node {
|
||||||
|
|
@ -848,8 +849,8 @@ type PublicUserNode implements Node {
|
||||||
lastName: String!
|
lastName: String!
|
||||||
avatarUrl: String!
|
avatarUrl: String!
|
||||||
id: ID!
|
id: ID!
|
||||||
isMe: Boolean
|
|
||||||
fullName: String!
|
fullName: String!
|
||||||
|
isMe: Boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
type RoomEntryNode implements Node {
|
type RoomEntryNode implements Node {
|
||||||
|
|
|
||||||
|
|
@ -69,8 +69,8 @@ class RecentModuleFilter(FilterSet):
|
||||||
|
|
||||||
|
|
||||||
class PublicUserNode(DjangoObjectType):
|
class PublicUserNode(DjangoObjectType):
|
||||||
is_me = graphene.Boolean()
|
|
||||||
full_name = graphene.String(required=True)
|
full_name = graphene.String(required=True)
|
||||||
|
is_me = graphene.Boolean()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
|
|
@ -81,6 +81,7 @@ class PublicUserNode(DjangoObjectType):
|
||||||
def resolve_is_me(parent: User, info, **kwargs):
|
def resolve_is_me(parent: User, info, **kwargs):
|
||||||
return info.context.user.pk == parent.pk
|
return info.context.user.pk == parent.pk
|
||||||
|
|
||||||
|
|
||||||
class PrivateUserNode(DjangoObjectType):
|
class PrivateUserNode(DjangoObjectType):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
|
|
@ -145,6 +146,7 @@ class ClassMemberNode(ObjectType):
|
||||||
last_name = graphene.String()
|
last_name = graphene.String()
|
||||||
is_teacher = graphene.Boolean()
|
is_teacher = graphene.Boolean()
|
||||||
id = graphene.ID()
|
id = graphene.ID()
|
||||||
|
is_me = graphene.Boolean()
|
||||||
|
|
||||||
def resolve_id(self, *args):
|
def resolve_id(self, *args):
|
||||||
return to_global_id('PublicUserNode', self.user.pk)
|
return to_global_id('PublicUserNode', self.user.pk)
|
||||||
|
|
@ -164,6 +166,10 @@ class ClassMemberNode(ObjectType):
|
||||||
def resolve_is_teacher(self, *args):
|
def resolve_is_teacher(self, *args):
|
||||||
return self.user.is_teacher()
|
return self.user.is_teacher()
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def resolve_is_me(parent, info, **kwargs):
|
||||||
|
return info.context.user.pk == parent.user.pk
|
||||||
|
|
||||||
|
|
||||||
class UsersQuery(object):
|
class UsersQuery(object):
|
||||||
me = graphene.Field(PrivateUserNode)
|
me = graphene.Field(PrivateUserNode)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue