diff --git a/LICENCE b/LICENCE index de1f972..432ee23 100644 --- a/LICENCE +++ b/LICENCE @@ -1,5 +1,6 @@ Copyright (c) 2009, Weston Nielson (wnielson@gmail.com) 2010, Jan Schrewe (jschrewe@googlemail.com) + 2017, Arthur Hanson (worldnomad@gmail.com) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -17,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file +THE SOFTWARE. diff --git a/genericadmin/__init__.py b/genericadmin/__init__.py old mode 100644 new mode 100755 diff --git a/genericadmin/admin.py b/genericadmin/admin.py old mode 100644 new mode 100755 index e9f5fc4..40aff4c --- a/genericadmin/admin.py +++ b/genericadmin/admin.py @@ -12,7 +12,7 @@ from django.contrib.contenttypes.models import ContentType try: - from django.utils.encoding import force_text + from django.utils.encoding import force_text except ImportError: from django.utils.encoding import force_unicode as force_text from django.utils.text import capfirst @@ -24,7 +24,7 @@ from django.contrib.admin.options import IS_POPUP_VAR from django.core.exceptions import ObjectDoesNotExist -JS_PATH = getattr(settings, 'GENERICADMIN_JS', 'genericadmin/js/') +JS_PATH = getattr(settings, 'GENERICADMIN_JS', 'genericadmin/js/') class BaseGenericModelAdmin(object): class Media: @@ -34,7 +34,7 @@ class Media: generic_fk_fields = [] content_type_blacklist = [] content_type_whitelist = [] - + def __init__(self, model, admin_site): try: media = list(self.Media.js) @@ -42,10 +42,10 @@ def __init__(self, model, admin_site): media = [] media.append(JS_PATH + 'genericadmin.js') self.Media.js = tuple(media) - + self.content_type_whitelist = [s.lower() for s in self.content_type_whitelist] - self.content_type_blacklist = [s.lower() for s in self.content_type_blacklist] - + self.content_type_blacklist = [s.lower() for s in self.content_type_blacklist] + super(BaseGenericModelAdmin, self).__init__(model, admin_site) def get_generic_field_list(self, request, prefix=''): @@ -53,7 +53,7 @@ def get_generic_field_list(self, request, prefix=''): exclude = [self.ct_field, self.ct_fk_field] else: exclude = [] - + field_list = [] if hasattr(self, 'generic_fk_fields') and self.generic_fk_fields: for fields in self.generic_fk_fields: @@ -62,19 +62,19 @@ def get_generic_field_list(self, request, prefix=''): fields['inline'] = prefix != '' fields['prefix'] = prefix field_list.append(fields) - else: + else: for field in self.model._meta.virtual_fields: if isinstance(field, GenericForeignKey) and \ field.ct_field not in exclude and field.fk_field not in exclude: field_list.append({ - 'ct_field': field.ct_field, + 'ct_field': field.ct_field, 'fk_field': field.fk_field, 'inline': prefix != '', 'prefix': prefix, }) - + if hasattr(self, 'inlines') and len(self.inlines) > 0: - for FormSet, inline in zip(self.get_formsets(request), self.get_inline_instances(request)): + for FormSet, inline in zip(self.get_formsets_with_inlines(request), self.get_inline_instances(request)): if hasattr(inline, 'get_generic_field_list'): prefix = FormSet.get_default_prefix() field_list = field_list + inline.get_generic_field_list(request, prefix) @@ -86,13 +86,13 @@ def wrap(view): def wrapper(*args, **kwargs): return self.admin_site.admin_view(view)(*args, **kwargs) return update_wrapper(wrapper, view) - + custom_urls = [ url(r'^obj-data/$', wrap(self.generic_lookup), name='admin_genericadmin_obj_lookup'), url(r'^genericadmin-init/$', wrap(self.genericadmin_js_init), name='admin_genericadmin_init'), ] return custom_urls + super(BaseGenericModelAdmin, self).get_urls() - + def genericadmin_js_init(self, request): if request.method == 'GET': obj_dict = {} @@ -105,7 +105,7 @@ def genericadmin_js_init(self, request): obj_dict[c.id] = (val, params) elif val not in self.content_type_blacklist: obj_dict[c.id] = (val, params) - + data = { 'url_array': obj_dict, 'fields': self.get_generic_field_list(request), @@ -114,15 +114,15 @@ def genericadmin_js_init(self, request): resp = json.dumps(data, ensure_ascii=False) return HttpResponse(resp, content_type='application/json') return HttpResponseNotAllowed(['GET']) - + def generic_lookup(self, request): if request.method != 'GET': return HttpResponseNotAllowed(['GET']) - + if 'content_type' in request.GET and 'object_id' in request.GET: content_type_id = request.GET['content_type'] object_id = request.GET['object_id'] - + obj_dict = { 'content_type_id': content_type_id, 'object_id': object_id, @@ -136,12 +136,12 @@ def generic_lookup(self, request): obj_dict["object_text"] = capfirst(force_text(obj)) except ObjectDoesNotExist: raise Http404 - + resp = json.dumps(obj_dict, ensure_ascii=False) else: resp = '' return HttpResponse(resp, content_type='application/json') - + class GenericAdminModelAdmin(BaseGenericModelAdmin, admin.ModelAdmin): @@ -149,7 +149,7 @@ class GenericAdminModelAdmin(BaseGenericModelAdmin, admin.ModelAdmin): class GenericTabularInline(BaseGenericModelAdmin, GenericTabularInline): - """Model admin for generic tabular inlines. """ + """Model admin for generic tabular inlines. """ class GenericStackedInline(BaseGenericModelAdmin, GenericStackedInline): diff --git a/setup.py b/setup.py index b2c2c70..faf0c0f 100644 --- a/setup.py +++ b/setup.py @@ -12,11 +12,11 @@ def convert_readme(): setup( name='django-genericadmin', - version='0.6.1', + version='0.7.0', description="Adds support for generic relations within Django's admin interface.", - author='Weston Nielson, Jan Schrewe', - author_email='wnielson@gmail.com, jschrewe@googlemail.com', - url='https://github.com/jschrewe/django-genericadmin', + author='Weston Nielson, Jan Schrewe, Arthur Hanson', + author_email='wnielson@gmail.com, jschrewe@googlemail.com, worldnomad@gmail.com', + url='https://github.com/arthanson/django-genericadmin', packages = ['genericadmin'], # package_data={'genericadmin': ['static/genericadmin/js/genericadmin.js']}, classifiers=[