Added IPBoard support

This commit is contained in:
Raynaldo Rivera
2014-11-17 08:40:25 -07:00
parent c131798e24
commit 1ed41ae043
27 changed files with 1338 additions and 530 deletions

View File

@@ -0,0 +1,125 @@
import os
import xmlrpclib
from hashlib import md5
from django.conf import settings
class IPBoardManager:
def __init__(self):
pass
@staticmethod
def __santatize_username(username):
sanatized = username.replace(" ", "_")
sanatized = sanatized.replace("'", "")
return sanatized.lower()
@staticmethod
def __generate_random_pass():
return os.urandom(8).encode('hex')
@staticmethod
def exec_xmlrpc(func, **kwargs):
""" Send a XMLRPC request """
server = xmlrpclib.Server(settings.IPBOARD_ENDPOINT, verbose=False)
params = {}
for i in kwargs:
params[i] = kwargs[i]
params['api_key'] = settings.IPBOARD_APIKEY
params['api_module'] = settings.IPBOARD_APIMODULE
print params
return getattr(server, func)(params)
@staticmethod
def add_user(username, email):
""" Add user to service """
sanatized = str(IPBoardManager.__santatize_username(username))
plain_password = IPBoardManager.__generate_random_pass()
password = md5(plain_password).hexdigest()
ret = IPBoardManager.exec_xmlrpc('createUser', username=sanatized, email=str(email), display_name=sanatized, md5_passwordHash=password)
return sanatized, plain_password
@staticmethod
def delete_user(username):
""" Delete user """
ret = IPBoardManager.exec_xmlrpc('deleteUser', username=username)
return username
@staticmethod
def disable_user(username):
""" Disable user """
ret = IPBoardManager.exec_xmlrpc('disableUser', username=username)
return username
@staticmethod
def update_user(username, email, password):
""" Add user to service """
password = md5(password).hexdigest()
ret = IPBoardManager.exec_xmlrpc('updateUser', username=username, email=email, md5_passwordHash=password)
return username
@staticmethod
def get_all_groups():
groups = []
ret = IPBoardManager.exec_xmlrpc('getAllGroups')
for group in ret:
groups.append(group["g_title"])
return groups
@staticmethod
def get_user_groups(username):
groups = []
ret = IPBoardManager.exec_xmlrpc('getUserGroups', username=username)
for group in ret:
groups.append(group["g_title"])
return groups
@staticmethod
def add_group(group):
ret = IPBoardManager.exec_xmlrpc('addGroup', group=group)
return ret
@staticmethod
def add_user_to_group(username, group):
ret = IPBoardManager.exec_xmlrpc('addUserToGroup', username=username, group=group)
return ret
@staticmethod
def remove_user_from_group(username, group):
ret = IPBoardManager.exec_xmlrpc('removeUserFromGroup', username=username, group=group)
return ret
@staticmethod
def help_me():
"Random help me"
ret = IPBoardManager.exec_xmlrpc('helpMe')
return ret
@staticmethod
def update_groups(username, groups):
forum_groups = IPBoardManager.get_all_groups()
user_groups = set(IPBoardManager.get_user_groups(username))
act_groups = set([g.replace(' ', '-') for g in groups])
addgroups = act_groups - user_groups
remgroups = user_groups - act_groups
print addgroups
print remgroups
for g in addgroups:
if not g in forum_groups:
IPBoardManager.add_group(g)
print username
print g
IPBoardManager.add_user_to_group(username, g)
for g in remgroups:
IPBoardManager.remove_user_from_group(username, g)
@staticmethod
def update_user_password(username, email):
plain_password = IPBoardManager.__generate_random_pass()
IPBoardManager.update_user(username, email, plain_password)
return plain_password

View File

@@ -11,7 +11,7 @@ from openfire import UserService
from authentication.managers import AuthServicesInfoManager
class JabberManager:
class OpenfireManager:
def __init__(self):
pass
@@ -35,8 +35,8 @@ class JabberManager:
def add_user(username):
try:
sanatized_username = JabberManager.__santatize_username(username)
password = JabberManager.__generate_random_pass()
sanatized_username = OpenfireManager.__santatize_username(username)
password = OpenfireManager.__generate_random_pass()
api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
api.add_user(sanatized_username, password)
@@ -68,7 +68,7 @@ class JabberManager:
@staticmethod
def update_user_pass(username):
try:
password = JabberManager.__generate_random_pass()
password = OpenfireManager.__generate_random_pass()
api = UserService(settings.OPENFIRE_ADDRESS, settings.OPENFIRE_SECRET_KEY)
api.update_user(username, password)
return password

View File

@@ -6,7 +6,7 @@ from passlib.apps import phpbb3_context
from django.db import connections
class ForumManager:
class Phpbb3Manager:
SQL_ADD_USER = r"INSERT INTO phpbb_users (username, username_clean, " \
r"user_password, user_email, group_id, user_regdate, user_permissions, " \
r"user_sig, user_occ, user_interests) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
@@ -52,7 +52,7 @@ class ForumManager:
@staticmethod
def __get_group_id(groupname):
cursor = connections['phpbb3'].cursor()
cursor.execute(ForumManager.SQL_GET_GROUP_ID, [groupname])
cursor.execute(Phpbb3Manager.SQL_GET_GROUP_ID, [groupname])
row = cursor.fetchone()
return row[0]
@@ -60,14 +60,14 @@ class ForumManager:
@staticmethod
def __get_user_id(username):
cursor = connections['phpbb3'].cursor()
cursor.execute(ForumManager.SQL_USER_ID_FROM_USERNAME, [username])
cursor.execute(Phpbb3Manager.SQL_USER_ID_FROM_USERNAME, [username])
row = cursor.fetchone()
return row[0]
@staticmethod
def __get_all_groups():
cursor = connections['phpbb3'].cursor()
cursor.execute(ForumManager.SQL_GET_ALL_GROUPS)
cursor.execute(Phpbb3Manager.SQL_GET_ALL_GROUPS)
rows = cursor.fetchall()
out = {}
for row in rows:
@@ -78,7 +78,7 @@ class ForumManager:
@staticmethod
def __get_user_groups(userid):
cursor = connections['phpbb3'].cursor()
cursor.execute(ForumManager.SQL_GET_USER_GROUPS, [userid])
cursor.execute(Phpbb3Manager.SQL_GET_USER_GROUPS, [userid])
return [row[0] for row in cursor.fetchall()]
@staticmethod
@@ -90,37 +90,37 @@ class ForumManager:
@staticmethod
def __create_group(groupname):
cursor = connections['phpbb3'].cursor()
cursor.execute(ForumManager.SQL_ADD_GROUP, [groupname, groupname])
return ForumManager.__get_group_id(groupname)
cursor.execute(Phpbb3Manager.SQL_ADD_GROUP, [groupname, groupname])
return Phpbb3Manager.__get_group_id(groupname)
@staticmethod
def __add_user_to_group(userid, groupid):
cursor = connections['phpbb3'].cursor()
cursor.execute(ForumManager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
cursor.execute(Phpbb3Manager.SQL_ADD_USER_GROUP, [groupid, userid, 0])
@staticmethod
def __remove_user_from_group(userid, groupid):
cursor = connections['phpbb3'].cursor()
cursor.execute(ForumManager.SQL_REMOVE_USER_GROUP, [userid, groupid])
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
@staticmethod
def add_user(username, email, groups):
cursor = connections['phpbb3'].cursor()
username_clean = ForumManager.__santatize_username(username)
password = ForumManager.__generate_random_pass()
pwhash = ForumManager.__gen_hash(password)
username_clean = Phpbb3Manager.__santatize_username(username)
password = Phpbb3Manager.__generate_random_pass()
pwhash = Phpbb3Manager.__gen_hash(password)
# check if the username was simply revoked
if ForumManager.check_user(username_clean):
ForumManager.__update_user_info(username_clean, email, pwhash)
if Phpbb3Manager.check_user(username_clean):
Phpbb3Manager.__update_user_info(username_clean, email, pwhash)
else:
try:
cursor.execute(ForumManager.SQL_ADD_USER, [username_clean, username_clean, pwhash,
email, 2, ForumManager.__get_current_utc_date(),
cursor.execute(Phpbb3Manager.SQL_ADD_USER, [username_clean, username_clean, pwhash,
email, 2, Phpbb3Manager.__get_current_utc_date(),
"", "", "", ""])
ForumManager.update_groups(username_clean, groups)
Phpbb3Manager.update_groups(username_clean, groups)
except:
pass
@@ -130,11 +130,11 @@ class ForumManager:
def disable_user(username):
cursor = connections['phpbb3'].cursor()
password = ForumManager.__gen_hash(ForumManager.__generate_random_pass())
password = Phpbb3Manager.__gen_hash(Phpbb3Manager.__generate_random_pass())
revoke_email = "revoked@the99eve.com"
try:
pwhash = ForumManager.__gen_hash(password)
cursor.execute(ForumManager.SQL_DIS_USER, [revoke_email, pwhash, username])
pwhash = Phpbb3Manager.__gen_hash(password)
cursor.execute(Phpbb3Manager.SQL_DIS_USER, [revoke_email, pwhash, username])
return True
except TypeError as e:
print e
@@ -144,16 +144,16 @@ class ForumManager:
def delete_user(username):
cursor = connections['phpbb3'].cursor()
if ForumManager.check_user(username):
cursor.execute(ForumManager.SQL_DEL_USER, [username])
if Phpbb3Manager.check_user(username):
cursor.execute(Phpbb3Manager.SQL_DEL_USER, [username])
return True
return False
@staticmethod
def update_groups(username, groups):
userid = ForumManager.__get_user_id(username)
forum_groups = ForumManager.__get_all_groups()
user_groups = set(ForumManager.__get_user_groups(userid))
userid = Phpbb3Manager.__get_user_id(username)
forum_groups = Phpbb3Manager.__get_all_groups()
user_groups = set(Phpbb3Manager.__get_user_groups(userid))
act_groups = set([g.replace(' ', '-') for g in groups])
addgroups = act_groups - user_groups
remgroups = user_groups - act_groups
@@ -162,28 +162,28 @@ class ForumManager:
print remgroups
for g in addgroups:
if not g in forum_groups:
forum_groups[g] = ForumManager.__create_group(g)
ForumManager.__add_user_to_group(userid, forum_groups[g])
forum_groups[g] = Phpbb3Manager.__create_group(g)
Phpbb3Manager.__add_user_to_group(userid, forum_groups[g])
for g in remgroups:
ForumManager.__remove_user_from_group(userid, forum_groups[g])
Phpbb3Manager.__remove_user_from_group(userid, forum_groups[g])
@staticmethod
def remove_group(username, group):
cursor = connections['phpbb3'].cursor()
userid = ForumManager.__get_user_id(username)
groupid = ForumManager.__get_group_id(group)
userid = Phpbb3Manager.__get_user_id(username)
groupid = Phpbb3Manager.__get_group_id(group)
if userid:
if groupid:
cursor.execute(ForumManager.SQL_REMOVE_USER_GROUP, [userid, groupid])
cursor.execute(Phpbb3Manager.SQL_REMOVE_USER_GROUP, [userid, groupid])
@staticmethod
def check_user(username):
cursor = connections['phpbb3'].cursor()
""" Check if the username exists """
cursor.execute(ForumManager.SQL_USER_ID_FROM_USERNAME, [ForumManager.__santatize_username(username)])
cursor.execute(Phpbb3Manager.SQL_USER_ID_FROM_USERNAME, [Phpbb3Manager.__santatize_username(username)])
row = cursor.fetchone()
if row:
return True
@@ -192,10 +192,10 @@ class ForumManager:
@staticmethod
def update_user_password(username):
cursor = connections['phpbb3'].cursor()
password = ForumManager.__generate_random_pass()
if ForumManager.check_user(username):
pwhash = ForumManager.__gen_hash(password)
cursor.execute(ForumManager.SQL_UPDATE_USER_PASSWORD, [pwhash, username])
password = Phpbb3Manager.__generate_random_pass()
if Phpbb3Manager.check_user(username):
pwhash = Phpbb3Manager.__gen_hash(password)
cursor.execute(Phpbb3Manager.SQL_UPDATE_USER_PASSWORD, [pwhash, username])
return password
return ""
@@ -204,6 +204,6 @@ class ForumManager:
def __update_user_info(username, email, password):
cursor = connections['phpbb3'].cursor()
try:
cursor.execute(ForumManager.SQL_DIS_USER, [email, password, username])
cursor.execute(Phpbb3Manager.SQL_DIS_USER, [email, password, username])
except:
pass

192
services/views.py Normal file → Executable file
View File

@@ -4,17 +4,21 @@ from django.shortcuts import render_to_response
from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import permission_required
from managers.jabber_manager import JabberManager
from managers.forum_manager import ForumManager
from managers.openfire_manager import OpenfireManager
from managers.phpbb3_manager import Phpbb3Manager
from managers.mumble_manager import MumbleManager
from managers.ipboard_manager import IPBoardManager
from authentication.managers import AuthServicesInfoManager
from eveonline.managers import EveManager
from celerytask.tasks import update_jabber_groups
from celerytask.tasks import update_mumble_groups
from celerytask.tasks import update_forum_groups
from celerytask.tasks import update_ipboard_groups
from forms import JabberBroadcastForm
from forms import FleetFormatterForm
from django.contrib.auth.decorators import user_passes_test
from util import check_if_user_has_permission
@login_required
def fleet_formatter_view(request):
@@ -49,7 +53,7 @@ def jabber_broadcast_view(request):
if request.method == 'POST':
form = JabberBroadcastForm(request.POST)
if form.is_valid():
JabberManager.send_broadcast_message(form.cleaned_data['group'], form.cleaned_data['message'])
OpenfireManager.send_broadcast_message(form.cleaned_data['group'], form.cleaned_data['message'])
success = True
else:
form = JabberBroadcastForm()
@@ -66,13 +70,17 @@ def services_view(request):
context_instance=RequestContext(request))
def service_blue_alliance_test(user):
return check_if_user_has_permission(user, 'alliance_member') or check_if_user_has_permission(user, 'blue_member')
@login_required
@permission_required('auth.alliance_member')
@user_passes_test(service_blue_alliance_test)
def activate_forum(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
# Valid now we get the main characters
character = EveManager.get_character_by_id(authinfo.main_char_id)
result = ForumManager.add_user(character.character_name, request.user.email, ['REGISTERED'])
result = Phpbb3Manager.add_user(character.character_name, request.user.email, ['REGISTERED'])
# if empty we failed
if result[0] != "":
AuthServicesInfoManager.update_user_forum_info(result[0], result[1], request.user)
@@ -82,74 +90,73 @@ def activate_forum(request):
@login_required
@permission_required('auth.blue_member')
def activate_blue_forum(request):
@user_passes_test(service_blue_alliance_test)
def deactivate_forum(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = Phpbb3Manager.disable_user(authinfo.forum_username)
# false we failed
if result:
AuthServicesInfoManager.update_user_forum_info("", "", request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@user_passes_test(service_blue_alliance_test)
def reset_forum_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = Phpbb3Manager.update_user_password(authinfo.forum_username)
# false we failed
if result != "":
AuthServicesInfoManager.update_user_forum_info(authinfo.forum_username, result, request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@user_passes_test(service_blue_alliance_test)
def activate_ipboard_forum(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
# Valid now we get the main characters
character = EveManager.get_character_by_id(authinfo.main_char_id)
result = ForumManager.add_user(character.character_name, request.user.email, ['REGISTERED'])
# if empty we failed
result = IPBoardManager.add_user(character.character_name, request.user.email)
if result[0] != "":
AuthServicesInfoManager.update_user_forum_info(result[0], result[1], request.user)
update_forum_groups(request.user)
AuthServicesInfoManager.update_user_ipboard_info(result[0], result[1], request.user)
update_ipboard_groups(request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.alliance_member')
def deactivate_forum(request):
@user_passes_test(service_blue_alliance_test)
def deactivate_ipboard_forum(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = ForumManager.disable_user(authinfo.forum_username)
result = IPBoardManager.disable_user(authinfo.ipboard_username)
# false we failed
if result:
AuthServicesInfoManager.update_user_forum_info("", "", request.user)
AuthServicesInfoManager.update_user_ipboard_info("", "", request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.blue_member')
def deactivate_blue_forum(request):
@user_passes_test(service_blue_alliance_test)
def reset_ipboard_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = ForumManager.disable_user(authinfo.forum_username)
# false we failed
if result:
AuthServicesInfoManager.update_user_forum_info("", "", request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.alliance_member')
def reset_forum_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = ForumManager.update_user_password(authinfo.forum_username)
# false we failed
result = IPBoardManager.update_user_password(authinfo.ipboard_username, request.user.email)
if result != "":
AuthServicesInfoManager.update_user_forum_info(authinfo.forum_username, result, request.user)
AuthServicesInfoManager.update_user_ipboard_info(authinfo.ipboard_username, result, request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.blue_member')
def reset_blue_forum_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = ForumManager.update_user_password(authinfo.forum_username)
# false we failed
if result != "":
AuthServicesInfoManager.update_user_forum_info(authinfo.forum_username, result, request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.alliance_member')
@user_passes_test(service_blue_alliance_test)
def activate_jabber(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
character = EveManager.get_character_by_id(authinfo.main_char_id)
info = JabberManager.add_user(character.character_name)
info = OpenfireManager.add_user(character.character_name)
# If our username is blank means we already had a user
if info[0] is not "":
AuthServicesInfoManager.update_user_jabber_info(info[0], info[1], request.user)
@@ -159,24 +166,10 @@ def activate_jabber(request):
@login_required
@permission_required('auth.blue_member')
def activate_blue_jabber(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
character = EveManager.get_character_by_id(authinfo.main_char_id)
info = JabberManager.add_user(character.character_name)
# If our username is blank means we already had a user
if info[0] is not "":
AuthServicesInfoManager.update_user_jabber_info(info[0], info[1], request.user)
update_jabber_groups(request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.alliance_member')
@user_passes_test(service_blue_alliance_test)
def deactivate_jabber(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = JabberManager.delete_user(authinfo.jabber_username)
result = OpenfireManager.delete_user(authinfo.jabber_username)
# If our username is blank means we failed
if result:
AuthServicesInfoManager.update_user_jabber_info("", "", request.user)
@@ -185,22 +178,10 @@ def deactivate_jabber(request):
@login_required
@permission_required('auth.blue_member')
def deactivate_blue_jabber(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = JabberManager.delete_user(authinfo.jabber_username)
# If our username is blank means we failed
if result:
AuthServicesInfoManager.update_user_jabber_info("", "", request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.alliance_member')
@user_passes_test(service_blue_alliance_test)
def reset_jabber_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = JabberManager.update_user_pass(authinfo.jabber_username)
result = OpenfireManager.update_user_pass(authinfo.jabber_username)
# If our username is blank means we failed
if result != "":
AuthServicesInfoManager.update_user_jabber_info(authinfo.jabber_username, result, request.user)
@@ -209,23 +190,14 @@ def reset_jabber_password(request):
@login_required
@permission_required('auth.blue_member')
def reset_blue_jabber_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = JabberManager.update_user_pass(authinfo.jabber_username)
# If our username is blank means we failed
if result != "":
AuthServicesInfoManager.update_user_jabber_info(authinfo.jabber_username, result, request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.alliance_member')
@user_passes_test(service_blue_alliance_test)
def activate_mumble(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
character = EveManager.get_character_by_id(authinfo.main_char_id)
result = MumbleManager.create_user(character.corporation_ticker, character.character_name)
if check_if_user_has_permission(request.user, "blue_member"):
result = MumbleManager.create_blue_user(character.corporation_ticker, character.character_name)
else:
result = MumbleManager.create_user(character.corporation_ticker, character.character_name)
# if its empty we failed
if result[0] is not "":
AuthServicesInfoManager.update_user_mumble_info(result[0], result[1], request.user)
@@ -235,21 +207,7 @@ def activate_mumble(request):
@login_required
@permission_required('auth.blue_member')
def activate_blue_mumble(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
character = EveManager.get_character_by_id(authinfo.main_char_id)
result = MumbleManager.create_blue_user(character.corporation_ticker, character.character_name)
# if its empty we failed
if result[0] is not "":
AuthServicesInfoManager.update_user_mumble_info(result[0], result[1], request.user)
update_mumble_groups(request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/dashboard")
@login_required
@permission_required('auth.alliance_member')
@user_passes_test(service_blue_alliance_test)
def deactivate_mumble(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = MumbleManager.delete_user(authinfo.mumble_username)
@@ -261,19 +219,7 @@ def deactivate_mumble(request):
@login_required
@permission_required('auth.blue_member')
def deactivate_blue_mumble(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = MumbleManager.delete_user(authinfo.mumble_username)
# if false we failed
if result:
AuthServicesInfoManager.update_user_mumble_info("", "", request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/")
@login_required
@permission_required('auth.alliance_member')
@user_passes_test(service_blue_alliance_test)
def reset_mumble_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = MumbleManager.update_user_password(authinfo.mumble_username)
@@ -282,15 +228,3 @@ def reset_mumble_password(request):
AuthServicesInfoManager.update_user_mumble_info(authinfo.mumble_username, result, request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/")
@login_required
@permission_required('auth.blue_member')
def reset_blue_mumble_password(request):
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
result = MumbleManager.update_user_password(authinfo.mumble_username)
# if blank we failed
if result != "":
AuthServicesInfoManager.update_user_mumble_info(authinfo.mumble_username, result, request.user)
return HttpResponseRedirect("/services/")
return HttpResponseRedirect("/")