mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-05-28 08:28:24 +00:00
commit
657aead2bf
4 changed files with 67 additions and 11 deletions
|
|
@ -108,6 +108,9 @@ class ModelAdmin2(BaseAdmin2):
|
||||||
detail_view = views.ModelDetailView
|
detail_view = views.ModelDetailView
|
||||||
delete_view = views.ModelDeleteView
|
delete_view = views.ModelDeleteView
|
||||||
|
|
||||||
|
# API configuration
|
||||||
|
api_serializer_class = None
|
||||||
|
|
||||||
# API Views
|
# API Views
|
||||||
api_list_view = apiviews.ListCreateAPIView
|
api_list_view = apiviews.ListCreateAPIView
|
||||||
api_detail_view = apiviews.RetrieveUpdateDestroyAPIView
|
api_detail_view = apiviews.RetrieveUpdateDestroyAPIView
|
||||||
|
|
@ -131,6 +134,13 @@ class ModelAdmin2(BaseAdmin2):
|
||||||
'modeladmin': self,
|
'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):
|
def get_prefixed_view_name(self, view_name):
|
||||||
return '{}_{}_{}'.format(self.app_label, self.model_name, view_name)
|
return '{}_{}_{}'.format(self.app_label, self.model_name, view_name)
|
||||||
|
|
||||||
|
|
@ -157,24 +167,18 @@ class ModelAdmin2(BaseAdmin2):
|
||||||
def get_delete_kwargs(self):
|
def get_delete_kwargs(self):
|
||||||
return self.get_default_view_kwargs()
|
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):
|
def get_index_url(self):
|
||||||
return reverse('admin2:{}'.format(self.get_prefixed_view_name('index')))
|
return reverse('admin2:{}'.format(self.get_prefixed_view_name('index')))
|
||||||
|
|
||||||
def get_api_list_kwargs(self):
|
def get_api_list_kwargs(self):
|
||||||
kwargs = self.get_default_view_kwargs()
|
kwargs = self.get_default_api_view_kwargs()
|
||||||
kwargs.update({
|
kwargs.update({
|
||||||
'paginate_by': self.list_per_page,
|
'paginate_by': self.list_per_page,
|
||||||
})
|
})
|
||||||
return kwargs
|
return kwargs
|
||||||
|
|
||||||
def get_api_detail_kwargs(self):
|
def get_api_detail_kwargs(self):
|
||||||
return self.get_default_view_kwargs()
|
return self.get_default_api_view_kwargs()
|
||||||
|
|
||||||
def get_urls(self):
|
def get_urls(self):
|
||||||
return patterns('',
|
return patterns('',
|
||||||
|
|
|
||||||
|
|
@ -2,21 +2,43 @@
|
||||||
# Import your custom models
|
# Import your custom models
|
||||||
from .models import Post, Comment
|
from .models import Post, Comment
|
||||||
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
|
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
|
import djadmin2
|
||||||
from djadmin2.models import ModelAdmin2
|
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):
|
class UserAdmin2(ModelAdmin2):
|
||||||
create_form_class = UserCreationForm
|
create_form_class = UserCreationForm
|
||||||
update_form_class = UserChangeForm
|
update_form_class = UserChangeForm
|
||||||
|
|
||||||
|
api_serializer_class = UserSerializer
|
||||||
|
|
||||||
|
|
||||||
# Register each model with the admin
|
# Register each model with the admin
|
||||||
djadmin2.default.register(Post)
|
djadmin2.default.register(Post)
|
||||||
djadmin2.default.register(Comment)
|
djadmin2.default.register(Comment)
|
||||||
djadmin2.default.register(User, UserAdmin2)
|
djadmin2.default.register(User, UserAdmin2)
|
||||||
djadmin2.default.register(Permission)
|
djadmin2.default.register(Group, GroupAdmin2)
|
||||||
djadmin2.default.register(Group)
|
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
from test_views import *
|
from test_views import *
|
||||||
from test_apiviews 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