solve the admin tab issue in a more generic way
diff --git a/xos/core/admin.py b/xos/core/admin.py
index 70df867..b32a281 100644
--- a/xos/core/admin.py
+++ b/xos/core/admin.py
@@ -17,6 +17,7 @@
from django.core.urlresolvers import reverse, resolve, NoReverseMatch
from django.utils.encoding import force_text, python_2_unicode_compatible
from django.utils.html import conditional_escape, format_html
+from django.utils.text import capfirst
from django.forms.utils import flatatt, to_current_timezone
from cgi import escape as html_escape
@@ -192,6 +193,30 @@
else:
return True
+class ServiceAppAdmin (SingletonAdmin):
+ # This is for services to render an 'administration page'. It builds up
+ # a list of all registered admins for the service, and passes them in the
+ # 'registered_admins' member of the template context.
+
+ def change_view(self, request, object_id, extra_context=None):
+ extra_context = extra_context or {}
+
+ admins=[]
+ for model, model_admin in admin.site._registry.items():
+ if model == self.model:
+ continue
+ if model._meta.app_label == self.model._meta.app_label:
+ info = {"app": model._meta.app_label,
+ "model": model._meta.model_name,
+ "name": capfirst(model._meta.verbose_name_plural),
+ "url": reverse('admin:%s_%s_changelist' % (model._meta.app_label, model._meta.model_name), current_app=model._meta.app_label) }
+ admins.append(info)
+
+ extra_context["registered_admins"] = admins
+
+ return super(ServiceAppAdmin, self).change_view(request=request, object_id=object_id,
+ extra_context=extra_context)
+
class XOSTabularInline(admin.TabularInline):
def __init__(self, *args, **kwargs):
super(XOSTabularInline, self).__init__(*args, **kwargs)