1218 # XXX: can't fail |
1218 # XXX: can't fail |
1219 form.process(data) |
1219 form.process(data) |
1220 |
1220 |
1221 return form |
1221 return form |
1222 |
1222 |
1223 def load_order (self, id): |
1223 def process (self, id): |
1224 """ |
1224 """ |
1225 Return OrderModel object for given ID |
1225 Return OrderModel object for given ID |
1226 """ |
1226 """ |
1227 |
1227 |
1228 # XXX: really need that OrderModel object :) |
1228 # db session |
1229 form = OrderForm(self.app) |
1229 self.session = self.app.session() |
1230 form.load(id) |
1230 |
1231 |
1231 # order object |
1232 return form |
1232 self.order = self.session.query(Order).options(db.eagerload(Order.customer), db.eagerload(Order.contact)).get(id) |
|
1233 |
|
1234 # form params |
|
1235 self.params = self.load_params(self.POST) |
1233 |
1236 |
1234 def generate_document (self, id) : |
1237 def generate_document (self, id) : |
1235 |
1238 """ |
1236 # retrieve from db |
1239 Return PDF document to generate |
1237 order = self.load_order(id) |
1240 """ |
1238 |
1241 |
1239 # params set by form |
1242 order = self.order |
1240 params = self.load_params(self.POST) |
1243 params = self.params |
1241 |
1244 |
1242 title = "Teekkarispeksi Ry - Vuokrasopimus" |
1245 title = "Teekkarispeksi Ry - Vuokrasopimus" |
1243 author = "Teekkarispeksi Ry" |
1246 author = "Teekkarispeksi Ry" |
1244 |
1247 |
1245 tpl = pdf.PageTemplate('page', |
1248 tpl = pdf.PageTemplate('page', |
1246 header_columns = ( |
1249 header_columns = ( |
1247 ("", ""), |
1250 ("", ""), |
1248 ("", ""), |
1251 ("", ""), |
1249 ("", ""), |
1252 ("", ""), |
1250 ("Vuokrasopimus", [order.customer_name, order.event_name, 'dd.mm.yy hh:mm-hh:mm']), |
1253 ("Vuokrasopimus", [order.customer.name, order.event_name, 'dd.mm.yy hh:mm-hh:mm']), |
1251 ), |
1254 ), |
1252 footer_columns = ( |
1255 footer_columns = ( |
1253 ("Teekkarispeksi Ry", ("www.teekkarispeksi.fi", )), |
1256 ("Teekkarispeksi Ry", ("www.teekkarispeksi.fi", )), |
1254 ("Tekniikkavastaava", ("Juha Kallas", "045 xxx yyzz", "jskallas@cc.hut.fi")), |
1257 ("Tekniikkavastaava", ("Juha Kallas", "045 xxx yyzz", "jskallas@cc.hut.fi")), |
1255 ("Varastovastaava", ("Joel Pirttimaa", "045 xxx yyzz", "jhpirtti@cc.hut.fi")), |
1258 ("Varastovastaava", ("Joel Pirttimaa", "045 xxx yyzz", "jhpirtti@cc.hut.fi")), |
1260 doc = pdf.DocumentTemplate([tpl], |
1263 doc = pdf.DocumentTemplate([tpl], |
1261 title = title, author = author, |
1264 title = title, author = author, |
1262 ) |
1265 ) |
1263 |
1266 |
1264 # stylesheet |
1267 # stylesheet |
1265 styles = pdf.Styles |
1268 styles = pdf.Styles() |
1266 |
1269 |
1267 from reportlab.platypus import Paragraph as p |
1270 from reportlab.platypus import Paragraph as p |
1268 |
1271 |
1269 # contract terms |
1272 |
1270 list_seq = pdf.ListItem.seq |
1273 text = u"""\ |
1271 terms = pdf.ListItem("Sopimusehdot", styles.h2, None, list_seq(), [ |
1274 # Vuokrasopimus |
1272 pdf.ListItem("Osapuolet", styles.list_h2, None, list_seq(), [ |
1275 ### Teekkarispeksi ry AV-tekniikka |
1273 pdf.ListItem(None, None, "Teekkarispeksi ry (Y-tunnus 1888541-7), jäljempänä “Vuokranantaja”."), |
1276 |
1274 pdf.ListItem(None, None, order.customer_name + u", jäljempänä “Vuokraaja”. 1.1 ja 1.2 jäljempänä yhdessä “osapuolet”.") |
1277 ## Sopimusehdot |
1275 ]), |
1278 |
1276 pdf.ListItem("Kaluston lainaaminen", styles.list_h2, None, list_seq(), [ |
1279 1. ## Osapuolet |
1277 pdf.ListItem("Yleistä", styles.list_h3, "Tässä sopimuksessa sovitaan toiminnasta Vuokranantajan lainatessa tanssimattoja Vuokraajalle"), |
1280 1. Teekkarispeksi ry (Y-tunnus 1888541-7), jäljempänä “Vuokranantaja”. |
1278 pdf.ListItem("Vuokranantajan velvollisuudet", styles.list_h3, "Vuokranantaja sitoutuu toimittamaan sovittuna ajankohtana Vuokraajalle erikseen sovittava (liite) määrä tanssimattoja."), |
1281 2. {order.customer.name}, jäljempänä “Vuokraaja”. 1.1 ja 1.2 jäljempänä yhdessä “osapuolet”. |
1279 pdf.ListItem("Blaa Blaa", styles.list_h3, "Etc."), |
1282 |
1280 ]), |
1283 2. ## Kaluston lainaaminen |
1281 pdf.ListItem("Tätä sopimusta ja sitä koskevia erimielisyyksiä koskevat määräykset", styles.list_h2, None, list_seq(), [ |
1284 1. ### Yleistä |
1282 pdf.ListItem("Sopimuksen voimassaolo", styles.list_h3, "Sopimus on osapuolia sitova sen jälkeen, kun osapuolet ovat sen allekirjoittaneet."), |
1285 Tässä sopimuksessa sovitaan toiminnasta Vuokranantajan lainatessa tanssimattoja Vuokraajalle. |
1283 pdf.ListItem("Muutosten tekeminen", styles.list_h3, "Muutokset sopimukseen on tehtävä kirjallisesti molempien osapuolten kesken."), |
1286 |
1284 pdf.ListItem("Blaa Blaa", styles.list_h3, "Etc."), |
1287 2. ### Vuokranantajan velvollisuudet |
1285 ]), |
1288 Vuokranantaja sitoutuu toimittamaan sovittuna ajankohtana Vuokraajalle erikseen sovittava (liite) määrä tanssimattoja. |
1286 ]) |
1289 |
1287 |
1290 3. ### Blaa Blaa |
1288 |
1291 Etc. |
|
1292 |
|
1293 3. ## Tätä sopimusta ja sitä koskevia erimielisyyksiä koskevat määräykset |
|
1294 1. ### Sopimuksen voimassaolo |
|
1295 Sopimus on osapuolia sitova sen jälkeen, kun osapuolet ovat sen allekirjoittaneet. |
|
1296 |
|
1297 2. ### Muutosten tekeminen |
|
1298 Muutokset sopimukseen on tehtävä kirjallisesti molempien osapuolten kesken. |
|
1299 |
|
1300 3. ### Blaa Blaa |
|
1301 |
|
1302 Etc. |
|
1303 |
|
1304 ## Nouto |
|
1305 Aika: _______________ Paikka: _______________ |
|
1306 |
|
1307 ## Palautus |
|
1308 Aika: _______________ Paikka: _______________ |
|
1309 |
|
1310 """ |
|
1311 |
|
1312 # format |
|
1313 text = text.format( |
|
1314 order = order, |
|
1315 ) |
|
1316 |
|
1317 # parse to doc tree |
|
1318 root = markup.Markup().parse(text) |
|
1319 |
|
1320 # format to flowables |
|
1321 text_elements = list(pdf.Markup(styles).render(root)) |
1289 |
1322 |
1290 sig_prefill = {} |
1323 sig_prefill = {} |
1291 |
1324 |
1292 if params.prefill_placetime : |
1325 if params.prefill_placetime : |
1293 sig_prefill[('Vuokranantaja', 'Aika ja paikka')] = sig_prefill[('Vuokraaja', 'Aika ja paikka')] = params.prefill_placetime |
1326 sig_prefill[('Vuokranantaja', 'Aika ja paikka')] = sig_prefill[('Vuokraaja', 'Aika ja paikka')] = params.prefill_placetime |
1294 |
1327 |
1295 if params.prefill_ourname : |
1328 if params.prefill_ourname : |
1296 sig_prefill[('Vuokranantaja', 'Nimen selvennys')] = params.prefill_ourname |
1329 sig_prefill[('Vuokranantaja', 'Nimen selvennys')] = params.prefill_ourname |
1297 |
1330 |
1298 elements = [ |
1331 elements = text_elements + [ |
1299 p("Vuokrasopimus", styles.h1), |
|
1300 p("Teekkarispeksi ry AV-tekniikka", styles.h3), |
|
1301 ] + list(terms.render_pdf()) + [ |
|
1302 p("Nouto", styles.h2), |
|
1303 p("\t\tAika: _______________\tPaikka: _______________", styles.text), |
|
1304 p("Palautus", styles.h2), |
|
1305 p("\t\tAika: _______________\tPaikka: _______________", styles.text), |
|
1306 |
|
1307 pdf.SignatureBlock(("Vuokranantaja", "Vuokraaja"), ("%(column)s", "Nimen selvennys", "Aika ja paikka"), sig_prefill), |
1332 pdf.SignatureBlock(("Vuokranantaja", "Vuokraaja"), ("%(column)s", "Nimen selvennys", "Aika ja paikka"), sig_prefill), |
|
1333 |
1308 ] |
1334 ] |
1309 |
1335 |
1310 # ok |
1336 # ok |
1311 return doc, elements |
1337 return doc, elements |
1312 |
1338 |