From 81abfd0dad8b1eafd7f49214f66520dccb07f869 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 28 Mar 2011 01:21:32 +0200 Subject: Communication between Add popup and main window (closes #113) --- ishtar/furnitures/forms.py | 3 ++- ishtar/furnitures/urls.py | 2 +- ishtar/furnitures/views.py | 12 +++++++----- ishtar/furnitures/widgets.py | 2 +- static/js/ishtar.js | 4 ++-- 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/ishtar/furnitures/forms.py b/ishtar/furnitures/forms.py index b88fa19af..cb584ad01 100644 --- a/ishtar/furnitures/forms.py +++ b/ishtar/furnitures/forms.py @@ -95,8 +95,9 @@ class WarehouseForm(forms.Form): mobile_phone = forms.CharField(label=_(u"Town"), max_length=18, required=False) - def save(self): + def save(self, user): dct = self.cleaned_data + dct['history_modifier'] = user dct['warehouse_type'] = models.WarehouseType.objects.get( pk=dct['warehouse_type']) if 'person_in_charge' in dct and dct['person_in_charge']: diff --git a/ishtar/furnitures/urls.py b/ishtar/furnitures/urls.py index 59e9ae6f2..5132e2f55 100644 --- a/ishtar/furnitures/urls.py +++ b/ishtar/furnitures/urls.py @@ -121,6 +121,6 @@ urlpatterns += patterns('ishtar.furnitures.views', name='get-contextrecord'), url(BASE_URL + r'get-item/(?P.+)?$', 'get_archaeologicalitem', name='get-item'), - url(BASE_URL + r'new-warehouse/(?P.+)?/(?P.+)?$', + url(BASE_URL + r'new-warehouse/(?P.+)?/$', 'new_warehouse', name='new-warehouse'), ) diff --git a/ishtar/furnitures/views.py b/ishtar/furnitures/views.py index 894a8f0cf..1af2e3991 100644 --- a/ishtar/furnitures/views.py +++ b/ishtar/furnitures/views.py @@ -407,10 +407,8 @@ def autocomplete_warehouse(request): return HttpResponse(data, mimetype='text/plain') def new_item(model): - def func(request, parent_name='', parent_pk=''): + def func(request, parent_name): model_name = model._meta.object_name - if not parent_name: - parent_name = model_name.lower() if not check_permission(request, 'add_'+model_name.lower()): not_permitted_msg = ugettext(u"Operation not permitted.") return HttpResponse(not_permitted_msg) @@ -419,11 +417,15 @@ def new_item(model): if request.method == 'POST': dct['form'] = frm(request.POST) if dct['form'].is_valid(): - new_item = dct['form'].save() + new_item = dct['form'].save(request.user) dct['new_item_label'] = unicode(new_item) dct['new_item_pk'] = new_item.pk dct['parent_name'] = parent_name - dct['parent_pk'] = parent_pk + dct['parent_pk'] = parent_name + if '_select_' in dct['parent_pk']: + parents = dct['parent_pk'].split('_') + dct['parent_pk'] = "_".join([parents[0]] + parents[2:]) + print dct return render_to_response('window.html', dct, context_instance=RequestContext(request)) else: diff --git a/ishtar/furnitures/widgets.py b/ishtar/furnitures/widgets.py index 5d2fc7c38..346cbd5a5 100644 --- a/ishtar/furnitures/widgets.py +++ b/ishtar/furnitures/widgets.py @@ -117,7 +117,7 @@ objects.get(pk=value)) if self.new: model_name = self.associated_model._meta.object_name.lower() new = u' %s' % \ - (reverse('new-' + model_name, args=[attrs_select['id'], attrs_hidden['id']]), + (reverse('new-' + model_name, args=[attrs_select['id']]), unicode(_(u"Add"))) html = u'''%(new)s\ \ diff --git a/static/js/ishtar.js b/static/js/ishtar.js index e32d2f1fa..e52ba69db 100644 --- a/static/js/ishtar.js +++ b/static/js/ishtar.js @@ -69,8 +69,8 @@ function open_window(url){ function save_and_close_window(name_label, name_pk, item_name, item_pk){ var main_page = opener.document.wizard; - main_page[name_label] = item_name; - main_page[name_pk] = item_pk; + jQuery(main_page).find("#"+name_label).val(item_name); + jQuery(main_page).find("#"+name_pk).val(item_pk); opener.focus(); self.close(); } -- cgit v1.2.3