forked from 0x2620/pandora
new api calls: getGroups/addGroup/removeGroup
This commit is contained in:
parent
5a87d6b8dd
commit
3cdb0e23cc
3 changed files with 71 additions and 3 deletions
|
@ -230,7 +230,8 @@ class Item(models.Model):
|
||||||
if isinstance(groups, list):
|
if isinstance(groups, list):
|
||||||
groups = filter(lambda g: g.strip(), groups)
|
groups = filter(lambda g: g.strip(), groups)
|
||||||
groups = [ox.escape_html(g) for g in groups]
|
groups = [ox.escape_html(g) for g in groups]
|
||||||
self.groups.exclude(name__in=groups).delete()
|
for g in self.groups.exclude(name__in=groups):
|
||||||
|
self.groups.remove(g)
|
||||||
current_groups = [g.name for g in self.groups.all()]
|
current_groups = [g.name for g in self.groups.all()]
|
||||||
for g in filter(lambda g: g not in current_groups, groups):
|
for g in filter(lambda g: g not in current_groups, groups):
|
||||||
group, created = Group.objects.get_or_create(name=g)
|
group, created = Group.objects.get_or_create(name=g)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
import copy
|
import copy
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User, Group
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Max
|
from django.db.models import Max
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
|
|
|
@ -351,7 +351,8 @@ def editUser(request):
|
||||||
if isinstance(groups, list):
|
if isinstance(groups, list):
|
||||||
groups = filter(lambda g: g.strip(), groups)
|
groups = filter(lambda g: g.strip(), groups)
|
||||||
groups = [ox.escape_html(g) for g in groups]
|
groups = [ox.escape_html(g) for g in groups]
|
||||||
user.groups.exclude(name__in=groups).delete()
|
for g in user.groups.exclude(name__in=groups):
|
||||||
|
user.groups.remove(g)
|
||||||
current_groups = [g.name for g in user.groups.all()]
|
current_groups = [g.name for g in user.groups.all()]
|
||||||
for g in filter(lambda g: g not in current_groups, groups):
|
for g in filter(lambda g: g not in current_groups, groups):
|
||||||
group, created = Group.objects.get_or_create(name=g)
|
group, created = Group.objects.get_or_create(name=g)
|
||||||
|
@ -814,3 +815,69 @@ def statistics(request):
|
||||||
response['data'] = stats
|
response['data'] = stats
|
||||||
return render_to_json_response(response)
|
return render_to_json_response(response)
|
||||||
actions.register(statistics, cache=False)
|
actions.register(statistics, cache=False)
|
||||||
|
|
||||||
|
@capability_required_json('canManageUsers')
|
||||||
|
def getGroups(request):
|
||||||
|
'''
|
||||||
|
takes {}
|
||||||
|
returns {
|
||||||
|
groups: [
|
||||||
|
{name:, users...}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
'''
|
||||||
|
response = json_response(status=200, text='ok')
|
||||||
|
data = json.loads(request.POST['data'])
|
||||||
|
response['data']['groups'] = []
|
||||||
|
for g in Group.objects.all().order_by('name'):
|
||||||
|
response['data']['groups'].append({
|
||||||
|
'name': g.name,
|
||||||
|
'users': g.user_set.count()
|
||||||
|
})
|
||||||
|
return render_to_json_response(response)
|
||||||
|
actions.register(getGroups)
|
||||||
|
|
||||||
|
@capability_required_json('canManageUsers')
|
||||||
|
def addGroup(request):
|
||||||
|
'''
|
||||||
|
takes {
|
||||||
|
name: string
|
||||||
|
}
|
||||||
|
returns {
|
||||||
|
name: string
|
||||||
|
users: int
|
||||||
|
}
|
||||||
|
|
||||||
|
'''
|
||||||
|
response = json_response(status=200, text='ok')
|
||||||
|
data = json.loads(request.POST['data'])
|
||||||
|
g, created = Group.objects.get_or_create(name=data['name'])
|
||||||
|
response['data'] = {
|
||||||
|
'name': g.name,
|
||||||
|
'users': g.user_set.count()
|
||||||
|
}
|
||||||
|
return render_to_json_response(response)
|
||||||
|
actions.register(addGroup)
|
||||||
|
|
||||||
|
@capability_required_json('canManageUsers')
|
||||||
|
def removeGroup(request):
|
||||||
|
'''
|
||||||
|
takes {
|
||||||
|
name: string
|
||||||
|
}
|
||||||
|
returns {
|
||||||
|
}
|
||||||
|
|
||||||
|
'''
|
||||||
|
response = json_response(status=200, text='ok')
|
||||||
|
data = json.loads(request.POST['data'])
|
||||||
|
g = Group.objects.get(name=data['name'])
|
||||||
|
for i in g.items.all():
|
||||||
|
i.groups.remove(g)
|
||||||
|
for u in g.user_set.all():
|
||||||
|
u.groups.remove(g)
|
||||||
|
g.delete()
|
||||||
|
return render_to_json_response(response)
|
||||||
|
actions.register(removeGroup)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue