This commit is contained in:
Daniel Greenfeld 2013-07-06 18:33:44 +02:00
parent 4908a9675e
commit 038313c81c
8 changed files with 66 additions and 42 deletions

4
.gitignore vendored
View file

@ -55,3 +55,7 @@ logfile
# vim swap files
*.sw[o-z]
# Sublime Text
*.sublime-workspace
*.sublime-project

47
djadmin2/admin2.py Normal file
View file

@ -0,0 +1,47 @@
from django.contrib.auth.models import Group, User
from django.contrib.sites.models import Site
from rest_framework.relations import PrimaryKeyRelatedField
import djadmin2
from djadmin2.forms import UserCreationForm, UserChangeForm
from djadmin2.apiviews import Admin2APISerializer
class GroupSerializer(Admin2APISerializer):
permissions = PrimaryKeyRelatedField(many=True)
class Meta:
model = Group
class GroupAdmin2(djadmin2.ModelAdmin2):
api_serializer_class = GroupSerializer
class UserSerializer(Admin2APISerializer):
user_permissions = PrimaryKeyRelatedField(many=True)
class Meta:
model = User
exclude = ('passwords',)
class UserAdmin2(djadmin2.ModelAdmin2):
create_form_class = UserCreationForm
update_form_class = UserChangeForm
search_fields = ('username', 'groups__name')
api_serializer_class = UserSerializer
class SiteAdmin2(djadmin2.ModelAdmin2):
list_display = ('domain', 'name')
search_fields = ('domain', 'name')
# Register each model with the admin
djadmin2.default.register(User, UserAdmin2)
djadmin2.default.register(Group, GroupAdmin2)
djadmin2.default.register(Site, SiteAdmin2)

View file

@ -22,10 +22,10 @@ _WIDGET_COMMON_ARGUMENTS = ('attrs',)
def _copy_attributes(original, new_widget, attributes):
for attr in attributes:
original_value = getattr(original, attr)
original_value = deepcopy(original_value)
setattr(new_widget, attr, original_value)
for attr in attributes:
original_value = getattr(original, attr)
original_value = deepcopy(original_value)
setattr(new_widget, attr, original_value)
def _create_widget(widget_class, copy_attributes=(), init_arguments=()):

View file

@ -4,3 +4,4 @@ from test_utils import *
from test_views import *
from test_core import *
from test_actions import *
from test_auth_admin import *

View file

@ -6,7 +6,7 @@ from django.test.client import RequestFactory
import floppyforms
import djadmin2
from blog.admin2 import UserAdmin2
from ..admin2 import UserAdmin2
class UserAdminTest(TestCase):

View file

@ -1,7 +1,10 @@
from django.db import models
from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase
from django.contrib.auth.models import Group, User
from django.contrib.sites.models import Site
import djadmin2
from ..types import ModelAdmin2
from ..core import Admin2
@ -33,3 +36,8 @@ class Admin2Test(TestCase):
def test_get_urls(self):
self.admin2.register(Thing)
self.assertEquals(8, len(self.admin2.get_urls()))
def test_default_entries(self):
expected_default_models = (User, Group, Site)
for model in expected_default_models:
self.assertTrue(isinstance(djadmin2.default.registry[model], ModelAdmin2))

View file

@ -1,38 +1,13 @@
# Import your custom models
from django.contrib.auth.models import Group, User
from django.contrib import messages
from rest_framework.relations import PrimaryKeyRelatedField
import djadmin2
from djadmin2.actions import DeleteSelectedAction
from djadmin2.forms import UserCreationForm, UserChangeForm
from djadmin2.apiviews import Admin2APISerializer
# Import your custom models
from .actions import CustomPublishAction
from .models import Post, Comment
class GroupSerializer(Admin2APISerializer):
permissions = PrimaryKeyRelatedField(many=True)
class Meta:
model = Group
class GroupAdmin2(djadmin2.ModelAdmin2):
api_serializer_class = GroupSerializer
class UserSerializer(Admin2APISerializer):
user_permissions = PrimaryKeyRelatedField(many=True)
class Meta:
model = User
exclude = ('passwords',)
class CommentInline(djadmin2.Admin2Inline):
model = Comment
@ -56,16 +31,6 @@ class CommentAdmin(djadmin2.ModelAdmin2):
list_filter = ['post', ]
class UserAdmin2(djadmin2.ModelAdmin2):
create_form_class = UserCreationForm
update_form_class = UserChangeForm
search_fields = ('username', 'groups__name')
api_serializer_class = UserSerializer
# Register each model with the admin
djadmin2.default.register(Post, PostAdmin)
djadmin2.default.register(Comment, CommentAdmin)
djadmin2.default.register(User, UserAdmin2)
djadmin2.default.register(Group, GroupAdmin2)

View file

@ -1,4 +1,3 @@
from test_auth_admin import *
from test_apiviews import *
from test_builtin_api_resources import *
from test_permissions import *