Move templates and urls to apps.

Implement url hooks.
Many apps are now removable.
Default to assuming services have been migrated.
This commit is contained in:
Adarnof
2017-06-07 22:49:46 -04:00
parent 9cc9a36766
commit 97fe2ddfd0
62 changed files with 685 additions and 469 deletions

22
services/auth_hooks.py Normal file
View File

@@ -0,0 +1,22 @@
from services.hooks import MenuItemHook
from alliance_auth import hooks
from services.hooks import ServicesHook
class Services(MenuItemHook):
def __init__(self):
MenuItemHook.__init__(self,
'Services',
'fa fa-cogs fa-fw grayiconecolor',
'auth_services', 100)
def render(self, request):
for svc in ServicesHook.get_services():
if svc.service_active_for_user(request.user):
return MenuItemHook.render(self, request)
return ''
@hooks.register('menu_item_hook')
def register_menu():
return Services()

View File

@@ -1,7 +1,7 @@
from __future__ import unicode_literals
from django.template.loader import render_to_string
from django.conf.urls import include, url
from alliance_auth.hooks import get_hooks
@@ -104,14 +104,22 @@ class ServicesHook:
class MenuItemHook:
def __init__(self, text, classes, url_name, order=None):
def __init__(self, text, classes, url_name, order=None, navactive=list([])):
self.text = text
self.classes = classes
self.url_name = url_name
self.template = 'public/menuitem.html'
self.order = order if order is not None else 9999
navactive = navactive or []
navactive.append(url_name)
self.navactive = navactive
def render(self, request):
return render_to_string(self.template,
{'item': self},
request=request)
class UrlHook:
def __init__(self, urls, namespace, base_url):
self.include_pattern = url(base_url, include(urls, namespace=namespace))

View File

@@ -81,11 +81,29 @@ class JabberBroadcast(MenuItemHook):
'auth_jabber_broadcast_view')
def render(self, request):
if request.user.has_perm('auth.jabber_broadcast'):
if request.user.has_perm('auth.jabber_broadcast') or request.user.has_perm('auth.jabber_broadcast_all'):
return MenuItemHook.render(self, request)
return ''
@hooks.register('menu_util_hook')
class FleetBroadcastFormatter(MenuItemHook):
def __init__(self):
MenuItemHook.__init__(self,
'Fleet Broadcast Formatter',
'fa fa-lock fa-fw fa-space-shuttle grayiconecolor',
'auth_fleet_format_tool_view')
def render(self, request):
if request.user.has_perm('auth.jabber_broadcast') or request.user.has_perm('auth.jabber_broadcast_all'):
return MenuItemHook.render(self, request)
return ''
@hooks.register('menu_item_hook')
def register_formatter():
return FleetBroadcastFormatter()
@hooks.register('menu_item_hook')
def register_menu():
return JabberBroadcast()

View File

@@ -2,7 +2,7 @@
{% load navactive %}
<li>
<a class="{% navactive request item.url_name %}" href="{% url item.url_name %}">
<a class="{% navactive request item.navactive|join:" " %}" href="{% url item.url_name %}">
<i class="{{ item.classes }}"></i> {% trans item.text %}
</a>
</li>

View File

@@ -17,27 +17,9 @@ def process_menu_items(hooks, request):
@register.inclusion_tag('public/menublock.html', takes_context=True)
def menu_main(context):
def menu_items(context):
request = context['request']
return {
'menu_items': process_menu_items(get_hooks('menu_main_hook'), request),
}
@register.inclusion_tag('public/menublock.html', takes_context=True)
def menu_aux(context):
request = context['request']
return {
'menu_items': process_menu_items(get_hooks('menu_aux_hook'), request),
}
@register.inclusion_tag('public/menublock.html', takes_context=True)
def menu_util(context):
request = context['request']
return {
'menu_items': process_menu_items(get_hooks('menu_util_hook'), request),
'menu_items': process_menu_items(get_hooks('menu_item_hook'), request),
}