Skip to content

Commit

Permalink
[#1398] Remove users without employment from user management
Browse files Browse the repository at this point in the history
  • Loading branch information
KasperBrandt committed Apr 7, 2015
1 parent 616274d commit 3d63c66
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
2 changes: 1 addition & 1 deletion akvo/rsr/models/organisation.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def image_path(instance, file_name):

class OrgManager(models.Manager):
def get_queryset(self):
return super(OrgManager, self).get_queryset().extra(
return self.model.QuerySet(self.model).extra(
select={
'lower_name': 'lower(name)'
}
Expand Down
19 changes: 18 additions & 1 deletion akvo/rsr/models/user.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, PermissionsMixin, Group
from django.core.mail import send_mail
from django.db import models
from django.db.models.query import QuerySet
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _

Expand All @@ -27,7 +28,6 @@ def image_path(instance, file_name):


class CustomUserManager(BaseUserManager):

def _create_user(self, username, email, password,
is_staff, is_superuser, **extra_fields):
"""
Expand All @@ -52,6 +52,15 @@ def create_user(self, username, email, password=None, **extra_fields):
def create_superuser(self, username, email, password, **extra_fields):
return self._create_user(username, email, password, True, True, **extra_fields)

def get_queryset(self):
return self.model.QuerySet(self.model)

def __getattr__(self, attr, *args):
try:
return getattr(self.__class__, attr, *args)
except AttributeError:
return getattr(self.get_queryset(), attr, *args)


class User(AbstractBaseUser, PermissionsMixin):
"""
Expand Down Expand Up @@ -100,6 +109,14 @@ class Meta:
verbose_name_plural = _('users')
ordering = ['username', ]

class QuerySet(QuerySet):
def have_employments(self):
qs = self
for user in qs:
if not user.employers.all():
qs = qs.exclude(pk=user.pk)
return qs

def __unicode__(self):
return self.username

Expand Down
10 changes: 8 additions & 2 deletions akvo/rsr/views/my_rsr.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,13 +105,19 @@ def user_management(request):
raise PermissionDenied

if user.is_support and user.is_admin:
users = get_user_model().objects.filter(is_active=True).order_by('-date_joined')
users = get_user_model().objects.filter(is_active=True)\
.order_by('-date_joined').have_employments()
org_actions = Organisation.objects.all()
else:
organisations = user.employers.approved().organisations()
users = organisations.users().exclude(pk=user.pk).order_by('-date_joined')
users = organisations.users().exclude(pk=user.pk)\
.order_by('-date_joined').have_employments()
org_actions = [org for org in organisations if user.has_perm('rsr.user_management', org)]

q = request.GET.get('q')
if q:
users = users.filter(username__icontains=q)

page = request.GET.get('page')
page, paginator, page_range = pagination(page, users, 10)

Expand Down

0 comments on commit 3d63c66

Please sign in to comment.