diff -r 260413f89ba9 -r 13b5dd3a7a5f svv/orders.py --- a/svv/orders.py Fri Jan 07 02:46:29 2011 +0200 +++ b/svv/orders.py Fri Jan 07 03:19:37 2011 +0200 @@ -496,7 +496,7 @@ self.contract_text = self.DEFAULT_TEXT - def render (self, action, submit=u"Tulosta Vuokrasopimus") : + def render (self, action, submit=u"Tulosta vuokrasopimus") : # self.url_for(OrderContractDocument, id=id) return tags.form(action=action, method='POST')( @@ -521,7 +521,7 @@ tags.li( tags.input(type='submit', value=submit), - tags.input(type='submit', name='edit', value=u"Muokkaa lisää"), + tags.input(type='submit', name='edit', value=u"Muokkaa vuokrasopimusta"), ), ), ), @@ -737,6 +737,94 @@ Render form for database object, let the user make updates, update the database. """ + def process (self, id) : + """ + Set up our object form. + + Process incoming POST data. + """ + + # db session + self.session = self.app.session() + + # order object + self.order = self.session.query(Order).options(db.eagerload(Order.customer), db.eagerload(Order.contact)).get(id) + + def render_contract_form (self, id) : + """ + Render the contract panel for our view + """ + + form = OrderContractForm(self.app) + form.defaults() + + # prefilled values? + if self.POST : + # feed form POST data + form.process(self.POST) + + # render + return form.render(action=self.url_for(OrderContractDocument, id=id)) + + + def render_order (self, order) : + """ + Render order fields + """ + + return tags.form(action=self.url_for(EditOrderView, id=order.id), method='GET')( + tags.fieldset( + tags.legend(u"Tilaustiedot"), + + + tags.ol( + (tags.li( + tags.h3(title), + (tags.div(value, class_='value') for value in values if value), + + ) for title, values in ( + (u"Tilaaja", (order.customer.name, )), + (u"Yhteyshenkilö", ( + order.contact.name, + order.contact.phone, + order.contact.email, + )), + (u"Tapahtuma", ( + order.event_name, + tags.pre(order.event_description.strip(), _whitespace_sensitive=True), + order.format_event_time(), + )), + )), + + tags.li( + tags.input(type='submit', value=u"Muokkaa"), + ), + ), + + ), + ) + + def render_content (self, id) : + """ + Render our form + """ + + return ( + tags.h1(u"Tilaus #%d" % (id, )), + tags.h3(u"%s - %s (%s)" % (self.order.customer.name, self.order.event_name, self.order.format_event_time())), + + self.render_order(self.order), + self.render_contract_form(id), + ) + + +class EditOrderView (PageHandler) : + """ + Render form for existing order, and update order. + + XXX: concurrent edits! + """ + def update (self, order, form) : """ Update order values from submitted form data @@ -755,7 +843,7 @@ def process (self, id) : """ - Set up our object form. + Set up our order form. Process incoming POST data. """ @@ -780,37 +868,22 @@ # submit data was OK, update order from form self.update(self.order, self.form) - else : - # errors - pass - - def render_contract_form (self, id) : - """ - Render the contract panel for our view - """ + # return to order view + return self.redirect_for(OrderView, id=self.order.id) - form = OrderContractForm(self.app) - form.defaults() - - # prefilled values? - if self.POST : - # feed form POST data - form.process(self.POST) - - # render - return form.render(action=self.url_for(OrderContractDocument, id=id)) - + else : + # errors, re-show form + pass + def render_content (self, id) : """ - Render our form + Render our edit form """ return ( tags.h1(u"Tilaus #%d" % (id, )), - tags.h3(u"%s - %s (%s)" % (self.form.customer_name, self.form.event_name, self.form.event_start.strftime('%d.%m.%Y'))), - - self.render_contract_form(id), - self.form.render(action=self.url_for(OrderView, id=id)) + + self.form.render(action=self.url_for(EditOrderView, id=id)), )