Miscellaneous
A middleware to generate static page (using staticgenerator) of django-cms' pages
import re
import time
import datetime
from django import http
from django.conf import settings
from staticgenerator import StaticGenerator
class CMSStaticGeneratorMiddleware(object):
def process_view(self, request, view_func, view_args, view_kwargs):
if not hasattr(request, 'generate_static'):
request.generate_static = False
if request.method == 'GET':
request.generate_static = (view_func.__module__ == 'cms.views' and (view_func.__name__ == 'handler'))
return None
def process_response(self, request, response):
if hasattr(request, 'generate_static'):
if response.status_code == 200 and request.generate_static == True:
if response['Content-Type'].split(';')[0] == 'text/html':
today = datetime.datetime.today()
response.content = response.content + "<!-- cached at: " + today.strftime("%Y-%m-%d %H:%M:%S") + " -->"
gen = StaticGenerator()
gen.publish_from_path(request.path, response.content)
return response