This commit is contained in:
Rushabh Mehta 2014-03-27 14:17:44 +05:30
parent b57f322c3d
commit 57acf4e9cb
27 changed files with 130 additions and 128 deletions

View file

@ -20,7 +20,7 @@ frappe.core.Workflow = frappe.ui.form.Controller.extend({
}
},
update_field_options: function() {
var fields = $.map(frappe.model.get_doc("DocType", this.frm.doc.document_type).fields, function(d) {
var fields = $.map(frappe.get_doc("DocType", this.frm.doc.document_type).fields, function(d) {
return frappe.model.no_value_type.indexOf(d.fieldtype)===-1 ? d.fieldname : null;
})
frappe.meta.get_docfield("Workflow Document State", "update_field", this.frm.doc.name).options

View file

@ -428,14 +428,14 @@ frappe.PermissionEngine = Class.extend({
});
},
get_user_fields: function(doctype) {
var user_fields = frappe.model.get_children("DocType", doctype, "fields", {fieldtype:"Link", options:"User"})
user_fields = user_fields.concat(frappe.model.get_children("DocType", doctype, "fields",
var user_fields = frappe.get_children("DocType", doctype, "fields", {fieldtype:"Link", options:"User"})
user_fields = user_fields.concat(frappe.get_children("DocType", doctype, "fields",
{fieldtype:"Select", link_doctype:"User"}))
return user_fields
},
get_link_fields: function(doctype) {
return frappe.model.get_children("DocType", doctype, "fields",
return frappe.get_children("DocType", doctype, "fields",
{fieldtype:"Link", options:["not in", ["User", '[Select]']]});
}
})

View file

@ -6,22 +6,11 @@ import frappe
from frappe import msgprint, _
from frappe.utils import flt, cint, cstr
from frappe.model.meta import get_field_precision
from frappe.model.document import Document
class EmptyTableError(frappe.ValidationError): pass
class DocListController(object):
def __init__(self, doc, doclist):
self.doc, self.doclist = doc, doclist
if hasattr(self, "setup"):
self.setup()
@property
def meta(self):
if not hasattr(self, "_meta"):
self._meta = frappe.get_doctype(self.doc.doctype)
return self._meta
class DocListController(Document):
def validate_value(self, fieldname, condition, val2, doc=None, raise_exception=None):
"""check that value of fieldname should be 'condition' val2
else throw exception"""
@ -80,18 +69,9 @@ class DocListController(object):
for fieldname in fieldnames:
doc.fields[fieldname] = flt(doc.fields.get(fieldname), self.precision(fieldname, doc.parentfield))
def _process(self, parentfield):
from frappe.model.doc import Document
if isinstance(parentfield, Document):
parentfield = parentfield.parentfield
elif isinstance(parentfield, dict):
parentfield = parentfield.get("parentfield")
return parentfield
def precision(self, fieldname, parentfield=None):
parentfield = self._process(parentfield)
if not isinstance(parentfield, basestring):
parentfield = parentfield.parentfield
if not hasattr(self, "_precision"):
self._precision = frappe._dict({

View file

@ -29,7 +29,7 @@ class Meta(Document):
def get_link_fields(self):
tmp = self.get("fields", {"fieldtype":"Link"})
tmp.extend(self.get("fields", {"fieldtype":"Select", "options": "^link:"}))
return tmp
return tmp
def get_table_fields(self):
return [
@ -46,7 +46,7 @@ class Meta(Document):
def get_table_field_doctype(self, fieldname):
return { "fields": "DocField", "permissions": "DocPerm"}.get(fieldname)
def process(self):
self.add_custom_fields()
self.apply_property_setters()

View file

@ -980,9 +980,9 @@ frappe.ui.form.ControlTable = frappe.ui.form.Control.extend({
this._super();
// add title if prev field is not column / section heading or html
var prev_fieldtype = frappe.model.get_children("DocType", this.frm.doctype, "fields",
var prev_fieldtype = frappe.get_children("DocType", this.frm.doctype, "fields",
{idx: this.df.idx-1});
prev_fieldtype = prev_fieldtype ? prev_fieldtype[0].fieldtype : "";
prev_fieldtype = prev_fieldtype.length ? prev_fieldtype[0].fieldtype : "";
if(["Column Break", "Section Break", "HTML"].indexOf(prev_fieldtype)===-1) {
$("<label>" + this.df.label + "<label>").appendTo(this.wrapper);

View file

@ -98,7 +98,7 @@ frappe.form.formatters = {
return "<pre>" + (value==null ? "" : $("<div>").text(value).html()) + "</pre>"
},
WorkflowState: function(value) {
workflow_state = frappe.model.get_doc("Workflow State", value);
workflow_state = frappe.get_doc("Workflow State", value);
if(workflow_state) {
return repl("<span class='label label-%(style)s' \
data-workflow-state='%(value)s'\

View file

@ -9,7 +9,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) {
if(check_mandatory()) {
_call({
method: "frappe.widgets.form.save.savedocs",
args: { docs: frm.doc, action:action},
args: { doc: frm.doc, action:action},
callback: function(r) {
$(document).trigger("save", frm.doc);
callback(r);
@ -52,7 +52,7 @@ frappe.ui.form.save = function(frm, action, callback, btn) {
if(frm.doc.docstatus==2) return true; // don't check for cancel
$.each(frm.model.get_all_docs(frm.doc), function(i, doc) {
$.each(frappe.model.get_all_docs(frm.doc), function(i, doc) {
var error_fields = [];

View file

@ -186,7 +186,7 @@ frappe.ui.form.Toolbar = Class.extend({
},
has_workflow: function() {
if(this._has_workflow === undefined)
this._has_workflow = frappe.model.get("Workflow", {document_type: this.frm.doctype}).length;
this._has_workflow = frappe.get_list("Workflow", {document_type: this.frm.doctype}).length;
return this._has_workflow;
},
get_docstatus: function() {

View file

@ -79,7 +79,7 @@ frappe.ui.form.States = Class.extend({
// show current state on the button
this.workflow_button.find(".state-text").text(state);
var state_doc = frappe.model.get_doc("Workflow State", state);
var state_doc = frappe.get_doc("Workflow State", state);
if (state_doc) {
// set the icon
@ -109,7 +109,7 @@ frappe.ui.form.States = Class.extend({
$.each(frappe.workflow.get_transitions(this.frm.doctype, state), function(i, d) {
if(in_list(user_roles, d.allowed)) {
d.icon = frappe.model.get("Workflow State", d.next_state).icon;
d.icon = frappe.get_list("Workflow State", d.next_state).icon;
$(repl('<li><a href="#" data-action="%(action)s">\
<i class="icon icon-%(icon)s"></i> %(action)s</a></li>', d))
@ -160,7 +160,7 @@ frappe.ui.form.States = Class.extend({
// revert state on error
var on_error = function() {
// reset in locals
locals[me.frm.doctype][me.frm.docname] = doc_before_action;
frappe.model.add_to_locals(doc_before_action);
me.frm.refresh();
}

View file

@ -7,7 +7,7 @@ $.extend(frappe.model, {
new_names: {},
new_name_count: {},
get_new_doc: function(doctype, parent_doc) {
get_new_doc: function(doctype, parent_doc, parentfield) {
frappe.provide("locals." + doctype);
var doc = {
docstatus: 0,
@ -18,8 +18,19 @@ $.extend(frappe.model, {
owner: user
};
frappe.model.set_default_values(doc, parent_doc);
locals[doctype][doc.name] = doc;
frappe.provide("frappe.model.docinfo." + doctype + "." + doc.name);
if(parent_doc) {
$.extend(doc, {
parent: parent_doc.name,
parentfield: parentfield,
parenttype: parent_doc.doctype,
});
parent_doc[parentfield].push(doc);
} else {
frappe.provide("frappe.model.docinfo." + doctype + "." + doc.name);
}
frappe.model.add_to_locals(doc);
return doc;
},
@ -84,12 +95,12 @@ $.extend(frappe.model, {
get_default_from_boot_docs: function(df, doc, parent_doc) {
// set default from partial docs passed during boot like ":User"
if(frappe.model.get(df["default"]).length > 0) {
if(frappe.get_list(df["default"]).length > 0) {
var ref_fieldname = df["default"].slice(1).toLowerCase().replace(" ", "_");
var ref_value = parent_doc ?
parent_doc[ref_fieldname] :
frappe.defaults.get_user_default(ref_fieldname);
var ref_doc = ref_value ? frappe.model.get_doc(df["default"], ref_value) : null;
var ref_doc = ref_value ? frappe.get_doc(df["default"], ref_value) : null;
if(ref_doc && ref_doc[df.fieldname]) {
return ref_doc[df.fieldname];
@ -99,23 +110,18 @@ $.extend(frappe.model, {
add_child: function(parent_doc, doctype, parentfield, idx) {
// create row doc
idx = idx ?
idx - 0.1 :
frappe.model.get_children(doctype, parent_doc.name, parentfield,
parent_doc.doctype).length + 1;
idx = idx ? idx - 0.1 : (parent_doc[parentfield] || []).length + 1;
var d = frappe.model.get_new_doc(doctype, parent_doc, parentfield);
d.idx = idx;
var d = frappe.model.get_new_doc(doctype, parent_doc);
$.extend(d, {
parent: parent_doc.name,
parentfield: parentfield,
parenttype: parent_doc.doctype,
idx: idx
});
// renum for fraction
idx !== cint(idx) &&
frappe.model.get_children(doctype, parent_doc.name, parentfield,
parent_doc.doctype);
if(idx !== cint(idx)) {
var sorted = parent_doc[parentfield].sort(function(a, b) { return a.idx - b.idx; });
$.each(sorted, function(i, d) {
d.idx = i + 1;
});
}
cur_frm && cur_frm.dirty();

View file

@ -91,7 +91,7 @@ $.extend(frappe.meta, {
},
get_parentfield: function(parent_dt, child_dt) {
var df = (frappe.model.get_doc("DocType", parent_dt).fields || []).filter(function(d)
var df = (frappe.get_doc("DocType", parent_dt).fields || []).filter(function(d)
{ return d.fieldtype==="Table" && options===child_dt })
if(!df.length)
throw "parentfield not found for " + parent_dt + ", " + child_dt;
@ -110,7 +110,7 @@ $.extend(frappe.meta, {
var print_format_list = ["Standard"];
var default_print_format = locals.DocType[doctype].default_print_format;
var print_formats = frappe.model.get("Print Format", {doc_type: doctype})
var print_formats = frappe.get_list("Print Format", {doc_type: doctype})
.sort(function(a, b) { return (a > b) ? 1 : -1; });
$.each(print_formats, function(i, d) {
if(!in_list(print_format_list, d.name))

View file

@ -205,8 +205,8 @@ $.extend(frappe.model, {
return ret ? true : false;
},
get: function(doctype, filters) {
var docsdict = locals[doctype] || locals[":" + doctype] || [];
get_list: function(doctype, filters) {
var docsdict = locals[doctype] || locals[":" + doctype] || {};
if($.isEmptyObject(docsdict))
return [];
return frappe.utils.filter_dict(docsdict, filters);
@ -217,16 +217,15 @@ $.extend(frappe.model, {
return locals[doctype] && locals[doctype][filters]
&& locals[doctype][filters][fieldname];
} else {
var l = frappe.model.get(doctype, filters);
var l = frappe.get_list(doctype, filters);
return (l.length && l[0]) ? l[0][fieldname] : null;
}
},
set_value: function(doctype, name, fieldname, value, fieldtype) {
set_value: function(doctype, docname, fieldname, value, fieldtype) {
/* help: Set a value locally (if changed) and execute triggers */
if(!name) name = doctype;
var doc = locals[doctype] && locals[doctype][name] || null;
var doc = locals[doctype] && locals[doctype][docname];
if(doc && doc[fieldname] !== value) {
doc[fieldname] = value;
frappe.model.trigger(fieldname, value, doc);
@ -274,19 +273,28 @@ $.extend(frappe.model, {
},
get_doc: function(doctype, name) {
if($.isPlainObject(name)) {
var doc = frappe.get_list(doctype, name);
return doc && doc.length ? doc[0] : null;
}
return locals[doctype] ? locals[doctype][name] : null;
},
get_children: function(doctype, parent, parentfield, filters) {
if($.isPlainObject(parentfield)) {
if($.isPlainObject(doctype)) {
var doc = doctype;
var filters = parentfield;
var filters = parentfield
var parentfield = parent;
return frappe.utils.filter_dict((doc[parentfield] || []), filters);
} else {
return frappe.utils.filter_dict((frappe.model.get_doc(doctype, parent)[parentfield] || []), filters);
var doc = frappe.get_doc(doctype, parent)[parentfield];
}
var children = doc[parentfield] || [];
if(filters) {
return frappe.utils.filter_dict(children, filters);
} else {
return children;
}
},
clear_table: function(doctype, parenttype, parent, parentfield) {
@ -314,13 +322,13 @@ $.extend(frappe.model, {
}
delete locals[doctype][name];
if(parent)
frappe.model.get_children(doctype, parent, parentfield, parenttype);
frappe.get_children(doctype, parent, parentfield, parenttype);
},
get_no_copy_list: function(doctype) {
var no_copy_list = ['name','amended_from','amendment_date','cancel_reason'];
$.each(frappe.model.get_doc("DocType", doctype).fields || [], function(i, df) {
$.each(frappe.get_doc("DocType", doctype).fields || [], function(i, df) {
if(cint(df.no_copy)) no_copy_list.push(df.fieldname);
})
return no_copy_list;
@ -477,4 +485,6 @@ $.extend(frappe.model, {
});
// legacy
getchildren = frappe.model.get_children
frappe.get_doc = frappe.model.get_doc;
frappe.get_children = frappe.model.get_children;
frappe.get_list = frappe.model.get_list;

View file

@ -37,7 +37,7 @@ $.extend(frappe.perm, {
get_perm: function(doctype, docname) {
var perm = [{read: 0}];
var meta = frappe.model.get_doc("DocType", doctype);
var meta = frappe.get_doc("DocType", doctype);
if(!meta) {
return perm;
@ -52,7 +52,7 @@ $.extend(frappe.perm, {
return perm;
}
var docperms = frappe.model.get_doc("DocType", doctype).permissions || [];
var docperms = frappe.get_doc("DocType", doctype).permissions || [];
$.each(docperms, function(i, p) {
// if user has this role
if(user_roles.indexOf(p.role)!==-1) {
@ -75,7 +75,7 @@ $.extend(frappe.perm, {
has_unrestricted_access: function(doctype, docname, restricted) {
var restrictions = frappe.defaults.get_restrictions();
var doc = frappe.model.get_doc(doctype, docname);
var doc = frappe.get_doc(doctype, docname);
if(restricted) {
if(doc.owner==user) return true;
@ -93,7 +93,7 @@ $.extend(frappe.perm, {
// loop and find if has restricted data
var has_restricted_data = false;
var doc = frappe.model.get_doc(doctype, docname);
var doc = frappe.get_doc(doctype, docname);
$.each(fields_to_check, function(i, df) {
if(doc[df.fieldname] && restrictions[df.options].indexOf(doc[df.fieldname])===-1) {
has_restricted_data = true;

View file

@ -22,10 +22,7 @@ $.extend(frappe.model, {
frappe.provide("frappe.model.docinfo." + d.doctype + "." + d.name);
}
if(!locals[d.doctype])
locals[d.doctype] = {};
locals[d.doctype][d.name] = d;
frappe.model.add_to_locals(d);
d.__last_sync_on = new Date();
if(d.doctype==="DocType") {
@ -67,5 +64,18 @@ $.extend(frappe.model, {
return r.docs;
},
add_to_locals: function(doc) {
if(!locals[doc.doctype]) locals[doc.doctype] = {};
locals[doc.doctype][doc.name] = doc;
if(!doc.parent) {
$.each(doc, function(key, value) {
if($.isArray(value)) {
$.each(value, function(i, d) {
frappe.model.add_to_locals(d);
});
}
});
}
}
});

View file

@ -7,7 +7,7 @@ frappe.workflow = {
state_fields: {},
workflows: {},
setup: function(doctype) {
var wf = frappe.model.get("Workflow", {document_type: doctype});
var wf = frappe.get_list("Workflow", {document_type: doctype});
if(wf.length) {
frappe.workflow.workflows[doctype] = wf[0];
frappe.workflow.state_fields[doctype] = wf[0].workflow_state_field;
@ -27,14 +27,14 @@ frappe.workflow = {
},
get_transitions: function(doctype, state) {
frappe.workflow.setup(doctype);
return frappe.model.get_children(frappe.workflow.workflows[doctype], "workflow_transitions", {state:state});
return frappe.get_children(frappe.workflow.workflows[doctype], "workflow_transitions", {state:state});
},
get_document_state: function(doctype, state) {
frappe.workflow.setup(doctype);
return frappe.model.get_children(frappe.workflow.workflows[doctype], "workflow_document_states", {state:state})[0];
return frappe.get_children(frappe.workflow.workflows[doctype], "workflow_document_states", {state:state})[0];
},
get_next_state: function(doctype, state, action) {
return frappe.model.get_children(frappe.workflow.workflows[doctype], "workflow_transitions", {
return frappe.get_children(frappe.workflow.workflows[doctype], "workflow_transitions", {
state:state, action:action})[0].next_state;
},
is_read_only: function(doctype, name) {

View file

@ -28,8 +28,7 @@ frappe.print.Table = Class.extend({
}));
},
get_data: function() {
var children = frappe.model.get(this.tabletype, {
parent:this.docname, parenttype:this.doctype, parentfield: this.fieldname})
var children = frappe.get_doc(this.doctype, this.docname)[this.fieldname] || [];
var data = []
for(var i=0; i<children.length; i++) {

View file

@ -16,7 +16,7 @@ frappe.call = function(opts) {
} else if(opts.doc) {
$.extend(args, {
cmd: "runserverobj",
docs: frappe.model.get_doc(opts.doc.doctype, opts.doc.name),
docs: frappe.get_doc(opts.doc.doctype, opts.doc.name),
method: opts.method,
args: opts.args,
});

View file

@ -13,7 +13,7 @@ frappe.views.CommunicationList = Class.extend({
}
if(!this.list)
this.list = frappe.model.get("Communication", {"parenttype": this.doc.doctype, "parent": this.doc.name});
this.list = frappe.get_list("Communication", {"parenttype": this.doc.doctype, "parent": this.doc.name});
var sortfn = function (a, b) { return (b.creation > a.creation) ? 1 : -1; }
this.list = this.list.sort(sortfn);

View file

@ -43,7 +43,7 @@ frappe.views.ListView = Class.extend({
'modified_by'], function(i, fieldname) { add_field(fieldname); })
// add title field
var meta = frappe.model.get("DocType", this.doctype)[0];
var meta = frappe.get_doc("DocType", this.doctype);
if(meta.title_field) {
this.title_field = meta.title_field;
add_field(meta.title_field);
@ -56,8 +56,8 @@ frappe.views.ListView = Class.extend({
this.stats.push(this.workflow_state_fieldname);
}
$.each(frappe.model.get("DocField", {"parent":this.doctype, "in_list_view":1}), function(i,d) {
if(frappe.perm.has_perm(me.doctype, d.permlevel, "read")) {
$.each(meta.fields, function(i,d) {
if(d.in_list_view && frappe.perm.has_perm(me.doctype, d.permlevel, "read")) {
if(d.fieldtype=="Image" && d.options) {
add_field(d.options);
} else {
@ -103,8 +103,8 @@ frappe.views.ListView = Class.extend({
var overridden = $.map(this.settings.add_columns || [], function(d) {
return d.content;
});
var docfields_in_list_view = frappe.model.get("DocField", {"parent":this.doctype,
"in_list_view":1}).sort(function(a, b) { return a.idx - b.idx })
var docfields_in_list_view = frappe.get_children("DocType", this.doctype, "fields",
{"in_list_view":1}).sort(function(a, b) { return a.idx - b.idx })
$.each(docfields_in_list_view, function(i,d) {
if(in_list(overridden, d.fieldname) || d.fieldname === me.title_field) {

View file

@ -93,7 +93,7 @@ frappe.views.QueryReport = Class.extend({
me.appframe.set_title(frappe._("Query Report")+": " + frappe._(me.report_name));
frappe.model.with_doc("Report", me.report_name, function() {
me.report_doc = frappe.model.get_doc("Report", me.report_name);
me.report_doc = frappe.get_doc("Report", me.report_name);
frappe.model.with_doctype(me.report_doc.ref_doctype, function() {
if(!frappe.query_reports[me.report_name]) {
return frappe.call({

View file

@ -27,7 +27,7 @@ frappe.views.ReportViewPage = Class.extend({
if(me.docname) {
frappe.model.with_doc('Report', me.docname, function(r) {
me.page.reportview.set_columns_and_filters(
JSON.parse(frappe.model.get("Report", me.docname)[0].json));
JSON.parse(frappe.get_doc("Report", me.docname).json));
me.page.reportview.set_route_filters();
me.page.reportview.run();
});

View file

@ -212,7 +212,7 @@ _f.Frm.prototype.watch_model_updates = function() {
})
// on table fields
$.each(frappe.model.get("DocField", {fieldtype:"Table", parent: me.doctype}), function(i, df) {
$.each(frappe.get_children("DocType", me.doctype, "fields", {fieldtype:"Table"}), function(i, df) {
frappe.model.on(df.options, "*", function(fieldname, value, doc) {
if(doc.parent===me.docname && doc.parentfield===df.fieldname) {
me.dirty();
@ -306,7 +306,7 @@ _f.Frm.prototype.rename_notify = function(dt, old, name) {
// SETUP
_f.Frm.prototype.setup_meta = function(doctype) {
this.meta = frappe.model.get_doc('DocType',this.doctype);
this.meta = frappe.get_doc('DocType',this.doctype);
this.perm = frappe.perm.get_perm(this.doctype); // for create
if(this.meta.istable) { this.meta.in_dialog = 1 }
}
@ -366,7 +366,7 @@ _f.Frm.prototype.refresh = function(docname) {
this.read_only = frappe.workflow.is_read_only(this.doctype, this.docname);
// set the doc
this.doc = frappe.model.get_doc(this.doctype, this.docname);
this.doc = frappe.get_doc(this.doctype, this.docname);
// check if doctype is already open
if (!this.opendocs[this.docname]) {

View file

@ -420,7 +420,7 @@ $.extend(_p, {
// Get doctype, docname, layout for a doctype
var docname = cur_frm.docname;
var doctype = cur_frm.doctype;
var data = getchildren('DocField', doctype, 'fields', 'DocType');
var data = frappe.get_children("DocType", doctype, "fields");
var layout = _p.add_layout(doctype);
this.pf_list = [layout];
var me = this;

View file

@ -7,7 +7,5 @@ from frappe.website.website_generator import WebsiteGenerator
from frappe.website.utils import cleanup_page_name
from frappe.utils import cint
class DocType(WebsiteGenerator):
def __init__(self, doc, doclist):
self.doc, self.doclist = doc, doclist
self.save_versions = True
class WebsitePage(WebsiteGenerator):
save_versions = True

View file

@ -31,7 +31,7 @@ $.extend(cur_frm.cscript, {
},
label: function(doc, cdt, cdn) {
var item = frappe.model.get_doc(cdt, cdn);
var item = frappe.get_doc(cdt, cdn);
if(item.parentfield === "top_bar_items") {
this.set_parent_label_options();
}
@ -56,7 +56,7 @@ $.extend(cur_frm.cscript, {
// get labels of parent items
get_parent_options: function(table_field) {
var items = getchildren('Top Bar Item', cur_frm.doc.name, table_field);
var items = cur_frm.doc[table_field] || [];
var main_items = [''];
for(var i in items) {
var d = items[i];

View file

@ -68,8 +68,9 @@ def getdoctype(doctype, with_parent=False, cached_timestamp=None):
def get_meta_bundle(doctype):
bundle = [frappe.widgets.form.meta.get_meta(doctype)]
for df in bundle[0].get_table_fields():
bundle.append(frappe.widgets.form.meta.get_meta(df.options))
for df in bundle[0].fields:
if df.fieldtype=="Table":
bundle.append(frappe.widgets.form.meta.get_meta(df.options))
return bundle
def get_docinfo(doctype, name):

View file

@ -2,27 +2,25 @@
# MIT License. See license.txt
from __future__ import unicode_literals
import frappe
import frappe, json
@frappe.whitelist()
def savedocs():
"""save / submit / update doclist"""
try:
wrapper = frappe.bean()
wrapper.from_compressed(frappe.form_dict.docs, frappe.form_dict.docname)
doc = frappe.get_doc(json.loads(frappe.form_dict.doc))
# action
action = frappe.form_dict.action
if action=='Update': action='update_after_submit'
doc.docstatus = {"Save":0, "Submit": 1, "Update": 1, "Cancel": 2}[frappe.form_dict.action]
try:
getattr(wrapper, action.lower())()
doc.save()
except NameError, e:
frappe.msgprint(frappe._("Name Exists"))
raise
# update recent documents
frappe.user.update_recent(wrapper.doc.doctype, wrapper.doc.name)
send_updated_docs(wrapper)
frappe.user.update_recent(doc.doctype, doc.name)
send_updated_docs(doc)
except Exception, e:
frappe.msgprint(frappe._('Did not save'))
@ -33,20 +31,20 @@ def savedocs():
def cancel(doctype=None, name=None):
"""cancel a doclist"""
try:
wrapper = frappe.bean(doctype, name)
wrapper.cancel()
send_updated_docs(wrapper)
doc = frappe.get_doc(doctype, name)
doc.cancel()
send_updated_docs(doc)
except Exception, e:
frappe.errprint(frappe.utils.get_traceback())
frappe.msgprint(frappe._("Did not cancel"))
raise
def send_updated_docs(wrapper):
def send_updated_docs(doc):
from load import get_docinfo
get_docinfo(wrapper.doc.doctype, wrapper.doc.name)
get_docinfo(doc.doctype, doc.name)
frappe.response['main_doc_name'] = wrapper.doc.name
frappe.response['doctype'] = wrapper.doc.doctype
frappe.response['docname'] = wrapper.doc.name
frappe.response['docs'] = wrapper.doclist
frappe.response['main_doc_name'] = doc.name
frappe.response['doctype'] = doc.doctype
frappe.response['docname'] = doc.name
frappe.response.docs.append(doc)