From 074f4c33662a3e31d2920fa010d9f034e2d69576 Mon Sep 17 00:00:00 2001
From: "robinwilliam.hundt" <robinwilliam.hundt@stud.uni-goettingen.de>
Date: Wed, 8 Nov 2017 22:57:19 +0100
Subject: [PATCH] First step towards REST + Vue Student Page

Backend
- Added isStudent permission
- Added serializers apropriate for StudentPage
- Added api-endpoint urls
- Added views regarding StudentPage
- Migrated the Django Session Authentication to djangorestframework-jwt authentication

Frontend
- Migrated from vue-resource to axios because of better documentation & features
- Added Login Component
- Added First Part of StudentPage containing overview of exam and subissions

Closes #41
References #39
---
 backend/core/permissions.py                   |  19 +--
 backend/core/serializers.py                   |  21 ++-
 backend/core/urls.py                          |   8 +-
 backend/core/views.py                         |  17 ++-
 backend/grady/settings/default.py             |  17 +++
 backend/requirements.txt                      |   1 +
 frontend/src/App.vue                          |  13 +-
 frontend/src/assets/brand.png                 | Bin 0 -> 46385 bytes
 frontend/src/components/HelloWorld.vue        |  28 +++-
 frontend/src/components/Login.vue             |  62 ++++++++
 frontend/src/components/student/Base.vue      |  13 --
 .../components/student/ExamInformation.vue    |  29 ++++
 .../src/components/student/StudentNav.vue     |  38 +++++
 .../src/components/student/StudentPage.vue    |  57 ++++++++
 .../components/student/SubmissionDetail.vue   |  12 --
 .../src/components/student/SubmissionList.vue |  44 +++---
 frontend/src/main.js                          |   8 +-
 frontend/src/router/index.js                  |  12 +-
 frontend/src/store/api.js                     |  30 +---
 frontend/src/store/store.js                   |  39 +++++
 frontend/yarn.lock                            | 137 +++++-------------
 21 files changed, 384 insertions(+), 221 deletions(-)
 create mode 100644 frontend/src/assets/brand.png
 create mode 100644 frontend/src/components/Login.vue
 delete mode 100644 frontend/src/components/student/Base.vue
 create mode 100644 frontend/src/components/student/ExamInformation.vue
 create mode 100644 frontend/src/components/student/StudentNav.vue
 create mode 100644 frontend/src/components/student/StudentPage.vue
 delete mode 100644 frontend/src/components/student/SubmissionDetail.vue
 create mode 100644 frontend/src/store/store.js

diff --git a/backend/core/permissions.py b/backend/core/permissions.py
index 19b78f01..3418f6dd 100644
--- a/backend/core/permissions.py
+++ b/backend/core/permissions.py
@@ -1,18 +1,9 @@
 from rest_framework import permissions
 
-from core.custom_annotations import in_groups
-from core.models import Feedback, Student, Submission
+from core.models import Student
 
 
-class StudentRequestOwnData(permissions.BasePermission):
-    def has_object_permission(self, request, view, obj):
-        if in_groups(request.user, ['Students']):
-            student = request.user.student
-            if isinstance(obj, Student):
-                return student == obj
-            elif isinstance(obj, Submission):
-                return student == obj.student
-            elif isinstance(obj, Feedback):
-                return student == obj.of_submission.student
-
-        return False
+class IsStudent(permissions.BasePermission):
+    def has_permission(self, request, view):
+        user = request.user
+        return user.is_authenticated() and isinstance(user.get_associated_user(), Student)
diff --git a/backend/core/serializers.py b/backend/core/serializers.py
index e4c4fa80..c58def52 100644
--- a/backend/core/serializers.py
+++ b/backend/core/serializers.py
@@ -1,7 +1,17 @@
-from django.contrib.auth.models import User
 from rest_framework import serializers
+from core.models import Student, Submission, Feedback, ExamType
 
 from core.models import Feedback, Student, Submission
+=======
+from rest_framework import serializers
+from core.models import Student, Submission, Feedback, ExamType
+
+
+class ExamSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = ExamType
+        fields = ('module_reference', 'total_score', 'pass_score', 'pass_only',)
+>>>>>>> First step towards REST + Vue Student Page
 
 
 class FeedbackSerializer(serializers.ModelSerializer):
@@ -11,15 +21,20 @@ class FeedbackSerializer(serializers.ModelSerializer):
 
 
 class SubmissionSerializer(serializers.ModelSerializer):
-    feedback = FeedbackSerializer()
+    feedback = serializers.ReadOnlyField(source='feedback.text')
+    score = serializers.ReadOnlyField(source='feedback.score')
+    type = serializers.ReadOnlyField(source='type.name')
+    full_score = serializers.ReadOnlyField(source='type.full_score')
 
     class Meta:
         model = Submission
-        fields = ('seen_by_student', 'text', 'type', 'student', 'feedback')
+        fields = ('type', 'text', 'feedback', 'score', 'full_score')
 
 
 class StudentSerializer(serializers.ModelSerializer):
+    name = serializers.ReadOnlyField(source='user.fullname')
     user = serializers.ReadOnlyField(source='user.username')
+    exam = ExamSerializer()
     submissions = SubmissionSerializer(many=True)
 
     class Meta:
diff --git a/backend/core/urls.py b/backend/core/urls.py
index 9f957f39..962f6681 100644
--- a/backend/core/urls.py
+++ b/backend/core/urls.py
@@ -1,13 +1,15 @@
 from django.conf.urls import url
 from django.contrib.staticfiles.urls import staticfiles_urlpatterns
-from rest_framework.urlpatterns import format_suffix_patterns
+from rest_framework_jwt.views import obtain_jwt_token
 
 from core import views
 
 urlpatterns = [
     url(r'^api/student/$', views.StudentApiView.as_view()),
-    url(r'^api/submission/$', views.SubmissionApiView.as_view()),
-    url(r'^api/feedback/$', views.FeedbackApiView.as_view()),
+    url(r'^api/student/submission/(?P<pk>[0-9]+)$', views.SubmissionApiView.as_view()),
+    url(r'^api/student/submission/(?P<pk>[0-9]+)/feedback/$', views.FeedbackApiView.as_view()),
+
+    url(r'^api-token-auth/', obtain_jwt_token)
 ]
 
 urlpatterns += staticfiles_urlpatterns()
diff --git a/backend/core/views.py b/backend/core/views.py
index 80146573..5ab7f1ef 100644
--- a/backend/core/views.py
+++ b/backend/core/views.py
@@ -1,28 +1,29 @@
-
+from core.serializers import SubmissionSerializer, StudentSerializer, FeedbackSerializer
 from rest_framework.generics import RetrieveAPIView
-
-from core.models import Feedback, Student, Submission
-from core.serializers import (FeedbackSerializer, StudentSerializer,
-                              SubmissionSerializer)
+from core.permissions import IsStudent
 
 
 class StudentApiView(RetrieveAPIView):
+    permission_classes = (IsStudent,)
+
     def get_object(self):
         return self.request.user.student
     serializer_class = StudentSerializer
 
 
 class SubmissionApiView(RetrieveAPIView):
-    def get_object(self):
+    permission_classes = (IsStudent,)
+
+    def get_queryset(self):
         return self.request.user.student.submissions
     serializer_class = SubmissionSerializer
 
 
 class FeedbackApiView(RetrieveAPIView):
+    permission_classes = (IsStudent,)
+
     def get_queryset(self):
         return [submission.feedback for submission in self.request.user.submissions]
     serializer_class = FeedbackSerializer
 
 
-class StudentPageView(RetrieveAPIView):
-    queryset = Student.objects.all()
diff --git a/backend/grady/settings/default.py b/backend/grady/settings/default.py
index 839caa89..29513984 100644
--- a/backend/grady/settings/default.py
+++ b/backend/grady/settings/default.py
@@ -11,6 +11,7 @@ https://docs.djangoproject.com/en/1.10/ref/settings/
 """
 
 import os
+import datetime
 
 from django.contrib.messages import constants as messages
 
@@ -143,3 +144,19 @@ AUTH_PASSWORD_VALIDATORS = []
 CORS_ORIGIN_WHITELIST = (
     'localhost:8080'
 )
+
+REST_FRAMEWORK = {
+    'DEFAULT_PERMISSION_CLASSES': (
+        'rest_framework.permissions.IsAuthenticated',
+    ),
+    'DEFAULT_AUTHENTICATION_CLASSES': (
+        'rest_framework_jwt.authentication.JSONWebTokenAuthentication',
+        'rest_framework.authentication.SessionAuthentication',
+        'rest_framework.authentication.BasicAuthentication',
+    ),
+}
+
+JWT_AUTH = {
+    'JWT_EXPIRATION_DELTA': datetime.timedelta(seconds=600),
+}
+
diff --git a/backend/requirements.txt b/backend/requirements.txt
index b5f17075..a6f7f9bd 100644
--- a/backend/requirements.txt
+++ b/backend/requirements.txt
@@ -1,6 +1,7 @@
 Django~=1.11.3
 django-extensions~=1.7.7
 djangorestframework~=3.6.3
+djangorestframework-jwt~=1.11.0
 django_compressor~=2.1.1
 gunicorn~=19.7.0
 psycopg2~=2.7.1
diff --git a/frontend/src/App.vue b/frontend/src/App.vue
index 20f09c82..11aee7fd 100644
--- a/frontend/src/App.vue
+++ b/frontend/src/App.vue
@@ -1,23 +1,20 @@
 <template>
   <div id="app">
-    <img src="./assets/logo.png">
     <router-view/>
   </div>
 </template>
 
 <script>
   export default {
-    name: 'app'
+    name: 'app',
+    components: {
+
+    }
 }
 </script>
 
 <style>
 #app {
-  font-family: 'Avenir', Helvetica, Arial, sans-serif;
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-  text-align: center;
-  color: #2c3e50;
-  margin-top: 60px;
+
 }
 </style>
diff --git a/frontend/src/assets/brand.png b/frontend/src/assets/brand.png
new file mode 100644
index 0000000000000000000000000000000000000000..5dfdb7913e235b0e63d195afc1d27f1b4ad04c86
GIT binary patch
literal 46385
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
N002ovPDHLkV1mu|Vxa&4

literal 0
HcmV?d00001

diff --git a/frontend/src/components/HelloWorld.vue b/frontend/src/components/HelloWorld.vue
index 7a4afec5..0bdb2f3c 100644
--- a/frontend/src/components/HelloWorld.vue
+++ b/frontend/src/components/HelloWorld.vue
@@ -1,14 +1,28 @@
 <template>
-  <span>{{msg}}</span>
+  <div>
+    <span>{{msg}}</span>
+    <span>{{token}}</span>
+  </div>
 </template>
 
 <script>
-export default {
-  name: 'HelloWorld',
-  data () {
-    return {
-      msg: 'Welcome to Your Vue.js App'
+  import axios from 'axios'
+
+  export default {
+    name: 'HelloWorld',
+    data () {
+      return {
+        msg: 'Welcome to Your Vue.js App',
+        token: ''
+      }
+    },
+    created: function () {
+      axios.post('http://localhost:8000/api-token-auth/', {
+        username: 'robin',
+        password: 'p'
+      }).then(token => {
+        this.token = token.data.token
+      })
     }
   }
-}
 </script>
diff --git a/frontend/src/components/Login.vue b/frontend/src/components/Login.vue
new file mode 100644
index 00000000..0ea4acc6
--- /dev/null
+++ b/frontend/src/components/Login.vue
@@ -0,0 +1,62 @@
+<template>
+  <div class="mx-auto col-md-4 col-xl-2" id="login">
+    <img src="../assets/brand.png"/>
+    <h2>Log in</h2>
+    <p>Log in to your account to grade stuff!</p>
+    <div class="aler alert-danger" v-if="error">
+      <p>{{ error }}</p>
+    </div>
+    <div class="form-group">
+      <input
+        type="text"
+        class="form-control"
+        placeholder="Enter your username"
+        v-model="credentials.username"
+      />
+    </div>
+    <div class="form-group" @keyup.enter="submit()">
+      <input
+        type="password"
+        class="form-control"
+        placeholder="Enter your password"
+        v-model="credentials.password"
+      />
+    </div>
+    <button class="btn btn-primary" @click="submit()">Access</button>
+  </div>
+</template>
+
+
+<script>
+  export default {
+    name: 'grady-login',
+    data () {
+      return {
+        credentials: {
+          username: '',
+          password: ''
+        },
+        error: ''
+      }
+    },
+    methods: {
+      submit () {
+        const credentials = {
+          username: this.credentials.username,
+          password: this.credentials.password
+        }
+        this.$store.dispatch('getToken', credentials).then(response => {
+          this.$router.push('/student/')
+        })
+      }
+    }
+  }
+</script>
+
+
+<style scoped>
+  #login {
+    text-align: center;
+    margin-top: 10%;
+  }
+</style>
diff --git a/frontend/src/components/student/Base.vue b/frontend/src/components/student/Base.vue
deleted file mode 100644
index 346f7ee0..00000000
--- a/frontend/src/components/student/Base.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-<template>
-
-</template>
-
-
-<script>
-
-</script>
-
-
-<style>
-
-</style>
diff --git a/frontend/src/components/student/ExamInformation.vue b/frontend/src/components/student/ExamInformation.vue
new file mode 100644
index 00000000..817cd58c
--- /dev/null
+++ b/frontend/src/components/student/ExamInformation.vue
@@ -0,0 +1,29 @@
+<template>
+  <table class="table table-info rounded">
+    <tbody>
+      <tr>
+        <th>Modul</th>
+        <td>{{ exam.module_reference }}</td>
+      </tr>
+      <tr v-if="!exam.pass_only">
+        <th>Pass score</th>
+        <td>{{ exam.pass_score }}</td>
+      </tr>
+      <tr v-else>
+        <th>Pass only!</th>
+      </tr>
+      <tr>
+        <th>Total score</th>
+        <td>{{ exam.total_score }}</td>
+      </tr>
+    </tbody>
+  </table>
+</template>
+
+
+<script>
+  export default {
+    name: 'exam-information',
+    props: ['exam']
+  }
+</script>
diff --git a/frontend/src/components/student/StudentNav.vue b/frontend/src/components/student/StudentNav.vue
new file mode 100644
index 00000000..6613a097
--- /dev/null
+++ b/frontend/src/components/student/StudentNav.vue
@@ -0,0 +1,38 @@
+<template>
+  <b-navbar toggleable="md" type="light" variant="light">
+    <b-navbar-toggle target="nav_collapse"></b-navbar-toggle>
+
+    <b-navbar-brand>
+      <img src="../../assets/brand.png" width="30" class="d-inline-block align-top">
+      Grady
+    </b-navbar-brand>
+
+    <b-collapse is-nav id="nav_collapse">
+
+      <b-navbar-nav id="nav-left">
+        <b-nav-item class="active" href="#">Results</b-nav-item>
+        <b-nav-item href="#">Statistics</b-nav-item>
+      </b-navbar-nav>
+
+      <!-- Right aligned nav items -->
+      <b-navbar-nav class="ml-auto">
+        <b-nav-item>{{ this.$store.state.username }}</b-nav-item>
+        <router-link to="/">
+          <b-button class="btn-dark" @click="logout()" >Signout</b-button>
+        </router-link>
+      </b-navbar-nav>
+    </b-collapse>
+  </b-navbar>
+</template>
+
+
+<script>
+  export default {
+    name: 'grady-nav',
+    methods: {
+      logout () {
+        this.$store.dispatch('logout')
+      }
+    }
+  }
+</script>
diff --git a/frontend/src/components/student/StudentPage.vue b/frontend/src/components/student/StudentPage.vue
new file mode 100644
index 00000000..b1e92496
--- /dev/null
+++ b/frontend/src/components/student/StudentPage.vue
@@ -0,0 +1,57 @@
+<template>
+  <div>
+    <grady-nav></grady-nav>
+    <div class="container-fluid">
+      <div class="row justify-content-center my-3">
+        <div class="col-md-3">
+          <h2 class="my-5">Exam Overview</h2>
+          <exam-information v-if="doneLoading" :exam="exam"></exam-information>
+        </div>
+        <div class="col-md-6 offset-md-1" v-if="doneLoading">
+          <h2 class="my-5">Submissions of {{ this.studentData.name }}</h2>
+          <submission-list :submissions="submissions"></submission-list>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+
+<script>
+  import ax from '@/store/api'
+  import GradyNav from './StudentNav.vue'
+  import SubmissionList from './SubmissionList.vue'
+  import ExamInformation from './ExamInformation.vue'
+
+  export default {
+    components: {
+      ExamInformation,
+      SubmissionList,
+      GradyNav},
+    name: 'student-page',
+    data () {
+      return {
+        studentData: {},
+        doneLoading: false
+      }
+    },
+    created: function () {
+      this.doneLoading = false
+      ax.get('api/student/').then(response => {
+        this.studentData = response.data
+        this.doneLoading = true
+      })
+    },
+    computed: {
+      submissions () {
+        return this.studentData.submissions
+      },
+      exam () {
+        return this.studentData.exam
+      }
+    }
+  }
+</script>
+
+<style scoped>
+</style>
diff --git a/frontend/src/components/student/SubmissionDetail.vue b/frontend/src/components/student/SubmissionDetail.vue
deleted file mode 100644
index 9a7264b4..00000000
--- a/frontend/src/components/student/SubmissionDetail.vue
+++ /dev/null
@@ -1,12 +0,0 @@
-<template>
-
-</template>
-
-
-<script>
-  export default {
-    computed: {
-
-    }
-  }
-</script>
diff --git a/frontend/src/components/student/SubmissionList.vue b/frontend/src/components/student/SubmissionList.vue
index f4cf766f..3474bfd5 100644
--- a/frontend/src/components/student/SubmissionList.vue
+++ b/frontend/src/components/student/SubmissionList.vue
@@ -1,33 +1,33 @@
 <template>
-  <ul>
-    <li v-for="sub in submissions">
-      <span>{{sub.type}}</span>
-      <span>{{sub.text}}</span>
-      <span>{{sub.feedback}}</span>
-    </li>
-  </ul>
+  <div class="row my-2 justify-content-center">
+    <b-table hover :items="submissions" :fields="fields"></b-table>
+    <div class="alert alert-info">You reached <b>{{ sumScore }}</b> of <b>{{ sumFullScore }}</b> possible points( {{ pointRatio }}% ).</div>
+  </div>
 </template>
 
+
 <script>
   export default {
-    data: function () {
+    name: 'submission-list',
+    data () {
       return {
-        submissions: []
+        fields: [
+          { key: 'type', sortable: true },
+          { key: 'score', label: 'Score', sortable: true },
+          { key: 'full_score', sortable: true }
+        ]
       }
     },
-    created: function () {
-      this.getSubmissions()
-    },
-    methods: {
-      getSubmissions () {
-        this.$http.get('http://localhost:8000/api/student/1').then(student => {
-          return Promise.all(student.body.submissions.map(id => {
-            return this.$http.get(`http://localhost:8000/api/submission/${id}`)
-          }))
-        }).then(response => {
-          console.log(response)
-          this.submissions = response.map(item => { return item.body })
-        }).catch(console.log.bind(console))
+    props: ['submissions'],
+    computed: {
+      sumScore () {
+        return this.submissions.map(a => a.score).reduce((a, b) => a + b)
+      },
+      sumFullScore () {
+        return this.submissions.map(a => a.full_score).reduce((a, b) => a + b)
+      },
+      pointRatio () {
+        return ((this.sumScore / this.sumFullScore) * 100).toFixed(2)
       }
     }
   }
diff --git a/frontend/src/main.js b/frontend/src/main.js
index 6dca5db2..565189ce 100644
--- a/frontend/src/main.js
+++ b/frontend/src/main.js
@@ -2,16 +2,20 @@
 // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
 import Vue from 'vue'
 import App from './App'
+import BootstrapVue from 'bootstrap-vue'
 import router from './router'
-import VueResource from 'vue-resource'
+import store from './store/store'
+import 'bootstrap-vue/dist/bootstrap-vue.css'
+import 'bootstrap/dist/css/bootstrap.css'
 
-Vue.use(VueResource)
+Vue.use(BootstrapVue)
 
 Vue.config.productionTip = false
 
 /* eslint-disable no-new */
 new Vue({
   el: '#app',
+  store,
   router,
   template: '<App/>',
   components: { App }
diff --git a/frontend/src/router/index.js b/frontend/src/router/index.js
index b00e372a..c29cbc7d 100644
--- a/frontend/src/router/index.js
+++ b/frontend/src/router/index.js
@@ -1,6 +1,7 @@
 import Vue from 'vue'
 import Router from 'vue-router'
-import SubmissionList from '@/components/student/SubmissionList'
+import Login from '@/components/Login'
+import StudentPage from '@/components/student/StudentPage'
 
 Vue.use(Router)
 
@@ -8,8 +9,13 @@ export default new Router({
   routes: [
     {
       path: '/',
-      name: 'Submissions',
-      component: SubmissionList
+      name: 'grady-login',
+      component: Login
+    },
+    {
+      path: '/student/',
+      name: 'student-page',
+      component: StudentPage
     }
   ]
 })
diff --git a/frontend/src/store/api.js b/frontend/src/store/api.js
index fd2c9786..368c09c8 100644
--- a/frontend/src/store/api.js
+++ b/frontend/src/store/api.js
@@ -1,27 +1,7 @@
-import Vue from 'vue'
-import VueResource from 'vue-resource'
+import axios from 'axios'
 
-Vue.use(VueResource)
+var ax = axios.create({
+  baseURL: 'http://localhost:8000/'
+})
 
-export default {
-  get (url, request) {
-    return Vue.http.get(url, request)
-      .then((response) => Promise.resolve(response))
-      .catch((error) => Promise.reject(error))
-  },
-  post (url, request) {
-    return Vue.http.post(url, request)
-      .then((response) => Promise.resolve(response))
-      .catch((error) => Promise.reject(error))
-  },
-  patch (url, request) {
-    return Vue.http.patch(url, request)
-      .then((response) => Promise.resolve(response))
-      .catch((error) => Promise.reject(error))
-  },
-  delete (url, request) {
-    return Vue.http.delete(url, request)
-      .then((response) => Promise.resolve(response))
-      .catch((error) => Promise.reject(error))
-  }
-}
+export default ax
diff --git a/frontend/src/store/store.js b/frontend/src/store/store.js
new file mode 100644
index 00000000..150521a0
--- /dev/null
+++ b/frontend/src/store/store.js
@@ -0,0 +1,39 @@
+import Vuex from 'vuex'
+import Vue from 'vue'
+import ax from './api'
+
+Vue.use(Vuex)
+
+const store = new Vuex.Store({
+  state: {
+    token: '',
+    loggedIn: false,
+    username: ''
+  },
+  mutations: {
+    'LOGIN': function (state, creds) {
+      state.token = creds.token
+      state.loggedIn = true
+      state.username = creds.username
+    },
+    'LOGOUT': function (state) {
+      state.token = ''
+      state.loggedIn = false
+    }
+  },
+  actions: {
+    async getToken (store, credentials) {
+      const response = await ax.post('api-token-auth/', credentials)
+      store.commit('LOGIN', {
+        token: response.data.token,
+        username: credentials.username
+      })
+      ax.defaults.headers.common['Authorization'] = 'JWT ' + response.data.token
+    },
+    logout (store) {
+      store.commit('LOGOUT')
+    }
+  }
+})
+
+export default store
diff --git a/frontend/yarn.lock b/frontend/yarn.lock
index e96d4143..3d843ede 100644
--- a/frontend/yarn.lock
+++ b/frontend/yarn.lock
@@ -272,6 +272,13 @@ aws4@^1.2.1, aws4@^1.6.0:
   version "1.6.0"
   resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
 
+axios@^0.17.0:
+  version "0.17.0"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-0.17.0.tgz#7da747916db803f761651d6091d708789b953c6a"
+  dependencies:
+    follow-redirects "^1.2.3"
+    is-buffer "^1.1.5"
+
 babel-code-frame@^6.11.0, babel-code-frame@^6.16.0, babel-code-frame@^6.22.0, babel-code-frame@^6.26.0:
   version "6.26.0"
   resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@@ -950,13 +957,15 @@ boom@5.x.x:
   dependencies:
     hoek "4.x.x"
 
-bootstrap-vue@^1.0.0-beta.9:
-  version "1.0.0-beta.9"
-  resolved "https://registry.yarnpkg.com/bootstrap-vue/-/bootstrap-vue-1.0.0-beta.9.tgz#4e0bc5bcb95a90dc3bec7124ea3ddf5cc4c6ffa6"
+bootstrap-vue@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/bootstrap-vue/-/bootstrap-vue-1.0.0.tgz#65c1d18bce782672c18ba54188e13c2e18725ae0"
   dependencies:
-    bootstrap "^4.0.0-beta"
+    lodash.startcase "^4.4.0"
+    popper.js "^1.12.6"
+    vue-functional-data-merge "^1.0.6"
 
-bootstrap@^4.0.0-beta:
+bootstrap@4.0.0-beta.2:
   version "4.0.0-beta.2"
   resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.0.0-beta.2.tgz#4d67d2aa2219f062cd90bc1247e6747b9e8fd051"
 
@@ -1673,7 +1682,7 @@ debug@2.6.8:
   dependencies:
     ms "2.0.0"
 
-debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8:
+debug@2.6.9, debug@^2.1.1, debug@^2.2.0, debug@^2.6.8, debug@^2.6.9:
   version "2.6.9"
   resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
   dependencies:
@@ -1683,12 +1692,6 @@ decamelize@^1.0.0, decamelize@^1.1.1, decamelize@^1.1.2:
   version "1.2.0"
   resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290"
 
-decompress-response@^3.2.0:
-  version "3.3.0"
-  resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3"
-  dependencies:
-    mimic-response "^1.0.0"
-
 deep-eql@^3.0.0:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df"
@@ -1852,10 +1855,6 @@ domutils@^1.5.1:
     dom-serializer "0"
     domelementtype "1"
 
-duplexer3@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2"
-
 duplexer@^0.1.1:
   version "0.1.1"
   resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1"
@@ -2480,6 +2479,12 @@ flatten@^1.0.2:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.2.tgz#dae46a9d78fbe25292258cc1e780a41d95c03782"
 
+follow-redirects@^1.2.3:
+  version "1.2.5"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.2.5.tgz#ffd3e14cbdd5eaa72f61b6368c1f68516c2a26cc"
+  dependencies:
+    debug "^2.6.9"
+
 for-in@^1.0.1:
   version "1.0.2"
   resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@@ -2685,25 +2690,6 @@ globby@^5.0.0:
     pify "^2.0.0"
     pinkie-promise "^2.0.0"
 
-got@^7.0.0:
-  version "7.1.0"
-  resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a"
-  dependencies:
-    decompress-response "^3.2.0"
-    duplexer3 "^0.1.4"
-    get-stream "^3.0.0"
-    is-plain-obj "^1.1.0"
-    is-retry-allowed "^1.0.0"
-    is-stream "^1.0.0"
-    isurl "^1.0.0-alpha5"
-    lowercase-keys "^1.0.0"
-    p-cancelable "^0.3.0"
-    p-timeout "^1.1.1"
-    safe-buffer "^5.0.1"
-    timed-out "^4.0.0"
-    url-parse-lax "^1.0.0"
-    url-to-options "^1.0.1"
-
 graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9:
   version "4.1.11"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
@@ -2778,16 +2764,6 @@ has-flag@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51"
 
-has-symbol-support-x@^1.4.1:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.1.tgz#66ec2e377e0c7d7ccedb07a3a84d77510ff1bc4c"
-
-has-to-string-tag-x@^1.2.0:
-  version "1.4.1"
-  resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d"
-  dependencies:
-    has-symbol-support-x "^1.4.1"
-
 has-unicode@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -3185,10 +3161,6 @@ is-number@^3.0.0:
   dependencies:
     kind-of "^3.0.2"
 
-is-object@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470"
-
 is-path-cwd@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d"
@@ -3205,7 +3177,7 @@ is-path-inside@^1.0.0:
   dependencies:
     path-is-inside "^1.0.1"
 
-is-plain-obj@^1.0.0, is-plain-obj@^1.1.0:
+is-plain-obj@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
 
@@ -3227,11 +3199,7 @@ is-resolvable@^1.0.0:
   dependencies:
     tryit "^1.0.1"
 
-is-retry-allowed@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34"
-
-is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0:
+is-stream@^1.0.1, is-stream@^1.1.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
 
@@ -3318,13 +3286,6 @@ istanbul@^0.4.0:
     which "^1.1.1"
     wordwrap "^1.0.0"
 
-isurl@^1.0.0-alpha5:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67"
-  dependencies:
-    has-to-string-tag-x "^1.2.0"
-    is-object "^1.0.1"
-
 js-base64@^2.1.9:
   version "2.3.2"
   resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.3.2.tgz#a79a923666372b580f8e27f51845c6f7e8fbfbaf"
@@ -3672,6 +3633,10 @@ lodash.memoize@^4.1.2:
   version "4.1.2"
   resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
 
+lodash.startcase@^4.4.0:
+  version "4.4.0"
+  resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8"
+
 lodash.uniq@^4.5.0:
   version "4.5.0"
   resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773"
@@ -3726,10 +3691,6 @@ lower-case@^1.1.1:
   version "1.1.4"
   resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac"
 
-lowercase-keys@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306"
-
 lru-cache@2.2.x:
   version "2.2.4"
   resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.2.4.tgz#6c658619becf14031d0d0b594b16042ce4dc063d"
@@ -3853,10 +3814,6 @@ mimic-fn@^1.0.0:
   version "1.1.0"
   resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.1.0.tgz#e667783d92e89dbd342818b5230b9d62a672ad18"
 
-mimic-response@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e"
-
 minimalistic-assert@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz#702be2dda6b37f4836bcb3f5db56641b64a1d3d3"
@@ -4206,10 +4163,6 @@ osenv@^0.1.4:
     os-homedir "^1.0.0"
     os-tmpdir "^1.0.0"
 
-p-cancelable@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa"
-
 p-finally@^1.0.0:
   version "1.0.0"
   resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
@@ -4224,12 +4177,6 @@ p-locate@^2.0.0:
   dependencies:
     p-limit "^1.1.0"
 
-p-timeout@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.0.tgz#9820f99434c5817868b4f34809ee5291660d5b6c"
-  dependencies:
-    p-finally "^1.0.0"
-
 pako@~0.2.0:
   version "0.2.9"
   resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75"
@@ -4415,6 +4362,10 @@ pluralize@^1.2.1:
   version "1.2.1"
   resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-1.2.1.tgz#d1a21483fd22bb41e58a12fa3421823140897c45"
 
+popper.js@^1.12.6:
+  version "1.12.6"
+  resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.12.6.tgz#91e12a97b07815258b76915d64044e8ac053d426"
+
 portfinder@^1.0.13:
   version "1.0.13"
   resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.13.tgz#bb32ecd87c27104ae6ee44b5a3ccbf0ebb1aede9"
@@ -4696,7 +4647,7 @@ prelude-ls@~1.1.2:
   version "1.1.2"
   resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54"
 
-prepend-http@^1.0.0, prepend-http@^1.0.1:
+prepend-http@^1.0.0:
   version "1.0.4"
   resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
 
@@ -5624,10 +5575,6 @@ time-stamp@^2.0.0:
   version "2.0.0"
   resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-2.0.0.tgz#95c6a44530e15ba8d6f4a3ecb8c3a3fac46da357"
 
-timed-out@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f"
-
 timers-browserify@^2.0.2:
   version "2.0.4"
   resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.4.tgz#96ca53f4b794a5e7c0e1bd7cc88a372298fa01e6"
@@ -5788,16 +5735,6 @@ url-loader@^0.5.8:
     loader-utils "^1.0.2"
     mime "1.3.x"
 
-url-parse-lax@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73"
-  dependencies:
-    prepend-http "^1.0.1"
-
-url-to-options@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9"
-
 url@^0.11.0:
   version "0.11.0"
   resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -5877,6 +5814,10 @@ void-elements@^2.0.0:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec"
 
+vue-functional-data-merge@^1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/vue-functional-data-merge/-/vue-functional-data-merge-1.0.6.tgz#cde4f0cf3f251f7f0196341156d2c936cca63d40"
+
 vue-hot-reload-api@^2.2.0:
   version "2.2.0"
   resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.2.0.tgz#9a21b35ced3634434a43ee80efb7350ea8fb206d"
@@ -5899,12 +5840,6 @@ vue-loader@^13.3.0:
     vue-style-loader "^3.0.0"
     vue-template-es2015-compiler "^1.6.0"
 
-vue-resource@^1.3.4:
-  version "1.3.4"
-  resolved "https://registry.yarnpkg.com/vue-resource/-/vue-resource-1.3.4.tgz#9fc0bdf6a2f5cab430129fc99d347b3deae7b099"
-  dependencies:
-    got "^7.0.0"
-
 vue-router@^3.0.1:
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-3.0.1.tgz#d9b05ad9c7420ba0f626d6500d693e60092cc1e9"
-- 
GitLab