From e905d79fe1c6155fe9cd16f9d0a72508c78e2b1d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Fri, 23 Aug 2013 15:18:19 +0530 Subject: [PATCH 01/15] [minor] run_method with args --- webnotes/model/bean.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/webnotes/model/bean.py b/webnotes/model/bean.py index 926d0f52ff..66b9232d03 100644 --- a/webnotes/model/bean.py +++ b/webnotes/model/bean.py @@ -216,18 +216,18 @@ class Bean: idx_map[d.parentfield] = d.idx - def run_method(self, method): + def run_method(self, method, *args, **kwargs): self.make_controller() if hasattr(self.controller, method): - getattr(self.controller, method)() + getattr(self.controller, method)(*args, **kwargs) if hasattr(self.controller, 'custom_' + method): - getattr(self.controller, 'custom_' + method)() + getattr(self.controller, 'custom_' + method)(*args, **kwargs) notify(self.controller, method) self.set_doclist(self.controller.doclist) - + def get_method(self, method): self.make_controller() return getattr(self.controller, method, None) From df581ee060543910d4c6b7c56776e9e3156095a4 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 19 Sep 2013 14:16:34 +0530 Subject: [PATCH 02/15] [fix] [minor] [website] --- webnotes/memc.py | 2 +- webnotes/webutils.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/webnotes/memc.py b/webnotes/memc.py index e8a382e160..2d31521070 100644 --- a/webnotes/memc.py +++ b/webnotes/memc.py @@ -17,7 +17,7 @@ class MClient(memcache.Client): return builder() val = self.get(self.n(key)) - if val==None and builder: + if not val and builder: val = builder() self.set_value(key, val) return val diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 39afd843a2..88d6fcbf54 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -163,7 +163,7 @@ def build_website_sitemap_config(): return options - for path, folders, files in os.walk(basepath): + for path, folders, files in os.walk(basepath, followlinks=True): if os.path.basename(path)=="pages" and os.path.basename(os.path.dirname(path))=="templates": for fname in files: if fname.endswith(".html"): From 9745b9785ae298ca3284c6add614da004ffdfc01 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 19 Sep 2013 14:27:38 +0530 Subject: [PATCH 03/15] [fix] [minor] [website] --- webnotes/webutils.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 88d6fcbf54..33466f1d48 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -246,9 +246,11 @@ def clear_cache(page_name=None): cache = webnotes.cache() for p in get_all_pages(): cache.delete_value("page:" + p) + cache.delete_value("page:index") cache.delete_value("website_sitemap") cache.delete_value("website_sitemap_config") + def get_website_sitemap(): return webnotes.cache().get_value("website_sitemap", build_sitemap) From 8b214c3cea78aef2cc876a312148f0b435842500 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 19 Sep 2013 14:30:38 +0530 Subject: [PATCH 04/15] [fix] [minor] [website] --- webnotes/webutils.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 33466f1d48..666182144e 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -125,11 +125,12 @@ def build_sitemap(): g["is_generator"] = True module = webnotes.get_module(g["controller"]) for page_name, name in webnotes.conn.sql("""select page_name, name from `tab%s` where - ifnull(%s, 0)=1""" % (module.doctype, module.condition_field)): - opts = g.copy() - opts["doctype"] = module.doctype - opts["docname"] = name - sitemap[page_name] = opts + ifnull(%s, 0)=1 and ifnull(page_name '')!=''""" % \ + (module.doctype, module.condition_field)): + opts = g.copy() + opts["doctype"] = module.doctype + opts["docname"] = name + sitemap[page_name] = opts return sitemap From 2e9f7a43cb1475ceb22614d5f8b15b79ed829758 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 19 Sep 2013 14:31:45 +0530 Subject: [PATCH 05/15] [fix] [minor] [website] --- webnotes/webutils.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 666182144e..da977cc90e 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -125,8 +125,7 @@ def build_sitemap(): g["is_generator"] = True module = webnotes.get_module(g["controller"]) for page_name, name in webnotes.conn.sql("""select page_name, name from `tab%s` where - ifnull(%s, 0)=1 and ifnull(page_name '')!=''""" % \ - (module.doctype, module.condition_field)): + ifnull(%s, 0)=1 and ifnull(page_name, '')!=''""" % (module.doctype, module.condition_field)): opts = g.copy() opts["doctype"] = module.doctype opts["docname"] = name From 278fc05cb99b0a76f8806080b1d7596f531fb830 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 19 Sep 2013 14:42:56 +0530 Subject: [PATCH 06/15] [fix] [minor] [website] --- webnotes/webutils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index da977cc90e..30a469de6c 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -245,7 +245,8 @@ def clear_cache(page_name=None): else: cache = webnotes.cache() for p in get_all_pages(): - cache.delete_value("page:" + p) + if p is not None: + cache.delete_value("page:" + p) cache.delete_value("page:index") cache.delete_value("website_sitemap") cache.delete_value("website_sitemap_config") From 9a54ae4feb0e125bcda47453f5d57c895fd53cb6 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Thu, 19 Sep 2013 15:12:48 +0530 Subject: [PATCH 07/15] [fix] [minor] [install] pass root password to wnf --- wnf.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/wnf.py b/wnf.py index 770e12cd7d..48c4959491 100755 --- a/wnf.py +++ b/wnf.py @@ -173,6 +173,8 @@ def setup_options(): help="Apply the patches on given db") parser.add_option("--password", help="Password for given db", nargs=1) + parser.add_option("--root_password", + help="Password for mysql root user", nargs=1) parser.add_option("--clear_web", default=False, action="store_true", help="clear web cache") @@ -409,18 +411,18 @@ def run(): elif options.install: from webnotes.install_lib.install import Installer - inst = Installer('root') + inst = Installer('root', options.root_password) inst.import_from_db(options.install[0], source_path=options.install[1], verbose = 1) elif options.install_fresh: from webnotes.install_lib.install import Installer - inst = Installer('root') + inst = Installer('root', options.root_password) inst.import_from_db(options.install_fresh, verbose = 1) elif options.reinstall: from webnotes.install_lib.install import Installer - inst = Installer('root') + inst = Installer('root', options.root_password) import conf inst.import_from_db(conf.db_name, verbose = 1) From 71c90e350b59a907815792c8dd4b8f36798848de Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Thu, 19 Sep 2013 16:59:15 +0530 Subject: [PATCH 08/15] [fix] [minor] desktop notification if module exists --- core/page/desktop/desktop.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/core/page/desktop/desktop.js b/core/page/desktop/desktop.js index a0e9e07441..7038d89761 100644 --- a/core/page/desktop/desktop.js +++ b/core/page/desktop/desktop.js @@ -88,12 +88,13 @@ wn.core.pages.desktop.show_pending_notifications = function() { && wn.boot.notification_info.open_count_module[module]!=null) { sum = wn.boot.notification_info.open_count_module[module]; } - var notifier = $("#module-count-" + wn.modules[module]._link); - if(notifier.length) { - notifier.toggle(sum ? true : false); - notifier.find(".circle-text").html(sum || ""); + if (wn.modules[module]) { + var notifier = $("#module-count-" + wn.modules[module]._link); + if(notifier.length) { + notifier.toggle(sum ? true : false); + notifier.find(".circle-text").html(sum || ""); + } } - }); } From f1076d98a87652f4a558883c850e2cc5115cc158 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 20 Sep 2013 11:08:32 +0530 Subject: [PATCH 09/15] [fix] [minor] cint idx in prepare_for_save --- webnotes/model/bean.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/webnotes/model/bean.py b/webnotes/model/bean.py index 7c4f395c62..0eb9880c75 100644 --- a/webnotes/model/bean.py +++ b/webnotes/model/bean.py @@ -213,6 +213,8 @@ class Bean: d.parent = self.doc.name if not d.idx: d.idx = idx_map.setdefault(d.parentfield, 0) + 1 + else: + d.idx = cint(d.idx) if is_local: # if parent is new, all children should be new d.fields["__islocal"] = 1 From fabf6798d09631687b626989c23350c6f0a790bb Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 20 Sep 2013 11:44:20 +0530 Subject: [PATCH 10/15] [fix] [minor] [file manager] pass utf-8 encoded strings to os.remove and os.path.exists --- webnotes/utils/file_manager.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/webnotes/utils/file_manager.py b/webnotes/utils/file_manager.py index 4de0230cae..bb39a80f4e 100644 --- a/webnotes/utils/file_manager.py +++ b/webnotes/utils/file_manager.py @@ -73,7 +73,7 @@ def save_file(fname, content, dt, dn): file_size = check_max_file_size(content) temp_fname = write_file(content, files_path) fname = scrub_file_name(fname) - fpath = os.path.join(files_path, fname) + fpath = os.path.join(files_path, fname).encode("utf-8") fname_parts = fname.split(".", -1) main = ".".join(fname_parts[:-1]) @@ -95,14 +95,14 @@ def save_file(fname, content, dt, dn): fname = get_new_fname_based_on_version(files_path, main, extn, versions) # rename - os.rename(temp_fname, os.path.join(files_path, fname)) + os.rename(temp_fname, fpath) else: # rename new file - os.rename(temp_fname, os.path.join(files_path, fname)) + os.rename(temp_fname, fpath) f = webnotes.bean({ "doctype": "File Data", - "file_name": os.path.relpath(os.path.join(files_path, fname), get_path("public")), + "file_name": os.path.relpath(fpath, get_path("public")), "attached_to_doctype": dt, "attached_to_name": dn, "file_size": file_size @@ -123,7 +123,7 @@ def get_new_fname_based_on_version(files_path, main, extn, versions): version = 1 new_fname = main + "-" + str(version) + "." + extn - while os.path.exists(os.path.join(files_path, new_fname)): + while os.path.exists(os.path.join(files_path, new_fname).encode("utf-8")): version += 1 new_fname = main + "-" + str(version) + "." + extn if version > 100: From 531a35409c30e624d8759186bfb453f00a19cb6f Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Fri, 20 Sep 2013 12:28:45 +0530 Subject: [PATCH 11/15] [fix] [minor] z-index issue in date and datetime picker --- public/js/wn/form/control.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/public/js/wn/form/control.js b/public/js/wn/form/control.js index 71a95b55a7..5ab45bc819 100644 --- a/public/js/wn/form/control.js +++ b/public/js/wn/form/control.js @@ -369,7 +369,10 @@ wn.ui.form.ControlDate = wn.ui.form.ControlData.extend({ }, set_datepicker: function() { this.datepicker_options.dateFormat = - (wn.boot.sysdefaults.date_format || 'yy-mm-dd').replace('yyyy','yy') + (wn.boot.sysdefaults.date_format || 'yy-mm-dd').replace('yyyy','yy'); + if(this.not_in_form && this.dialog_wrapper) { + this.$input.css("z-index", cint($(this.dialog_wrapper).zIndex())); + } this.$input.datepicker(this.datepicker_options); }, parse: function(value) { @@ -408,8 +411,12 @@ wn.ui.form.ControlTime = wn.ui.form.ControlData.extend({ wn.ui.form.ControlDatetime = wn.ui.form.ControlDate.extend({ set_datepicker: function() { this.datepicker_options.dateFormat = - (wn.boot.sysdefaults.date_format || 'yy-mm-dd').replace('yyyy','yy') + (wn.boot.sysdefaults.date_format || 'yy-mm-dd').replace('yyyy','yy'); this.datepicker_options.timeFormat = "hh:mm:ss"; + + if(this.not_in_form && this.dialog_wrapper) { + this.$input.css("z-index", cint($(this.dialog_wrapper).zIndex())); + } this.$input.datetimepicker(this.datepicker_options); }, From c30a604ec749b7fd6360494e8521a44b88434e12 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 23 Sep 2013 12:44:06 +0530 Subject: [PATCH 12/15] [fix] [minor] clear website sitemap when deleting page cache --- webnotes/webutils.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 30a469de6c..63eb006fe5 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -260,7 +260,9 @@ def get_all_pages(): def delete_page_cache(page_name): if page_name: - webnotes.cache().delete_value("page:" + page_name) + cache = webnotes.cache() + cache.delete_value("page:" + page_name) + cache.delete_value("website_sitemap") def get_hex_shade(color, percent): def p(c): From 4d6fdbdbd3a7823ff654f466077d6aee8271e471 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 25 Sep 2013 00:45:57 +0530 Subject: [PATCH 13/15] [minor] [grid] optimizations --- public/js/wn/form/grid.js | 181 ++++++++++++++++++++------------------ 1 file changed, 96 insertions(+), 85 deletions(-) diff --git a/public/js/wn/form/grid.js b/public/js/wn/form/grid.js index 292b1b075c..df17afd835 100644 --- a/public/js/wn/form/grid.js +++ b/public/js/wn/form/grid.js @@ -51,28 +51,29 @@ wn.ui.form.Grid = Class.extend({ if(!force && this.data_rows_are_same(data)) { // soft refresh this.header_row.refresh(); - $.each(this.grid_rows, function(i, g) { - g.refresh(); - }); + for(var i in this.grid_rows) { + this.grid_rows[i].refresh(); + } } else { // redraw this.wrapper.find(".grid-row").remove(); this.make_head(); this.grid_rows = []; this.grid_rows_by_docname = {}; - $.each(data || [], function(ri, d) { + for(var ri in data) { + var d = data[ri]; var grid_row = new wn.ui.form.GridRow({ parent: $rows, - parent_df: me.df, - docfields: me.docfields, + parent_df: this.df, + docfields: this.docfields, doc: d, - frm: me.frm, - grid: me + frm: this.frm, + grid: this }); - me.grid_rows.push(grid_row) - me.grid_rows_by_docname[d.name] = grid_row; - }); - + this.grid_rows.push(grid_row) + this.grid_rows_by_docname[d.name] = grid_row; + } + this.wrapper.find(".grid-add-row").toggle(this.is_editable()); if(this.is_editable()) { this.make_sortable($rows); @@ -183,9 +184,7 @@ wn.ui.form.GridRow = Class.extend({ return false; }); - this.form_panel = $('').appendTo(this.wrapper); - - $('
').appendTo(this.wrapper); + this.divider = $('
').appendTo(this.wrapper); this.set_row_index(); this.make_static_display(); @@ -220,6 +219,7 @@ wn.ui.form.GridRow = Class.extend({ this.doc = locals[this.doc.doctype][this.doc.name]; // re write columns + this.grid.static_display_template = null; this.make_static_display(); // refersh form fields @@ -230,76 +230,38 @@ wn.ui.form.GridRow = Class.extend({ } }, make_static_display: function() { - var me = this, - total_colsize = 1; - me.row.empty(); - col = $('
' + (me.doc ? me.doc.idx : "#")+ '
') - .appendTo(me.row); + var me = this; + this.make_static_display_template(); + this.row.empty(); + $('
' + (this.doc ? this.doc.idx : "#")+ '
') + .appendTo(this.row); - $.each(me.docfields, function(ci, df) { - if(!df.hidden && df.in_list_view && me.grid.frm.get_perm(df.permlevel, READ) - && !in_list(["Section Break", "Column Break"], df.fieldtype)) { - var colsize = 2, - txt = me.doc ? - wn.format(me.doc[df.fieldname], df, null, me.doc) : - wn._(df.label); - switch(df.fieldtype) { - case "Text": - case "Small Text": - colsize = 3; - break; - case "Check": - colsize = 1; - break; - case "Select": - txt = wn._(txt) - } - total_colsize += colsize - if(total_colsize > 11) - return false; - $col = $('
') - .html(txt) - .attr("data-fieldname", df.fieldname) - .data("df", df) - .appendTo(me.row) - - if(["Text", "Small Text"].indexOf(df.fieldtype)!==-1) { - $col.addClass("grid-overflow-no-ellipsis"); - } else { - $col.addClass("grid-overflow-ellipsis"); - } - - if(in_list(["Int", "Currency", "Float"], df.fieldtype)) - $col.addClass("text-right"); + for(var ci in this.static_display_template) { + var df = this.static_display_template[ci][0]; + var colsize = this.static_display_template[ci][1]; + var txt = this.doc ? + wn.format(this.doc[df.fieldname], df, null, this.doc) : + wn._(df.label); + if(df.fieldtype === "Select") { + txt = wn._(txt); } - - }); + var add_class = (["Text", "Small Text"].indexOf(df.fieldtype)===-1) ? + " grid-overflow-ellipsis" : " grid-overflow-no-ellipsis"; + add_class += (["Int", "Currency", "Float"].indexOf(df.fieldtype)!==-1) ? + " text-right": ""; - // redistribute if total-col size is less than 12 - var passes = 0; - while(total_colsize < 11 && passes < 10) { - me.row.find(".col").each(function() { - var $col = $(this); - if(!$col.hasClass("col-xs-1") - && !in_list(["Int", "Currency", "Float"], $col.data("df").fieldtype)) { - for(var i=2; i<12; i++) { - if($col.hasClass("col-xs-" + i)) { - $col.removeClass("col-xs-" + i).addClass("col-xs-" + (i+1)); - total_colsize++; - break; - } - } - } - if(total_colsize >= 11) - return false; - }); - passes++; + $col = $('
') + .html(txt) + .attr("data-fieldname", df.fieldname) + .data("df", df) + .appendTo(this.row) } + // TODO find a better solution // append button column - if(me.doc && this.grid.is_editable()) { - if(!me.grid.$row_actions) { - me.grid.$row_actions = $('
\ \ @@ -307,11 +269,12 @@ wn.ui.form.GridRow = Class.extend({ \
'); } - $col = me.grid.$row_actions.clone().appendTo(me.row); + $col = this.grid.$row_actions.clone().appendTo(this.row); if($col.width() < 50) { - $col.remove(); + $col.toggle(false); } else { + $col.toggle(true); $col.find(".grid-insert-row").click(function() { me.insert(); return false; }); $col.find(".grid-delete-row").click(function() { me.remove(); return false; }); } @@ -319,6 +282,49 @@ wn.ui.form.GridRow = Class.extend({ $(this.frm.wrapper).trigger("grid-row-render", [this]); }, + make_static_display_template: function() { + if(this.static_display_template) return; + + var total_colsize = 1; + this.static_display_template = []; + for(var ci in this.docfields) { + var df = this.docfields[ci]; + if(!df.hidden && df.in_list_view && this.grid.frm.get_perm(df.permlevel, READ) + && !in_list(["Section Break", "Column Break"], df.fieldtype)) { + var colsize = 2; + switch(df.fieldtype) { + case "Text": + case "Small Text": + colsize = 3; + break; + case "Check": + colsize = 1; + break; + } + total_colsize += colsize + if(total_colsize > 11) + return false; + this.static_display_template.push([df, colsize]); + } + } + + // redistribute if total-col size is less than 12 + var passes = 0; + while(total_colsize < 11 && passes < 10) { + for(var i in this.static_display_template) { + var df = this.static_display_template[i][0]; + var colsize = this.static_display_template[i][1]; + if(colsize>1 && colsize<12 && ["Int", "Currency", "Float"].indexOf(df.fieldtype)===-1) { + this.static_display_template[i][1] += 1; + total_colsize++; + } + + if(total_colsize >= 11) + break; + } + passes++; + } + }, toggle_view: function(show, callback) { if(!this.doc) return this; @@ -349,10 +355,15 @@ wn.ui.form.GridRow = Class.extend({ } this.wrapper.toggleClass("grid-row-open", this.show); - - this.show && this.render_form() - this.show && this.row.toggle(false); - + + if(this.show) { + if(!this.form_panel) { + this.form_panel = $('') + .insertBefore(this.divider); + } + this.render_form(); + this.row.toggle(false); + } this.form_panel.toggle(this.show); if(me.show) { if(me.frm.doc.docstatus===0) From 5d0f4bb9101081471533c7909096ec08846d249a Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 25 Sep 2013 13:07:06 +0530 Subject: [PATCH 14/15] [minor] [fix] exclude + from page_name, encode page_name in sitemap --- webnotes/webutils.py | 2 +- website/sitemap.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 63eb006fe5..6f5ae27c33 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -324,7 +324,7 @@ def page_name(title): """make page name from title""" import re name = title.lower() - name = re.sub('[~!@#$%^&*()<>,."\']', '', name) + name = re.sub('[~!@#$%^&*+()<>,."\']', '', name) name = re.sub('[:/]', '-', name) name = '-'.join(name.split()) diff --git a/website/sitemap.py b/website/sitemap.py index 31fe34d38e..662e19f651 100644 --- a/website/sitemap.py +++ b/website/sitemap.py @@ -21,7 +21,7 @@ def generate(domain): today = nowdate() for page_name, page_options in webnotes.webutils.get_website_sitemap().items(): - url = urllib.basejoin(domain, urllib.quote(page_name)) + url = urllib.basejoin(domain, urllib.quote(page_name.encode("utf-8"))) site_map += link_xml % (url, today) return frame_xml % site_map From ef6f1aafa650dca111c1f9f8966bbbac18ce0238 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Wed, 25 Sep 2013 14:30:59 +0530 Subject: [PATCH 15/15] [minor] [fix] hide no_cache pages in sitemap --- webnotes/webutils.py | 7 +++++++ website/sitemap.py | 3 +++ 2 files changed, 10 insertions(+) diff --git a/webnotes/webutils.py b/webnotes/webutils.py index 6f5ae27c33..8263aa1633 100644 --- a/webnotes/webutils.py +++ b/webnotes/webutils.py @@ -119,6 +119,12 @@ def build_sitemap(): sitemap = {} config = webnotes.cache().get_value("website_sitemap_config", build_website_sitemap_config) sitemap.update(config["pages"]) + + # pages + for p in config["pages"].values(): + if p.get("controller"): + module = webnotes.get_module(p["controller"]) + p["no_cache"] = getattr(module, "no_cache", False) # generators for g in config["generators"].values(): @@ -129,6 +135,7 @@ def build_sitemap(): opts = g.copy() opts["doctype"] = module.doctype opts["docname"] = name + opts["no_cache"] = getattr(module, "no_cache", False) sitemap[page_name] = opts return sitemap diff --git a/website/sitemap.py b/website/sitemap.py index 662e19f651..d1b9267977 100644 --- a/website/sitemap.py +++ b/website/sitemap.py @@ -21,6 +21,9 @@ def generate(domain): today = nowdate() for page_name, page_options in webnotes.webutils.get_website_sitemap().items(): + if page_options.get("no_cache"): + continue + url = urllib.basejoin(domain, urllib.quote(page_name.encode("utf-8"))) site_map += link_xml % (url, today)