3
3
from django .contrib .staticfiles .storage import staticfiles_storage
4
4
5
5
from django import template
6
+ from django .template .base import VariableDoesNotExist
6
7
from django .template .loader import render_to_string
7
8
from django .utils .safestring import mark_safe
8
9
16
17
17
18
18
19
class PipelineMixin (object ):
20
+ request = None
21
+ _request_var = None
22
+
23
+ @property
24
+ def request_var (self ):
25
+ if not self ._request_var :
26
+ self ._request_var = template .Variable ('request' )
27
+ return self ._request_var
28
+
19
29
def package_for (self , package_name , package_type ):
20
30
package = {
21
31
'js' : getattr (settings , 'PIPELINE_JS' , {}).get (package_name , {}),
@@ -32,12 +42,18 @@ def package_for(self, package_name, package_type):
32
42
33
43
return packager .package_for (package_type , package_name )
34
44
45
+ def render (self , context ):
46
+ try :
47
+ self .request = self .request_var .resolve (context )
48
+ except VariableDoesNotExist :
49
+ pass
50
+
35
51
def render_compressed (self , package , package_type ):
36
52
if settings .PIPELINE_ENABLED :
37
53
method = getattr (self , "render_{0}" .format (package_type ))
38
54
return method (package , package .output_filename )
39
55
else :
40
- default_collector .collect ()
56
+ default_collector .collect (self . request )
41
57
42
58
packager = Packager ()
43
59
method = getattr (self , "render_individual_{0}" .format (package_type ))
@@ -51,7 +67,9 @@ def __init__(self, name):
51
67
self .name = name
52
68
53
69
def render (self , context ):
70
+ super (StylesheetNode , self ).render (context )
54
71
package_name = template .Variable (self .name ).resolve (context )
72
+
55
73
try :
56
74
package = self .package_for (package_name , 'css' )
57
75
except PackageNotFound :
@@ -77,7 +95,9 @@ def __init__(self, name):
77
95
self .name = name
78
96
79
97
def render (self , context ):
98
+ super (JavascriptNode , self ).render (context )
80
99
package_name = template .Variable (self .name ).resolve (context )
100
+
81
101
try :
82
102
package = self .package_for (package_name , 'js' )
83
103
except PackageNotFound :
0 commit comments