From 91484391ce72ceb805aeeeb1d7ea8090da9452c4 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 4 Mar 2013 14:28:38 +0530 Subject: [PATCH 1/2] invalidate cache if 'show in website' is unchecked for item and item group --- setup/doctype/item_group/item_group.py | 16 +++++++++-- stock/doctype/item/item.py | 39 +++++++++++++++++--------- 2 files changed, 40 insertions(+), 15 deletions(-) diff --git a/setup/doctype/item_group/item_group.py b/setup/doctype/item_group/item_group.py index 13112fe758..ba4ea77504 100644 --- a/setup/doctype/item_group/item_group.py +++ b/setup/doctype/item_group/item_group.py @@ -31,9 +31,12 @@ class DocType(DocTypeNestedSet): self.validate_name_with_item() + from website.helpers.product import invalidate_cache_for + + if self.doc.show_in_website: - # webpage updates from website.utils import update_page_name + # webpage updates page_name = self.doc.name if webnotes.conn.get_value("Product Settings", None, "default_product_category")==self.doc.name: @@ -43,8 +46,17 @@ class DocType(DocTypeNestedSet): update_page_name(self.doc, page_name) - from website.helpers.product import invalidate_cache_for invalidate_cache_for(self.doc.name) + + elif self.doc.page_name: + # if unchecked show in website + + from website.utils import delete_page_cache + delete_page_cache(self.doc.page_name) + + invalidate_cache_for(self.doc.name) + + webnotes.conn.set(self.doc, "page_name", None) def validate_name_with_item(self): if webnotes.conn.exists("Item", self.doc.name): diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py index 4c78347c94..334af298e9 100644 --- a/stock/doctype/item/item.py +++ b/stock/doctype/item/item.py @@ -39,9 +39,8 @@ class DocType: def on_update(self): self.validate_name_with_item_group() - if self.doc.show_in_website: - # webpage updates - self.update_website() + # webpage updates + self.update_website() bin = sql("select stock_uom from `tabBin` where item_code = '%s' " % self.doc.item_code) if bin and cstr(bin[0][0]) != cstr(self.doc.stock_uom): @@ -81,19 +80,33 @@ class DocType: self.doc.name, raise_exception=1) def update_website(self): - from website.utils import update_page_name - if self.doc.name==self.doc.item_name: - page_name_from = self.doc.name - else: - page_name_from = self.doc.name + " " + self.doc.item_name + def _invalidate_cache(): + from website.helpers.product import invalidate_cache_for + + invalidate_cache_for(self.doc.item_group) - update_page_name(self.doc, page_name_from) + [invalidate_cache_for(d.item_group) for d in \ + self.doclist.get({"doctype":"Website Item Group"})] - from website.helpers.product import invalidate_cache_for - invalidate_cache_for(self.doc.item_group) + if self.doc.show_in_website: + from website.utils import update_page_name + if self.doc.name==self.doc.item_name: + page_name_from = self.doc.name + else: + page_name_from = self.doc.name + " " + self.doc.item_name - [invalidate_cache_for(d.item_group) for d in \ - self.doclist.get({"doctype":"Website Item Group"})] + update_page_name(self.doc, page_name_from) + + _invalidate_cache() + + elif self.doc.page_name: + # if unchecked show in website + from website.utils import delete_page_cache + delete_page_cache(self.doc.page_name) + + _invalidate_cache() + + webnotes.conn.set(self.doc, "page_name", None) # On delete 1. Delete BIN (if none of the corrosponding transactions present, it gets deleted. if present, rolled back due to exception) def on_trash(self): From f934a240baff50220b5260c11e0818ed7bc59ad6 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 4 Mar 2013 15:34:45 +0530 Subject: [PATCH 2/2] refactored get_value and added backlink check in 'cancel' --- accounts/doctype/sales_invoice/sales_invoice.py | 5 +++-- accounts/doctype/sales_invoice/test_sales_invoice.py | 10 +++++----- patches/patch_list.py | 1 + 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/accounts/doctype/sales_invoice/sales_invoice.py b/accounts/doctype/sales_invoice/sales_invoice.py index 7068c72a8a..e5e53f2511 100644 --- a/accounts/doctype/sales_invoice/sales_invoice.py +++ b/accounts/doctype/sales_invoice/sales_invoice.py @@ -108,6 +108,8 @@ class DocType(SellingController): self.update_time_log_batch(self.doc.name) self.convert_to_recurring() + def before_cancel(self): + self.update_time_log_batch(None) def on_cancel(self): if cint(self.doc.is_pos) == 1: @@ -122,8 +124,7 @@ class DocType(SellingController): sales_com_obj.check_stop_sales_order(self) self.check_next_docstatus() sales_com_obj.update_prevdoc_detail(0, self) - - self.update_time_log_batch(None) + self.make_gl_entries(is_cancel=1) def on_update_after_submit(self): diff --git a/accounts/doctype/sales_invoice/test_sales_invoice.py b/accounts/doctype/sales_invoice/test_sales_invoice.py index 9059978337..fb290d27e3 100644 --- a/accounts/doctype/sales_invoice/test_sales_invoice.py +++ b/accounts/doctype/sales_invoice/test_sales_invoice.py @@ -33,10 +33,10 @@ class TestSalesInvoice(unittest.TestCase): tlb = webnotes.bean("Time Log Batch", "_T-Time Log Batch-00001") tlb.submit() - w = webnotes.bean(webnotes.copy_doclist(test_records[0])) - w.doclist[1].time_log_batch = "_T-Time Log Batch-00001" - w.insert() - w.submit() + si = webnotes.bean(webnotes.copy_doclist(test_records[0])) + si.doclist[1].time_log_batch = "_T-Time Log Batch-00001" + si.insert() + si.submit() self.assertEquals(webnotes.conn.get_value("Time Log Batch", "_T-Time Log Batch-00001", "status"), "Billed") @@ -44,7 +44,7 @@ class TestSalesInvoice(unittest.TestCase): self.assertEquals(webnotes.conn.get_value("Time Log", "_T-Time Log-00001", "status"), "Billed") - w.cancel() + si.cancel() self.assertEquals(webnotes.conn.get_value("Time Log Batch", "_T-Time Log Batch-00001", "status"), "Submitted") diff --git a/patches/patch_list.py b/patches/patch_list.py index 0870cee40e..d1110da323 100644 --- a/patches/patch_list.py +++ b/patches/patch_list.py @@ -203,4 +203,5 @@ patch_list = [ "execute:(not webnotes.conn.exists('UOM', 'Hour')) and webnotes.doc({'uom_name': 'Unit', 'doctype': 'UOM', 'name': 'Hour'}).insert()", "patches.february_2013.p09_remove_cancelled_warehouses", "patches.march_2013.update_po_prevdoc_doctype", + "patches.february_2013.p09_timesheets", ] \ No newline at end of file