diff --git a/.gitignore b/.gitignore index 6911cad..bf63a2e 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,7 @@ logfile # vim swap files *.sw[o-z] + +# Sublime Text +*.sublime-workspace +*.sublime-project diff --git a/djadmin2/admin2.py b/djadmin2/admin2.py new file mode 100644 index 0000000..4cb7f69 --- /dev/null +++ b/djadmin2/admin2.py @@ -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) diff --git a/djadmin2/forms.py b/djadmin2/forms.py index b0cb5e9..24fd096 100644 --- a/djadmin2/forms.py +++ b/djadmin2/forms.py @@ -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=()): diff --git a/djadmin2/tests/__init__.py b/djadmin2/tests/__init__.py index a5f20b0..4ad9fa3 100644 --- a/djadmin2/tests/__init__.py +++ b/djadmin2/tests/__init__.py @@ -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 * diff --git a/example/blog/tests/test_auth_admin.py b/djadmin2/tests/test_auth_admin.py similarity index 98% rename from example/blog/tests/test_auth_admin.py rename to djadmin2/tests/test_auth_admin.py index 0bb2b44..c345fe5 100644 --- a/example/blog/tests/test_auth_admin.py +++ b/djadmin2/tests/test_auth_admin.py @@ -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): diff --git a/djadmin2/tests/test_core.py b/djadmin2/tests/test_core.py index 6828032..d68e31d 100644 --- a/djadmin2/tests/test_core.py +++ b/djadmin2/tests/test_core.py @@ -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)) diff --git a/example/blog/admin2.py b/example/blog/admin2.py index 63eb0d3..63a40f1 100644 --- a/example/blog/admin2.py +++ b/example/blog/admin2.py @@ -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) diff --git a/example/blog/tests/__init__.py b/example/blog/tests/__init__.py index 215639b..dee6a40 100644 --- a/example/blog/tests/__init__.py +++ b/example/blog/tests/__init__.py @@ -1,4 +1,3 @@ -from test_auth_admin import * from test_apiviews import * from test_builtin_api_resources import * from test_permissions import *