Guest User

Untitled

a guest
Jul 18th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. ### in signals.py ##################################
  2. ####################################################
  3. def project_post_generate_template(sender, **kwargs):
  4. ### get object ###
  5. project = kwargs['instance']
  6.  
  7. generate_project_cartridge(project)
  8.  
  9. def generate_project_cartridge(project):
  10.  
  11. ### Create a simple HttpRequest
  12. request = HttpRequest()
  13. request.is_secure = lambda : True
  14. ### doesn't pass through a django local middleware, so we need force the language choice
  15. language = translation.get_language_from_request(request)
  16. translation.activate(language)
  17.  
  18. for coworker in project.get_coworkers():
  19. request.user = coworker
  20. c = render_to_string('mon/projects/cartridges/project_cartridge_dash.html', {"project": project}, RequestContext(request)).encode("utf-8")
  21. f = open(os.path.join(settings.CACHE_TEMPLATE_PATH, 'projects/dashboard/cache_%s_%s_%s.html' % (project.id, request.user.id, 'fr')), 'w')
  22. f.write(c)
  23. f.close()
  24. print "Generate project %s cartridge for %s done" % (project.name, coworker.get_full_name())
  25.  
  26. ### in inclusion_tag.py (template tag) #############
  27. ####################################################
  28. @register.inclusion_tag('mon/projects/cartridges/project_cartridge_dash.html', takes_context = True)
  29. def show_project_cartridge_dash(context, project, object):
  30. return {
  31. 'request' : context['request'],
  32. 'project' : project,
  33. 'MEDIA_IMG_URL' : context['MEDIA_IMG_URL'],
  34. }
  35.  
  36. class CachedProjectDashboard(Node):
  37. def __init__(self, project):
  38. self.project = Variable(project)
  39. def render(self, context):
  40. try:
  41. project = self.project.resolve(context)
  42. try:
  43. request = context['request']
  44. t = template.loader.get_template('cache/projects/dashboard/cache_%s_%s_%s.html' %(project.id, request.user.id, 'fr'))
  45. return t.render(Context({}))
  46. except TemplateDoesNotExist:
  47. print "Chargement du template cache/projects/dashboard/cache_%s_%s_%s.html impossible" % (project.id, request.user.id, 'fr')
  48. params = show_project_cartridge_dash(context, project)
  49. c = render_to_string('mon/projects/cartridges/project_cartridge_dash.html', params)
  50. return c
  51. except VariableDoesNotExist:
  52. pass
  53. return ''
  54.  
  55. @register.tag
  56. def show_cached_project_dashboard(parser, token):
  57. try:
  58. bits = token.split_contents()[1:]
  59. return CachedProjectDashboard(bits[0])
  60. except IndexError:
  61. raise TemplateSyntaxError, "Wrong argument assignement ! Expected :project"
  62.  
  63.  
  64. ### in template *.html #############
  65. ####################################
  66.  
  67. <!-- old call-->
  68. {# show_project_cartridge_dash project #}
  69. <!-- new call-->
  70. {% show_cached_project_dashboard project %}
Add Comment
Please, Sign In to add comment