Browse Source

Add stand print

tr4ck3ur 2 years ago
parent
commit
cfff312f38
3 changed files with 61 additions and 6 deletions
  1. 1 0
      jm2l/__init__.py
  2. 6 1
      jm2l/templates/Live.mako
  3. 54 5
      jm2l/to_print.py

+ 1 - 0
jm2l/__init__.py

@@ -157,6 +157,7 @@ def main(global_config, **settings):
157 157
     config.add_route('badge_user', '/user/{user_slug:([\w-]+)?}/badge')
158 158
     config.add_route('all_badges', '/badges')
159 159
     config.add_route('place_print', '/place_print')
160
+    config.add_route('stand_print', '/stand_print')    
160 161
     
161 162
     # HTML Routes - Logged
162 163
     #config.add_route('profil', 'MesJM2L')    

+ 6 - 1
jm2l/templates/Live.mako

@@ -30,7 +30,12 @@ Voici les liens vers les conférences Live:
30 30
 <p>
31 31
     Réalisé avec le concours des admins réseau Polytech'Nice. Encore merci pour leur disponibilité .. <br/>
32 32
     Rechargez la page pour voir les évenements en cours en fonction de l'heure...<br/>
33
-    Vous avez le droit de vous plaindre, c'est du Do It Yourself ;) 
34 33
 </p>
35 34
 
35
+<p> NB : si vous n'avez pas l'audio à travers votre navigateur...<br> 
36
+    n'hésitez pas à mettre à contribution votre lecteur de vidéo préféré ( VLC, ffmpeg )<br>
37
+</p>
38
+<p>
39
+    Vous avez le droit de vous plaindre, c'est du Do It Yourself ;) 
40
+</p>
36 41
 </div>

+ 54 - 5
jm2l/to_print.py

@@ -34,7 +34,6 @@ def JM2L_large_Logo(canvas, Offset=(0,0)):
34 34
     yearobject.setWordSpace(1)    
35 35
     canvas.drawText(yearobject)  
36 36
 
37
-
38 37
 def one_time_step(canvas, str, hour, max_size, offset):
39 38
     max_x, max_y = max_size
40 39
     off_x, off_y = offset
@@ -46,6 +45,54 @@ def one_time_step(canvas, str, hour, max_size, offset):
46 45
     if hour<9:
47 46
         canvas.line(off_x-2, hour_place+half_step, off_x, hour_place+half_step)
48 47
 
48
+
49
+@view_config(route_name='stand_print', http_cache = (EXPIRATION_TIME, {'public':True}))
50
+def stand_print(request):
51
+    # Ok let's generate a print for place schedule
52
+    
53
+    # Register LiberationMono font
54
+    ttfFile = "jm2l/static/fonts/LiberationMono-Regular.ttf"
55
+    pdfmetrics.registerFont(TTFont("Liberation", ttfFile))
56
+    # Import font
57
+    ttfFile_Logo = "jm2l/static/fonts/PWTinselLetters.ttf"
58
+    pdfmetrics.registerFont(TTFont("Logo", ttfFile_Logo))
59
+
60
+    pdf = StringIO.StringIO()
61
+  
62
+    c = canvas.Canvas( pdf, pagesize=(HEIGHT, WIDTH) )
63
+    c.translate(mm, mm)
64
+    
65
+    # Feed some metadata
66
+    c.setCreator("linux-azur.org")
67
+    c.setTitle("Affiches stand")
68
+
69
+    c.saveState()
70
+    
71
+    year = int(request.matchdict.get('year', CurrentYear))
72
+
73
+    Events = DBSession.query(Event)\
74
+        .filter(Event.for_year == year)\
75
+        .filter(Event.event_type == "Stand")
76
+
77
+    for ev in Events:
78
+        c.setFont('Logo', 50)
79
+        c.setFillColorRGB(.5,.5,.5)
80
+        c.drawString(HEIGHT-150, 30, "JM2L")
81
+        c.setFont('Logo', 100)
82
+        c.setFillColorRGB(0.5,0.5,0.5)
83
+        c.drawCentredString(HEIGHT/2, WIDTH-90, "STAND", 0)        
84
+        c.setFillColorRGB(0,0,0)
85
+        c.setFont('Helvetica', 42)
86
+        c.drawCentredString(HEIGHT/2, WIDTH/2, ev.name, 0)        
87
+        c.showPage()
88
+
89
+    c.save()
90
+    pdf.seek(0)
91
+
92
+    return Response(app_iter=pdf, content_type = 'application/pdf' )
93
+
94
+
95
+
49 96
 @view_config(route_name='place_print', http_cache = (EXPIRATION_TIME, {'public':True}))
50 97
 def place_print(request):
51 98
     # Ok let's generate a print for place schedule
@@ -103,7 +150,7 @@ def place_print(request):
103 150
         for i in range(0,10):
104 151
             one_time_step(c, "%.2dh00" % (i+10), i, max_size, offset)
105 152
 
106
-        c.setFont('Helvetica', 12)
153
+        #c.setFont('Helvetica', 12)
107 154
         Events = DBSession.query(Event)\
108 155
             .filter(Event.for_year == year)\
109 156
             .filter(Event.salle_uid == place_uid)\
@@ -125,11 +172,13 @@ def place_time(c, ev, max_size, offset):
125 172
     start_pos_y = ((int( ev.start_time.strftime('%H') )-10)*60 + int( ev.start_time.strftime('%M') )) * minute
126 173
     stop_pos_y = ((int( ev.end_time.strftime('%H') )-10)*60 + int( ev.end_time.strftime('%M') )) * minute
127 174
 
128
-    c.setFillColorRGB(1,1,1)
175
+    c.setFillColorRGB(0.98,0.98,0.98)
129 176
     c.rect(offset[0], max_y + off_y - start_pos_y, max_size[0], start_pos_y-stop_pos_y, fill=1, stroke=1)
130 177
     c.setFillColorRGB(0,0,0)
131 178
     #c.drawString(off_x+5, max_y + off_y - 15 - start_pos_y, ev.start_time.strftime('%H:%M'), 0)
179
+    c.setFont('Helvetica', 12)    
132 180
     c.drawCentredString(WIDTH/2, max_y + off_y - 35 - start_pos_y, ev.name, 0)
133
-    intervs = ','.join( [x.slug for x in ev.intervenants] )
134
-    c.drawString(WIDTH/2, max_y + off_y - 45 - start_pos_y, intervs, 0)        
181
+    intervs = ', '.join( [x.slug for x in ev.intervenants] )
182
+    c.setFont('Helvetica', 10)    
183
+    c.drawCentredString(WIDTH/2, max_y + off_y - 55 - start_pos_y, intervs, 0)        
135 184