mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-03-17 06:30:25 +00:00
commit
657aead2bf
4 changed files with 67 additions and 11 deletions
|
|
@ -108,6 +108,9 @@ class ModelAdmin2(BaseAdmin2):
|
|||
detail_view = views.ModelDetailView
|
||||
delete_view = views.ModelDeleteView
|
||||
|
||||
# API configuration
|
||||
api_serializer_class = None
|
||||
|
||||
# API Views
|
||||
api_list_view = apiviews.ListCreateAPIView
|
||||
api_detail_view = apiviews.RetrieveUpdateDestroyAPIView
|
||||
|
|
@ -131,6 +134,13 @@ class ModelAdmin2(BaseAdmin2):
|
|||
'modeladmin': self,
|
||||
}
|
||||
|
||||
def get_default_api_view_kwargs(self):
|
||||
kwargs = self.get_default_view_kwargs()
|
||||
kwargs.update({
|
||||
'serializer_class': self.api_serializer_class,
|
||||
})
|
||||
return kwargs
|
||||
|
||||
def get_prefixed_view_name(self, view_name):
|
||||
return '{}_{}_{}'.format(self.app_label, self.model_name, view_name)
|
||||
|
||||
|
|
@ -157,24 +167,18 @@ class ModelAdmin2(BaseAdmin2):
|
|||
def get_delete_kwargs(self):
|
||||
return self.get_default_view_kwargs()
|
||||
|
||||
def get_api_index_kwargs(self):
|
||||
return self.get_default_view_kwargs()
|
||||
|
||||
def get_api_detail_kwargs(self):
|
||||
return self.get_default_view_kwargs()
|
||||
|
||||
def get_index_url(self):
|
||||
return reverse('admin2:{}'.format(self.get_prefixed_view_name('index')))
|
||||
|
||||
def get_api_list_kwargs(self):
|
||||
kwargs = self.get_default_view_kwargs()
|
||||
kwargs = self.get_default_api_view_kwargs()
|
||||
kwargs.update({
|
||||
'paginate_by': self.list_per_page,
|
||||
})
|
||||
return kwargs
|
||||
|
||||
def get_api_detail_kwargs(self):
|
||||
return self.get_default_view_kwargs()
|
||||
return self.get_default_api_view_kwargs()
|
||||
|
||||
def get_urls(self):
|
||||
return patterns('',
|
||||
|
|
|
|||
|
|
@ -2,21 +2,43 @@
|
|||
# Import your custom models
|
||||
from .models import Post, Comment
|
||||
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
|
||||
from django.contrib.auth.models import Group, Permission, User
|
||||
from django.contrib.auth.models import Group, User
|
||||
from rest_framework.relations import PrimaryKeyRelatedField
|
||||
|
||||
|
||||
import djadmin2
|
||||
from djadmin2.models import ModelAdmin2
|
||||
from djadmin2.apiviews import Admin2APISerializer
|
||||
|
||||
|
||||
class GroupSerializer(Admin2APISerializer):
|
||||
permissions = PrimaryKeyRelatedField(many=True)
|
||||
|
||||
class Meta:
|
||||
model = Group
|
||||
|
||||
|
||||
class GroupAdmin2(ModelAdmin2):
|
||||
api_serializer_class = GroupSerializer
|
||||
|
||||
|
||||
class UserSerializer(Admin2APISerializer):
|
||||
user_permissions = PrimaryKeyRelatedField(many=True)
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
exclude = ('passwords',)
|
||||
|
||||
|
||||
class UserAdmin2(ModelAdmin2):
|
||||
create_form_class = UserCreationForm
|
||||
update_form_class = UserChangeForm
|
||||
|
||||
api_serializer_class = UserSerializer
|
||||
|
||||
|
||||
# Register each model with the admin
|
||||
djadmin2.default.register(Post)
|
||||
djadmin2.default.register(Comment)
|
||||
djadmin2.default.register(User, UserAdmin2)
|
||||
djadmin2.default.register(Permission)
|
||||
djadmin2.default.register(Group)
|
||||
djadmin2.default.register(Group, GroupAdmin2)
|
||||
|
|
|
|||
|
|
@ -1,2 +1,3 @@
|
|||
from test_views import *
|
||||
from test_apiviews import *
|
||||
from test_builtin_api_resources import *
|
||||
|
|
|
|||
29
example/blog/tests/test_builtin_api_resources.py
Normal file
29
example/blog/tests/test_builtin_api_resources.py
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
from django.contrib.auth.models import Group, User
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.test import TestCase
|
||||
|
||||
|
||||
class UserAPITest(TestCase):
|
||||
def test_list_response_ok(self):
|
||||
response = self.client.get(reverse('admin2:auth_user_api-list'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_detail_response_ok(self):
|
||||
user = User.objects.create_user(
|
||||
username='Foo',
|
||||
password='bar')
|
||||
response = self.client.get(
|
||||
reverse('admin2:auth_user_api-detail', args=(user.pk,)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
|
||||
class GroupAPITest(TestCase):
|
||||
def test_list_response_ok(self):
|
||||
response = self.client.get(reverse('admin2:auth_group_api-list'))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_detail_response_ok(self):
|
||||
group = Group.objects.create(name='group')
|
||||
response = self.client.get(
|
||||
reverse('admin2:auth_group_api-detail', args=(group.pk,)))
|
||||
self.assertEqual(response.status_code, 200)
|
||||
Loading…
Reference in a new issue