2014-05-08 16:59:35 +00:00
|
|
|
from admin_tools.menu import items, Menu
|
|
|
|
from django.core.urlresolvers import reverse
|
2014-07-08 15:19:15 +00:00
|
|
|
from django.utils.text import capfirst
|
2014-05-08 16:59:35 +00:00
|
|
|
from django.utils.translation import ugettext_lazy as _
|
|
|
|
|
|
|
|
from orchestra.core import services
|
|
|
|
from orchestra.utils.apps import isinstalled
|
|
|
|
|
|
|
|
|
|
|
|
def api_link(context):
|
|
|
|
""" Dynamically generates API related URL """
|
|
|
|
if 'opts' in context:
|
|
|
|
opts = context['opts']
|
|
|
|
elif 'cl' in context:
|
|
|
|
opts = context['cl'].opts
|
|
|
|
else:
|
|
|
|
return reverse('api-root')
|
|
|
|
if 'object_id' in context:
|
|
|
|
object_id = context['object_id']
|
|
|
|
try:
|
2014-07-08 15:19:15 +00:00
|
|
|
return reverse('%s-detail' % opts.model_name, args=[object_id])
|
2014-05-08 16:59:35 +00:00
|
|
|
except:
|
|
|
|
return reverse('api-root')
|
|
|
|
try:
|
2014-07-08 15:19:15 +00:00
|
|
|
return reverse('%s-list' % opts.model_name)
|
2014-05-08 16:59:35 +00:00
|
|
|
except:
|
|
|
|
return reverse('api-root')
|
|
|
|
|
|
|
|
|
|
|
|
def get_services():
|
|
|
|
result = []
|
|
|
|
for model, options in services.get().iteritems():
|
|
|
|
if options.get('menu', True):
|
|
|
|
opts = model._meta
|
2014-07-24 09:53:34 +00:00
|
|
|
url = reverse('admin:{}_{}_changelist'.format(
|
|
|
|
opts.app_label, opts.model_name))
|
2014-07-08 15:19:15 +00:00
|
|
|
name = capfirst(options.get('verbose_name_plural'))
|
|
|
|
result.append(items.MenuItem(name, url))
|
2014-05-08 16:59:35 +00:00
|
|
|
return sorted(result, key=lambda i: i.title)
|
|
|
|
|
|
|
|
|
2014-07-23 18:28:40 +00:00
|
|
|
def get_account_items():
|
|
|
|
childrens = [
|
2014-07-24 09:53:34 +00:00
|
|
|
items.MenuItem(_("Accounts"),
|
|
|
|
reverse('admin:accounts_account_changelist'))
|
2014-05-08 16:59:35 +00:00
|
|
|
]
|
|
|
|
if isinstalled('orchestra.apps.contacts'):
|
|
|
|
url = reverse('admin:contacts_contact_changelist')
|
2014-07-23 18:28:40 +00:00
|
|
|
childrens.append(items.MenuItem(_("Contacts"), url))
|
2014-05-08 16:59:35 +00:00
|
|
|
if isinstalled('orchestra.apps.users'):
|
|
|
|
url = reverse('admin:users_user_changelist')
|
2014-07-24 09:53:34 +00:00
|
|
|
childrens.append(items.MenuItem(_("Users"), url))
|
2014-05-27 15:55:09 +00:00
|
|
|
if isinstalled('orchestra.apps.prices'):
|
2014-07-16 15:20:16 +00:00
|
|
|
url = reverse('admin:prices_pack_changelist')
|
2014-07-23 18:28:40 +00:00
|
|
|
childrens.append(items.MenuItem(_("Packs"), url))
|
2014-05-27 15:55:09 +00:00
|
|
|
if isinstalled('orchestra.apps.orders'):
|
|
|
|
url = reverse('admin:orders_order_changelist')
|
2014-07-23 18:28:40 +00:00
|
|
|
childrens.append(items.MenuItem(_("Orders"), url))
|
2014-07-24 09:53:34 +00:00
|
|
|
if isinstalled('orchestra.apps.bills'):
|
|
|
|
url = reverse('admin:bills_bill_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Bills"), url))
|
|
|
|
if isinstalled('orchestra.apps.payments'):
|
|
|
|
url = reverse('admin:payments_transaction_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Transactions"), url))
|
2014-07-28 17:28:00 +00:00
|
|
|
url = reverse('admin:payments_paymentsource_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Payment Sources"), url))
|
2014-07-23 18:28:40 +00:00
|
|
|
if isinstalled('orchestra.apps.issues'):
|
|
|
|
url = reverse('admin:issues_ticket_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Tickets"), url))
|
|
|
|
return childrens
|
2014-05-08 16:59:35 +00:00
|
|
|
|
|
|
|
|
2014-07-23 18:28:40 +00:00
|
|
|
def get_administration_items():
|
|
|
|
childrens = []
|
|
|
|
if isinstalled('orchestra.apps.orders'):
|
|
|
|
url = reverse('admin:orders_service_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Services"), url))
|
2014-05-08 16:59:35 +00:00
|
|
|
if isinstalled('orchestra.apps.orchestration'):
|
2014-07-23 18:28:40 +00:00
|
|
|
route = reverse('admin:orchestration_route_changelist')
|
|
|
|
backendlog = reverse('admin:orchestration_backendlog_changelist')
|
|
|
|
server = reverse('admin:orchestration_server_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Orchestration"), route, children=[
|
|
|
|
items.MenuItem(_("Routes"), route),
|
|
|
|
items.MenuItem(_("Backend logs"), backendlog),
|
|
|
|
items.MenuItem(_("Servers"), server),
|
|
|
|
]))
|
2014-07-08 15:19:15 +00:00
|
|
|
if isinstalled('orchestra.apps.resources'):
|
2014-07-23 18:28:40 +00:00
|
|
|
resource = reverse('admin:resources_resource_changelist')
|
|
|
|
data = reverse('admin:resources_resourcedata_changelist')
|
|
|
|
monitor = reverse('admin:resources_monitordata_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Resources"), resource, children=[
|
|
|
|
items.MenuItem(_("Resources"), resource),
|
|
|
|
items.MenuItem(_("Data"), data),
|
|
|
|
items.MenuItem(_("Monitoring"), monitor),
|
|
|
|
]))
|
2014-07-16 15:20:16 +00:00
|
|
|
if isinstalled('orchestra.apps.miscellaneous'):
|
2014-07-23 18:28:40 +00:00
|
|
|
url = reverse('admin:miscellaneous_miscservice_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Miscellaneous"), url))
|
|
|
|
if isinstalled('orchestra.apps.issues'):
|
|
|
|
url = reverse('admin:issues_queue_changelist')
|
2014-07-24 09:53:34 +00:00
|
|
|
childrens.append(items.MenuItem(_("Ticket queues"), url))
|
2014-07-23 18:28:40 +00:00
|
|
|
if isinstalled('djcelery'):
|
|
|
|
task = reverse('admin:djcelery_taskstate_changelist')
|
|
|
|
periodic = reverse('admin:djcelery_periodictask_changelist')
|
|
|
|
worker = reverse('admin:djcelery_workerstate_changelist')
|
|
|
|
childrens.append(items.MenuItem(_("Celery"), task, children=[
|
|
|
|
items.MenuItem(_("Tasks"), task),
|
|
|
|
items.MenuItem(_("Periodic tasks"), periodic),
|
|
|
|
items.MenuItem(_("Workers"), worker),
|
|
|
|
]))
|
|
|
|
return childrens
|
2014-05-08 16:59:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
class OrchestraMenu(Menu):
|
|
|
|
def init_with_context(self, context):
|
|
|
|
self.children += [
|
|
|
|
items.MenuItem(
|
|
|
|
_('Dashboard'),
|
|
|
|
reverse('admin:index')
|
|
|
|
),
|
|
|
|
items.Bookmarks(),
|
|
|
|
items.MenuItem(
|
|
|
|
_("Services"),
|
|
|
|
reverse('admin:index'),
|
|
|
|
children=get_services()
|
|
|
|
),
|
|
|
|
items.MenuItem(
|
|
|
|
_("Accounts"),
|
|
|
|
reverse('admin:accounts_account_changelist'),
|
2014-07-23 18:28:40 +00:00
|
|
|
children=get_account_items()
|
2014-05-08 16:59:35 +00:00
|
|
|
),
|
2014-07-23 18:28:40 +00:00
|
|
|
items.MenuItem(
|
2014-05-08 16:59:35 +00:00
|
|
|
_("Administration"),
|
2014-07-23 18:28:40 +00:00
|
|
|
children=get_administration_items()
|
2014-05-08 16:59:35 +00:00
|
|
|
),
|
|
|
|
items.MenuItem("API", api_link(context))
|
|
|
|
]
|