From 8b41fbc911c2ab32dfd506344c2e0c5eafe93c2c Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Wed, 19 Dec 2012 19:33:12 +0530 Subject: [PATCH] fixes in form.js, doclist and wrapper --- public/js/legacy/widgets/form/form.js | 9 ++++++- public/js/legacy/widgets/form/form_header.js | 4 +-- webnotes/model/__init__.py | 2 +- webnotes/model/doc.py | 2 +- webnotes/model/wrapper.py | 4 +-- webnotes/widgets/form/run_method.py | 14 +++++------ webnotes/widgets/form/save.py | 26 ++++++++++---------- 7 files changed, 34 insertions(+), 27 deletions(-) diff --git a/public/js/legacy/widgets/form/form.js b/public/js/legacy/widgets/form/form.js index cd52d03f46..176632e459 100644 --- a/public/js/legacy/widgets/form/form.js +++ b/public/js/legacy/widgets/form/form.js @@ -39,6 +39,13 @@ */ wn.provide('_f'); +wn.provide('wn.ui.form'); + +wn.ui.form.Controller = Class.extend({ + init: function(opts) { + $.extend(this, opts); + } +}); _f.frms = {}; @@ -53,7 +60,7 @@ _f.Frm = function(doctype, parent, in_form) { this.opendocs = {}; this.sections = []; this.grids = []; - this.cscript = {}; + this.cscript = new wn.ui.form.Controller({frm:this}); this.pformat = {}; this.fetch_dict = {}; this.parent = parent; diff --git a/public/js/legacy/widgets/form/form_header.js b/public/js/legacy/widgets/form/form_header.js index 3b7e7f42ee..b060454bf4 100644 --- a/public/js/legacy/widgets/form/form_header.js +++ b/public/js/legacy/widgets/form/form_header.js @@ -149,10 +149,10 @@ _f.FrmHeader = Class.extend({ cur_frm.savesubmit(this);}, 'icon-lock'); // Update after sumit - if(docstatus==1 && p[SUBMIT] && cur_frm.doc.__unsaved) { + if(docstatus==1 && p[SUBMIT]) { this.appframe.add_button('Update', function() { cur_frm.save('Update', null, this); - }, ''); + }, '').toggle(false); } // Cancel diff --git a/webnotes/model/__init__.py b/webnotes/model/__init__.py index 78094ef60f..7cbd28e879 100644 --- a/webnotes/model/__init__.py +++ b/webnotes/model/__init__.py @@ -66,7 +66,7 @@ def check_if_doc_is_linked(dt, dn): else: item = None try: - item = sql("select name, parent, parenttype from `tab%s` where `%s`='%s' and docstatus!=2 limit 1" % (link_dt, link_field, dn)) + item = sql("select name, parent, parenttype from `tab%s` where `%s`='%s' and docstatus!=2 and `%s`!=parent limit 1" % (link_dt, link_field, dn, link_field)) except Exception, e: if e.args[0]==1146: pass else: raise e diff --git a/webnotes/model/doc.py b/webnotes/model/doc.py index deebb9e6d3..1799877f52 100755 --- a/webnotes/model/doc.py +++ b/webnotes/model/doc.py @@ -573,7 +573,7 @@ class Document: self.fields['__unsaved'] = 1 - return doclist + return webnotes.doclist(doclist) def addchild(self, fieldname, childtype = '', local=0, doclist=None): """ diff --git a/webnotes/model/wrapper.py b/webnotes/model/wrapper.py index 11848c3858..88fc3985e5 100644 --- a/webnotes/model/wrapper.py +++ b/webnotes/model/wrapper.py @@ -98,7 +98,7 @@ class ModelWrapper: if self.obj: return self.obj from webnotes.model.code import get_obj - self.obj = get_obj(doc=self.doc, doclist=self.children) + self.obj = get_obj(doc=self.doc, doclist=self.doclist) return self.obj def to_dict(self): @@ -199,7 +199,7 @@ class ModelWrapper: trigger(method, self.obj.doc) - self.set_doclist([self.obj.doc] + self.obj.doclist) + self.set_doclist(self.doclist) def save_main(self): """ diff --git a/webnotes/widgets/form/run_method.py b/webnotes/widgets/form/run_method.py index 75f36ff5b6..514cb75735 100644 --- a/webnotes/widgets/form/run_method.py +++ b/webnotes/widgets/form/run_method.py @@ -32,7 +32,7 @@ def runserverobj(): from webnotes.model.wrapper import ModelWrapper from webnotes.utils import cint - doclist = None + wrapper = None method = webnotes.form_dict.get('method') arg = webnotes.form_dict.get('arg') dt = webnotes.form_dict.get('doctype') @@ -43,10 +43,10 @@ def runserverobj(): so = webnotes.model.code.get_obj(dt, dn) else: - doclist = ModelWrapper() - doclist.from_compressed(webnotes.form_dict.get('docs'), dn) - so = doclist.make_obj() - doclist.check_if_latest() + wrapper = ModelWrapper() + wrapper.from_compressed(webnotes.form_dict.get('docs'), dn) + so = wrapper.make_obj() + wrapper.check_if_latest() check_guest_access(so.doc) @@ -59,7 +59,7 @@ def runserverobj(): else: webnotes.response['message'] = r - webnotes.response['docs'] =[so.doc] + so.doclist + webnotes.response['docs'] = so.doclist def check_guest_access(doc): if webnotes.session['user']=='Guest' and not webnotes.conn.sql("select name from tabDocPerm where role='Guest' and parent=%s and ifnull(`read`,0)=1", doc.doctype): @@ -87,4 +87,4 @@ def make_csv_output(res, dt): webnotes.response['result'] = unicode(f.read(), 'utf-8') webnotes.response['type'] = 'csv' - webnotes.response['doctype'] = dt.replace(' ','') \ No newline at end of file + webnotes.response['doctype'] = dt.replace(' ','') \ No newline at end of file diff --git a/webnotes/widgets/form/save.py b/webnotes/widgets/form/save.py index 94ff10a35d..50391cc01b 100644 --- a/webnotes/widgets/form/save.py +++ b/webnotes/widgets/form/save.py @@ -27,17 +27,17 @@ import webnotes def savedocs(): """save / submit / update doclist""" try: - doclist = webnotes.model_wrapper() - doclist.from_compressed(webnotes.form_dict.docs, webnotes.form_dict.docname) + wrapper = webnotes.model_wrapper() + wrapper.from_compressed(webnotes.form_dict.docs, webnotes.form_dict.docname) # action action = webnotes.form_dict.action if action=='Update': action='update_after_submit' - getattr(doclist, action.lower())() + getattr(wrapper, action.lower())() # update recent documents - webnotes.user.update_recent(doclist.doc.doctype, doclist.doc.name) - send_updated_docs(doclist) + webnotes.user.update_recent(wrapper.doc.doctype, wrapper.doc.name) + send_updated_docs(wrapper) except Exception, e: webnotes.msgprint(webnotes._('Did not save')) @@ -48,17 +48,17 @@ def savedocs(): def cancel(doctype=None, name=None): """cancel a doclist""" try: - doclist = webnotes.model_wrapper(doctype, name) - doclist.cancel() - send_updated_docs(doclist) + wrapper = webnotes.model_wrapper(doctype, name) + wrapper.cancel() + send_updated_docs(wrapper) except Exception, e: webnotes.errprint(webnotes.utils.getTraceback()) webnotes.msgprint(webnotes._("Did not cancel")) raise e -def send_updated_docs(doclist): - webnotes.response['main_doc_name'] = doclist.doc.name - webnotes.response['doctype'] = doclist.doc.doctype - webnotes.response['docname'] = doclist.doc.name - webnotes.response['docs'] = [doclist.doc] + doclist.children \ No newline at end of file +def send_updated_docs(wrapper): + webnotes.response['main_doc_name'] = wrapper.doc.name + webnotes.response['doctype'] = wrapper.doc.doctype + webnotes.response['docname'] = wrapper.doc.name + webnotes.response['docs'] = wrapper.doclist \ No newline at end of file