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 |
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 """ |