mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-03-17 06:30:25 +00:00
Adding first prototype of a List/Create API view.
This commit is contained in:
parent
bea20a11c1
commit
2ad1fce536
3 changed files with 41 additions and 6 deletions
18
djadmin2/apiviews.py
Normal file
18
djadmin2/apiviews.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
from rest_framework.fields import Field
|
||||
from rest_framework.generics import ListCreateAPIView
|
||||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
|
||||
class Admin2APISerializer(ModelSerializer):
|
||||
unicode = Field(source='__unicode__')
|
||||
|
||||
|
||||
class ModelListCreateAPIView(ListCreateAPIView):
|
||||
def get_serializer_class(self):
|
||||
if self.serializer_class is None:
|
||||
class ModelAPISerilizer(Admin2APISerializer):
|
||||
class Meta:
|
||||
model = self.model
|
||||
|
||||
return ModelAPISerilizer
|
||||
return super(ModelListCreateAPIView, self).get_serializer_class()
|
||||
|
|
@ -83,18 +83,18 @@ class Admin2(object):
|
|||
|
||||
def get_urls(self):
|
||||
urlpatterns = patterns('',
|
||||
url(r'^$', self.index_view.as_view(**self.get_index_kwargs()), name='dashboard'),
|
||||
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()
|
||||
|
||||
urlpatterns += patterns('',
|
||||
url('^{}/{}/'.format(app_label, model_name),
|
||||
url('^{}/{}/'.format(model._meta.app_label, model._meta.object_name.lower()),
|
||||
include(modeladmin.urls)),
|
||||
url('^api/{}/{}/'.format(model._meta.app_label, model._meta.object_name.lower()),
|
||||
include(modeladmin.api_urls)),
|
||||
)
|
||||
return urlpatterns
|
||||
|
||||
@property
|
||||
def urls(self):
|
||||
# We set the application and instance namespace here
|
||||
return self.get_urls(), self.name, self.name
|
||||
|
|
|
|||
|
|
@ -5,6 +5,8 @@ synonymous with the django.contrib.admin.sites model.
|
|||
|
||||
"""
|
||||
|
||||
from djadmin2 import apiviews
|
||||
from djadmin2 import views
|
||||
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.conf.urls import patterns, url
|
||||
|
|
@ -108,6 +110,8 @@ class ModelAdmin2(BaseAdmin2):
|
|||
detail_view = views.ModelDetailView
|
||||
delete_view = views.ModelDeleteView
|
||||
|
||||
api_index_view = apiviews.ModelListCreateAPIView
|
||||
|
||||
def __init__(self, model, **kwargs):
|
||||
self.model = model
|
||||
self.app_label = model._meta.app_label
|
||||
|
|
@ -184,11 +188,24 @@ class ModelAdmin2(BaseAdmin2):
|
|||
),
|
||||
)
|
||||
|
||||
def get_api_urls(self):
|
||||
return patterns('',
|
||||
url(
|
||||
regex=r'^$',
|
||||
view=self.api_index_view.as_view(model=self.model),
|
||||
name='api-index'
|
||||
),
|
||||
)
|
||||
|
||||
@property
|
||||
def urls(self):
|
||||
# We set the application and instance namespace here
|
||||
return self.get_urls(), None, None
|
||||
|
||||
@property
|
||||
def api_urls(self):
|
||||
return self.get_api_urls(), None, None
|
||||
|
||||
|
||||
def create_extra_permissions(app, created_models, verbosity, **kwargs):
|
||||
"""
|
||||
Creates 'view' permissions for all models.
|
||||
|
|
|
|||
Loading…
Reference in a new issue