[#8169] skip last_updated in addition to mod_date fields, when saving markdown cache
diff --git a/Allura/allura/lib/app_globals.py b/Allura/allura/lib/app_globals.py
index 1f49315..7397638 100644
--- a/Allura/allura/lib/app_globals.py
+++ b/Allura/allura/lib/app_globals.py
@@ -38,11 +38,12 @@
import pygments.lexers
import pygments.formatters
import pygments.util
-from tg import config, session
+from tg import config
from pylons import request
from pylons import tmpl_context as c
from paste.deploy.converters import asbool, asint, aslist
from pypeline.markup import markup as pypeline_markup
+from ming.odm import session
import ew as ew_core
import ew.jinja2_ew as ew
@@ -133,9 +134,9 @@
cache.md5, cache.html, cache.render_time = md5, html, render_time
cache.fix7528 = bugfix_rev # flag to indicate good caches created after [#7528] and other critical bugs were fixed.
- # Prevent cache creation from updating the mod_date timestamp.
- _session = artifact_orm_session._get()
- _session.skip_mod_date = True
+ with utils.skip_mod_date(artifact.__class__), \
+ utils.skip_last_updated(artifact.__class__):
+ session(artifact).flush(artifact)
return html
diff --git a/Allura/allura/lib/utils.py b/Allura/allura/lib/utils.py
index 19d677a..08b2695 100644
--- a/Allura/allura/lib/utils.py
+++ b/Allura/allura/lib/utils.py
@@ -692,6 +692,16 @@
session(model_cls)._get().skip_mod_date = skip_mod_date
+@contextmanager
+def skip_last_updated(model_cls):
+ skip_last_updated = getattr(session(model_cls)._get(), 'skip_last_updated', False)
+ session(model_cls)._get().skip_last_updated = True
+ try:
+ yield
+ finally:
+ session(model_cls)._get().skip_last_updated = skip_last_updated
+
+
def unique_attachments(attachments):
"""Given a list of :class:`allura.model.attachments.BaseAttachment` return
a list where each filename present only once. If original list contains