mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-03-23 17:40:32 +00:00
55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from django.conf.urls import patterns, include, url
|
|
from django.conf import settings
|
|
from django.utils.importlib import import_module
|
|
|
|
|
|
from . import models
|
|
from . import views
|
|
|
|
|
|
class Admin2(object):
|
|
index_view = views.IndexView
|
|
|
|
def __init__(self, name='admin2', app_name='admin2'):
|
|
self.registry = {}
|
|
self.name = name
|
|
self.app_name = app_name
|
|
|
|
def register(self, model, modeladmin=None, **kwargs):
|
|
if not modeladmin:
|
|
modeladmin = models.ModelAdmin2
|
|
self.registry[model] = modeladmin(model, **kwargs)
|
|
|
|
def deregister(self, model):
|
|
del self.registry[model]
|
|
|
|
def autodiscover(self):
|
|
apps = []
|
|
for app_name in [x for x in settings.INSTALLED_APPS]:
|
|
try:
|
|
import_module("%s.admin2" % app_name)
|
|
except ImportError as e:
|
|
if str(e) == "No module named admin2":
|
|
continue
|
|
raise e
|
|
|
|
def get_urls(self):
|
|
urlpatterns = patterns('',
|
|
url(r'^$', self.index_view.as_view(), name='index'),
|
|
)
|
|
for model, modeladmin in self.registry.iteritems():
|
|
app_label = model._meta.app_label
|
|
model_name = model._meta.object_name.lower()
|
|
|
|
app_name = '{}:{}:{}'.format(self.app_name, app_label, model_name)
|
|
namespace = '{}:{}:{}'.format(self.name, app_label, model_name)
|
|
|
|
urlpatterns += patterns('',
|
|
url('^{}/{}/'.format(app_label, model_name),
|
|
include(modeladmin.urls)),
|
|
)
|
|
return urlpatterns
|
|
|
|
@property
|
|
def urls(self):
|
|
return self.get_urls(), self.app_name, self.name
|