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