svv/orders.py
changeset 35 13b5dd3a7a5f
parent 34 260413f89ba9
child 36 d7a159024912
equal deleted inserted replaced
34:260413f89ba9 35:13b5dd3a7a5f
   494         
   494         
   495         self.edit = False
   495         self.edit = False
   496 
   496 
   497         self.contract_text = self.DEFAULT_TEXT
   497         self.contract_text = self.DEFAULT_TEXT
   498 
   498 
   499     def render (self, action, submit=u"Tulosta Vuokrasopimus") :
   499     def render (self, action, submit=u"Tulosta vuokrasopimus") :
   500         
   500         
   501         # self.url_for(OrderContractDocument, id=id)
   501         # self.url_for(OrderContractDocument, id=id)
   502         return tags.form(action=action, method='POST')(
   502         return tags.form(action=action, method='POST')(
   503             tags.fieldset(
   503             tags.fieldset(
   504                 tags.legend(u"Vuokrasopimus"),
   504                 tags.legend(u"Vuokrasopimus"),
   519 
   519 
   520                     ) if self.edit else None,
   520                     ) if self.edit else None,
   521 
   521 
   522                     tags.li(
   522                     tags.li(
   523                         tags.input(type='submit', value=submit),
   523                         tags.input(type='submit', value=submit),
   524                         tags.input(type='submit', name='edit', value=u"Muokkaa lisää"),
   524                         tags.input(type='submit', name='edit', value=u"Muokkaa vuokrasopimusta"),
   525                     ),
   525                     ),
   526                 ),
   526                 ),
   527             ),
   527             ),
   528 
   528 
   529         )
   529         )
   735 class OrderView (PageHandler) :
   735 class OrderView (PageHandler) :
   736     """
   736     """
   737         Render form for database object, let the user make updates, update the database.
   737         Render form for database object, let the user make updates, update the database.
   738     """
   738     """
   739     
   739     
       
   740     def process (self, id) :
       
   741         """
       
   742             Set up our object form.
       
   743 
       
   744             Process incoming POST data.
       
   745         """
       
   746 
       
   747         # db session
       
   748         self.session = self.app.session()
       
   749         
       
   750         # order object
       
   751         self.order = self.session.query(Order).options(db.eagerload(Order.customer), db.eagerload(Order.contact)).get(id)
       
   752 
       
   753     def render_contract_form (self, id) :
       
   754         """
       
   755             Render the contract panel for our view
       
   756         """
       
   757 
       
   758         form = OrderContractForm(self.app)
       
   759         form.defaults()
       
   760 
       
   761         # prefilled values?
       
   762         if self.POST :
       
   763             # feed form POST data
       
   764             form.process(self.POST)
       
   765 
       
   766         # render
       
   767         return form.render(action=self.url_for(OrderContractDocument, id=id))
       
   768 
       
   769 
       
   770     def render_order (self, order) :
       
   771         """
       
   772             Render order fields
       
   773         """
       
   774 
       
   775         return tags.form(action=self.url_for(EditOrderView, id=order.id), method='GET')(
       
   776             tags.fieldset(
       
   777                 tags.legend(u"Tilaustiedot"),
       
   778 
       
   779                 
       
   780                 tags.ol(
       
   781                     (tags.li(
       
   782                         tags.h3(title),
       
   783                         (tags.div(value, class_='value') for value in values if value),
       
   784 
       
   785                     ) for title, values in (
       
   786                         (u"Tilaaja", (order.customer.name, )),
       
   787                         (u"Yhteyshenkilö", (
       
   788                             order.contact.name,
       
   789                             order.contact.phone,
       
   790                             order.contact.email,
       
   791                         )),
       
   792                         (u"Tapahtuma", (
       
   793                             order.event_name,
       
   794                             tags.pre(order.event_description.strip(), _whitespace_sensitive=True),
       
   795                             order.format_event_time(),
       
   796                         )),
       
   797                     )),
       
   798 
       
   799                     tags.li(
       
   800                         tags.input(type='submit', value=u"Muokkaa"),
       
   801                     ),
       
   802                 ),
       
   803 
       
   804             ),
       
   805         )
       
   806 
       
   807     def render_content (self, id) :
       
   808         """
       
   809             Render our form
       
   810         """
       
   811 
       
   812         return (
       
   813             tags.h1(u"Tilaus #%d" % (id, )),
       
   814             tags.h3(u"%s - %s (%s)" % (self.order.customer.name, self.order.event_name, self.order.format_event_time())),
       
   815             
       
   816             self.render_order(self.order),
       
   817             self.render_contract_form(id),
       
   818         )
       
   819 
       
   820 
       
   821 class EditOrderView (PageHandler) :
       
   822     """
       
   823         Render form for existing order, and update order.
       
   824 
       
   825         XXX: concurrent edits!
       
   826     """
       
   827 
   740     def update (self, order, form) :
   828     def update (self, order, form) :
   741         """
   829         """
   742             Update order values from submitted form data
   830             Update order values from submitted form data
   743         """
   831         """
   744         
   832         
   753         # commit
   841         # commit
   754         self.session.commit()
   842         self.session.commit()
   755 
   843 
   756     def process (self, id) :
   844     def process (self, id) :
   757         """
   845         """
   758             Set up our object form.
   846             Set up our order form.
   759 
   847 
   760             Process incoming POST data.
   848             Process incoming POST data.
   761         """
   849         """
   762 
   850 
   763         # db session
   851         # db session
   778             # feed form our POST data
   866             # feed form our POST data
   779             if self.form.process(self.POST) :
   867             if self.form.process(self.POST) :
   780                 # submit data was OK, update order from form
   868                 # submit data was OK, update order from form
   781                 self.update(self.order, self.form)
   869                 self.update(self.order, self.form)
   782 
   870 
       
   871                 # return to order view
       
   872                 return self.redirect_for(OrderView, id=self.order.id)
       
   873 
   783             else :
   874             else :
   784                 # errors
   875                 # errors, re-show form
   785                 pass
   876                 pass
   786         
   877  
   787     def render_contract_form (self, id) :
       
   788         """
       
   789             Render the contract panel for our view
       
   790         """
       
   791 
       
   792         form = OrderContractForm(self.app)
       
   793         form.defaults()
       
   794 
       
   795         # prefilled values?
       
   796         if self.POST :
       
   797             # feed form POST data
       
   798             form.process(self.POST)
       
   799 
       
   800         # render
       
   801         return form.render(action=self.url_for(OrderContractDocument, id=id))
       
   802 
       
   803     def render_content (self, id) :
   878     def render_content (self, id) :
   804         """
   879         """
   805             Render our form
   880             Render our edit form
   806         """
   881         """
   807 
   882 
   808         return (
   883         return (
   809             tags.h1(u"Tilaus #%d" % (id, )),
   884             tags.h1(u"Tilaus #%d" % (id, )),
   810             tags.h3(u"%s - %s (%s)" % (self.form.customer_name, self.form.event_name, self.form.event_start.strftime('%d.%m.%Y'))),
   885 
   811             
   886             self.form.render(action=self.url_for(EditOrderView, id=id)),
   812             self.render_contract_form(id),
       
   813             self.form.render(action=self.url_for(OrderView, id=id))
       
   814         )
   887         )
   815 
   888 
   816 
   889 
   817 class NewOrderView (PageHandler) :
   890 class NewOrderView (PageHandler) :
   818     """
   891     """