Proyecto

General

Perfil

« Anterior | Siguiente » 

Revisión 403

Nuevo informe

Ver diferencias:

controlies/trunk/applications/controlies/views/reports/laptops_authorization.html
<li><a href="#tabs-1"><span id="actions">Compromisos portátiles</span></a></li>
</ul>
<div id="tabs-1" style="padding:3px;">
<table>
<table style="width:100%">
<tr>
<td HEIGHT="200PX">
Tipo usuario
<td>
Tipo usuario<br>
<select id="id_user_type" name="id_user_type">
<option value="1">Profesores</option>
<option value="2">Alumnos</option>
</select>
</td>
<td>
Filtro
<input type="text" id="search" name="search"/>
Curso<br><select id="classroom" name="classroom"></select>
</td>
<td>
Curso
<select id="classroom" name="classroom"></select>
Filtro<br><input type="text" id="search" name="search"/>
</td>
<td>
Tipo Informe<br>
<select id="report_type" name="report_type">
<option value="compromisos">Compromisos portátiles</option>
<option value="listado">Listado de Usuarios</option>
</select>
</td>
</tr>
<tr>
<td colspan="4" style="text-align:center;"><br><br>
<input type="button" value="Generar listado" onClick="javascript:report();">
</td>
</tr>
</tr>
</table>
</div>
</div>
controlies/trunk/applications/controlies/controllers/reports.py
@auth.requires_login()
def report():
from gluon.contrib.pyfpdf import FPDF, HTMLMixin
from applications.controlies.modules.Groups import Groups
sql = "SELECT lh.username, l.serial_number, lh.name, lt.trademark, lt.model "
sql = sql+" FROM laptops l, laptops_historical lh"
sql = sql+" LEFT JOIN laptops_trademarks lt ON l.id_trademark=lt.id_trademark "
sql = sql+" LEFT JOIN users_types ut ON ut.id_user_type=lh.id_user_type "
sql = sql+" WHERE lh.id_user_type="+request.vars['id_user_type']
sql = sql+" AND l.id_laptop=lh.id_laptop "
sql = sql+" AND lh.id_historical IN (SELECT MAX(lh2.id_historical) FROM laptops_historical lh2 WHERE lh2.id_laptop=l.id_laptop) "
class MyFPDF(FPDF, HTMLMixin):
def header(self):
#logo=os.path.join(request.env.web2py_path,"applications","controlies","static","logo_consejeria.jpg")
#self.image(logo,145,4,60)
#self.ln(80)
pass
def footer(self):
#self.set_y(-15)
#self.set_font('Arial','I',8)
#self.cell(0,10,"IES Sta Eulalia - M?rida".decode("utf8").encode("latin1"),0,0,'L')
#self.cell(0,10,"Consejer?a de Educaci?n - Gobierno de Extremadura".decode("utf8").encode("latin1"),0,0,'R')
pass
pdf=MyFPDF()
if request.vars["search"]!="":
sql = sql+" AND (lh.username like '%"+request.vars["search"]+"%' OR lh.name like '%"+request.vars["search"]+"%' OR l.serial_number like '%"+request.vars["search"]+"%' OR lt.trademark like '%"+request.vars["search"]+"%' OR lt.model like '%"+request.vars["search"]+"%')"
# Obtenemos los numeros de serie de los portatiles
sql = "SELECT lh.username, l.serial_number, lh.name, lt.trademark, lt.model FROM laptops l"
sql = sql+" LEFT JOIN laptops_historical lh ON l.id_laptop=lh.id_laptop AND lh.id_user_type="+request.vars['id_user_type']
sql = sql+" LEFT JOIN laptops_trademarks lt ON l.id_trademark=lt.id_trademark"
sql = sql+" GROUP BY l.id_laptop ORDER BY lh.datetime desc"
result = cdb.executesql(sql)
......
if len(people)==0:
return "noPeople"
from gluon.contrib.pyfpdf import FPDF, HTMLMixin
if request.vars["report_type"]=="compromisos":
class MyFPDF(FPDF, HTMLMixin):
def header(self):
#logo=os.path.join(request.env.web2py_path,"applications","controlies","static","logo_consejeria.jpg")
#self.image(logo,145,4,60)
#self.ln(80)
pass
def footer(self):
#self.set_y(-15)
#self.set_font('Arial','I',8)
#self.cell(0,10,"IES Sta Eulalia - M?rida".decode("utf8").encode("latin1"),0,0,'L')
#self.cell(0,10,"Consejer?a de Educaci?n - Gobierno de Extremadura".decode("utf8").encode("latin1"),0,0,'R')
pass
pdf=MyFPDF()
count = 0
titulo = "Compromiso para el cuidado y mantenimiento del ordenador port?til"
count = 0
titulo = "Compromiso para el cuidado y mantenimiento del ordenador port?til"
for p in people:
for p in people:
if request.vars['id_user_type']=="1":
parrafo1 = "D/D?a <b>"+p['name']+"</b>, profesor/a de este centro , recibe en el d?a de hoy, de la Direcci?n del Centro, el ordenador port?til <b>"+p['trademark']+"</b> n?mero de serie: <b>"+p['serial']+"</b>, comprometi?ndose a utilizarlo como herramienta did?ctica en los cursos pertenecientes al Proyecto Escuela 2.0."
parrafo2 = "Asimismo, se compromete a devolver a esta Direcci?n dicho ordenador port?til en el momento en que deje de tener vinculaci?n laboral con este centro o no sea profesor de alg?n curso integrado en el citado Proyecto Escuela 2.0."
parrafo3 = "M?rida, a ...... de ....................... de ......"
parrafo4 = "Firmado: ............................................."
else:
parrafo1 = "Yo <b>"+p['name']+"</b> alumno/a de este centro perteneciente al curso/grupo <b>"+request.vars['classroom']+"</b>, me comprometo a cuidar, custodiar y mantener en perfecto estado el ORDENADOR <b>"+p['trademark']+"</b> (n?mero de serie: <b>"+p['serial']+"</b>) y ACCESORIOS que me ha entregado el centro para su uso en las distintas ?reas de conocimientos, con la supervisi?n de los profesores/as correspondientes y siguiendo siempre las indicaciones e instrucciones para su correcto manejo."
parrafo2 = "El deteriodo intencionado, p?rdida, robo o cualquier otra circunstancia que se produzca en el equipo ser? valorado por al Direcci?n/Jefatura del centro para tomar las medidas oportunas para su esclarecimiento y en su caso la reposici?n o arreglo por cuenta del alumno/a asignado/a, padres o tutores del mismo."
parrafo3 = "M?rida, a ...... de ....................... de ......"
parrafo4 = "Firma del alumno: .................................... Firma de los padres/tutores: ...................................."
if request.vars['id_user_type']=="1":
parrafo1 = "D/D?a <b>"+p['name']+"</b>, profesor/a de este centro , recibe en el d?a de hoy, de la Direcci?n del Centro, el ordenador port?til <b>"+p['trademark']+"</b> n?mero de serie: <b>"+p['serial']+"</b>, comprometi?ndose a utilizarlo como herramienta did?ctica en los cursos pertenecientes al Proyecto Escuela 2.0."
parrafo2 = "Asimismo, se compromete a devolver a esta Direcci?n dicho ordenador port?til en el momento en que deje de tener vinculaci?n laboral con este centro o no sea profesor de alg?n curso integrado en el citado Proyecto Escuela 2.0."
parrafo3 = "M?rida, a ...... de ....................... de ......"
parrafo4 = "Firmado: ............................................."
else:
parrafo1 = "Yo <b>"+p['name']+"</b> alumno/a de este centro perteneciente al curso/grupo <b>"+request.vars['classroom']+"</b>, me comprometo a cuidar, custodiar y mantener en perfecto estado el ORDENADOR <b>"+p['trademark']+"</b> (n?mero de serie: <b>"+p['serial']+"</b>) y ACCESORIOS que me ha entregado el centro para su uso en las distintas ?reas de conocimientos, con la supervisi?n de los profesores/as correspondientes y siguiendo siempre las indicaciones e instrucciones para su correcto manejo."
parrafo2 = "El deteriodo intencionado, p?rdida, robo o cualquier otra circunstancia que se produzca en el equipo ser? valorado por al Direcci?n/Jefatura del centro para tomar las medidas oportunas para su esclarecimiento y en su caso la reposici?n o arreglo por cuenta del alumno/a asignado/a, padres o tutores del mismo."
parrafo3 = "M?rida, a ...... de ....................... de ......"
parrafo4 = "Firma del alumno: .................................... Firma de los padres/tutores: ...................................."
if count%2==0:
pdf.add_page()
else:
pdf.write_html("<br><br><br><center><p>______________________________________________________________________________________</p></center><br><br>")
pdf.write_html("<center><h1>"+titulo+"</h1></center><br>")
pdf.write_html("<p>"+parrafo1+"</p><br>")
pdf.write_html("<p>"+parrafo2+"</p>")
pdf.write_html("<br><br><center><p>"+parrafo3+"</p></center>")
pdf.write_html("<br><br><br><br><center><p>"+parrafo4+"</p></center>")
count+=1
elif request.vars["report_type"]=="listado":
response.title = "Listado de port?tiles"
if count%2==0:
pdf.add_page()
else:
pdf.write_html("<br><br><br><center><p>______________________________________________________________________________________</p></center><br><br>")
head = THEAD(TR(TH("Nombre y apellidos",_width="35%"),
TH("Marca/Modelo",_width="25%"),
TH("N? Serie",_width="40%"),
_bgcolor="#A0A0A0"))
rows = []
i=0;
for p in people:
col = i % 2 and "#F0F0F0" or "#FFFFFF"
rows.append(TR(TD(p["name"]),
TD(p["trademark"], _align="center"),
TD(p["serial"], _align="center"),
_bgcolor=col))
i+=1
body = TBODY(*rows)
table = TABLE(*[head, body],
_border="1", _align="center", _width="100%")
pdf.write_html("<center><h1>"+titulo+"</h1></center><br>")
pdf.write_html("<p>"+parrafo1+"</p><br>")
pdf.write_html("<p>"+parrafo2+"</p>")
pdf.write_html("<br><br><center><p>"+parrafo3+"</p></center>")
pdf.write_html("<br><br><br><br><center><p>"+parrafo4+"</p></center>")
count+=1
# prepare PDF to download:
class MyFPDF(FPDF, HTMLMixin):
def header(self):
self.set_font('Arial','B',15)
self.cell(0,10, response.title ,1,0,'C')
self.set_font('Arial','I',10)
if request.vars['id_user_type']=="1": # Para profesores
self.text(20,29, "Grupo: Profesores")
else:
self.text(20,29, "Grupo: "+request.vars['classroom'])
self.ln(10)
def footer(self):
self.set_y(-15)
self.set_font('Arial','I',8)
self.cell(0,10,"IES Sta Eulalia",0,0,'L')
txt = 'P?gina %s de %s' % (self.page_no(), self.alias_nb_pages())
self.cell(0,10,txt,0,0,'R')
pdf=MyFPDF()
pdf.add_page()
pdf.write_html(str(XML(table, sanitize=False)))
response.headers['Content-Type']='application/pdf'
doc=pdf.output(dest='S')
doc64=embed64(data=doc,extension='application/pdf')
doc64=embed64(data=doc,extension='application/pdf')
return 'window.location="%s";' % doc64
def call():
"""
exposes services. for example:

Exportar a: Unified diff