diff --git a/src/App.vue b/src/App.vue index 253411d263b7ed5c2e2cebced7d6825c896c41c4..a7d37ca69e4b06019a061347000e99e38f6b2650 100644 --- a/src/App.vue +++ b/src/App.vue @@ -68,7 +68,6 @@ <div class="right menu"> <router-link v-if="user" to="/my_account/" class="item"> {{ userFullname || user.username || "Utilisateur inconnu" }} - <!-- // ? full_name n'existe pas côté django... --> </router-link> <div v-if="user && user.is_administrator" @@ -81,8 +80,6 @@ <span v-if="user.is_administrator"> Gestionnaire métier </span> </div> <!-- // todo : find out SSO_SETTED in django --> - <!-- // ? condition bizarre (if !sso_setted pui elif !sso_setted) ? --> - <!-- <a class="item" href="{% url 'geocontrib:logout' %}"><i class="ui logout icon"></i></a> --> <a v-if="user && !SSO_SETTED" @click="logout" class="item" ><i class="ui logout icon"></i> </a> @@ -95,8 +92,6 @@ </header> <main> <div class="ui stackable grid centered container"> - <!-- // todo : add messages --> - <!-- {% if messages %} --> <div v-if="messages" class="row"> <div class="fourteen wide column"> <div @@ -117,7 +112,6 @@ </div> </div> </div> - <!-- {% endif %} --> <router-view /> <!-- //* Les views sont injectées ici --> </div> diff --git a/src/views/project/Project_members.vue b/src/views/project/Project_members.vue index 4ad7e25a33e03e953737276abc35048100cdc25c..a8fc761be7e53945c4213ac13de3e40bfcb85e51 100644 --- a/src/views/project/Project_members.vue +++ b/src/views/project/Project_members.vue @@ -9,7 +9,6 @@ enctype="multipart/form-data" class="ui form" > - <!-- {{ formset.non_form_errors }} --> <table class="ui red table"> <thead> <tr> @@ -18,25 +17,23 @@ </tr> </thead> <tbody> - <div v-frag v-for="member in projectMembers" :key="member.username"> - <tr> - <td> - {{ member.last_name }} {{ member.first_name }}<br /><i>{{ - member.username - }}</i> - </td> - <td> - <div class="required field"> - <Dropdown - :options="levelOptions" - :selected="member.userLevel" - :selection.sync="member.userLevel" - :search="true" - /> - </div> - </td> - </tr> - </div> + <tr v-for="member in projectMembers" :key="member.username"> + <td> + {{ member.user.last_name }} {{ member.user.first_name }}<br /><i + >{{ member.user.username }}</i + > + </td> + <td> + <div class="required field"> + <Dropdown + :options="levelOptions" + :selected="member.userLevel.name" + :selection.sync="member.userLevel" + :search="true" + /> + </div> + </td> + </tr> </tbody> </table> @@ -59,7 +56,6 @@ import frag from "vue-frag"; import { mapGetters } from "vuex"; import Dropdown from "@/components/Dropdown.vue"; - export default { name: "Project_members", @@ -70,52 +66,65 @@ export default { Dropdown, }, - computed: { - ...mapGetters(["project"]), - }, - data() { return { projectMembers: [], levelOptions: [ - "Utilisateur connecté", - "Contributeur", - "Modérateur", - "Administrateur projet", + { name: "Utilisateur connecté", value: "logged_user" }, + { name: "Contributeur", value: "contributor" }, + { name: "Modérateur", value: "moderator" }, + { name: "Administrateur projet", value: "admin" }, ], }; }, + + computed: { + ...mapGetters(["project"]), + }, + methods: { validateMembers() { - // const data = { - // slug: this.project.slug, - // data: this.projectMembers, - // }; - // console.log("validateMembers", data); - /* axios - .post(`${DJANGO_API_BASE}projet/${payload.slug}/utilisateurs/`, payload.data) + const data = this.projectMembers.map((member) => { + return { + user: member.user, + level: { + display: member.userLevel.name, + codename: member.userLevel.value, + }, + }; + }); + console.log("validateMembers", data); + axios + .put( + `${this.$store.state.configuration.VUE_APP_DJANGO_API_BASE}projects/${this.project.slug}/utilisateurs/`, + data + ) .then((response) => { - const user = response.data.user; + if (response.status === 200) { + this.$store.dispatch("GET_USER_LEVEL_PROJECTS"); //* update user status in top right menu + } }) - .catch(() => { - router.push({ name: "login" }); - }); */ + .catch((error) => { + throw error; + }); }, + async fetchMembers() { return axios .get( `${this.$store.state.configuration.VUE_APP_DJANGO_API_BASE}projects/${this.$route.params.slug}/utilisateurs` ) - .then((response) => response.data.members) + .then((response) => response.data) .catch((error) => { throw error; }); }, + async populateMembers() { await this.fetchMembers().then((members) => { this.projectMembers = members.map((el) => { return { - userLevel: el.userLevel ? el.userLevel : this.levelOptions[0], + userLevel: { name: el.level.display, value: el.level.codename }, ...el, }; });