fix: child table not getting updated
This commit is contained in:
parent
96d287bbd8
commit
7e3a3c3bd8
2 changed files with 30 additions and 25 deletions
|
|
@ -198,44 +198,48 @@ def set_insert(update, producer_site, event_producer):
|
|||
doc = frappe.get_doc(update.data)
|
||||
check_doc_has_dependencies(doc, producer_site)
|
||||
if update.use_same_name:
|
||||
doc.insert(set_name=update.docname)
|
||||
doc.insert(set_name=update.docname, set_child_names=False)
|
||||
else:
|
||||
#if event consumer is not saving documents with the same name as the producer
|
||||
#store the remote docname in a custom field for future updates
|
||||
local_doc = doc.insert()
|
||||
local_doc = doc.insert(set_child_names=False)
|
||||
set_custom_fields(local_doc, update.docname, event_producer)
|
||||
|
||||
def set_update(update, producer_site):
|
||||
local_doc = get_local_doc(update)
|
||||
if local_doc:
|
||||
data = frappe._dict(update.data)
|
||||
try:
|
||||
if local_doc:
|
||||
data = frappe._dict(update.data)
|
||||
|
||||
try:
|
||||
if data.changed:
|
||||
local_doc.update(data.changed)
|
||||
local_doc.db_update_all()
|
||||
|
||||
if data.removed:
|
||||
for tablename, rownames in iteritems(data.removed):
|
||||
table = local_doc.get_table_field_doctype(tablename)
|
||||
for row in rownames:
|
||||
table = local_doc.get_table_field_doctype(tablename)
|
||||
frappe.db.delete(table, row)
|
||||
|
||||
if data.added:
|
||||
for tablename, rows in iteritems(data.added):
|
||||
for row in rows:
|
||||
local_doc.append(tablename, data.added)
|
||||
local_doc.db_update()
|
||||
|
||||
if data.row_changed:
|
||||
for tablename, rows in iteritems(data.row_changed):
|
||||
for row in rows:
|
||||
table = local_doc.get_table_field_doctype(tablename)
|
||||
child_doc = frappe.get_doc(table, row.get('name'))
|
||||
child_doc.update(row)
|
||||
old = local_doc.get(tablename)
|
||||
for doc in old:
|
||||
for row in rows:
|
||||
if row['name'] == doc.get('name'):
|
||||
doc.update(row)
|
||||
|
||||
except Exception as e:
|
||||
check_doc_has_dependencies(local_doc, producer_site)
|
||||
if data.added:
|
||||
for tablename, rows in iteritems(data.added):
|
||||
local_doc.extend(tablename, rows)
|
||||
for child in rows:
|
||||
child_doc = frappe.get_doc(child)
|
||||
child_doc.insert(set_name=child_doc.name, set_child_names=False)
|
||||
|
||||
local_doc.save()
|
||||
local_doc.db_update_all()
|
||||
|
||||
except frappe.DoesNotExistError:
|
||||
check_doc_has_dependencies(local_doc, producer_site)
|
||||
|
||||
def set_delete(update):
|
||||
local_doc = get_local_doc(update)
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ class Document(BaseDocument):
|
|||
frappe.flags.error_message = _('Insufficient Permission for {0}').format(self.doctype)
|
||||
raise frappe.PermissionError
|
||||
|
||||
def insert(self, ignore_permissions=None, ignore_links=None, ignore_if_duplicate=False, ignore_mandatory=None, set_name=None):
|
||||
def insert(self, ignore_permissions=None, ignore_links=None, ignore_if_duplicate=False, ignore_mandatory=None, set_name=None, set_child_names=True):
|
||||
"""Insert the document in the database (as a new document).
|
||||
This will check for user permissions and execute `before_insert`,
|
||||
`validate`, `on_update`, `after_insert` methods if they are written.
|
||||
|
|
@ -220,7 +220,7 @@ class Document(BaseDocument):
|
|||
self.check_if_latest()
|
||||
self.run_method("before_insert")
|
||||
self._validate_links()
|
||||
self.set_new_name(set_name=set_name)
|
||||
self.set_new_name(set_name=set_name, set_child_names=set_child_names)
|
||||
self.set_parent_in_children()
|
||||
self.validate_higher_perm_levels()
|
||||
|
||||
|
|
@ -385,7 +385,7 @@ class Document(BaseDocument):
|
|||
def get_doc_before_save(self):
|
||||
return getattr(self, '_doc_before_save', None)
|
||||
|
||||
def set_new_name(self, force=False, set_name=None):
|
||||
def set_new_name(self, force=False, set_name=None, set_child_names=True):
|
||||
"""Calls `frappe.naming.se_new_name` for parent and child docs."""
|
||||
if self.flags.name_set and not force:
|
||||
return
|
||||
|
|
@ -395,9 +395,10 @@ class Document(BaseDocument):
|
|||
else:
|
||||
set_new_name(self)
|
||||
|
||||
# set name for children
|
||||
for d in self.get_all_children():
|
||||
set_new_name(d)
|
||||
if set_child_names:
|
||||
# set name for children
|
||||
for d in self.get_all_children():
|
||||
set_new_name(d)
|
||||
|
||||
self.flags.name_set = True
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue