mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 22:10:16 +02:00
Permission 'jabber_broadcast_all' to restrict groups
- without, can only broadcast to own groups - with, can broadcast to all and every group Updated form to check request user for permission and groups when generating form For #159
This commit is contained in:
parent
2c6ca5f273
commit
b31dcb7ac0
@ -1,13 +1,20 @@
|
|||||||
from django import forms
|
from django import forms
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
|
from util import check_if_user_has_permission
|
||||||
|
|
||||||
|
|
||||||
class JabberBroadcastForm(forms.Form):
|
class JabberBroadcastForm(forms.Form):
|
||||||
|
def __init__(self, user, *args, **kwargs):
|
||||||
|
super(JabberBroadcastForm, self).__init__(*args, **kwargs)
|
||||||
allchoices = []
|
allchoices = []
|
||||||
|
if check_if_user_has_permission(user, 'jabber_broadcast_all'):
|
||||||
allchoices.append(('all', 'all'))
|
allchoices.append(('all', 'all'))
|
||||||
for group in Group.objects.all():
|
for g in Group.objects.all():
|
||||||
allchoices.append((str(group.name), str(group.name)))
|
allchoices.append((str(g.name), str(g.name)))
|
||||||
group = forms.ChoiceField(choices=allchoices, widget=forms.Select)
|
else:
|
||||||
|
for g in user.groups.all():
|
||||||
|
allchoices.append((str(g.name), str(g.name)))
|
||||||
|
self.fields['group'] = forms.ChoiceField(choices=allchoices, widget=forms.Select)
|
||||||
message = forms.CharField(widget=forms.Textarea)
|
message = forms.CharField(widget=forms.Textarea)
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ from django.shortcuts import render_to_response
|
|||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.auth.decorators import permission_required
|
from django.contrib.auth.decorators import permission_required
|
||||||
from django.contrib.auth.decorators import user_passes_test
|
from django.contrib.auth.decorators import user_passes_test
|
||||||
|
from django.contrib.auth.models import Group
|
||||||
|
|
||||||
from eveonline.models import EveCharacter
|
from eveonline.models import EveCharacter
|
||||||
from authentication.models import AuthServicesInfo
|
from authentication.models import AuthServicesInfo
|
||||||
@ -90,8 +91,8 @@ def jabber_broadcast_view(request):
|
|||||||
success = True
|
success = True
|
||||||
logger.info("Sent jabber broadcast on behalf of user %s" % request.user)
|
logger.info("Sent jabber broadcast on behalf of user %s" % request.user)
|
||||||
else:
|
else:
|
||||||
form = JabberBroadcastForm()
|
form = JabberBroadcastForm(request.user)
|
||||||
logger.debug("Returning blank form to user %s" % request.user)
|
logger.debug("Generated broadcast form for user %s containing %s groups" % (request.user, len(form.fields['group'].choices)))
|
||||||
|
|
||||||
context = {'form': form, 'success': success}
|
context = {'form': form, 'success': success}
|
||||||
return render_to_response('registered/jabberbroadcast.html', context, context_instance=RequestContext(request))
|
return render_to_response('registered/jabberbroadcast.html', context, context_instance=RequestContext(request))
|
||||||
|
@ -15,6 +15,7 @@ def bootstrap_permissions():
|
|||||||
Permission.objects.get_or_create(codename="member", content_type=ct, name="member")
|
Permission.objects.get_or_create(codename="member", content_type=ct, name="member")
|
||||||
Permission.objects.get_or_create(codename="group_management", content_type=ct, name="group_management")
|
Permission.objects.get_or_create(codename="group_management", content_type=ct, name="group_management")
|
||||||
Permission.objects.get_or_create(codename="jabber_broadcast", content_type=ct, name="jabber_broadcast")
|
Permission.objects.get_or_create(codename="jabber_broadcast", content_type=ct, name="jabber_broadcast")
|
||||||
|
Permission.objects.get_or_create(codename="jabber_broadcast_all", content_type=ct, name="jabber_broadcast_all")
|
||||||
Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources")
|
Permission.objects.get_or_create(codename="human_resources", content_type=ct, name="human_resources")
|
||||||
Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member")
|
Permission.objects.get_or_create(codename="blue_member", content_type=ct, name="blue_member")
|
||||||
Permission.objects.get_or_create(codename="corp_stats", content_type=ct, name="corp_stats")
|
Permission.objects.get_or_create(codename="corp_stats", content_type=ct, name="corp_stats")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user