[#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