Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' into pep8

  • Loading branch information...
commit 567bd54342a05aa6573cfcb2769e7ed492840cd1 2 parents 6590ea7 + aa8fc30
Stefano Parmesan authored
View
1  .gitignore
@@ -1,2 +1,3 @@
*.py[co]
.idea
+logo-bsa.png
View
2  bandbook/conf/settings/default.py
@@ -64,7 +64,7 @@
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
-STATIC_ROOT = PROJECT_PATH + '/static/'
+STATIC_ROOT = PROJECT_PATH + '/main/static/'
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
View
1  bandbook/instruments/models.py
@@ -116,7 +116,6 @@ def get_absolute_url(self):
return reverse('instrument_detail', args=(self.slug, ))
- # TODO stampa modulo di prestito
class InstrumentHistory(TimeStampedModel):
instrument = models.ForeignKey(Instrument, verbose_name=_("Instrument"))
date_start = models.DateField(verbose_name=_("From"))
View
60 bandbook/instruments/templates/instruments/instrumenthistory_pdf.html
@@ -5,28 +5,76 @@
<style>
@page {
size: a4 landscape;
- margin: 2cm;
+ margin: 1cm;
+ line-height: 3px;
}
h1 { text-align: middle; font-size: 40px; }
- p {font-size: 20px;}
+ p {font-size: 14px;}
span.dummy { font-size: 2px;}
.field {
text-decoration: underline;
- font-size: 1.2em;
font-family: courier;
}
+ .small {
+ font-size: 8px;
+ }
+
+ .right {
+ text-align: right;
+ }
+
+ #logo {
+ width: 100px;
+ height: 100px;
+ display: block;
+ }
+
+ table {
+ width: 100%;
+ }
+
</style>
</head>
<body>
+
<table>
<tr>
- <td>{% include 'instruments/instrumenthistory_pdf_a5.html' with type='COPIA BANDA' %}</td>
- <td width="50">&nbsp</td>
- <td>{% include 'instruments/instrumenthistory_pdf_a5.html' with type='COPIA ALLIEVO '%}</td>
+ <td>
+ <table>
+ <tr>
+ <td width="100">
+ <img src="/static/images/logo-bsa.png" />
+ </td>
+ <td>
+ <p style="font-size: 18px"><b>Modulo di assegnazione strumento musicale in comodato d'uso / <u>responsabilità dell'allievo</u></b></p>
+ <p class="small right">Copia banda</p>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td width="40">&nbsp</td>
+ <td>
+ <table>
+ <tr>
+ <td width="100">
+ <img src="/static/images/logo-bsa.png" />
+ </td>
+ <td>
+ <p style="font-size: 18px"><b>Modulo di assegnazione strumento musicale in comodato d'uso / <u>responsabilità dell'allievo</u></b></p>
+ <p class="small right">Copia allievo</p>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td>{% include 'instruments/instrumenthistory_pdf_a5.html' %}</td>
+ <td>&nbsp</td>
+ <td>{% include 'instruments/instrumenthistory_pdf_a5.html' %}</td>
</tr>
</table>
</body>
View
98 bandbook/instruments/templates/instruments/instrumenthistory_pdf_a5.html
@@ -1,39 +1,77 @@
{% load bandbook_main %}
-<h1>{{ object.instrument }}</h1>
+{#<h1>{{ object.instrument }}</h1>#}
+{##}
+{#<ul>#}
+{# <li>instrument: {{ object.instrument }}#}
+{# <ul>#}
+{# <li>type: {{ object.instrument.model.type.name }}</li>#}
+{# <li>Manufacturer: {{ object.instrument.model.manufacturer }}</li>#}
+{# <li>model: {{ object.instrument.model.name }}</li>#}
+{# <li>code: {{ object.instrument.code }}</li>#}
+{# </ul>#}
+{# </li>#}
+{##}
+{# <li>date start: {{ object.date_start }}</li>#}
+{# <li>condition: {{ object.condition }}</li>#}
+{# <li>notes: {{ object.notes }}</li>#}
+{# <li>target: {{ object.target }}#}
+{# <ul>#}
+{# <li>Name: {{ object.target.full_name }}</li>#}
+{# <li>Birthdate: {{ object.target.birthdate }}</li>#}
+{# </ul>#}
+{# </li>#}
+{#</ul>#}
+{##}
+{#{{ type }}#}
+{##}
+{#<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In lacus eros, tincidunt iaculis viverra ut, malesuada id ipsum. Nam accumsan metus quis risus tincidunt sodales. Pellentesque vel augue arcu. Quisque dignissim, mi quis dapibus tincidunt, tellus urna pulvinar urna, et venenatis lacus odio id mauris. Morbi nisl libero, mattis vel euismod a, facilisis in nulla. Suspendisse risus nulla, vehicula vel elementum vitae, pretium sed lorem. Nulla ornare euismod dapibus. Phasellus risus arcu, hendrerit nec varius in, pretium vel sapien.</p>#}
+{##}
+{#<p>Suspendisse ac odio at odio porta suscipit sit amet sit amet elit. Mauris vitae libero id est suscipit cursus nec ut orci. Etiam eu diam enim. Maecenas vulputate consectetur ante, eget aliquam elit consectetur quis. Maecenas justo purus, elementum eget pulvinar nec, condimentum quis ligula. Aenean quis sapien sed nisl ultrices aliquet. Curabitur lacinia tincidunt ligula, eget porta velit interdum ac. Etiam non leo sed purus eleifend tristique. Praesent diam magna, condimentum ac commodo et, tincidunt quis justo. Curabitur velit urna, posuere eget aliquet quis, suscipit in nulla. Aliquam lorem lacus, sagittis eget varius id, mattis quis lacus.</p>#}
+{##}
+{#<p>Vestibulum sagittis, dolor non tincidunt euismod, felis lectus laoreet ante, non mollis purus nisl ut lorem. Vestibulum ornare adipiscing posuere. Sed ac nulla risus. Aliquam vel lacus vitae tortor faucibus aliquam. Etiam vitae ullamcorper quam. Morbi eu ligula rutrum libero viverra vulputate vitae sit amet leo. Quisque vehicula consectetur fringilla. Nunc et libero sit amet justo rhoncus consectetur. Maecenas augue dolor, egestas et rutrum ut, aliquet vel magna. Nulla eros nibh, cursus ut tincidunt at, egestas eu est. Vivamus feugiat lobortis faucibus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce in lectus ante, vitae ultrices quam.</p>#}
+{##}
+{#<p>#}
+{# Il sottoscritto <span class="field">{{ object.target.full_name|to_left:30|real_spaces }}</span>#}
+{# nato il <span class="field">{{ object.target.birthdate|date:'d F Y'|to_left:15|real_spaces }}</span>#}
+{# prende in prestito un bellissimo <span class="field">{{ object.instrument.model.type.name|to_left:15|real_spaces }}</span>#}
+{#</p>#}
+{##}
+{#<p>Li, {{ ''|today }}</p>#}
-<ul>
- <li>instrument: {{ object.instrument }}
- <ul>
- <li>type: {{ object.instrument.model.type.name }}</li>
- <li>Manufacturer: {{ object.instrument.model.manufacturer }}</li>
- <li>model: {{ object.instrument.model.name }}</li>
- <li>code: {{ object.instrument.code }}</li>
- </ul>
- </li>
- <li>date start: {{ object.date_start }}</li>
- <li>condition: {{ object.condition }}</li>
- <li>notes: {{ object.notes }}</li>
- <li>target: {{ object.target }}
- <ul>
- <li>Name: {{ object.target.full_name }}</li>
- <li>Birthdate: {{ object.target.birthdate }}</li>
- </ul>
- </li>
-</ul>
+<p style="text-align: justify">
+ Il presente modulo attesta la ricezione da parte dell'allievo sotto indicato di uno strumento musicale di
+ proprietà della Banda Sociale di Ala. Lo strumento viene consegnato all'allievo in buono stato manutenzione
+ (lo stato di conservazione viene indicato dall'insegnante nel riquadro seguente); lo strumento viene ceduto
+ all'allievo in comodato d'uso gratuito fino a quando lo stesso frequenterà i corsi di formazione organizzati
+ dalla Banda Sociale di Ala. <b>Rimane a carico dell'allievo il compito della diligente cura dello strumento
+ musicale assegnato; eventuali danni cagionati allo strumento dovranno essere risarciti dall'allievo (o
+ dai suoi familiari)</b> <u>Nell'evenienza di un danno allo strumento, <i>l'allievo dovrà darne tempestiva
+ comunicazione all'insegnante; il responsabile della Banda, poi, si attiverà per la riparazione dello
+ strumento presso un centro specializzato, richiedendo poi il rimborso della spesa all'allievo</i></u>.</p>
-{{ type }}
+<p>DATI DELL'ALLIEVO:</p>
-<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. In lacus eros, tincidunt iaculis viverra ut, malesuada id ipsum. Nam accumsan metus quis risus tincidunt sodales. Pellentesque vel augue arcu. Quisque dignissim, mi quis dapibus tincidunt, tellus urna pulvinar urna, et venenatis lacus odio id mauris. Morbi nisl libero, mattis vel euismod a, facilisis in nulla. Suspendisse risus nulla, vehicula vel elementum vitae, pretium sed lorem. Nulla ornare euismod dapibus. Phasellus risus arcu, hendrerit nec varius in, pretium vel sapien.</p>
-
-<p>Suspendisse ac odio at odio porta suscipit sit amet sit amet elit. Mauris vitae libero id est suscipit cursus nec ut orci. Etiam eu diam enim. Maecenas vulputate consectetur ante, eget aliquam elit consectetur quis. Maecenas justo purus, elementum eget pulvinar nec, condimentum quis ligula. Aenean quis sapien sed nisl ultrices aliquet. Curabitur lacinia tincidunt ligula, eget porta velit interdum ac. Etiam non leo sed purus eleifend tristique. Praesent diam magna, condimentum ac commodo et, tincidunt quis justo. Curabitur velit urna, posuere eget aliquet quis, suscipit in nulla. Aliquam lorem lacus, sagittis eget varius id, mattis quis lacus.</p>
-
-<p>Vestibulum sagittis, dolor non tincidunt euismod, felis lectus laoreet ante, non mollis purus nisl ut lorem. Vestibulum ornare adipiscing posuere. Sed ac nulla risus. Aliquam vel lacus vitae tortor faucibus aliquam. Etiam vitae ullamcorper quam. Morbi eu ligula rutrum libero viverra vulputate vitae sit amet leo. Quisque vehicula consectetur fringilla. Nunc et libero sit amet justo rhoncus consectetur. Maecenas augue dolor, egestas et rutrum ut, aliquet vel magna. Nulla eros nibh, cursus ut tincidunt at, egestas eu est. Vivamus feugiat lobortis faucibus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Fusce in lectus ante, vitae ultrices quam.</p>
+<p>
+ Nome e Cognome <span class="field">{{ object.target.full_name|to_left:43|real_spaces }}</span><br/>
+ Indirizzo <span class="field">{{ object.target.address|to_left:50|real_spaces }}</span><br/>
+ Data di nascita <span class="field">{{ object.target.birthdate|date:'d F Y'|to_left:25|real_spaces }}</span><br/>
+ Telefono <span class="field">{{ object.target.phone_number|to_left:22|real_spaces }}</span>,
+ cell <span class="field">{{ object.target.mobile_number|to_left:22|real_spaces }}</span><br/>
+</p>
+<p>DATI DELLO STRUMENTO IN COMODATO D'USO:</p>
<p>
- Il sottoscritto <span class="field">{{ object.target.full_name|center:30|real_spaces }}</span>
- nato il <span class="field">{{ object.target.birthdate|date:'d F Y'|center:15|real_spaces }}</span>
- prende in prestito un bellissimo <span class="field">{{ object.instrument.model.type.name|center:15|real_spaces }}</span>
+ Strumento <span class="field">{{ object.instrument.model|to_left:49|real_spaces }}</span><br/>
+ Matricola <span class="field">{{ object.instrument.code|to_left:50|real_spaces }}</span><br/>
+ Condizioni dello strumento <span class="field">{{ object.condition|to_left:37|real_spaces }}</span><br/>
+ Data <span class="field">{{ ''|today|date:'d F Y'|to_left:25|real_spaces }}</span><br/>
</p>
-<p>Li, {{ ''|today }}</p>
+<p>
+ <b>Firma dell'insegnante</b> <span class="field right">{{ ""|to_left:38|real_spaces }}</span>
+</p>
+<p>
+ <b>Firma dell'allievo <span class="small">(del genitore se l'iscritto è minorenne)</span></b>
+ <span class="field right">{{ ""|to_left:24|real_spaces }}</span>
+</p>
View
6 bandbook/main/templatetags/bandbook_main.py
@@ -136,3 +136,9 @@ def today(str):
@register.filter()
def get(dictionary, key):
return dictionary.get(key)
+
+
+@register.filter()
+def to_left(obj, length):
+ str = unicode(obj)
+ return " " + str + " " * (length - len(str) - 1)
View
12 bandbook/main/views.py
@@ -18,7 +18,9 @@
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.views.generic.list import ListView
+import os
from xhtml2pdf import pisa
+from bandbook import settings
from bandbook.instruments.helpers import get_default_ordering
from bandbook.main.helpers import index_block, reverse_lazy, filter_queryset
@@ -146,9 +148,6 @@ def get(self, request, **kwargs):
return render_to_pdf(template, context)
-# TODO che succede se sposto un elemento in un'altra lista? Broken!
-# TODO v problemi spostando in ultima posizione se ci sono buchi..
-# TODO v ordinamento non e' parent-aware!
class OrderView(View):
model = None
@@ -309,7 +308,8 @@ def render_to_pdf(template_src, context_dict):
html = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(
- StringIO.StringIO(html.encode("ISO-8859-1")), result)
+ StringIO.StringIO(html.encode("ISO-8859-1")), result,
+ link_callback=_pdf_fetch_resources)
if not pdf.err:
if 'filename' not in context_dict:
context_dict['filename'] = ''.join(
@@ -322,3 +322,7 @@ def render_to_pdf(template_src, context_dict):
return response
return HttpResponse('PDF generation error: <pre>%s</pre>' %
cgi.escape(html), status=500)
+
+def _pdf_fetch_resources(uri, rel):
+ path = os.path.join(settings.STATIC_ROOT, uri.replace(settings.STATIC_URL, ""))
+ return path
Please sign in to comment.
Something went wrong with that request. Please try again.