mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-14 23:10:15 +02:00
Move templates and fix namespacing
Move base template Refactor services urls and templates Refactor groupmanagement urls and templates Refactor notifications urls and templates
This commit is contained in:
parent
b130cc6c8e
commit
7beec38881
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
|
@ -11,7 +11,7 @@ urlpatterns = [
|
||||
url(r'^account/login/$', TemplateView.as_view(template_name='public/login.html'), name='login'),
|
||||
url(r'^account/characters/main/$', views.main_character_change, name='change_main_character'),
|
||||
url(r'^account/characters/add/$', views.add_character, name='add_character'),
|
||||
url(r'^help/$', login_required(TemplateView.as_view(template_name='registered/help.html')), name='help'),
|
||||
url(r'^help/$', login_required(TemplateView.as_view(template_name='allianceauth/help.html')), name='help'),
|
||||
url(r'^dashboard/$',
|
||||
login_required(TemplateView.as_view(template_name='authentication/dashboard.html')), name='dashboard'),
|
||||
]
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends 'registered/base.html' %}
|
||||
{% extends 'allianceauth/base.html' %}
|
||||
{% load i18n %}
|
||||
{% block title %}{% trans "Corporation Member Data" %}{% endblock %}
|
||||
{% block page_title %}{% trans "Corporation Member Data" %}{% endblock %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends 'registered/base.html' %}
|
||||
{% extends 'allianceauth/base.html' %}
|
||||
{% load i18n %}
|
||||
{% block title %}Fleet Participation{% endblock %}
|
||||
{% block page_title %}{% trans "Fleet Participation" %}{% endblock %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,6 +1,7 @@
|
||||
from django.conf.urls import url
|
||||
|
||||
from . import views
|
||||
app_name = 'fleetactivitytracking'
|
||||
|
||||
urlpatterns = [
|
||||
# FleetActivityTracking (FAT)
|
||||
@ -30,4 +31,4 @@ urlpatterns = [
|
||||
url(r'^link/$', views.fatlink_view, name='click_fatlink'),
|
||||
url(r'^link/(?P<hash>[a-zA-Z0-9]+)/(?P<fatname>[a-z0-9_-]+)/$',
|
||||
views.click_fatlink_view),
|
||||
]
|
||||
]
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<br>
|
||||
{% include 'registered/groupmanagementmenu.html' %}
|
||||
{% include 'groupmanagement/menu.html' %}
|
||||
<h3>{{ group.name }} {% trans 'Members' %}</h3>
|
||||
<div id="list" class="">
|
||||
{% if group.user_set %}
|
||||
@ -29,7 +29,7 @@
|
||||
<td class="text-center">{{ member.main_char.corporation_name }}</td>
|
||||
<td class="text-center">{{ member.main_char.alliance_name }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_group_membership_remove' group.id member.user.id %}" class="btn btn-danger"
|
||||
<a href="{% url 'groupmanagement:membership_remove' group.id member.user.id %}" class="btn btn-danger"
|
||||
title="{% trans "Remove from group" %}">
|
||||
<i class="glyphicon glyphicon-remove"></i>
|
||||
</a>
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<br>
|
||||
{% include 'registered/groupmanagementmenu.html' %}
|
||||
{% include 'groupmanagement/menu.html' %}
|
||||
<div>
|
||||
{% if groups %}
|
||||
<h3>Groups</h3>
|
||||
@ -39,7 +39,7 @@
|
||||
{{ group.num_members }}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_group_membership_list' group.id %}" class="btn btn-primary"
|
||||
<a href="{% url 'groupmanagement:membership_list' group.id %}" class="btn btn-primary"
|
||||
title="{% trans "View Members" %}">
|
||||
<i class="glyphicon glyphicon-eye-open"></i>
|
||||
</a>
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
@ -6,7 +6,7 @@
|
||||
|
||||
{% block page_title %}{% trans "Available" %}{% endblock page_title %}
|
||||
{% block extra_css %}{% endblock extra_css %}
|
||||
|
||||
url
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">{% trans "Available Groups" %}</h1>
|
||||
@ -25,7 +25,7 @@
|
||||
<td class="text-center">
|
||||
{% if g.group in user.groups.all %}
|
||||
{% if not g.request %}
|
||||
<a href="{% url 'auth_group_request_leave' g.group.id %}" class="btn btn-danger">
|
||||
<a href="{% url 'groupmanagement:request_leave' g.group.id %}" class="btn btn-danger">
|
||||
{% trans "Leave" %}
|
||||
</a>
|
||||
{% else %}
|
||||
@ -34,7 +34,7 @@
|
||||
</button>
|
||||
{% endif %}
|
||||
{% elif not g.request %}
|
||||
<a href="{% url 'auth_group_request_add' g.group.id %}" class="btn btn-success">
|
||||
<a href="{% url 'groupmanagement:request_add' g.group.id %}" class="btn btn-success">
|
||||
{% trans "Request" %}
|
||||
</a>
|
||||
{% else %}
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<br>
|
||||
{% include 'registered/groupmanagementmenu.html' %}
|
||||
{% include 'groupmanagement/menu.html' %}
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a data-toggle="tab" href="#add">{% trans "Group Add Requests" %}</a></li>
|
||||
<li><a data-toggle="tab" href="#leave">{% trans "Group Leave Requests" %}</a></li>
|
||||
@ -32,10 +32,10 @@
|
||||
<td class="text-center">{{ acceptrequest.main_char.character_name }}</td>
|
||||
<td class="text-center">{{ acceptrequest.group.name }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_group_accept_request' acceptrequest.id %}" class="btn btn-success">
|
||||
<a href="{% url 'groupmanagement:accept_request' acceptrequest.id %}" class="btn btn-success">
|
||||
{% trans "Accept" %}
|
||||
</a>
|
||||
<a href="{% url 'auth_group_reject_request' acceptrequest.id %}" class="btn btn-danger">
|
||||
<a href="{% url 'groupmanagement:reject_request' acceptrequest.id %}" class="btn btn-danger">
|
||||
{% trans "Reject" %}
|
||||
</a>
|
||||
</td>
|
||||
@ -63,10 +63,10 @@
|
||||
<td class="text-center">{{ leaverequest.main_char.character_name }}</td>
|
||||
<td class="text-center">{{ leaverequest.group.name }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_group_leave_accept_request' leaverequest.id %}" class="btn btn-success">
|
||||
<a href="{% url 'groupmanagement:leave_accept_request' leaverequest.id %}" class="btn btn-success">
|
||||
{% trans "Accept" %}
|
||||
</a>
|
||||
<a href="{% url 'auth_group_leave_reject_request' leaverequest.id %}" class="btn btn-danger">
|
||||
<a href="{% url 'groupmanagement:leave_reject_request' leaverequest.id %}" class="btn btn-danger">
|
||||
{% trans "Reject" %}
|
||||
</a>
|
||||
</td>
|
@ -16,10 +16,10 @@
|
||||
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
|
||||
<ul class="nav navbar-nav">
|
||||
<li class="{% navactive request 'auth_group_management' %}">
|
||||
<a href="{% url 'auth_group_management' %}">{% trans "Group Requests" %}</a>
|
||||
<a href="{% url 'groupmanagement:management' %}">{% trans "Group Requests" %}</a>
|
||||
</li>
|
||||
<li class="{% navactive request 'auth_group_membership auth_group_membership_list' %}">
|
||||
<a href="{% url 'auth_group_membership' %}">{% trans "Group Membership" %}</a>
|
||||
<a href="{% url 'groupmanagement:membership' %}">{% trans "Group Membership" %}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
31
allianceauth/groupmanagement/urls.py
Normal file
31
allianceauth/groupmanagement/urls.py
Normal file
@ -0,0 +1,31 @@
|
||||
from . import views
|
||||
|
||||
from django.conf.urls import include, url
|
||||
app_name = 'groupmanagement'
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^groups/', views.groups_view, name='groups'),
|
||||
url(r'^group/', include([
|
||||
url(r'^management/', views.group_management,
|
||||
name='management'),
|
||||
url(r'^membership/$', views.group_membership,
|
||||
name='membership'),
|
||||
url(r'^membership/(\w+)/$', views.group_membership_list,
|
||||
name='membership_list'),
|
||||
url(r'^membership/(\w+)/remove/(\w+)/$', views.group_membership_remove,
|
||||
name='membership_remove'),
|
||||
url(r'^request_add/(\w+)', views.group_request_add,
|
||||
name='request_add'),
|
||||
url(r'^request/accept/(\w+)', views.group_accept_request,
|
||||
name='accept_request'),
|
||||
url(r'^request/reject/(\w+)', views.group_reject_request,
|
||||
name='reject_request'),
|
||||
|
||||
url(r'^request_leave/(\w+)', views.group_request_leave,
|
||||
name='request_leave'),
|
||||
url(r'leave_request/accept/(\w+)', views.group_leave_accept_request,
|
||||
name='leave_accept_request'),
|
||||
url(r'^leave_request/reject/(\w+)', views.group_leave_reject_request,
|
||||
name='leave_reject_request'),
|
||||
])),
|
||||
]
|
@ -42,7 +42,7 @@ def group_management(request):
|
||||
|
||||
render_items = {'acceptrequests': acceptrequests, 'leaverequests': leaverequests}
|
||||
|
||||
return render(request, 'registered/groupmanagement.html', context=render_items)
|
||||
return render(request, 'groupmanagement/index.html', context=render_items)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -61,7 +61,7 @@ def group_membership(request):
|
||||
|
||||
render_items = {'groups': groups}
|
||||
|
||||
return render(request, 'registered/groupmembership.html', context=render_items)
|
||||
return render(request, 'groupmanagement/groupmembership.html', context=render_items)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -92,7 +92,7 @@ def group_membership_list(request, group_id):
|
||||
|
||||
render_items = {'group': group, 'members': members}
|
||||
|
||||
return render(request, 'registered/groupmembers.html', context=render_items)
|
||||
return render(request, 'groupmanagement/groupmembers.html', context=render_items)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -121,7 +121,7 @@ def group_membership_remove(request, group_id, user_id):
|
||||
except ObjectDoesNotExist:
|
||||
messages.warning(request, _("Group does not exist"))
|
||||
|
||||
return redirect('auth_group_membership_list', group_id)
|
||||
return redirect('groupmanagement:membership_list', group_id)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -156,7 +156,7 @@ def group_accept_request(request, group_request_id):
|
||||
request.user, group_request_id))
|
||||
pass
|
||||
|
||||
return redirect("auth_group_management")
|
||||
return redirect("groupmanagement:management")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -187,7 +187,7 @@ def group_reject_request(request, group_request_id):
|
||||
request.user, group_request_id))
|
||||
pass
|
||||
|
||||
return redirect("auth_group_management")
|
||||
return redirect("groupmanagement:management")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -221,7 +221,7 @@ def group_leave_accept_request(request, group_request_id):
|
||||
request.user, group_request_id))
|
||||
pass
|
||||
|
||||
return redirect("auth_group_management")
|
||||
return redirect("groupmanagement:management")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -253,7 +253,7 @@ def group_leave_reject_request(request, group_request_id):
|
||||
request.user, group_request_id))
|
||||
pass
|
||||
|
||||
return redirect("auth_group_management")
|
||||
return redirect("groupmanagement:management")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -276,7 +276,7 @@ def groups_view(request):
|
||||
groups.append({'group': group, 'request': group_request[0] if group_request else None})
|
||||
|
||||
render_items = {'groups': groups}
|
||||
return render(request, 'registered/groups.html', context=render_items)
|
||||
return render(request, 'groupmanagement/groups.html', context=render_items)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -287,17 +287,17 @@ def group_request_add(request, group_id):
|
||||
logger.warning("User %s attempted to join group id %s but it is not a joinable group" %
|
||||
(request.user, group_id))
|
||||
messages.warning(request, _("You cannot join that group"))
|
||||
return redirect('auth_groups')
|
||||
return redirect('groupmanagement:groups')
|
||||
if not request.user.has_perm('groupmanagement.request_groups') and not group.authgroup.public:
|
||||
# Does not have the required permission, trying to join a non-public group
|
||||
logger.warning("User %s attempted to join group id %s but it is not a public group" %
|
||||
(request.user, group_id))
|
||||
messages.warning(request, "You cannot join that group")
|
||||
return redirect('auth_groups')
|
||||
return redirect('groupmanagement:groups')
|
||||
if group.authgroup.open:
|
||||
logger.info("%s joining %s as is an open group" % (request.user, group))
|
||||
request.user.groups.add(group)
|
||||
return redirect("auth_groups")
|
||||
return redirect("groupmanagement:groups")
|
||||
grouprequest = GroupRequest()
|
||||
grouprequest.status = _('Pending')
|
||||
grouprequest.group = group
|
||||
@ -307,7 +307,7 @@ def group_request_add(request, group_id):
|
||||
grouprequest.save()
|
||||
logger.info("Created group request for user %s to group %s" % (request.user, Group.objects.get(id=group_id)))
|
||||
messages.success(request, _('Applied to group %(group)s.') % {"group": group})
|
||||
return redirect("auth_groups")
|
||||
return redirect("groupmanagement:groups")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -318,16 +318,16 @@ def group_request_leave(request, group_id):
|
||||
logger.warning("User %s attempted to leave group id %s but it is not a joinable group" %
|
||||
(request.user, group_id))
|
||||
messages.warning(request, _("You cannot leave that group"))
|
||||
return redirect('auth_groups')
|
||||
return redirect('groupmanagement:groups')
|
||||
if group not in request.user.groups.all():
|
||||
logger.debug("User %s attempted to leave group id %s but they are not a member" %
|
||||
(request.user, group_id))
|
||||
messages.warning(request, _("You are not a member of that group"))
|
||||
return redirect('auth_groups')
|
||||
return redirect('groupmanagement:groups')
|
||||
if group.authgroup.open:
|
||||
logger.info("%s leaving %s as is an open group" % (request.user, group))
|
||||
request.user.groups.remove(group)
|
||||
return redirect("auth_groups")
|
||||
return redirect("groupmanagement:groups")
|
||||
grouprequest = GroupRequest()
|
||||
grouprequest.status = _('Pending')
|
||||
grouprequest.group = group
|
||||
@ -337,4 +337,4 @@ def group_request_leave(request, group_id):
|
||||
grouprequest.save()
|
||||
logger.info("Created group leave request for user %s to group %s" % (request.user, Group.objects.get(id=group_id)))
|
||||
messages.success(request, _('Applied to leave group %(group)s.') % {"group": group})
|
||||
return redirect("auth_groups")
|
||||
return redirect("groupmanagement:groups")
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load bootstrap %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
@ -18,9 +18,9 @@
|
||||
<li><a data-toggle="pill" href="#read">{% trans "Read" %} <b>({{ read|length }})</b></a>
|
||||
</li>
|
||||
<div class="pull-right">
|
||||
<a href="{% url 'auth_mark_all_notifications_read' %}"
|
||||
<a href="{% url 'notifications:mark_all_read' %}"
|
||||
class="btn btn-primary">{% trans "Mark All Read" %}</a>
|
||||
<a href="{% url 'auth_delete_all_read_notifications' %}"
|
||||
<a href="{% url 'notifications:delete_all_read' %}"
|
||||
class="btn btn-danger">{% trans "Delete All Read" %}</a>
|
||||
</div>
|
||||
</ul>
|
||||
@ -41,11 +41,11 @@
|
||||
<td class="text-center">{{ notif.timestamp }}</td>
|
||||
<td class="text-center">{{ notif.title }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_notification_view' notif.id %}"
|
||||
<a href="{% url 'notifications:view' notif.id %}"
|
||||
class="btn btn-success" title="View">
|
||||
<span class="glyphicon glyphicon-eye-open"></span>
|
||||
</a>
|
||||
<a href="{% url 'auth_remove_notification' notif.id %}"
|
||||
<a href="{% url 'notifications:remove' notif.id %}"
|
||||
class="btn btn-danger" title="Remove">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
@ -73,11 +73,11 @@
|
||||
<td class="text-center">{{ notif.timestamp }}</td>
|
||||
<td class="text-center">{{ notif.title }}</td>
|
||||
<td class="text-center">
|
||||
<a href="{% url 'auth_notification_view' notif.id %}"
|
||||
<a href="{% url 'notifications:view' notif.id %}"
|
||||
class="btn btn-success" title="View">
|
||||
<span class="glyphicon glyphicon-eye-open"></span>
|
||||
</a>
|
||||
<a href="{% url 'auth_remove_notification' notif.id %}"
|
||||
<a href="{% url 'notifications:remove' notif.id %}"
|
||||
class="btn btn-danger" title="remove">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
@ -11,12 +11,12 @@
|
||||
<h1 class="page-header text-center">
|
||||
{% trans "View Notification" %}
|
||||
<div class="text-right">
|
||||
<a href="{% url 'auth_notification_list' %}" class="btn btn-primary btn-lg">
|
||||
<a href="{% url 'notifications:list' %}" class="btn btn-primary btn-lg">
|
||||
<span class="glyphicon glyphicon-arrow-left"></span>
|
||||
</a>
|
||||
</div>
|
||||
</h1>
|
||||
<div class="col-lg-12 container" id="example">
|
||||
<div class="col-lg-12 container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="panel panel-{{ notif.level }}">
|
12
allianceauth/notifications/urls.py
Normal file
12
allianceauth/notifications/urls.py
Normal file
@ -0,0 +1,12 @@
|
||||
from django.conf.urls import url
|
||||
from . import views
|
||||
|
||||
app_name = 'notifications'
|
||||
# Notifications
|
||||
urlpatterns = [
|
||||
url(r'^remove_notifications/(\w+)/$', views.remove_notification, name='remove'),
|
||||
url(r'^notifications/mark_all_read/$', views.mark_all_read, name='mark_all_read'),
|
||||
url(r'^notifications/delete_all_read/$', views.delete_all_read, name='delete_all_read'),
|
||||
url(r'^notifications/$', views.notification_list, name='list'),
|
||||
url(r'^notifications/(\w+)/$', views.notification_view, name='view'),
|
||||
]
|
@ -18,7 +18,7 @@ def notification_list(request):
|
||||
'read': old_notifs,
|
||||
'unread': new_notifs,
|
||||
}
|
||||
return render(request, 'registered/notification_list.html', context)
|
||||
return render(request, 'notifications/list.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -29,12 +29,12 @@ def notification_view(request, notif_id):
|
||||
logger.debug("Providing notification for user %s" % request.user)
|
||||
context = {'notif': notif}
|
||||
notif.view()
|
||||
return render(request, 'registered/notification_view.html', context)
|
||||
return render(request, 'notifications/view.html', context)
|
||||
else:
|
||||
logger.warn(
|
||||
"User %s not authorized to view notif_id %s belonging to user %s" % (request.user, notif_id, notif.user))
|
||||
messages.error(request, _('You are not authorized to view that notification.'))
|
||||
return redirect('auth_notification_list')
|
||||
return redirect('notifications:list')
|
||||
|
||||
|
||||
@login_required
|
||||
@ -50,7 +50,7 @@ def remove_notification(request, notif_id):
|
||||
logger.error(
|
||||
"Unable to delete notif id %s for user %s - notif matching id not found." % (notif_id, request.user))
|
||||
messages.error(request, _('Failed to locate notification.'))
|
||||
return redirect('auth_notification_list')
|
||||
return redirect('notifications:list')
|
||||
|
||||
|
||||
@login_required
|
||||
@ -58,7 +58,7 @@ def mark_all_read(request):
|
||||
logger.debug('mark all notifications read called by user %s' % request.user)
|
||||
Notification.objects.filter(user=request.user).update(viewed=True)
|
||||
messages.success(request, _('Marked all notifications as read.'))
|
||||
return redirect('auth_notification_list')
|
||||
return redirect('notifications:list')
|
||||
|
||||
|
||||
@login_required
|
||||
@ -66,4 +66,4 @@ def delete_all_read(request):
|
||||
logger.debug('delete all read notifications called by user %s' % request.user)
|
||||
Notification.objects.filter(user=request.user).filter(viewed=True).delete()
|
||||
messages.success(request, _('Deleted all read notifications.'))
|
||||
return redirect('auth_notification_list')
|
||||
return redirect('notifications:list')
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
{% get_current_language as LANGUAGE_CODE %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -2,6 +2,8 @@ from django.conf.urls import url
|
||||
|
||||
from . import views
|
||||
|
||||
app_name = 'permissions_tool'
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^overview/$', views.permissions_overview, name='overview'),
|
||||
url(r'^audit/(?P<app_label>[\w\-_]+)/(?P<model>[\w\-_]+)/(?P<codename>[\w\-_]+)/$', views.permissions_audit,
|
||||
|
@ -8,7 +8,7 @@ class Services(MenuItemHook):
|
||||
MenuItemHook.__init__(self,
|
||||
'Services',
|
||||
'fa fa-cogs fa-fw grayiconecolor',
|
||||
'auth_services', 100)
|
||||
'services:services', 100)
|
||||
|
||||
def render(self, request):
|
||||
for svc in ServicesHook.get_services():
|
||||
|
@ -14,7 +14,7 @@ class ServicesHook:
|
||||
def __init__(self):
|
||||
self.name = 'Undefined'
|
||||
self.urlpatterns = []
|
||||
self.service_ctrl_template = 'registered/services_ctrl.html'
|
||||
self.service_ctrl_template = 'services/services_ctrl.html'
|
||||
self.access_perm = None
|
||||
|
||||
@property
|
||||
|
@ -15,7 +15,7 @@ class DiscordService(ServicesHook):
|
||||
ServicesHook.__init__(self)
|
||||
self.urlpatterns = urlpatterns
|
||||
self.name = 'discord'
|
||||
self.service_ctrl_template = 'registered/discord_service_ctrl.html'
|
||||
self.service_ctrl_template = 'services/discord/discord_service_ctrl.html'
|
||||
self.access_perm = 'discord.access_discord'
|
||||
|
||||
def delete_user(self, user, notify_user=False):
|
||||
|
@ -7,20 +7,20 @@
|
||||
<td class="text-center"><a href="https://discordapp.com/channels/{{ DISCORD_SERVER_ID }}/{{ DISCORD_SERVER_ID}}">https://discordapp.com</a></td>
|
||||
<td class="text-center">
|
||||
{% if not discord_uid %}
|
||||
<a href="{% url 'auth_activate_discord' %}" title="Activate" class="btn btn-warning">
|
||||
<a href="{% url 'discord:activate' %}" title="Activate" class="btn btn-warning">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'auth_reset_discord' %}" title="Reset" class="btn btn-primary">
|
||||
<a href="{% url 'discord:reset' %}" title="Reset" class="btn btn-primary">
|
||||
<span class="glyphicon glyphicon-refresh"></span>
|
||||
</a>
|
||||
<a href="{% url 'auth_deactivate_discord' %}" title="Deactivate" class="btn btn-danger">
|
||||
<a href="{% url 'discord:deactivate' %}" title="Deactivate" class="btn btn-danger">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if request.user.is_superuser %}
|
||||
<div class="text-center" style="padding-top:5px;">
|
||||
<a type="button" class="btn btn-success" href="{% url 'auth_discord_add_bot' %}">{% trans "Link Discord Server" %}</a>
|
||||
<a type="button" class="btn btn-success" href="{% url 'discord:add_bot' %}">{% trans "Link Discord Server" %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</td>
|
@ -120,7 +120,7 @@ class DiscordHooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
@ -166,7 +166,7 @@ class DiscordViewsTestCase(TestCase):
|
||||
self.assertTrue(manager.add_user.called)
|
||||
self.assertEqual(manager.update_nickname.called, settings.DISCORD_SYNC_NAMES)
|
||||
self.assertEqual(self.member.discord.uid, '1234')
|
||||
self.assertRedirects(response, expected_url='/en/services/', target_status_code=200)
|
||||
self.assertRedirects(response, expected_url='/services/', target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.tasks.DiscordOAuthManager')
|
||||
def test_reset(self, manager):
|
||||
@ -187,7 +187,7 @@ class DiscordViewsTestCase(TestCase):
|
||||
response = self.client.get('/discord/deactivate/')
|
||||
|
||||
self.assertTrue(manager.delete_user.called)
|
||||
self.assertRedirects(response, expected_url='/en/services/', target_status_code=200)
|
||||
self.assertRedirects(response, expected_url='/services/', target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
discord_user = User.objects.get(pk=self.member.pk).discord
|
||||
|
||||
|
@ -4,13 +4,13 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# Discord Service Control
|
||||
url(r'^activate/$', views.activate_discord, name='auth_activate_discord'),
|
||||
url(r'^deactivate/$', views.deactivate_discord, name='auth_deactivate_discord'),
|
||||
url(r'^reset/$', views.reset_discord, name='auth_reset_discord'),
|
||||
url(r'^callback/$', views.discord_callback, name='auth_discord_callback'),
|
||||
url(r'^add_bot/$', views.discord_add_bot, name='auth_discord_add_bot'),
|
||||
url(r'^activate/$', views.activate_discord, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_discord, name='deactivate'),
|
||||
url(r'^reset/$', views.reset_discord, name='reset'),
|
||||
url(r'^callback/$', views.discord_callback, name='callback'),
|
||||
url(r'^add_bot/$', views.discord_add_bot, name='add_bot'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^discord/', include(module_urls))
|
||||
url(r'^discord/', include(module_urls, namespace='discord'))
|
||||
]
|
||||
|
@ -25,7 +25,7 @@ def deactivate_discord(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to deactivate discord for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Discord account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -34,10 +34,10 @@ def reset_discord(request):
|
||||
logger.debug("reset_discord called by user %s" % request.user)
|
||||
if DiscordTasks.delete_user(request.user):
|
||||
logger.info("Successfully deleted discord user for user %s - forwarding to discord activation." % request.user)
|
||||
return redirect("auth_activate_discord")
|
||||
return redirect("discord:activate")
|
||||
logger.error("Unsuccessful attempt to reset discord for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Discord account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -54,14 +54,14 @@ def discord_callback(request):
|
||||
code = request.GET.get('code', None)
|
||||
if not code:
|
||||
logger.warn("Did not receive OAuth code from callback of user %s" % request.user)
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
if DiscordTasks.add_user(request.user, code):
|
||||
logger.info("Successfully activated Discord for user %s" % request.user)
|
||||
messages.success(request, 'Activated Discord account.')
|
||||
else:
|
||||
logger.error("Failed to activate Discord for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Discord account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
|
@ -15,7 +15,7 @@ class DiscourseService(ServicesHook):
|
||||
ServicesHook.__init__(self)
|
||||
self.urlpatterns = urlpatterns
|
||||
self.name = 'discourse'
|
||||
self.service_ctrl_template = 'registered/discourse_service_ctrl.html'
|
||||
self.service_ctrl_template = 'services/discourse/discourse_service_ctrl.html'
|
||||
self.access_perm = 'discourse.access_discourse'
|
||||
|
||||
def delete_user(self, user, notify_user=False):
|
||||
|
@ -102,7 +102,7 @@ class DiscourseHooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
|
@ -5,5 +5,5 @@ module_urls = [
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^example/', include(module_urls)),
|
||||
url(r'^example/', include(module_urls, namespace='example')),
|
||||
]
|
||||
|
@ -31,10 +31,10 @@ class Ips4Service(ServicesHook):
|
||||
:return:
|
||||
"""
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_ips4'
|
||||
urls.auth_deactivate = 'auth_deactivate_ips4'
|
||||
urls.auth_reset_password = 'auth_reset_ips4_password'
|
||||
urls.auth_set_password = 'auth_set_ips4_password'
|
||||
urls.auth_activate = 'ips4:activate'
|
||||
urls.auth_deactivate = 'ips4:deactivate'
|
||||
urls.auth_reset_password = 'ips4:reset_password'
|
||||
urls.auth_set_password = 'ips4:set_password'
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
'urls': urls,
|
||||
|
@ -53,16 +53,16 @@ class Ips4HooksTestCase(TestCase):
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_set_ips4_password'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_ips4_password'), response)
|
||||
self.assertIn(urls.reverse('auth_deactivate_ips4'), response)
|
||||
self.assertIn(urls.reverse('ips4:set_password'), response)
|
||||
self.assertIn(urls.reverse('ips4:reset_password'), response)
|
||||
self.assertIn(urls.reverse('ips4:deactivate'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.ips4.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_ips4'), response)
|
||||
self.assertIn(urls.reverse('ips4:activate'), response)
|
||||
|
||||
|
||||
class Ips4ViewsTestCase(TestCase):
|
||||
@ -86,14 +86,14 @@ class Ips4ViewsTestCase(TestCase):
|
||||
|
||||
manager.add_user.return_value = (expected_username, expected_password, expected_id)
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_ips4'), follow=False)
|
||||
response = self.client.get(urls.reverse('ips4:activate'), follow=False)
|
||||
|
||||
self.assertTrue(manager.add_user.called)
|
||||
args, kwargs = manager.add_user.call_args
|
||||
self.assertEqual(args[0], expected_username)
|
||||
self.assertEqual(args[1], self.member.email)
|
||||
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, expected_username)
|
||||
self.assertContains(response, expected_password)
|
||||
|
||||
@ -103,10 +103,10 @@ class Ips4ViewsTestCase(TestCase):
|
||||
Ips4User.objects.create(user=self.member, username='12345', id='1234')
|
||||
manager.delete_user.return_value = True
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_ips4'))
|
||||
response = self.client.get(urls.reverse('ips4:deactivate'))
|
||||
|
||||
self.assertTrue(manager.delete_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
ips4_user = User.objects.get(pk=self.member.pk).ips4
|
||||
|
||||
@ -117,22 +117,22 @@ class Ips4ViewsTestCase(TestCase):
|
||||
expected_password = 'password'
|
||||
manager.update_user_password.return_value = expected_password
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_ips4_password'), data={'password': expected_password})
|
||||
response = self.client.post(urls.reverse('ips4:set_password'), data={'password': expected_password})
|
||||
|
||||
self.assertTrue(manager.update_custom_password.called)
|
||||
args, kwargs = manager.update_custom_password.call_args
|
||||
self.assertEqual(kwargs['plain_password'], expected_password)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.views.Ips4Manager')
|
||||
def test_reset_password(self, manager):
|
||||
self.login()
|
||||
Ips4User.objects.create(user=self.member, username='12345', id='1234')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_ips4_password'))
|
||||
response = self.client.get(urls.reverse('ips4:reset_password'))
|
||||
|
||||
self.assertTrue(manager.update_user_password.called)
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
|
||||
|
||||
class Ips4ManagerTestCase(TestCase):
|
||||
|
@ -4,12 +4,12 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# IPS4 Service Control
|
||||
url(r'^activate/$', views.activate_ips4, name='auth_activate_ips4'),
|
||||
url(r'^deactivate/$', views.deactivate_ips4, name='auth_deactivate_ips4'),
|
||||
url(r'^reset_password/$', views.reset_ips4_password, name='auth_reset_ips4_password'),
|
||||
url(r'^set_password/$', views.set_ips4_password, name='auth_set_ips4_password'),
|
||||
url(r'^activate/$', views.activate_ips4, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_ips4, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_ips4_password, name='reset_password'),
|
||||
url(r'^set_password/$', views.set_ips4_password, name='set_password'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^ips4/', include(module_urls))
|
||||
url(r'^ips4/', include(module_urls, namespace='ips4'))
|
||||
]
|
||||
|
@ -32,12 +32,12 @@ def activate_ips4(request):
|
||||
'username': result[0],
|
||||
'password': result[1],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'IPSuite4'})
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate IPS4 for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your IPSuite4 account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -54,12 +54,12 @@ def reset_ips4_password(request):
|
||||
'username': request.user.ips4.username,
|
||||
'password': result,
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'IPSuite4'})
|
||||
|
||||
logger.error("Unsuccessful attempt to reset IPS4 password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your IPSuite4 account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -80,14 +80,14 @@ def set_ips4_password(request):
|
||||
else:
|
||||
logger.error("Failed to install custom IPS4 password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your IPSuite4 account.')
|
||||
return redirect('auth_services')
|
||||
return redirect('services:services')
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'IPS4'}
|
||||
return render(request, 'registered/service_password.html', context=context)
|
||||
return render(request, 'services/service_password.html', context=context)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -100,5 +100,5 @@ def deactivate_ips4(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to deactivate IPS4 for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your IPSuite4 account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
@ -37,10 +37,10 @@ class MarketService(ServicesHook):
|
||||
|
||||
def render_services_ctrl(self, request):
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_market'
|
||||
urls.auth_deactivate = 'auth_deactivate_market'
|
||||
urls.auth_reset_password = 'auth_reset_market_password'
|
||||
urls.auth_set_password = 'auth_set_market_password'
|
||||
urls.auth_activate = 'evernusmarket:activate'
|
||||
urls.auth_deactivate = 'evernusmarket:deactivate'
|
||||
urls.auth_reset_password = 'evernusmarket:reset_password'
|
||||
urls.auth_set_password = 'evernusmarket:set_password'
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
'urls': urls,
|
||||
|
@ -76,21 +76,21 @@ class MarketHooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_set_market_password'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_market_password'), response)
|
||||
self.assertIn(urls.reverse('auth_deactivate_market'), response)
|
||||
self.assertIn(urls.reverse('evernusmarket:set_password'), response)
|
||||
self.assertIn(urls.reverse('evernusmarket:reset_password'), response)
|
||||
self.assertIn(urls.reverse('evernusmarket:deactivate'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.market.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_market'), response)
|
||||
self.assertIn(urls.reverse('evernusmarket:activate'), response)
|
||||
|
||||
|
||||
class MarketViewsTestCase(TestCase):
|
||||
@ -114,14 +114,14 @@ class MarketViewsTestCase(TestCase):
|
||||
|
||||
manager.add_user.return_value = (expected_username, expected_password, expected_id)
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_market'), follow=False)
|
||||
response = self.client.get(urls.reverse('evernusmarket:activate'), follow=False)
|
||||
|
||||
self.assertTrue(manager.add_user.called)
|
||||
args, kwargs = manager.add_user.call_args
|
||||
self.assertEqual(args[0], expected_username)
|
||||
self.assertEqual(args[1], self.member.email)
|
||||
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, expected_username)
|
||||
self.assertContains(response, expected_password)
|
||||
|
||||
@ -131,10 +131,10 @@ class MarketViewsTestCase(TestCase):
|
||||
MarketUser.objects.create(user=self.member, username='12345')
|
||||
manager.disable_user.return_value = True
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_market'))
|
||||
response = self.client.get(urls.reverse('evernusmarket:deactivate'))
|
||||
|
||||
self.assertTrue(manager.disable_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
market_user = User.objects.get(pk=self.member.pk).market
|
||||
|
||||
@ -145,22 +145,22 @@ class MarketViewsTestCase(TestCase):
|
||||
expected_password = 'password'
|
||||
manager.update_user_password.return_value = expected_password
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_market_password'), data={'password': expected_password})
|
||||
response = self.client.post(urls.reverse('evernusmarket:set_password'), data={'password': expected_password})
|
||||
|
||||
self.assertTrue(manager.update_custom_password.called)
|
||||
args, kwargs = manager.update_custom_password.call_args
|
||||
self.assertEqual(args[1], expected_password)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.views.MarketManager')
|
||||
def test_reset_password(self, manager):
|
||||
self.login()
|
||||
MarketUser.objects.create(user=self.member, username='12345')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_market_password'))
|
||||
response = self.client.get(urls.reverse('evernusmarket:reset_password'))
|
||||
|
||||
self.assertTrue(manager.update_user_password.called)
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
|
||||
|
||||
class MarketManagerTestCase(TestCase):
|
||||
|
@ -4,12 +4,12 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# Alliance Market Control
|
||||
url(r'^activate/$', views.activate_market, name='auth_activate_market'),
|
||||
url(r'^deactivate/$', views.deactivate_market, name='auth_deactivate_market'),
|
||||
url(r'^reset_password/$', views.reset_market_password, name='auth_reset_market_password'),
|
||||
url(r'^set_password/$', views.set_market_password, name='auth_set_market_password'),
|
||||
url(r'^activate/$', views.activate_market, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_market, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_market_password, name='reset_password'),
|
||||
url(r'^set_password/$', views.set_market_password, name='set_password'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^evernus-market/', include(module_urls))
|
||||
url(r'^evernus-market/', include(module_urls, namespace='evernusmarket'))
|
||||
]
|
||||
|
@ -33,11 +33,11 @@ def activate_market(request):
|
||||
'username': result[0],
|
||||
'password': result[1],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Alliance Market'})
|
||||
logger.error("Unsuccessful attempt to activate market for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Alliance Market account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -51,7 +51,7 @@ def deactivate_market(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate market for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Alliance Market account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -68,12 +68,12 @@ def reset_market_password(request):
|
||||
'username': request.user.market.username,
|
||||
'password': result,
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Alliance Market'})
|
||||
|
||||
logger.error("Unsuccessful attempt to reset market password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Alliance Market account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -94,11 +94,11 @@ def set_market_password(request):
|
||||
else:
|
||||
logger.error("Failed to install custom market password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Alliance Market account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Market'}
|
||||
return render(request, 'registered/service_password.html', context=context)
|
||||
return render(request, 'services/service_password.html', context=context)
|
||||
|
@ -20,7 +20,7 @@ class MumbleService(ServicesHook):
|
||||
self.urlpatterns = urlpatterns
|
||||
self.service_url = settings.MUMBLE_URL
|
||||
self.access_perm = 'mumble.access_mumble'
|
||||
self.service_ctrl_template = 'registered/mumble_service_ctrl.html'
|
||||
self.service_ctrl_template = 'services/mumble/mumble_service_ctrl.html'
|
||||
|
||||
def delete_user(self, user, notify_user=False):
|
||||
logging.debug("Deleting user %s %s account" % (user, self.name))
|
||||
@ -48,10 +48,10 @@ class MumbleService(ServicesHook):
|
||||
|
||||
def render_services_ctrl(self, request):
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_mumble'
|
||||
urls.auth_deactivate = 'auth_deactivate_mumble'
|
||||
urls.auth_reset_password = 'auth_reset_mumble_password'
|
||||
urls.auth_set_password = 'auth_set_mumble_password'
|
||||
urls.auth_activate = 'mumble:activate'
|
||||
urls.auth_deactivate = 'mumble:deactivate'
|
||||
urls.auth_reset_password = 'mumble:reset_password'
|
||||
urls.auth_set_password = 'mumble:set_password'
|
||||
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
|
@ -99,21 +99,21 @@ class MumbleHooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_deactivate_mumble'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_mumble_password'), response)
|
||||
self.assertIn(urls.reverse('auth_set_mumble_password'), response)
|
||||
self.assertIn(urls.reverse('mumble:deactivate'), response)
|
||||
self.assertIn(urls.reverse('mumble:reset_password'), response)
|
||||
self.assertIn(urls.reverse('mumble:set_password'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.mumble.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_mumble'), response)
|
||||
self.assertIn(urls.reverse('mumble:activate'), response)
|
||||
|
||||
|
||||
class MumbleViewsTestCase(TestCase):
|
||||
@ -132,7 +132,7 @@ class MumbleViewsTestCase(TestCase):
|
||||
def test_activate(self):
|
||||
self.login()
|
||||
expected_username = '[TESTR]auth_member'
|
||||
response = self.client.get(urls.reverse('auth_activate_mumble'), follow=False)
|
||||
response = self.client.get(urls.reverse('mumble:activate'), follow=False)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertContains(response, expected_username)
|
||||
mumble_user = MumbleUser.objects.get(user=self.member)
|
||||
@ -144,9 +144,9 @@ class MumbleViewsTestCase(TestCase):
|
||||
self.login()
|
||||
MumbleUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_mumble'))
|
||||
response = self.client.get(urls.reverse('mumble:deactivate'))
|
||||
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
mumble_user = User.objects.get(pk=self.member.pk).mumble
|
||||
|
||||
@ -154,19 +154,19 @@ class MumbleViewsTestCase(TestCase):
|
||||
self.login()
|
||||
MumbleUser.objects.create(user=self.member, username='some member', pwhash='old')
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_mumble_password'), data={'password': '1234asdf'})
|
||||
response = self.client.post(urls.reverse('mumble:set_password'), data={'password': '1234asdf'})
|
||||
|
||||
self.assertNotEqual(MumbleUser.objects.get(user=self.member).pwhash, 'old')
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
def test_reset_password(self):
|
||||
self.login()
|
||||
MumbleUser.objects.create(user=self.member, username='some member', pwhash='old')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_mumble_password'))
|
||||
response = self.client.get(urls.reverse('mumble:reset_password'))
|
||||
|
||||
self.assertNotEqual(MumbleUser.objects.get(user=self.member).pwhash, 'old')
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, 'some member')
|
||||
|
||||
|
||||
|
@ -4,13 +4,13 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# Mumble service control
|
||||
url(r'^activate/$', views.activate_mumble, name='auth_activate_mumble'),
|
||||
url(r'^deactivate/$', views.deactivate_mumble, name='auth_deactivate_mumble'),
|
||||
url(r'^activate/$', views.activate_mumble, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_mumble, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_mumble_password,
|
||||
name='auth_reset_mumble_password'),
|
||||
url(r'^set_password/$', views.set_mumble_password, name='auth_set_mumble_password'),
|
||||
name='reset_password'),
|
||||
url(r'^set_password/$', views.set_mumble_password, name='set_password'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^mumble/', include(module_urls))
|
||||
url(r'^mumble/', include(module_urls, namespace='mumble'))
|
||||
]
|
||||
|
@ -32,12 +32,12 @@ def activate_mumble(request):
|
||||
'username': result[0],
|
||||
'password': result[1],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Mumble'})
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate mumble for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Mumble account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -51,7 +51,7 @@ def deactivate_mumble(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to deactivate mumble for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Mumble account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -68,12 +68,12 @@ def reset_mumble_password(request):
|
||||
'username': request.user.mumble.username,
|
||||
'password': result,
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Mumble'})
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to reset mumble password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Mumble account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -94,11 +94,11 @@ def set_mumble_password(request):
|
||||
else:
|
||||
logger.error("Failed to install custom mumble password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your Mumble account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Mumble'}
|
||||
return render(request, 'registered/service_password.html', context=context)
|
||||
return render(request, 'services/service_password.html', context=context)
|
||||
|
@ -53,10 +53,10 @@ class OpenfireService(ServicesHook):
|
||||
:return:
|
||||
"""
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_openfire'
|
||||
urls.auth_deactivate = 'auth_deactivate_openfire'
|
||||
urls.auth_set_password = 'auth_set_openfire_password'
|
||||
urls.auth_reset_password = 'auth_reset_openfire_password'
|
||||
urls.auth_activate = 'openfire:activate'
|
||||
urls.auth_deactivate = 'openfire:deactivate'
|
||||
urls.auth_set_password = 'openfire:set_password'
|
||||
urls.auth_reset_password = 'openfire:reset_password'
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
'urls': urls,
|
||||
@ -75,7 +75,7 @@ class JabberBroadcast(MenuItemHook):
|
||||
MenuItemHook.__init__(self,
|
||||
'Jabber Broadcast',
|
||||
'fa fa-lock fa-fw fa-bullhorn grayiconecolor',
|
||||
'auth_jabber_broadcast_view')
|
||||
'openfire:broadcast')
|
||||
|
||||
def render(self, request):
|
||||
if request.user.has_perm('auth.jabber_broadcast') or request.user.has_perm('auth.jabber_broadcast_all'):
|
||||
@ -88,7 +88,7 @@ class FleetBroadcastFormatter(MenuItemHook):
|
||||
MenuItemHook.__init__(self,
|
||||
'Fleet Broadcast Formatter',
|
||||
'fa fa-lock fa-fw fa-space-shuttle grayiconecolor',
|
||||
'auth_fleet_format_tool_view')
|
||||
'services:fleet_format_tool')
|
||||
|
||||
def render(self, request):
|
||||
if request.user.has_perm('auth.jabber_broadcast') or request.user.has_perm('auth.jabber_broadcast_all'):
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
@ -103,21 +103,21 @@ class OpenfireHooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_deactivate_openfire'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_openfire_password'), response)
|
||||
self.assertIn(urls.reverse('auth_set_openfire_password'), response)
|
||||
self.assertIn(urls.reverse('openfire:deactivate'), response)
|
||||
self.assertIn(urls.reverse('openfire:reset_password'), response)
|
||||
self.assertIn(urls.reverse('openfire:set_password'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.openfire.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_openfire'), response)
|
||||
self.assertIn(urls.reverse('openfire:activate'), response)
|
||||
|
||||
|
||||
class OpenfireViewsTestCase(TestCase):
|
||||
@ -139,12 +139,12 @@ class OpenfireViewsTestCase(TestCase):
|
||||
expected_username = 'auth_member'
|
||||
manager.add_user.return_value = (expected_username, 'abc123')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_openfire'))
|
||||
response = self.client.get(urls.reverse('openfire:activate'))
|
||||
|
||||
self.assertTrue(manager.add_user.called)
|
||||
self.assertTrue(tasks_manager.update_user_groups.called)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed('registered/service_credentials.html')
|
||||
self.assertTemplateUsed('services/service_credentials.html')
|
||||
self.assertContains(response, expected_username)
|
||||
openfire_user = OpenfireUser.objects.get(user=self.member)
|
||||
self.assertEqual(openfire_user.username, expected_username)
|
||||
@ -154,10 +154,10 @@ class OpenfireViewsTestCase(TestCase):
|
||||
self.login()
|
||||
OpenfireUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_openfire'))
|
||||
response = self.client.get(urls.reverse('openfire:deactivate'))
|
||||
|
||||
self.assertTrue(manager.delete_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
openfire_user = User.objects.get(pk=self.member.pk).openfire
|
||||
|
||||
@ -166,12 +166,12 @@ class OpenfireViewsTestCase(TestCase):
|
||||
self.login()
|
||||
OpenfireUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_openfire_password'), data={'password': '1234asdf'})
|
||||
response = self.client.post(urls.reverse('openfire:set_password'), data={'password': '1234asdf'})
|
||||
|
||||
self.assertTrue(manager.update_user_pass.called)
|
||||
args, kwargs = manager.update_user_pass.call_args
|
||||
self.assertEqual(kwargs['password'], '1234asdf')
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.views.OpenfireManager')
|
||||
def test_reset_password(self, manager):
|
||||
@ -180,9 +180,9 @@ class OpenfireViewsTestCase(TestCase):
|
||||
|
||||
manager.update_user_pass.return_value = 'hunter2'
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_openfire_password'))
|
||||
response = self.client.get(urls.reverse('openfire:reset_password'))
|
||||
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, 'some member')
|
||||
self.assertContains(response, 'hunter2')
|
||||
|
||||
|
@ -1,27 +1,16 @@
|
||||
from django.conf.urls import url, include
|
||||
from django.conf.urls.i18n import i18n_patterns
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
from . import views
|
||||
|
||||
module_urls = [
|
||||
# Jabber Service Control
|
||||
url(r'^activate/$', views.activate_jabber, name='auth_activate_openfire'),
|
||||
url(r'^deactivate/$', views.deactivate_jabber, name='auth_deactivate_openfire'),
|
||||
url(r'^reset_password/$', views.reset_jabber_password, name='auth_reset_openfire_password'),
|
||||
]
|
||||
|
||||
module_i18n_urls = [
|
||||
url(_(r'^set_password/$'), views.set_jabber_password, name='auth_set_openfire_password'),
|
||||
url(r'^activate/$', views.activate_jabber, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_jabber, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_jabber_password, name='reset_password'),
|
||||
url(r'^set_password/$', views.set_jabber_password, name='set_password'),
|
||||
url(r'^broadcast/$', views.jabber_broadcast_view, name='broadcast'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^openfire/', include(module_urls))
|
||||
url(r'^openfire/', include(module_urls, namespace='openfire')),
|
||||
]
|
||||
|
||||
urlpatterns += i18n_patterns(
|
||||
# Jabber Broadcast
|
||||
url(_(r'^services/jabber_broadcast/$'), views.jabber_broadcast_view, name='auth_jabber_broadcast_view'),
|
||||
# Jabber
|
||||
url(r'openfire/', include(module_i18n_urls))
|
||||
)
|
||||
|
@ -35,12 +35,12 @@ def activate_jabber(request):
|
||||
'username': info[0],
|
||||
'password': info[1],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Jabber'})
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate jabber for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your jabber account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -53,7 +53,7 @@ def deactivate_jabber(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to deactivate jabber for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your jabber account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -70,11 +70,11 @@ def reset_jabber_password(request):
|
||||
'username': request.user.openfire.username,
|
||||
'password': result,
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Jabber'})
|
||||
logger.error("Unsuccessful attempt to reset jabber for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your jabber account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -126,7 +126,7 @@ def jabber_broadcast_view(request):
|
||||
request.user, len(form.fields['group'].choices)))
|
||||
|
||||
context = {'form': form}
|
||||
return render(request, 'registered/jabberbroadcast.html', context=context)
|
||||
return render(request, 'services/openfire/broadcast.html', context=context)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -147,11 +147,11 @@ def set_jabber_password(request):
|
||||
else:
|
||||
logger.error("Failed to install custom jabber password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your jabber account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Jabber'}
|
||||
return render(request, 'registered/service_password.html', context=context)
|
||||
return render(request, 'services/service_password.html', context=context)
|
||||
|
@ -46,10 +46,10 @@ class Phpbb3Service(ServicesHook):
|
||||
|
||||
def render_services_ctrl(self, request):
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_phpbb3'
|
||||
urls.auth_deactivate = 'auth_deactivate_phpbb3'
|
||||
urls.auth_reset_password = 'auth_reset_phpbb3_password'
|
||||
urls.auth_set_password = 'auth_set_phpbb3_password'
|
||||
urls.auth_activate = 'phpbb3:activate'
|
||||
urls.auth_deactivate = 'phpbb3:deactivate'
|
||||
urls.auth_reset_password = 'phpbb3:reset_password'
|
||||
urls.auth_set_password = 'phpbb3:set_password'
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
'urls': urls,
|
||||
|
@ -103,21 +103,21 @@ class Phpbb3HooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_deactivate_phpbb3'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_phpbb3_password'), response)
|
||||
self.assertIn(urls.reverse('auth_set_phpbb3_password'), response)
|
||||
self.assertIn(urls.reverse('phpbb3:deactivate'), response)
|
||||
self.assertIn(urls.reverse('phpbb3:reset_password'), response)
|
||||
self.assertIn(urls.reverse('phpbb3:set_password'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.phpbb3.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_phpbb3'), response)
|
||||
self.assertIn(urls.reverse('phpbb3:activate'), response)
|
||||
|
||||
|
||||
class Phpbb3ViewsTestCase(TestCase):
|
||||
@ -139,12 +139,12 @@ class Phpbb3ViewsTestCase(TestCase):
|
||||
expected_username = 'auth_member'
|
||||
manager.add_user.return_value = (expected_username, 'abc123')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_phpbb3'))
|
||||
response = self.client.get(urls.reverse('phpbb3:activate'))
|
||||
|
||||
self.assertTrue(manager.add_user.called)
|
||||
self.assertTrue(tasks_manager.update_groups.called)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed('registered/service_credentials.html')
|
||||
self.assertTemplateUsed('services/service_credentials.html')
|
||||
self.assertContains(response, expected_username)
|
||||
phpbb3_user = Phpbb3User.objects.get(user=self.member)
|
||||
self.assertEqual(phpbb3_user.username, expected_username)
|
||||
@ -154,10 +154,10 @@ class Phpbb3ViewsTestCase(TestCase):
|
||||
self.login()
|
||||
Phpbb3User.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_phpbb3'))
|
||||
response = self.client.get(urls.reverse('phpbb3:deactivate'))
|
||||
|
||||
self.assertTrue(manager.disable_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
phpbb3_user = User.objects.get(pk=self.member.pk).phpbb3
|
||||
|
||||
@ -166,12 +166,12 @@ class Phpbb3ViewsTestCase(TestCase):
|
||||
self.login()
|
||||
Phpbb3User.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_phpbb3_password'), data={'password': '1234asdf'})
|
||||
response = self.client.post(urls.reverse('phpbb3:set_password'), data={'password': '1234asdf'})
|
||||
|
||||
self.assertTrue(manager.update_user_password.called)
|
||||
args, kwargs = manager.update_user_password.call_args
|
||||
self.assertEqual(kwargs['password'], '1234asdf')
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.views.Phpbb3Manager')
|
||||
def test_reset_password(self, manager):
|
||||
@ -180,9 +180,9 @@ class Phpbb3ViewsTestCase(TestCase):
|
||||
|
||||
manager.update_user_password.return_value = 'hunter2'
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_phpbb3_password'))
|
||||
response = self.client.get(urls.reverse('phpbb3:reset_password'))
|
||||
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, 'some member')
|
||||
self.assertContains(response, 'hunter2')
|
||||
|
||||
|
@ -4,12 +4,12 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# Forum Service Control
|
||||
url(r'^activate/$', views.activate_forum, name='auth_activate_phpbb3'),
|
||||
url(r'^deactivate/$', views.deactivate_forum, name='auth_deactivate_phpbb3'),
|
||||
url(r'^reset_password/$', views.reset_forum_password, name='auth_reset_phpbb3_password'),
|
||||
url(r'^set_password/$', views.set_forum_password, name='auth_set_phpbb3_password'),
|
||||
url(r'^activate/$', views.activate_forum, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_forum, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_forum_password, name='reset_password'),
|
||||
url(r'^set_password/$', views.set_forum_password, name='set_password'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^phpbb3/', include(module_urls))
|
||||
url(r'^phpbb3/', include(module_urls, namespace='phpbb3'))
|
||||
]
|
||||
|
@ -34,12 +34,12 @@ def activate_forum(request):
|
||||
'username': result[0],
|
||||
'password': result[1],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Forum'})
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate forum for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your forum account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -53,7 +53,7 @@ def deactivate_forum(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate forum for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your forum account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -71,12 +71,12 @@ def reset_forum_password(request):
|
||||
'username': request.user.phpbb3.username,
|
||||
'password': result,
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'Forum'})
|
||||
|
||||
logger.error("Unsuccessful attempt to reset forum password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your forum account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -99,11 +99,11 @@ def set_forum_password(request):
|
||||
else:
|
||||
logger.error("Failed to install custom forum password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your forum account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Forum'}
|
||||
return render(request, 'registered/service_password.html', context=context)
|
||||
return render(request, 'services/service_password.html', context=context)
|
||||
|
@ -46,10 +46,10 @@ class SeatService(ServicesHook):
|
||||
|
||||
def render_services_ctrl(self, request):
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_seat'
|
||||
urls.auth_deactivate = 'auth_deactivate_seat'
|
||||
urls.auth_reset_password = 'auth_reset_seat_password'
|
||||
urls.auth_set_password = 'auth_set_seat_password'
|
||||
urls.auth_activate = 'seat:activate'
|
||||
urls.auth_deactivate = 'seat:deactivate'
|
||||
urls.auth_reset_password = 'seat:reset_password'
|
||||
urls.auth_set_password = 'seat:set_password'
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
'urls': urls,
|
||||
|
@ -107,21 +107,21 @@ class SeatHooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_deactivate_seat'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_seat_password'), response)
|
||||
self.assertIn(urls.reverse('auth_set_seat_password'), response)
|
||||
self.assertIn(urls.reverse('seat:deactivate'), response)
|
||||
self.assertIn(urls.reverse('seat:reset_password'), response)
|
||||
self.assertIn(urls.reverse('seat:set_password'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.seat.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_seat'), response)
|
||||
self.assertIn(urls.reverse('seat:activate'), response)
|
||||
|
||||
|
||||
class SeatViewsTestCase(TestCase):
|
||||
@ -144,12 +144,12 @@ class SeatViewsTestCase(TestCase):
|
||||
manager.check_user_status.return_value = {}
|
||||
manager.add_user.return_value = (expected_username, 'abc123')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_seat'))
|
||||
response = self.client.get(urls.reverse('seat:activate'))
|
||||
|
||||
self.assertTrue(manager.add_user.called)
|
||||
self.assertTrue(tasks_manager.update_roles.called)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed('registered/service_credentials.html')
|
||||
self.assertTemplateUsed('services/service_credentials.html')
|
||||
self.assertContains(response, expected_username)
|
||||
seat_user = SeatUser.objects.get(user=self.member)
|
||||
self.assertEqual(seat_user.username, expected_username)
|
||||
@ -160,10 +160,10 @@ class SeatViewsTestCase(TestCase):
|
||||
self.login()
|
||||
SeatUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_seat'))
|
||||
response = self.client.get(urls.reverse('seat:deactivate'))
|
||||
|
||||
self.assertTrue(manager.delete_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
seat_user = User.objects.get(pk=self.member.pk).seat
|
||||
|
||||
@ -172,12 +172,12 @@ class SeatViewsTestCase(TestCase):
|
||||
self.login()
|
||||
SeatUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_seat_password'), data={'password': '1234asdf'})
|
||||
response = self.client.post(urls.reverse('seat:set_password'), data={'password': '1234asdf'})
|
||||
|
||||
self.assertTrue(manager.update_user_password.called)
|
||||
args, kwargs = manager.update_user_password.call_args
|
||||
self.assertEqual(kwargs['plain_password'], '1234asdf')
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.views.SeatManager')
|
||||
def test_reset_password(self, manager):
|
||||
@ -186,9 +186,9 @@ class SeatViewsTestCase(TestCase):
|
||||
|
||||
manager.update_user_password.return_value = 'hunter2'
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_seat_password'))
|
||||
response = self.client.get(urls.reverse('seat:reset_password'))
|
||||
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, 'some member')
|
||||
self.assertContains(response, 'hunter2')
|
||||
|
||||
|
@ -4,12 +4,12 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# SeAT Service Control
|
||||
url(r'^activate/$', views.activate_seat, name='auth_activate_seat'),
|
||||
url(r'^deactivate/$', views.deactivate_seat, name='auth_deactivate_seat'),
|
||||
url(r'^reset_password/$', views.reset_seat_password, name='auth_reset_seat_password'),
|
||||
url(r'^set_password/$', views.set_seat_password, name='auth_set_seat_password'),
|
||||
url(r'^activate/$', views.activate_seat, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_seat, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_seat_password, name='reset_password'),
|
||||
url(r'^set_password/$', views.set_seat_password, name='set_password'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^seat/', include(module_urls)),
|
||||
url(r'^seat/', include(module_urls, namespace='seat')),
|
||||
]
|
||||
|
@ -44,13 +44,13 @@ def activate_seat(request):
|
||||
'username': request.user.seat.username,
|
||||
'password': result[1],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'SeAT'})
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('Failed to activate your %(service)s account, please contact your administrator.') %
|
||||
SERVICE_NAME)
|
||||
logger.error("Unsuccessful attempt to activate seat for user %s" % request.user)
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -62,14 +62,14 @@ def deactivate_seat(request):
|
||||
messages.add_message(request, messages.SUCCESS,
|
||||
_('Successfully deactivated your %(service)s account.') % SERVICE_NAME)
|
||||
logger.info("Successfully deactivated SeAT for user %s" % request.user)
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
logging.error("User does not have a SeAT account")
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('Failed to deactivate your %(service)s account, please contact your administrator.') %
|
||||
SERVICE_NAME)
|
||||
logger.error("Unsuccessful attempt to activate SeAT for user %s" % request.user)
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -87,13 +87,13 @@ def reset_seat_password(request):
|
||||
messages.add_message(request, messages.SUCCESS,
|
||||
_('Successfully reset your %(service)s password.') % {'service': 'SeAT'})
|
||||
logger.info("Succesfully reset SeAT password for user %s" % request.user)
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'SeAT'})
|
||||
logger.error("Unsuccessful attempt to reset SeAT password for user %s" % request.user)
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('Failed to reset your %(service)s password, please contact your administrator.') %
|
||||
{'service': 'SeAT'})
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -114,7 +114,7 @@ def set_seat_password(request):
|
||||
messages.add_message(request, messages.SUCCESS,
|
||||
_('Successfully set your %(service)s password.') % SERVICE_NAME)
|
||||
logger.info("Succesfully reset SeAT password for user %s" % request.user)
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
messages.add_message(request, messages.ERROR,
|
||||
_('Failed to set your %(service)s password, please contact your administrator.') %
|
||||
@ -128,4 +128,4 @@ def set_seat_password(request):
|
||||
form = ServicePasswordForm()
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'SeAT'}
|
||||
return render(request, 'registered/service_password.html', context)
|
||||
return render(request, 'services/service_password.html', context)
|
||||
|
@ -46,10 +46,10 @@ class SmfService(ServicesHook):
|
||||
|
||||
def render_services_ctrl(self, request):
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_smf'
|
||||
urls.auth_deactivate = 'auth_deactivate_smf'
|
||||
urls.auth_reset_password = 'auth_reset_smf_password'
|
||||
urls.auth_set_password = 'auth_set_smf_password'
|
||||
urls.auth_activate = 'smf:activate'
|
||||
urls.auth_deactivate = 'smf:deactivate'
|
||||
urls.auth_reset_password = 'smf:reset_password'
|
||||
urls.auth_set_password = 'smf:set_password'
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
'urls': urls,
|
||||
|
@ -103,21 +103,21 @@ class SmfHooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_deactivate_smf'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_smf_password'), response)
|
||||
self.assertIn(urls.reverse('auth_set_smf_password'), response)
|
||||
self.assertIn(urls.reverse('smf:deactivate'), response)
|
||||
self.assertIn(urls.reverse('smf:reset_password'), response)
|
||||
self.assertIn(urls.reverse('smf:set_password'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.smf.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_smf'), response)
|
||||
self.assertIn(urls.reverse('smf:activate'), response)
|
||||
|
||||
|
||||
class SmfViewsTestCase(TestCase):
|
||||
@ -139,12 +139,12 @@ class SmfViewsTestCase(TestCase):
|
||||
expected_username = 'auth_member'
|
||||
manager.add_user.return_value = (expected_username, 'abc123')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_smf'))
|
||||
response = self.client.get(urls.reverse('smf:activate'))
|
||||
|
||||
self.assertTrue(manager.add_user.called)
|
||||
self.assertTrue(tasks_manager.update_groups.called)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed('registered/service_credentials.html')
|
||||
self.assertTemplateUsed('services/service_credentials.html')
|
||||
self.assertContains(response, expected_username)
|
||||
smf_user = SmfUser.objects.get(user=self.member)
|
||||
self.assertEqual(smf_user.username, expected_username)
|
||||
@ -154,10 +154,10 @@ class SmfViewsTestCase(TestCase):
|
||||
self.login()
|
||||
SmfUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_smf'))
|
||||
response = self.client.get(urls.reverse('smf:deactivate'))
|
||||
|
||||
self.assertTrue(manager.disable_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
smf_user = User.objects.get(pk=self.member.pk).smf
|
||||
|
||||
@ -166,12 +166,12 @@ class SmfViewsTestCase(TestCase):
|
||||
self.login()
|
||||
SmfUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_smf_password'), data={'password': '1234asdf'})
|
||||
response = self.client.post(urls.reverse('smf:set_password'), data={'password': '1234asdf'})
|
||||
|
||||
self.assertTrue(manager.update_user_password.called)
|
||||
args, kwargs = manager.update_user_password.call_args
|
||||
self.assertEqual(kwargs['password'], '1234asdf')
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.views.SmfManager')
|
||||
def test_reset_password(self, manager):
|
||||
@ -180,9 +180,9 @@ class SmfViewsTestCase(TestCase):
|
||||
|
||||
manager.update_user_password.return_value = 'hunter2'
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_smf_password'))
|
||||
response = self.client.get(urls.reverse('smf:reset_password'))
|
||||
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, 'some member')
|
||||
self.assertContains(response, 'hunter2')
|
||||
|
||||
|
@ -4,12 +4,12 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# SMF Service Control
|
||||
url(r'^activate/$', views.activate_smf, name='auth_activate_smf'),
|
||||
url(r'^deactivate/$', views.deactivate_smf, name='auth_deactivate_smf'),
|
||||
url(r'^reset_password/$', views.reset_smf_password, name='auth_reset_smf_password'),
|
||||
url(r'^set_password/$', views.set_smf_password, name='auth_set_smf_password'),
|
||||
url(r'^activate/$', views.activate_smf, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_smf, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_smf_password, name='reset_password'),
|
||||
url(r'^set_password/$', views.set_smf_password, name='set_password'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^smf/', include(module_urls)),
|
||||
url(r'^smf/', include(module_urls, namespace='smf')),
|
||||
]
|
||||
|
@ -33,12 +33,12 @@ def activate_smf(request):
|
||||
'username': result[0],
|
||||
'password': result[1],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'SMF'})
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate smf for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your SMF account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -53,7 +53,7 @@ def deactivate_smf(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate smf for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your SMF account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -71,11 +71,11 @@ def reset_smf_password(request):
|
||||
'username': request.user.smf.username,
|
||||
'password': result,
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'SMF'})
|
||||
logger.error("Unsuccessful attempt to reset smf password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your SMF account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -98,11 +98,11 @@ def set_smf_password(request):
|
||||
else:
|
||||
logger.error("Failed to install custom smf password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your SMF account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'SMF'}
|
||||
return render(request, 'registered/service_password.html', context=context)
|
||||
return render(request, 'services/service_password.html', context=context)
|
||||
|
@ -15,7 +15,7 @@ class Teamspeak3Service(ServicesHook):
|
||||
ServicesHook.__init__(self)
|
||||
self.name = 'teamspeak3'
|
||||
self.urlpatterns = urlpatterns
|
||||
self.service_ctrl_template = 'registered/teamspeak3_service_ctrl.html'
|
||||
self.service_ctrl_template = 'services/teamspeak3/teamspeak3_service_ctrl.html'
|
||||
self.access_perm = 'teamspeak3.access_teamspeak3'
|
||||
|
||||
def delete_user(self, user, notify_user=False):
|
||||
|
@ -6,17 +6,17 @@
|
||||
<td class="text-center"><a href="ts3server://{{ TEAMSPEAK3_PUBLIC_URL }}">{{ TEAMSPEAK3_PUBLIC_URL }}</a></td>
|
||||
<td class="text-center">
|
||||
{% ifequal authinfo.teamspeak3_uid "" %}
|
||||
<a href="{% url 'auth_activate_teamspeak3' %}" title="Activate" class="btn btn-warning">
|
||||
<a href="{% url 'teamspeak3:activate' %}" title="Activate" class="btn btn-warning">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'auth_verify_teamspeak3' %}" title="Verify Client ID" class="btn btn-success" title="Verify">
|
||||
<a href="{% url 'teamspeak3:verify' %}" title="Verify Client ID" class="btn btn-success" title="Verify">
|
||||
<span class="glyphicon glyphicon-log-in"></span>
|
||||
</a>
|
||||
<a href="{% url 'auth_reset_teamspeak3_perm' %}" title="Refresh Token" class="btn btn-primary">
|
||||
<a href="{% url 'teamspeak3:reset_perm' %}" title="Refresh Token" class="btn btn-primary">
|
||||
<span class="glyphicon glyphicon-refresh"></span>
|
||||
</a>
|
||||
<a href="{% url 'auth_deactivate_teamspeak3' %}" title="Deactivate" class="btn btn-danger">
|
||||
<a href="{% url 'teamspeak3:deactivate' %}" title="Deactivate" class="btn btn-danger">
|
||||
<span class="glyphicon glyphicon-remove"></span>
|
||||
</a>
|
||||
<a href="ts3server://{{ TEAMSPEAK3_PUBLIC_URL }}?nickname={{ authinfo.teamspeak3_uid }}" title="Connect" class="btn btn-success">
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
@ -15,7 +15,7 @@
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<a href="ts3server://{{ TEAMSPEAK3_PUBLIC_URL }}?token={{ authinfo.teamspeak3_perm_key }}&nickname={{ authinfo.teamspeak3_uid }}" class="btn btn-primary btn-block btn-lg" title="Join">{% trans "Join Server" %}</a>
|
||||
<br/>
|
||||
<form class="form-signin" role="form" action="{% url 'auth_verify_teamspeak3' %}" method="POST">
|
||||
<form class="form-signin" role="form" action="{% url 'teamspeak3:verify' %}" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
@ -115,20 +115,20 @@ class Teamspeak3HooksTestCase(TestCase):
|
||||
def test_render_services_ctrl(self):
|
||||
service = self.service()
|
||||
member = User.objects.get(username=self.member)
|
||||
request = RequestFactory().get('/en/services/')
|
||||
request = RequestFactory().get('/services/')
|
||||
request.user = member
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_deactivate_teamspeak3'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_teamspeak3_perm'), response)
|
||||
self.assertIn(urls.reverse('teamspeak3:deactivate'), response)
|
||||
self.assertIn(urls.reverse('teamspeak3:reset_perm'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.teamspeak3.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_teamspeak3'), response)
|
||||
self.assertIn(urls.reverse('teamspeak3:activate'), response)
|
||||
|
||||
|
||||
class Teamspeak3ViewsTestCase(TestCase):
|
||||
@ -160,13 +160,13 @@ class Teamspeak3ViewsTestCase(TestCase):
|
||||
instance = manager.return_value.__enter__.return_value
|
||||
instance.add_user.return_value = (expected_username, 'abc123')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_teamspeak3'))
|
||||
response = self.client.get(urls.reverse('teamspeak3:activate'))
|
||||
|
||||
self.assertTrue(instance.add_user.called)
|
||||
teamspeak3_user = Teamspeak3User.objects.get(user=self.member)
|
||||
self.assertTrue(teamspeak3_user.uid)
|
||||
self.assertTrue(teamspeak3_user.perm_key)
|
||||
self.assertRedirects(response, urls.reverse('auth_verify_teamspeak3'), target_status_code=200)
|
||||
self.assertRedirects(response, urls.reverse('teamspeak3:verify'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.forms.Teamspeak3Manager')
|
||||
@mock.patch(MODULE_PATH + '.tasks.Teamspeak3Manager')
|
||||
@ -180,9 +180,9 @@ class Teamspeak3ViewsTestCase(TestCase):
|
||||
Teamspeak3User.objects.update_or_create(user=self.member, defaults={'uid': '1234', 'perm_key': '5678'})
|
||||
data = {'username': 'auth_member'}
|
||||
|
||||
response = self.client.post(urls.reverse('auth_verify_teamspeak3'), data)
|
||||
response = self.client.post(urls.reverse('teamspeak3:verify'), data)
|
||||
|
||||
self.assertRedirects(response, urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, urls.reverse('services:services'), target_status_code=200)
|
||||
self.assertTrue(manager.return_value.__enter__.return_value.update_groups.called)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.tasks.Teamspeak3Manager')
|
||||
@ -190,10 +190,10 @@ class Teamspeak3ViewsTestCase(TestCase):
|
||||
self.login()
|
||||
Teamspeak3User.objects.create(user=self.member, uid='some member')
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_teamspeak3'))
|
||||
response = self.client.get(urls.reverse('teamspeak3:deactivate'))
|
||||
|
||||
self.assertTrue(manager.return_value.__enter__.return_value.delete_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
teamspeak3_user = User.objects.get(pk=self.member.pk).teamspeak3
|
||||
|
||||
@ -205,9 +205,9 @@ class Teamspeak3ViewsTestCase(TestCase):
|
||||
|
||||
manager.return_value.__enter__.return_value.generate_new_permissionkey.return_value = "valid_member", "123abc"
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_teamspeak3_perm'))
|
||||
response = self.client.get(urls.reverse('teamspeak3:reset_perm'))
|
||||
|
||||
self.assertRedirects(response, urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, urls.reverse('services:services'), target_status_code=200)
|
||||
ts3_user = Teamspeak3User.objects.get(uid='valid_member')
|
||||
self.assertEqual(ts3_user.uid, 'valid_member')
|
||||
self.assertEqual(ts3_user.perm_key, '123abc')
|
||||
|
@ -5,16 +5,16 @@ from . import views
|
||||
module_urls = [
|
||||
# Teamspeak3 service control
|
||||
url(r'^activate/$', views.activate_teamspeak3,
|
||||
name='auth_activate_teamspeak3'),
|
||||
name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_teamspeak3,
|
||||
name='auth_deactivate_teamspeak3'),
|
||||
name='deactivate'),
|
||||
url(r'reset_perm/$', views.reset_teamspeak3_perm,
|
||||
name='auth_reset_teamspeak3_perm'),
|
||||
name='reset_perm'),
|
||||
|
||||
# Teamspeak Urls
|
||||
url(r'verify/$', views.verify_teamspeak3, name='auth_verify_teamspeak3'),
|
||||
url(r'verify/$', views.verify_teamspeak3, name='verify'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^teamspeak3/', include(module_urls)),
|
||||
url(r'^teamspeak3/', include(module_urls, namespace='teamspeak3')),
|
||||
]
|
||||
|
@ -31,10 +31,10 @@ def activate_teamspeak3(request):
|
||||
logger.debug("Updated authserviceinfo for user %s with TS3 credentials. Updating groups." % request.user)
|
||||
logger.info("Successfully activated TS3 for user %s" % request.user)
|
||||
messages.success(request, 'Activated TeamSpeak3 account.')
|
||||
return redirect("auth_verify_teamspeak3")
|
||||
return redirect("teamspeak3:verify")
|
||||
logger.error("Unsuccessful attempt to activate TS3 for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your TeamSpeak3 account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -43,13 +43,13 @@ def verify_teamspeak3(request):
|
||||
logger.debug("verify_teamspeak3 called by user %s" % request.user)
|
||||
if not Teamspeak3Tasks.has_account(request.user):
|
||||
logger.warn("Unable to validate user %s teamspeak: no teamspeak data" % request.user)
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
if request.method == "POST":
|
||||
form = TeamspeakJoinForm(request.POST)
|
||||
if form.is_valid():
|
||||
Teamspeak3Tasks.update_groups.delay(request.user.pk)
|
||||
logger.debug("Validated user %s joined TS server" % request.user)
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
else:
|
||||
form = TeamspeakJoinForm(initial={'username': request.user.teamspeak3.uid})
|
||||
context = {
|
||||
@ -57,7 +57,7 @@ def verify_teamspeak3(request):
|
||||
'authinfo': {'teamspeak3_uid': request.user.teamspeak3.uid,
|
||||
'teamspeak3_perm_key': request.user.teamspeak3.perm_key},
|
||||
}
|
||||
return render(request, 'registered/teamspeakjoin.html', context=context)
|
||||
return render(request, 'services/teamspeak3/teamspeakjoin.html', context=context)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -70,7 +70,7 @@ def deactivate_teamspeak3(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to deactivate TS3 for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your TeamSpeak3 account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -78,7 +78,7 @@ def deactivate_teamspeak3(request):
|
||||
def reset_teamspeak3_perm(request):
|
||||
logger.debug("reset_teamspeak3_perm called by user %s" % request.user)
|
||||
if not Teamspeak3Tasks.has_account(request.user):
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
character = request.user.profile.main_character
|
||||
logger.debug("Deleting TS3 user for user %s" % request.user)
|
||||
with Teamspeak3Manager() as ts3man:
|
||||
@ -98,4 +98,4 @@ def reset_teamspeak3_perm(request):
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to reset TS3 permission key for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your TeamSpeak3 account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
@ -35,10 +35,10 @@ class XenforoService(ServicesHook):
|
||||
|
||||
def render_services_ctrl(self, request):
|
||||
urls = self.Urls()
|
||||
urls.auth_activate = 'auth_activate_xenforo'
|
||||
urls.auth_deactivate = 'auth_deactivate_xenforo'
|
||||
urls.auth_reset_password = 'auth_reset_xenforo_password'
|
||||
urls.auth_set_password = 'auth_set_xenforo_password'
|
||||
urls.auth_activate = 'xenforo:activate'
|
||||
urls.auth_deactivate = 'xenforo:deactivate'
|
||||
urls.auth_reset_password = 'xenforo:reset_password'
|
||||
urls.auth_set_password = 'xenforo:set_password'
|
||||
return render_to_string(self.service_ctrl_template, {
|
||||
'service_name': self.title,
|
||||
'urls': urls,
|
||||
|
@ -84,16 +84,16 @@ class XenforoHooksTestCase(TestCase):
|
||||
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertTemplateUsed(service.service_ctrl_template)
|
||||
self.assertIn(urls.reverse('auth_deactivate_xenforo'), response)
|
||||
self.assertIn(urls.reverse('auth_reset_xenforo_password'), response)
|
||||
self.assertIn(urls.reverse('auth_set_xenforo_password'), response)
|
||||
self.assertIn(urls.reverse('xenforo:deactivate'), response)
|
||||
self.assertIn(urls.reverse('xenforo:reset_password'), response)
|
||||
self.assertIn(urls.reverse('xenforo:set_password'), response)
|
||||
|
||||
# Test register becomes available
|
||||
member.xenforo.delete()
|
||||
member = User.objects.get(username=self.member)
|
||||
request.user = member
|
||||
response = service.render_services_ctrl(request)
|
||||
self.assertIn(urls.reverse('auth_activate_xenforo'), response)
|
||||
self.assertIn(urls.reverse('xenforo:activate'), response)
|
||||
|
||||
|
||||
class XenforoViewsTestCase(TestCase):
|
||||
@ -119,11 +119,11 @@ class XenforoViewsTestCase(TestCase):
|
||||
'username': expected_username,
|
||||
}
|
||||
|
||||
response = self.client.get(urls.reverse('auth_activate_xenforo'))
|
||||
response = self.client.get(urls.reverse('xenforo:activate'))
|
||||
|
||||
self.assertTrue(manager.add_user.called)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed('registered/service_credentials.html')
|
||||
self.assertTemplateUsed('services/service_credentials.html')
|
||||
self.assertContains(response, expected_username)
|
||||
xenforo_user = XenforoUser.objects.get(user=self.member)
|
||||
self.assertEqual(xenforo_user.username, expected_username)
|
||||
@ -135,10 +135,10 @@ class XenforoViewsTestCase(TestCase):
|
||||
|
||||
manager.disable_user.return_value = 200
|
||||
|
||||
response = self.client.get(urls.reverse('auth_deactivate_xenforo'))
|
||||
response = self.client.get(urls.reverse('xenforo:deactivate'))
|
||||
|
||||
self.assertTrue(manager.disable_user.called)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
with self.assertRaises(ObjectDoesNotExist):
|
||||
xenforo_user = User.objects.get(pk=self.member.pk).xenforo
|
||||
|
||||
@ -147,12 +147,12 @@ class XenforoViewsTestCase(TestCase):
|
||||
self.login()
|
||||
XenforoUser.objects.create(user=self.member, username='some member')
|
||||
|
||||
response = self.client.post(urls.reverse('auth_set_xenforo_password'), data={'password': '1234asdf'})
|
||||
response = self.client.post(urls.reverse('xenforo:set_password'), data={'password': '1234asdf'})
|
||||
|
||||
self.assertTrue(manager.update_user_password.called)
|
||||
args, kwargs = manager.update_user_password.call_args
|
||||
self.assertEqual(args[1], '1234asdf')
|
||||
self.assertRedirects(response, expected_url=urls.reverse('auth_services'), target_status_code=200)
|
||||
self.assertRedirects(response, expected_url=urls.reverse('services:services'), target_status_code=200)
|
||||
|
||||
@mock.patch(MODULE_PATH + '.views.XenForoManager')
|
||||
def test_reset_password(self, manager):
|
||||
@ -164,10 +164,10 @@ class XenforoViewsTestCase(TestCase):
|
||||
'password': 'hunter2',
|
||||
}
|
||||
|
||||
response = self.client.get(urls.reverse('auth_reset_xenforo_password'))
|
||||
response = self.client.get(urls.reverse('xenforo:reset_password'))
|
||||
|
||||
self.assertEqual(response.status_code, 200)
|
||||
self.assertTemplateUsed(response, 'registered/service_credentials.html')
|
||||
self.assertTemplateUsed(response, 'services/service_credentials.html')
|
||||
self.assertContains(response, 'some member')
|
||||
self.assertContains(response, 'hunter2')
|
||||
|
||||
|
@ -4,12 +4,12 @@ from . import views
|
||||
|
||||
module_urls = [
|
||||
# XenForo service control
|
||||
url(r'^activate/$', views.activate_xenforo_forum, name='auth_activate_xenforo'),
|
||||
url(r'^deactivate/$', views.deactivate_xenforo_forum, name='auth_deactivate_xenforo'),
|
||||
url(r'^reset_password/$', views.reset_xenforo_password, name='auth_reset_xenforo_password'),
|
||||
url(r'^set_password/$', views.set_xenforo_password, name='auth_set_xenforo_password'),
|
||||
url(r'^activate/$', views.activate_xenforo_forum, name='activate'),
|
||||
url(r'^deactivate/$', views.deactivate_xenforo_forum, name='deactivate'),
|
||||
url(r'^reset_password/$', views.reset_xenforo_password, name='reset_password'),
|
||||
url(r'^set_password/$', views.set_xenforo_password, name='set_password'),
|
||||
]
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^xenforo/', include(module_urls)),
|
||||
url(r'^xenforo/', include(module_urls, namespace='xenforo')),
|
||||
]
|
||||
|
@ -30,13 +30,13 @@ def activate_xenforo_forum(request):
|
||||
'username': result['username'],
|
||||
'password': result['password'],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'XenForo'})
|
||||
|
||||
else:
|
||||
logger.error("Unsuccessful attempt to activate xenforo for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your XenForo account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -48,7 +48,7 @@ def deactivate_xenforo_forum(request):
|
||||
messages.success(request, 'Deactivated XenForo account.')
|
||||
else:
|
||||
messages.error(request, 'An error occurred while processing your XenForo account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -65,11 +65,11 @@ def reset_xenforo_password(request):
|
||||
'username': request.user.xenforo.username,
|
||||
'password': result['password'],
|
||||
}
|
||||
return render(request, 'registered/service_credentials.html',
|
||||
return render(request, 'services/service_credentials.html',
|
||||
context={'credentials': credentials, 'service': 'XenForo'})
|
||||
logger.error("Unsuccessful attempt to reset XenForo password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your XenForo account.')
|
||||
return redirect("auth_services")
|
||||
return redirect("services:services")
|
||||
|
||||
|
||||
@login_required
|
||||
@ -90,11 +90,11 @@ def set_xenforo_password(request):
|
||||
else:
|
||||
logger.error("Failed to install custom XenForo password for user %s" % request.user)
|
||||
messages.error(request, 'An error occurred while processing your XenForo account.')
|
||||
return redirect('auth_services')
|
||||
return redirect('services:services')
|
||||
else:
|
||||
logger.debug("Request is not type POST - providing empty form.")
|
||||
form = ServicePasswordForm()
|
||||
|
||||
logger.debug("Rendering form for user %s" % request.user)
|
||||
context = {'form': form, 'service': 'Forum'}
|
||||
return render(request, 'registered/service_password.html', context=context)
|
||||
return render(request, 'services/service_password.html', context=context)
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
</div>
|
||||
{% endfor %}
|
||||
</form>
|
||||
<a href="{% url 'auth_services' %}" class="btn btn-lg btn-block btn-primary" title="Continue">{% trans "Continue" %}</a>
|
||||
<a href="{% url 'services:services' %}" class="btn btn-lg btn-block btn-primary" title="Continue">{% trans "Continue" %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
18
allianceauth/services/urls.py
Normal file
18
allianceauth/services/urls.py
Normal file
@ -0,0 +1,18 @@
|
||||
from django.conf.urls import include, url
|
||||
from allianceauth.hooks import get_hooks
|
||||
|
||||
from . import views
|
||||
|
||||
urlpatterns = [
|
||||
# Services
|
||||
url(r'^services/', include([
|
||||
url(r'^$', views.services_view, name='services'),
|
||||
# Tools
|
||||
url(r'^tool/fleet_formatter_tool/$', views.fleet_formatter_view, name='fleet_format_tool'),
|
||||
], namespace='services')),
|
||||
]
|
||||
|
||||
# Append hooked service urls
|
||||
services = get_hooks('services_hook')
|
||||
for svc in services:
|
||||
urlpatterns += svc().urlpatterns
|
@ -36,7 +36,7 @@ def fleet_formatter_view(request):
|
||||
|
||||
context = {'form': form, 'generated': generated}
|
||||
|
||||
return render(request, 'registered/fleetformattertool.html', context=context)
|
||||
return render(request, 'services/fleetformattertool.html', context=context)
|
||||
|
||||
|
||||
@login_required
|
||||
@ -50,7 +50,7 @@ def services_view(request):
|
||||
if svc.show_service_ctrl(request.user):
|
||||
context['service_ctrls'].append(svc.render_services_ctrl(request))
|
||||
|
||||
return render(request, 'registered/services.html', context=context)
|
||||
return render(request, 'services/services.html', context=context)
|
||||
|
||||
|
||||
def superuser_test(user):
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
@ -1,4 +1,4 @@
|
||||
{% extends "registered/base.html" %}
|
||||
{% extends "allianceauth/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
{% load i18n %}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user