Remove actions in class list for students

This commit is contained in:
Ramon Wenger 2020-03-05 16:41:07 +01:00
parent 9dab0856e8
commit f4270b8243
7 changed files with 60 additions and 16 deletions

View File

@ -3069,6 +3069,18 @@
},
"isDeprecated": false,
"deprecationReason": null
},
{
"name": "isTeacher",
"description": null,
"args": [],
"type": {
"kind": "SCALAR",
"name": "Boolean",
"ofType": null
},
"isDeprecated": false,
"deprecationReason": null
}
],
"inputFields": null,

View File

@ -1,6 +1,7 @@
{
"me": {
"id": "VXNlck5vZGU6Mg==",
"isTeacher": true,
"selectedClass": {
"id": "U2Nob29sQ2xhc3NOb2RlOjE=",
"name": "Moordale",

View File

@ -53,7 +53,7 @@ describe('Class Management', () => {
cy.get('[data-cy=class-selection-entry]').should('have.length', 2);
});
it('should leave and re-join class', () => {
it.only('should leave and re-join class', () => {
const teacher = {
...me,
permissions: ['users.can_manage_school_class_content']

View File

@ -2,7 +2,7 @@
<div class="school-class">
<h2 class="school-class__name">{{name}}</h2>
<div class="school-class__members school-class-members">
<ul class="school-class-members__list members-list" data-cy="active-class-members-list">
<ul class="school-class-members__list members-list members-list--active" data-cy="active-class-members-list">
<li
class="members-list__item member-item"
data-cy="school-class-member"
@ -10,11 +10,15 @@
:key="member.id">
<span class="member-item__name">{{fullName(member)}}</span>
<span class="member-item__role">{{role(member)}}</span>
<a class="member-item__action" data-cy="remove-from-class" @click="$emit('remove', member)">Deaktivieren</a>
<a
class="member-item__action"
data-cy="remove-from-class"
v-if="teacher"
@click="$emit('remove', member)">Deaktivieren</a>
</li>
</ul>
<h3>Deaktivierte Benutzer</h3>
<ul data-cy="inactive-class-members-list">
<h3 class="school-class__inactive-heading">Deaktivierte Benutzer</h3>
<ul data-cy="inactive-class-members-list" class="members-list members-list--inactive">
<li
class="members-list__item member-item"
data-cy="school-class-member"
@ -22,7 +26,11 @@
:key="member.id">
<span class="member-item__name">{{fullName(member)}}</span>
<span class="member-item__role">{{role(member)}}</span>
<a class="member-item__action" data-cy="add-to-class" @click="$emit('add', member)">Aktivieren</a>
<a
class="member-item__action"
data-cy="add-to-class"
v-if="teacher"
@click="$emit('add', member)">Aktivieren</a>
</li>
</ul>
</div>
@ -31,7 +39,7 @@
<script>
export default {
props: ['members', 'name'],
props: ['members', 'name', 'teacher'],
methods: {
fullName(member) {
return `${member.firstName} ${member.lastName}`;
@ -57,7 +65,20 @@
$height: 52px;
.school-class {
&__inactive-heading {
@include heading-4;
margin-bottom: $small-spacing;
}
}
.members-list {
border-top: 1px solid $color-silver-dark;
&--active {
margin-bottom: 2*$large-spacing;
}
&__item {
line-height: $height;
height: $height;
@ -79,14 +100,15 @@
}
&__role {
padding-right: $medium-spacing;
flex: 0 1 110px;
text-align: right;
}
&__action {
@include default-link;
color: $color-brand;
flex: 0 1 110px;
padding-left: $large-spacing;
}
}
</style>

View File

@ -1,6 +1,7 @@
query MySchoolClassQuery {
me {
id
isTeacher
selectedClass {
id
name

View File

@ -3,8 +3,9 @@
<h1 class="my-class__header" data-cy="class-list-title">Klassenliste</h1>
<class-list
class="my-class__class"
:name="selectedClass.name"
:members="selectedClass.members"
:name="me.selectedClass.name"
:members="me.selectedClass.members"
:teacher="me.isTeacher"
@remove="remove"
@add="add"
></class-list>
@ -24,12 +25,13 @@
methods: {
changeMember(member, active) {
console.log()
this.$apollo.mutate({
mutation: ADD_REMOVE_MEMBER_MUTATION,
variables: {
input: {
member: member.id,
schoolClass: this.selectedClass.id,
schoolClass: this.me.selectedClass.id,
active
}
},
@ -53,19 +55,22 @@
},
apollo: {
selectedClass: {
me: {
query: MY_SCHOOL_CLASS_QUERY,
update(data) {
return this.$getRidOfEdges(data).me.selectedClass
return this.$getRidOfEdges(data).me
}
}
},
data() {
return {
selectedClass: {
name: '',
members: []
me: {
isTeacher: false,
selectedClass: {
name: '',
members: []
}
}
}
}

View File

@ -33,6 +33,7 @@ class UserNode(DjangoObjectType):
pk = graphene.Int()
permissions = graphene.List(graphene.String)
selected_class = graphene.Field(SchoolClassNode)
is_teacher = graphene.Boolean()
class Meta:
model = User
@ -50,6 +51,8 @@ class UserNode(DjangoObjectType):
def resolve_selected_class(self, info):
return self.selected_class()
def resolve_is_teacher(self, info):
return self.is_teacher()
class ClassMemberNode(ObjectType):
"""