Added jabber broadcast,

This commit is contained in:
Raynaldo Rivera
2014-10-19 02:30:08 -07:00
parent 190947f18d
commit 7628941a2a
9 changed files with 116 additions and 4 deletions

11
services/forms.py Normal file
View File

@@ -0,0 +1,11 @@
from django import forms
from django.contrib.auth.models import Group
class JabberBroadcastForm(forms.Form):
allchoices = []
allchoices.append(('all', 'all'))
for group in Group.objects.all():
allchoices.append((str(group.name), str(group.name)))
group = forms.ChoiceField(choices=allchoices, widget=forms.Select)
message = forms.CharField(widget = forms.Textarea)

View File

@@ -1,9 +1,15 @@
import os
import time
import xmpp
from django.contrib.auth.models import User
from django.contrib.auth.models import Group
from django.conf import settings
from openfire import exception
from openfire import UserService
from urlparse import urlparse
from authentication.managers import AuthServicesInfoManager
from eveonline.managers import EveManager
class JabberManager:
@@ -77,4 +83,36 @@ class JabberManager:
@staticmethod
def delete_user_groups(username, groups):
api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
api.delete_group(username,groups)
api.delete_group(username,groups)
@staticmethod
def send_broadcast_message(group_name, message):
# create to address
client = xmpp.Client(settings.JABBER_URL)
client.connect(server=(settings.JABBER_SERVER, settings.JABBER_PORT))
client.auth(settings.BROADCAST_USER, settings.BROADCAST_USER_PASSWORD, 'broadcast')
if group_name != 'all':
group = Group.objects.get(name=group_name)
for user in group.user_set.all():
auth_info = AuthServicesInfoManager.get_auth_service_info(user)
if auth_info:
if auth_info.jabber_username != "":
to_address = auth_info.jabber_username+'@'+settings.JABBER_URL
message = xmpp.Message(to_address, message)
message.setAttr('type', 'chat')
client.send(message)
client.Process(1)
else:
for user in User.objects.all():
auth_info = AuthServicesInfoManager.get_auth_service_info(user)
if auth_info:
if auth_info.jabber_username != "":
to_address = auth_info.jabber_username+'@'+settings.JABBER_URL
message = xmpp.Message(to_address, message)
message.setAttr('type', 'chat')
client.send(message)
client.Process(1)
print to_address
client.disconnect()

View File

@@ -16,6 +16,24 @@ from celerytask.tasks import update_jabber_groups
from celerytask.tasks import update_mumble_groups
from celerytask.tasks import update_forum_groups
from forms import JabberBroadcastForm
@login_required
@permission_required('auth.jabber_broadcast')
def jabber_broadcast_view(request):
success = False
if request.method == 'POST':
form = JabberBroadcastForm(request.POST)
if form.is_valid():
JabberManager.send_broadcast_message(form.cleaned_data['group'], form.cleaned_data['message'])
success = True
else:
form = JabberBroadcastForm()
context = {'form': form, 'success': success}
return render_to_response('registered/jabberbroadcast.html', context, context_instance=RequestContext(request))
@login_required
def services_view(request):
@@ -23,6 +41,7 @@ def services_view(request):
return render_to_response('registered/services.html', {'authinfo': authinfo}, context_instance=RequestContext(request))
@login_required
@permission_required('auth.alliance_member')
def activate_forum(request):