diff --git a/apps/users/api.py b/apps/users/api.py index 6fb1fe7c5..d557d7d1b 100644 --- a/apps/users/api.py +++ b/apps/users/api.py @@ -3,7 +3,10 @@ import logging -from rest_framework import generics +from django.shortcuts import get_object_or_404 + +from rest_framework import generics, status +from rest_framework.response import Response from rest_framework_bulk import ListBulkCreateUpdateDestroyAPIView from .serializers import UserSerializer, UserGroupSerializer, UserAttributeSerializer, UserGroupEditSerializer, \ @@ -27,11 +30,6 @@ class UserDetailDeleteUpdateApi(generics.RetrieveUpdateDestroyAPIView): print(self.request.data) return super(UserDetailDeleteUpdateApi, self).delete(request, *args, **kwargs) - # def get(self, request, *args, **kwargs): - # print("hello world") - # print(request.user) - # return super(UserDetailDeleteUpdateApi, self).get(request, *args, **kwargs) - class UserGroupListAddApi(generics.ListCreateAPIView): queryset = UserGroup.objects.all() @@ -111,3 +109,18 @@ class UserBulkUpdateApi(ListBulkCreateUpdateDestroyAPIView): if isinstance(ids, list): queryset = queryset.filter(id__in=ids) return queryset + + +class DeleteUserFromGroupApi(generics.DestroyAPIView): + queryset = UserGroup.objects.all() + serializer_class = GroupEditSerializer + + def destroy(self, request, *args, **kwargs): + group = self.get_object() + self.perform_destroy(group, **kwargs) + return Response(status=status.HTTP_204_NO_CONTENT) + + def perform_destroy(self, instance, **kwargs): + user_id = kwargs.get('uid') + user = get_object_or_404(User, id=user_id) + instance.users.remove(user) diff --git a/apps/users/models.py b/apps/users/models.py index b6d40dfb3..229b70ed8 100644 --- a/apps/users/models.py +++ b/apps/users/models.py @@ -4,14 +4,14 @@ from __future__ import unicode_literals from django.conf import settings from django.contrib.auth.hashers import make_password -from django.utils import timezone -from django.db import models from django.contrib.auth.models import AbstractUser +from django.core import signing +from django.db import models, IntegrityError from django.db.models.signals import post_save from django.dispatch import receiver -from django.db import IntegrityError from django.utils.translation import ugettext_lazy as _ -from django.core import signing +from django.utils import timezone +from django.shortcuts import reverse from rest_framework.authtoken.models import Token @@ -102,6 +102,9 @@ class User(AbstractUser): def password_raw(self, password_raw_): self.set_password(password_raw_) + def get_absolute_url(self): + return reverse('users:user-detail', args=(self.id,)) + @property def is_expired(self): if self.date_expired > timezone.now(): diff --git a/apps/users/templates/users/user_group_detail.html b/apps/users/templates/users/user_group_detail.html index 5c6fb6639..3b78a61c5 100644 --- a/apps/users/templates/users/user_group_detail.html +++ b/apps/users/templates/users/user_group_detail.html @@ -7,6 +7,18 @@ + {% endblock %} {% block content %}