diff --git a/shimatta_kenkyusho/api/views.py b/shimatta_kenkyusho/api/views.py
index fa37ad2..50c2ecd 100644
--- a/shimatta_kenkyusho/api/views.py
+++ b/shimatta_kenkyusho/api/views.py
@@ -16,6 +16,7 @@ from rest_framework.authtoken.views import ObtainAuthToken
from rest_framework.authtoken.models import Token
from rest_framework.throttling import AnonRateThrottle
from rest_framework.decorators import action
+from rest_framework import filters
# Create your views here.
class UserViewSet(viewsets.ReadOnlyModelViewSet):
@@ -25,6 +26,8 @@ class UserViewSet(viewsets.ReadOnlyModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
permission_classes = [permissions.IsAuthenticated]
+ filter_backends = [filters.SearchFilter]
+ search_fields = ['username', 'first_name', 'last_name', 'email']
class GroupViewSet(viewsets.ReadOnlyModelViewSet):
"""
diff --git a/shimatta_kenkyusho/static/js/csrf-token.js b/shimatta_kenkyusho/static/js/csrf-token.js
new file mode 100644
index 0000000..979fdeb
--- /dev/null
+++ b/shimatta_kenkyusho/static/js/csrf-token.js
@@ -0,0 +1,16 @@
+function getCookie(name) {
+ let cookieValue = null;
+ if (document.cookie && document.cookie !== '') {
+ const cookies = document.cookie.split(';');
+ for (let i = 0; i < cookies.length; i++) {
+ const cookie = cookies[i].trim();
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) === (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
+}
+const csrftoken = getCookie('csrftoken');
\ No newline at end of file
diff --git a/shimatta_kenkyusho/static/js/kenyusho-api-v1.js b/shimatta_kenkyusho/static/js/kenyusho-api-v1.js
new file mode 100644
index 0000000..cf4c4dc
--- /dev/null
+++ b/shimatta_kenkyusho/static/js/kenyusho-api-v1.js
@@ -0,0 +1,30 @@
+function api_ajax_request(method, url, onSuccess, onFail, sendData) {
+ var xmlhttp = new XMLHttpRequest();
+ // csrftoken is set globally
+ xmlhttp.onreadystatechange = function() {
+ if (xmlhttp.readyState == XMLHttpRequest.DONE) {
+ if (xmlhttp.status == 200) {
+ //console.log("Success:"+xmlhttp.responseText);
+ onSuccess(method, url, JSON.parse(xmlhttp.responseText));
+ } else {
+ onFail(method, url, xmlhttp.status, xmlhttp.responseText);
+ }
+ }
+ }
+
+ xmlhttp.open(method, url);
+ xmlhttp.setRequestHeader('X-CSRFToken', csrftoken);
+ if (sendData === null || typeof sendData === 'undefined') {
+ xmlhttp.send();
+ } else {
+ xmlhttp.send(JSON.stringify(sendData));
+ }
+}
+
+function api_ajax_request_without_send(method, url, onSuccess, onFail) {
+ return api_ajax_request(method, url, onSuccess, onFail, null);
+}
+
+function api_search_user(search, onSuccess, onFail) {
+ return api_ajax_request_without_send('GET', api_urls_v1['user-list']+`?search=${encodeURIComponent(search)}`, function(method, url, json) {onSuccess(json);}, onFail);
+}
\ No newline at end of file
diff --git a/shimatta_kenkyusho/templates/base.html b/shimatta_kenkyusho/templates/base.html
index c75c865..9cde1df 100644
--- a/shimatta_kenkyusho/templates/base.html
+++ b/shimatta_kenkyusho/templates/base.html
@@ -54,7 +54,20 @@
{% endblock content %}
-
+
+
+
+
{% block custom_scripts %}
{% endblock custom_scripts %}