From 4ab2d6d315f2713eff9add5f0c081536a329ff6d Mon Sep 17 00:00:00 2001 From: laiyonghao Date: Tue, 21 Feb 2017 10:44:06 +0800 Subject: [PATCH 1/5] use get_formsets_with_inlines instead get_formset, which deprecated since version 1.7. --- genericadmin/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/genericadmin/admin.py b/genericadmin/admin.py index e9f5fc4..2973d47 100644 --- a/genericadmin/admin.py +++ b/genericadmin/admin.py @@ -74,7 +74,7 @@ def get_generic_field_list(self, request, 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 self.get_formsets_with_inlines(request): if hasattr(inline, 'get_generic_field_list'): prefix = FormSet.get_default_prefix() field_list = field_list + inline.get_generic_field_list(request, prefix) From dfc1940d050f59ea94bab89fb4b80e4bf9f6c693 Mon Sep 17 00:00:00 2001 From: laiyonghao Date: Tue, 21 Feb 2017 12:30:08 +0800 Subject: [PATCH 2/5] fix bugs on django-v1.10 --- genericadmin/admin.py | 5 +++-- genericadmin/static/genericadmin/js/genericadmin.js | 8 +++++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/genericadmin/admin.py b/genericadmin/admin.py index 2973d47..b8fb284 100644 --- a/genericadmin/admin.py +++ b/genericadmin/admin.py @@ -78,7 +78,7 @@ def get_generic_field_list(self, request, prefix=''): if hasattr(inline, 'get_generic_field_list'): prefix = FormSet.get_default_prefix() field_list = field_list + inline.get_generic_field_list(request, prefix) - + print(field_list) return field_list def get_urls(self): @@ -90,10 +90,11 @@ def wrapper(*args, **kwargs): 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'), + url(r'^(\d+)/genericadmin-init/change/$', wrap(self.genericadmin_js_init), name='admin_genericadmin_init_change'), ] return custom_urls + super(BaseGenericModelAdmin, self).get_urls() - def genericadmin_js_init(self, request): + def genericadmin_js_init(self, request, pk=None): if request.method == 'GET': obj_dict = {} for c in ContentType.objects.all(): diff --git a/genericadmin/static/genericadmin/js/genericadmin.js b/genericadmin/static/genericadmin/js/genericadmin.js index 529dbb9..072251a 100755 --- a/genericadmin/static/genericadmin/js/genericadmin.js +++ b/genericadmin/static/genericadmin/js/genericadmin.js @@ -73,7 +73,13 @@ }, getLookupUrl: function(cID) { - return '../../../' + this.url_array[cID][0] + '/' + this.getLookupUrlParams(cID); + var forword = '../../../'; + var suffix = '/change/'; + var href = window.location.href; + if (href.indexOf(suffix, href.length - suffix.length) !== -1) { + forword += '../'; + } + return forword + this.url_array[cID][0] + '/' + this.getLookupUrlParams(cID); }, getFkId: function() { From c73ae7d5e00e2a7009542eafc4d3e761211c218b Mon Sep 17 00:00:00 2001 From: laiyonghao Date: Tue, 21 Feb 2017 12:33:55 +0800 Subject: [PATCH 3/5] remove useless code. --- genericadmin/admin.py | 1 - 1 file changed, 1 deletion(-) diff --git a/genericadmin/admin.py b/genericadmin/admin.py index b8fb284..d443dee 100644 --- a/genericadmin/admin.py +++ b/genericadmin/admin.py @@ -78,7 +78,6 @@ def get_generic_field_list(self, request, prefix=''): if hasattr(inline, 'get_generic_field_list'): prefix = FormSet.get_default_prefix() field_list = field_list + inline.get_generic_field_list(request, prefix) - print(field_list) return field_list def get_urls(self): From 5c4f723b79644229077012fd7f1fd29a0c3dc159 Mon Sep 17 00:00:00 2001 From: laiyonghao Date: Tue, 21 Feb 2017 13:05:00 +0800 Subject: [PATCH 4/5] fix selected obj is not found. --- genericadmin/admin.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/genericadmin/admin.py b/genericadmin/admin.py index d443dee..643827a 100644 --- a/genericadmin/admin.py +++ b/genericadmin/admin.py @@ -89,6 +89,7 @@ def wrapper(*args, **kwargs): 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'), + url(r'^(\d+)/obj-data/$', wrap(self.generic_lookup), name='admin_genericadmin_obj_lookup_change'), url(r'^(\d+)/genericadmin-init/change/$', wrap(self.genericadmin_js_init), name='admin_genericadmin_init_change'), ] return custom_urls + super(BaseGenericModelAdmin, self).get_urls() @@ -115,10 +116,10 @@ def genericadmin_js_init(self, request, pk=None): return HttpResponse(resp, content_type='application/json') return HttpResponseNotAllowed(['GET']) - def generic_lookup(self, request): + def generic_lookup(self, request, pk=None): 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'] From bb88eb9389055a0cdc44337d704a474927ab5456 Mon Sep 17 00:00:00 2001 From: LaiYonghao Date: Tue, 31 Jul 2018 18:33:48 +0800 Subject: [PATCH 5/5] fix 2.0 bug. --- genericadmin/admin.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/genericadmin/admin.py b/genericadmin/admin.py index 643827a..5ee336c 100644 --- a/genericadmin/admin.py +++ b/genericadmin/admin.py @@ -63,7 +63,8 @@ def get_generic_field_list(self, request, prefix=''): fields['prefix'] = prefix field_list.append(fields) else: - for field in self.model._meta.virtual_fields: + # for field in self.model._meta.virtual_fields: + for field in self.model._meta.private_fields: if isinstance(field, GenericForeignKey) and \ field.ct_field not in exclude and field.fk_field not in exclude: field_list.append({