Added wifi identifiers
This commit is contained in:
@@ -95,6 +95,7 @@ def main(global_config, **settings):
|
||||
|
||||
# ICal Routes
|
||||
config.add_route('progr_iCal', '/{year:\d+}/JM2L.ics')
|
||||
config.add_route('progr_dyn_iCal', '/{year:\d+}/JM2L_dyn.ics')
|
||||
|
||||
# JSON Routes
|
||||
config.add_route('users_json', '/json-users')
|
||||
@@ -154,6 +155,7 @@ def main(global_config, **settings):
|
||||
config.add_route('show_user', '/user/{user_slug:([\w-]+)?}')
|
||||
config.add_route('badge_user', '/user/{user_slug:([\w-]+)?}/badge')
|
||||
config.add_route('all_badges', '/badges')
|
||||
config.add_route('place_print', '/place_print')
|
||||
|
||||
# HTML Routes - Logged
|
||||
#config.add_route('profil', 'MesJM2L')
|
||||
|
||||
@@ -17,90 +17,6 @@ WIDTH = 85 * mm
|
||||
HEIGHT = 60 * mm
|
||||
ICONSIZE = 10 * mm
|
||||
|
||||
def Ribbon35(DispUser, canvas):
|
||||
canvas.saveState()
|
||||
canvas.rotate(35)
|
||||
offset_u=0
|
||||
if DispUser.Staff:
|
||||
# Staff
|
||||
canvas.setFillColorRGB(1,.2,.2)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(1,1,1)
|
||||
canvas.setFont('Liberation', 20)
|
||||
canvas.drawCentredString(WIDTH/2-10, HEIGHT/2-offset_u+5, "STAFF")
|
||||
elif DispUser.is_Intervenant:
|
||||
# Intervenant
|
||||
canvas.setFillColorRGB(.3,.3,1)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(1,1,1)
|
||||
canvas.setFont('Liberation', 15)
|
||||
canvas.drawCentredString(WIDTH/2-15, HEIGHT/2-offset_u+10, "Intervenant")
|
||||
else:
|
||||
# Visiteur
|
||||
canvas.setFillColorRGB(.8,.8,.8)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(0,0,0)
|
||||
canvas.setFont('Liberation', 12)
|
||||
canvas.drawCentredString(WIDTH/2-10, HEIGHT/2-offset_u+7, "Visiteur")
|
||||
canvas.restoreState()
|
||||
return canvas
|
||||
|
||||
def Ribbon45(DispUser, canvas):
|
||||
canvas.saveState()
|
||||
canvas.rotate(45)
|
||||
offset_u=0
|
||||
if DispUser.Staff:
|
||||
# Staff
|
||||
canvas.setFillColorRGB(1,.2,.2)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(1,1,1)
|
||||
canvas.setFont('Liberation', 20)
|
||||
canvas.drawCentredString(WIDTH/2-10, HEIGHT/2-offset_u+5, "STAFF")
|
||||
elif DispUser.is_Intervenant:
|
||||
# Intervenant
|
||||
canvas.setFillColorRGB(.3,.3,1)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(1,1,1)
|
||||
canvas.setFont('Liberation', 15)
|
||||
canvas.drawCentredString(WIDTH/2-15, HEIGHT/2-offset_u+10, "Intervenant")
|
||||
else:
|
||||
# Visiteur
|
||||
canvas.setFillColorRGB(.8,.8,.8)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(0,0,0)
|
||||
canvas.setFont('Liberation', 12)
|
||||
canvas.drawCentredString(WIDTH/2-10, HEIGHT/2-offset_u+7, "Visiteur")
|
||||
canvas.restoreState()
|
||||
return canvas
|
||||
|
||||
def Ribbon90(DispUser, canvas):
|
||||
canvas.saveState()
|
||||
canvas.rotate(90)
|
||||
offset_u=0
|
||||
if DispUser.Staff:
|
||||
# Staff
|
||||
canvas.setFillColorRGB(1,.2,.2)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(1,1,1)
|
||||
canvas.setFont('Liberation', 20)
|
||||
canvas.drawCentredString(WIDTH/2-10, HEIGHT/2-offset_u+5, "STAFF")
|
||||
elif DispUser.is_Intervenant:
|
||||
# Intervenant
|
||||
canvas.setFillColorRGB(.3,.3,1)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(1,1,1)
|
||||
canvas.setFont('Liberation', 15)
|
||||
canvas.drawCentredString(WIDTH/2-15, HEIGHT/2-offset_u+10, "Intervenant")
|
||||
else:
|
||||
# Visiteur
|
||||
canvas.setFillColorRGB(.8,.8,.8)
|
||||
canvas.rect(0, HEIGHT/2-offset_u, WIDTH, 10*mm, fill=1)
|
||||
canvas.setFillColorRGB(0,0,0)
|
||||
canvas.setFont('Liberation', 12)
|
||||
canvas.drawCentredString(WIDTH/2-10, HEIGHT/2-offset_u+7, "Visiteur")
|
||||
canvas.restoreState()
|
||||
return canvas
|
||||
|
||||
def JM2L_Logo(canvas, Offset=(0,0)):
|
||||
OffX, OffY = Offset
|
||||
logoobject = canvas.beginText()
|
||||
|
||||
@@ -137,6 +137,10 @@ class User(Base):
|
||||
soc_link = Column(UnicodeText)
|
||||
Staff = Column(Integer, default=0)
|
||||
vote_logo = Column(Integer, default=0)
|
||||
|
||||
wifi_user = Column(Unicode(80), nullable=True)
|
||||
wifi_pass = Column(Unicode(80), nullable=True)
|
||||
|
||||
# relations
|
||||
tiers = relationship('Tiers', secondary='user_tiers_link' )
|
||||
events = relationship('Event', secondary='user_event_link' )
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 3.3 KiB |
@@ -61,7 +61,22 @@ DicForm2 = {
|
||||
${helpers.DisplayRespForm(profil_form, DicFormA)}
|
||||
</div>
|
||||
<div class="span4">
|
||||
|
||||
${helpers.show_my_pictures(uprofil)}
|
||||
|
||||
<div class="borderbox" style="background: rgb(240, 250, 250) url(/img/wifi.png) no-repeat scroll 0px 0px;width: 220px;text-align:center;margin: auto;">
|
||||
<u>Vos identifiants wifi:</u>
|
||||
<dl>
|
||||
<dt>SSID</dt>
|
||||
<dd>Unice-HotSpot</dd>
|
||||
<dt>Votre utilisateur:</dt>
|
||||
<dd>${uprofil.wifi_user}</dd>
|
||||
<dt>Le mot de passe:</dt>
|
||||
<dd>${uprofil.wifi_pass}</dd>
|
||||
</dl>
|
||||
<a href="https://wifi.unice.fr/">Plus de détails ...</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
# -*- coding: utf8 -*-
|
||||
from pyramid.response import Response
|
||||
import cStringIO as StringIO
|
||||
from pyramid.view import view_config
|
||||
from .models import DBSession, Event, Salles
|
||||
from reportlab.pdfgen import canvas
|
||||
from reportlab.pdfbase import pdfmetrics
|
||||
from reportlab.pdfbase.ttfonts import TTFont
|
||||
from reportlab.lib.units import mm
|
||||
from .upload import MediaPath
|
||||
|
||||
CurrentYear = 2015
|
||||
# Create PDF container
|
||||
EXPIRATION_TIME = 300 # seconds
|
||||
WIDTH = 210 * mm
|
||||
HEIGHT = 297 * mm
|
||||
ICONSIZE = 10 * mm
|
||||
|
||||
|
||||
def JM2L_large_Logo(canvas, Offset=(0,0)):
|
||||
OffX, OffY = Offset
|
||||
|
||||
canvas.setFont('Logo', 110)
|
||||
canvas.setFillColorRGB(.83,0,.33)
|
||||
canvas.drawCentredString(WIDTH/2-OffY, HEIGHT-100-OffX, "JM2L")
|
||||
|
||||
canvas.setFont("Helvetica-Bold", 30)
|
||||
yearobject = canvas.beginText()
|
||||
yearobject.setFillColorRGB(1,1,1)
|
||||
yearobject.setTextRenderMode(0)
|
||||
yearobject.setTextOrigin(WIDTH/2-OffY-120, HEIGHT-36-OffX)
|
||||
yearobject.setWordSpace(48)
|
||||
yearobject.textLines("2 0 1 5")
|
||||
yearobject.setWordSpace(1)
|
||||
canvas.drawText(yearobject)
|
||||
|
||||
|
||||
def one_time_step(canvas, str, hour, max_size, offset):
|
||||
max_x, max_y = max_size
|
||||
off_x, off_y = offset
|
||||
step_y = max_y/9
|
||||
half_step = step_y/2
|
||||
canvas.drawCentredString(off_x-30, max_y-step_y*hour+off_y-3, str)
|
||||
hour_place = step_y*hour+off_y
|
||||
canvas.line(off_x-5, hour_place, off_x, hour_place)
|
||||
if hour<9:
|
||||
canvas.line(off_x-2, hour_place+half_step, off_x, hour_place+half_step)
|
||||
|
||||
@view_config(route_name='place_print', http_cache = (EXPIRATION_TIME, {'public':True}))
|
||||
def place_print(request):
|
||||
# Ok let's generate a print for place schedule
|
||||
|
||||
# Register LiberationMono font
|
||||
ttfFile = "jm2l/static/fonts/LiberationMono-Regular.ttf"
|
||||
pdfmetrics.registerFont(TTFont("Liberation", ttfFile))
|
||||
# Import font
|
||||
ttfFile_Logo = "jm2l/static/fonts/PWTinselLetters.ttf"
|
||||
pdfmetrics.registerFont(TTFont("Logo", ttfFile_Logo))
|
||||
|
||||
pdf = StringIO.StringIO()
|
||||
|
||||
c = canvas.Canvas( pdf, pagesize=(WIDTH, HEIGHT) )
|
||||
c.translate(mm, mm)
|
||||
|
||||
# Feed some metadata
|
||||
c.setCreator("linux-azur.org")
|
||||
c.setTitle("Planning Salle")
|
||||
|
||||
c.saveState()
|
||||
|
||||
year = int(request.matchdict.get('year', CurrentYear))
|
||||
# Initialization
|
||||
# Compute days used by all events matching the specified input year
|
||||
place_used = DBSession.query(Event.salle_uid)\
|
||||
.filter(Event.for_year == year)\
|
||||
.filter(Event.event_type != 'Stand')\
|
||||
.group_by(Event.salle_uid)
|
||||
|
||||
for place in place_used:
|
||||
place_uid = place[0]
|
||||
place_obj = Salles.by_id(place_uid)
|
||||
# Logo on Top
|
||||
JM2L_large_Logo(c)
|
||||
max_size = (WIDTH-110, HEIGHT-300)
|
||||
offset = (70, 90)
|
||||
c.setFillColorRGB(.5,.5,.5)
|
||||
c.setFont('Liberation', 40)
|
||||
c.drawCentredString(WIDTH/2, HEIGHT-190, place_obj.name, 1)
|
||||
c.setFont('Liberation', 35)
|
||||
c.drawCentredString(WIDTH/2, HEIGHT-145, place_obj.place_type, 0 )
|
||||
c.setFont('Helvetica', 20)
|
||||
c.drawCentredString(WIDTH/2, 55, place_obj.phy.name, 0)
|
||||
|
||||
# Timetable container
|
||||
c.setLineWidth(.1)
|
||||
c.setLineCap(2)
|
||||
#c.setFillColorRGB(0,0,1)
|
||||
c.rect(offset[0], offset[1], max_size[0], max_size[1], fill=0, stroke=1)
|
||||
c.setLineWidth(.5)
|
||||
# create time mark
|
||||
c.setFillColorRGB(0,0,0)
|
||||
c.setFont('Helvetica', 10)
|
||||
for i in range(0,10):
|
||||
one_time_step(c, "%.2dh00" % (i+10), i, max_size, offset)
|
||||
|
||||
c.setFont('Helvetica', 12)
|
||||
Events = DBSession.query(Event)\
|
||||
.filter(Event.for_year == year)\
|
||||
.filter(Event.salle_uid == place_uid)\
|
||||
.order_by(Event.start_time)
|
||||
for ev in Events:
|
||||
place_time(c, ev, max_size, offset)
|
||||
#c.rect(70, 50, WIDTH-100, HEIGHT-250, fill=0, stroke=1)
|
||||
c.showPage()
|
||||
|
||||
c.save()
|
||||
pdf.seek(0)
|
||||
|
||||
return Response(app_iter=pdf, content_type = 'application/pdf' )
|
||||
|
||||
def place_time(c, ev, max_size, offset):
|
||||
max_x, max_y = max_size
|
||||
off_x, off_y = offset
|
||||
minute = max_y/(9*60)
|
||||
start_pos_y = ((int( ev.start_time.strftime('%H') )-10)*60 + int( ev.start_time.strftime('%M') )) * minute
|
||||
stop_pos_y = ((int( ev.end_time.strftime('%H') )-10)*60 + int( ev.end_time.strftime('%M') )) * minute
|
||||
|
||||
c.setFillColorRGB(1,1,1)
|
||||
c.rect(offset[0], max_y + off_y - start_pos_y, max_size[0], start_pos_y-stop_pos_y, fill=1, stroke=1)
|
||||
c.setFillColorRGB(0,0,0)
|
||||
#c.drawString(off_x+5, max_y + off_y - 15 - start_pos_y, ev.start_time.strftime('%H:%M'), 0)
|
||||
c.drawCentredString(WIDTH/2, max_y + off_y - 35 - start_pos_y, ev.name, 0)
|
||||
intervs = ','.join( [x.slug for x in ev.intervenants] )
|
||||
c.drawString(WIDTH/2, max_y + off_y - 45 - start_pos_y, intervs, 0)
|
||||
|
||||
+40
-3
@@ -73,6 +73,43 @@ def ICal_Progamme_Request(request):
|
||||
request.response.content_type = "text/calendar"
|
||||
return cal.to_ical()
|
||||
|
||||
## =-=- Here, We handle ICal requests -=-=
|
||||
@view_config(route_name='progr_dyn_iCal', renderer="string")
|
||||
def ICal_Progamme_Dyn_Request(request):
|
||||
year = int(request.matchdict.get('year', CurrentYear))
|
||||
# Initialization
|
||||
# Compute days used by all events matching the specified input year
|
||||
Events = DBSession.query(Event)\
|
||||
.filter(Event.for_year == year)\
|
||||
.filter(Event.event_type != 'Stand')\
|
||||
.order_by(Event.start_time)
|
||||
|
||||
cal = Calendar()
|
||||
cal.add('prodid', '-//Programme %d//jm2l.linux-azur.org//' % year)
|
||||
cal.add('version', '2.0')
|
||||
today = datetime.datetime.now()
|
||||
tz = timezone('Europe/Paris')
|
||||
for i, ev in enumerate(Events):
|
||||
if ev.event_type:
|
||||
event = Evt()
|
||||
event['uid'] = "%d/%d" % ( year, ev.uid )
|
||||
event.add('summary', ev.name +'_night' )
|
||||
event.add('dtstart', ev.start_time.replace(tzinfo=tz, day=today.day, month = today.month, hour=(ev.start_time.hour)%24) )
|
||||
event.add('dtend', ev.end_time.replace(tzinfo=tz, day=today.day, month = today.month, hour=(ev.end_time.hour)%24) )
|
||||
event.add('created', ev.last_change.replace(tzinfo=tz) )
|
||||
if i%2:
|
||||
event.add('description', "http://video.webmfiles.org/big-buck-bunny_trailer.webm" )
|
||||
else:
|
||||
event.add('description', "http://video.webmfiles.org/elephants-dream.webm" )
|
||||
event.add('location', "http://jm2l.linux-azur.org/image/tasks/89/le-projet-de-learning-centre-sophiatech-32-638.jpg" )
|
||||
event.add('url', "http://www.linux-azur.org/event/%s/%s" % (ev.for_year, ev.slug) )
|
||||
event.add('salle', "%s" % (ev.Salle.name) )
|
||||
event.add('priority', 5)
|
||||
cal.add_component(event)
|
||||
request.response.content_type = "text/calendar"
|
||||
return cal.to_ical()
|
||||
|
||||
|
||||
## =-=- Here, We handle Json requests -=-=
|
||||
@view_config(route_name='users_json', renderer="json")
|
||||
def JSON_User_Request(request):
|
||||
@@ -213,9 +250,9 @@ def JSON_TimeLine_Request(request):
|
||||
"text":"<i><span class='c1'>9ème Édition</span></i>",
|
||||
"asset":
|
||||
{
|
||||
"media":"https://www.youtube.com/watch?v=DnfjrxVoLao",
|
||||
"credit":"JM2L",
|
||||
"caption":""
|
||||
"media":"https://www.youtube.com/watch?v=91X65eEKxvU&t=6s",
|
||||
"credit":"Polytech nice sophia",
|
||||
"caption":"JM2L 2015"
|
||||
}
|
||||
}
|
||||
elif year==2011:
|
||||
|
||||
Reference in New Issue
Block a user