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