Skip to content

Django 2.2+ support #7

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions genericadmin/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# Taken from [email protected]:codegraft/django-genericadmin.git

import json
from functools import update_wrapper

Expand Down Expand Up @@ -41,6 +43,7 @@ def __init__(self, model, admin_site):
media = list(self.Media.js)
except:
media = []
media.append('admin/js/jquery.init.js')
media.append(JS_PATH + 'genericadmin.js')
self.Media.js = tuple(media)

Expand Down Expand Up @@ -103,9 +106,9 @@ def wrapper(*args, **kwargs):
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'),

# to work with django 2.0
url(r'^../obj-data/$', wrap(self.generic_lookup), name='admin_genericadmin_obj_lookup_change'),
url(r'^../genericadmin-init/change/$', wrap(self.genericadmin_js_init), name='admin_genericadmin_init'),
# # to work with django 2.0
# url(r'^../obj-data/$', wrap(self.generic_lookup), name='admin_genericadmin_obj_lookup_change'),
# url(r'^../genericadmin-init/change/$', wrap(self.genericadmin_js_init), name='admin_genericadmin_init'),
]
return custom_urls + super(BaseGenericModelAdmin, self).get_urls()

Expand Down
68 changes: 31 additions & 37 deletions genericadmin/static/genericadmin/js/genericadmin.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
var GenericAdmin = {
url_array: null,
fields: null,
obj_url: "../obj-data/",
obj_url: "../../obj-data/",
admin_media_url: window.__admin_media_prefix__,
popup: '_popup',

prepareSelect: function(select) {
var that = this,
opt_keys = [],
Expand All @@ -30,7 +30,7 @@
if (this.value) {
if (that.url_array[this.value]) {
key = that.url_array[this.value][0].split('/')[0];

opt = $(this).clone();
opt.text(that.capFirst(opt.text()));
if ($.inArray(key, opt_keys) < 0) {
Expand All @@ -47,7 +47,7 @@
}
});
select.empty().append(no_value);

opt_keys = opt_keys.sort();

$.each(opt_keys, function(index, key) {
Expand All @@ -62,7 +62,7 @@
},

getLookupUrlParams: function(cID) {
var q = this.url_array[cID][1] || {},
var q = this.url_array[cID][1] || {},
str = [];
for(var p in q) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(q[p]));
Expand All @@ -71,58 +71,52 @@
url = x ? ("?" + x) : "";
return url;
},

getLookupUrl: function(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);
return '../../../../' + this.url_array[cID][0] + '/' + this.getLookupUrlParams(cID);
},

getFkId: function() {
if (this.fields.inline === false) {
return 'id_' + this.fields.fk_field;
} else {
return ['id_', this.fields.prefix, '-', this.fields.number, '-', this.fields.fk_field].join('');
}
},

getCtId: function() {
if (this.fields.inline === false) {
return 'id_' + this.fields.ct_field;
} else {
return ['id_', this.fields.prefix, '-', this.fields.number, '-', this.fields.ct_field].join('');
}
},

capFirst: function(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
},

hideLookupLink: function() {
var this_id = this.getFkId();
$('#lookup_' + this_id).unbind().remove();
$('#lookup_text_' + this_id + ' a').remove();
$('#lookup_text_' + this_id + ' span').remove();
},

showLookupLink: function() {
var that = this,
url = this.getLookupUrl(this.cID),
id = 'lookup_' + this.getFkId(),
link = '<a class="related-lookup" id="' + id + '" href="' + url + '">&nbsp;</a>';

link = link + '<strong id="lookup_text_'+ this.getFkId() +'" margin-left: 5px"><a target="_new" href="#"></a><span></span></strong>';

// insert link html after input element
this.object_input.after(link);

return id;
},

pollInputChange: function(window) {
var that = this,
interval_id = setInterval(function() {
Expand All @@ -134,11 +128,11 @@
},
150);
},

popRelatedObjectLookup: function(link) {
var name = id_to_windowname(this.getFkId()),
url_parts = [],
href,
href,
win;

if (link.href.search(/\?/) >= 0) {
Expand All @@ -162,14 +156,14 @@
win.focus();
return false;
},

updateObjectData: function() {
var that = this;
return function() {
var value = that.object_input.val();
if (!value) {
return

if (!value) {
return
}
//var this_id = that.getFkId();
$('#lookup_text_' + that.getFkId() + ' span').text('loading...');
Expand Down Expand Up @@ -214,10 +208,10 @@
this.url_array = url_array;
this.fields = fields;
this.popup = popup_var || this.popup;

// store the base element
this.object_input = $("#" + this.getFkId());

// find the select we need to change
this.object_select = this.prepareSelect($("#" + this.getCtId()));

Expand Down Expand Up @@ -251,22 +245,22 @@
this.updateObjectData()();
}
};

var InlineAdmin = {
sub_admins: null,
url_array: null,
fields: null,
popup: '_popup',

install: function(fields, url_array, popup_var) {
var inline_count = $('#id_' + fields.prefix + '-TOTAL_FORMS').val(),
admin;

this.url_array = url_array;
this.fields = fields;
this.sub_admins = [];
this.popup = popup_var || this.popup;

for (var j = 0; j < inline_count; j++) {
f = $.extend({}, this.fields);
f.number = j;
Expand All @@ -285,7 +279,7 @@
added_fields.number = ($('#id_' + that.fields.prefix + '-TOTAL_FORMS').val() - 1);
admin.install(added_fields, that.url_array, that.popup);
that.sub_admins.push(admin);

$('#' + that.fields.prefix + '-' + added_fields.number + ' .inline-deletelink').click(
that.removeHandler(that)
);
Expand All @@ -296,7 +290,7 @@
var parent_id,
deleted_num,
sub_admin;

e.preventDefault();
parent_id = $(e.currentTarget).parents('.dynamic-' + that.fields.prefix).first().attr('id');
deleted_num = parseInt(parent_id.charAt(parent_id.length - 1), 10);
Expand All @@ -314,14 +308,14 @@

$(document).ready(function() {
$.ajax({
url: '../genericadmin-init/',
url: '../../genericadmin-init/',
dataType: 'json',
success: function(data) {
var url_array = data.url_array,
ct_fields = data.fields,
popup_var = data.popup_var,
fields;

for (var i = 0; i < ct_fields.length; i++) {
fields = ct_fields[i];
if (fields.inline === false) {
Expand All @@ -333,4 +327,4 @@
}
});
});
} (django.jQuery));
} (django.jQuery || jQuery));