from django.shortcuts import redirect from rest_framework.views import APIView from rest_framework.response import Response #from rest_framework.permissions import IsAuthenticated # <-- Here import json from standards.models import Standards from rest_framework import serializers from .serializers import StandardsSerializer, ChatRoomSerializer, ChatRoomFullSerializer from rest_framework.decorators import api_view, permission_classes from rest_framework import status from rest_framework.authentication import SessionAuthentication, BasicAuthentication, TokenAuthentication from rest_framework.decorators import authentication_classes from chat.models import ChatRoom, ChatMessage from django.http import HttpResponseRedirect,HttpResponse, JsonResponse from django.contrib.sessions.models import Session from timemanagement.models import Absence from django.conf import settings from digitaleagentur.utils import * class GetUserId(APIView): #permission_classes = (IsAuthenticated,) # <-- And here def post(self, request): return Response({"userid" : self.request.user.pk}) @api_view(['POST', ]) #@permission_classes((IsAuthenticated,)) def getStandardList(request): standards = Standards.objects.filter(agency=request.user.profile.agency) ser = StandardsSerializer(standards, many=True) return Response(ser.data, status=status.HTTP_200_OK) @api_view(['POST', ]) #@permission_classes((IsAuthenticated,)) def getSingleStandard(request, pk): standard = Standards.objects.get(pk=int(pk)) ser = StandardsSerializer(standard, many=False) return Response(ser.data, status=status.HTTP_200_OK) @api_view(['POST', ]) #@permission_classes((IsAuthenticated,)) def logoutByToken(request): print(request) request.user.auth_token.delete() return Response(status=status.HTTP_200_OK) @api_view(['POST', ]) #@permission_classes((IsAuthenticated,)) def getchatrooms(request): chatrooms = ChatRoom.objects.filter(creator=request.user) | ChatRoom.objects.filter(chatmember_single=request.user) chatrooms_ser = ChatRoomSerializer(chatrooms, many=True) return Response(chatrooms_ser.data, status=status.HTTP_200_OK) @api_view(['POST', ]) #@permission_classes((IsAuthenticated,)) def getsinglechat(request, pk): chatroom = ChatRoom.objects.get(pk=pk) if chatroom.creator == request.user or chatroom.chatmember_single == request.user or (request.user in chatroom.chatmembers.all()): chatroom_ser = ChatRoomFullSerializer(chatroom, many=False) return Response(chatroom_ser.data, status=status.HTTP_200_OK) else: return Response(status=status.HTTP_403_FORBIDDEN) @api_view(['POST', ]) #@permission_classes((IsAuthenticated,)) def savenewchatmessage(request): room = ChatRoom.objects.get(pk=request.POST["room"]) if(request.user == room.creator or request.user == room.chatmember_single): newmessage = ChatMessage(room=room, author=request.user, content=request.POST["message"]) newmessage.save() room.messages.add(newmessage) room.save() return Response(status=status.HTTP_200_OK) else: return Response(status=status.HTTP_403_FORBIDDEN) # IMPORTED MODELS FOR MIGRATION from users.models import Agency from django.contrib.auth.models import User @api_view(['GET', ]) def migrateAgencyUsers(request, pk): datapackage = {} Ag = Agency.objects.get(pk=pk) for user in User.objects.filter(profile__agency=Ag): if(len(user.email) > 0 and len(user.first_name) > 0 and len(user.last_name) > 0): datapackage.update({str(user.pk) : {"userid" : user.email, "displayname" : user.first_name + " " + user.last_name}}) return JsonResponse(datapackage) @api_view(['GET', ]) def apilogout(request, uid): print("LOGOUT: " + str(uid)) user = User.objects.get(username=uid) [s.delete() for s in Session.objects.all() if s.get_decoded().get('_auth_user_hash') == user.get_session_auth_hash()] return JsonResponse({'res' : 'ok'}) # This function change the Username of a user, when it was changed in NextCloud! Works only for the own user :) ! import xmltodict, json, requests @api_view(['GET'], ) def userChangedInNc(request, uid, sid): user = User.objects.get(username=uid) if(user.is_authenticated and getNCLoggedUserBySession(sid) == uid): nc_login_headers = {'Authorization' : 'Bearer ' + sid} r = requests.get(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/users/" + uid, headers=nc_login_headers) xpars = xmltodict.parse(r.text) js = json.dumps(xpars) final_json = json.loads(js) new_displayname = final_json['ocs']['data']['displayname'].split(" ") user.first_name = new_displayname[0] new_last_name = "" new_displayname.pop(0) for ele in new_displayname: new_last_name += " " + ele user.last_name = new_last_name user.save() return JsonResponse({"status" : "ok!"}) return JsonResponse({"status" : "NO AUTH"}) from requests.auth import HTTPBasicAuth @api_view(['POST'], ) def NCAddGroup(request): if request.method == "POST": data = { "groupid": "Unsere Spatengruppe" } headers = { 'Accept' : 'application/json', 'Access-Control-Allow-Headers' : 'OCS-APIRequest', 'OCS-APIRequest' : 'true' } r = requests.post(settings.NEXTCLOUD_URL + "ocs/v1.php/cloud/groups", data=data, headers=headers, auth=(settings.NEXTCLOUD_USER_API, settings.NEXTCLOUD_PW_API)) print(r.text) return JsonResponse({"status" : "NO AUTH"})