Esempio n. 1
0
    def render_get_actions_for_contact(self, colname, record):
        tag = Tag(Translate(self.request))
        site = plone.api.portal.get()

        view_orders_target = '%s/@@orders#%s' % (
            site.absolute_url(),
            str(record.attrs['personal_data.email']))

        view_orders_attrs = {
            'class_': 'contenttype-document',
            'href': view_orders_target,
            'title': _('view_orders', default=u'View Orders'),
        }
        view_orders = tag('a', '&nbsp', **view_orders_attrs)

        view_bookings_target = '%s/@@bookings#%s' % (
            site.absolute_url(),
            str(record.attrs['personal_data.email']))

        view_bookings_attrs = {
            'class_': 'contenttype-document',
            'href': view_bookings_target,
            'title': _('view_bookings', default=u'View Bookings'),
        }
        view_bookings = tag('a', '&nbsp', **view_bookings_attrs)

        return view_orders + view_bookings
Esempio n. 2
0
    def render_get_actions_for_contact(self, colname, record):
        tag = Tag(Translate(self.request))
        site = plone.api.portal.get()
        base_url = site.absolute_url()

        # view orders
        view_orders_target = '%s/@@orders#%s' % (
            base_url,
            str(record.attrs['personal_data.email']))
        view_orders_attrs = {
            'href': view_orders_target,
            'title': _('view_orders', default=u'View Orders'),
        }
        orders_icon_url = '%s/++resource++bda.plone.orders/orders.png' % base_url
        view_orders_icon = tag('img', src=orders_icon_url)
        view_orders = tag('a', view_orders_icon, **view_orders_attrs)

        # view bookings
        view_bookings_target = '%s/@@bookings#%s' % (
            base_url,
            str(record.attrs['personal_data.email']))
        view_bookings_attrs = {
            'href': view_bookings_target,
            'title': _('view_bookings', default=u'View Bookings'),
        }
        bookings_icon_url = '%s/++resource++bda.plone.orders/bookings.png' % base_url
        view_bookings_icon = tag('img', src=bookings_icon_url)
        view_bookings = tag('a', view_bookings_icon, **view_bookings_attrs)

        # XXX: view invoices

        return view_orders + view_bookings
Esempio n. 3
0
 def heading(self):
     try:
         if self.order_data.state in self.reservation_states:
             return _('reservation_done', default=u'Reservation Done')
         return _('order_done', default=u'Order Done')
     except ValueError:
         return _('unknown_order', default=u'Unknown Order')
Esempio n. 4
0
    def render_get_actions_for_contact(self, colname, record):
        tag = Tag(Translate(self.request))
        site = plone.api.portal.get()

        view_orders_target = '%s/@@orders#%s' % (
            site.absolute_url(), str(record.attrs['personal_data.email']))

        view_orders_attrs = {
            'class_': 'contenttype-document',
            'href': view_orders_target,
            'title': _('view_orders', default=u'View Orders'),
        }
        view_orders = tag('a', '&nbsp', **view_orders_attrs)

        view_bookings_target = '%s/@@bookings#%s' % (
            site.absolute_url(), str(record.attrs['personal_data.email']))

        view_bookings_attrs = {
            'class_': 'contenttype-document',
            'href': view_bookings_target,
            'title': _('view_bookings', default=u'View Bookings'),
        }
        view_bookings = tag('a', '&nbsp', **view_bookings_attrs)

        return view_orders + view_bookings
Esempio n. 5
0
    def render_order_actions(self, colname, record):
        tag = Tag(Translate(self.request))
        view_order_target = '%s?uid=%s' % (
            self.context.absolute_url(), str(record.attrs['uid']))
        view_order_attrs = {
            'ajax:bind': 'click',
            'ajax:target': view_order_target,
            'ajax:overlay': 'myorder',
            'class_': 'contenttype-document',
            'href': '',
            'title': _('view_order', default=u'View Order'),
        }
        view_order = tag('a', ' ', **view_order_attrs)

        add_order_items_to_cart_attrs = {
            'ajax:bind': 'click',
            'ajax:target': view_order_target,
            'ajax:overlay': 'add_order_items_to_cart',
            'class_': 'go_to_cart_action',
            'href': '',
            'title': _('add_order_items_to_cart',
                       default=u'Add Order Items To Cart'),
        }
        add_order_items_to_cart = tag('a',
                                      ' ',
                                      **add_order_items_to_cart_attrs)

        return view_order + add_order_items_to_cart
Esempio n. 6
0
 def heading(self):
     try:
         if self.order_data.state in self.reservation_states:
             return _('reservation_done', default=u'Reservation Done')
         return _('order_done', default=u'Order Done')
     except ValueError:
         return _('unknown_order', default=u'Unknown Order')
Esempio n. 7
0
def state_transitions_vocab():
    vocab = {
        ifaces.STATE_TRANSITION_RENEW: _('renew', default=u'Renew'),
        ifaces.STATE_TRANSITION_PROCESS: _('process', default=u'Process'),
        ifaces.STATE_TRANSITION_FINISH: _('finish', default=u'Finish'),
        ifaces.STATE_TRANSITION_CANCEL: _('cancel', default=u'Cancel'),
    }
    return vocab
Esempio n. 8
0
def salaried_vocab():
    vocab = {
        ifaces.SALARIED_YES: _('yes', default=u'Yes'),
        ifaces.SALARIED_NO: _('no', default=u'No'),
        ifaces.SALARIED_FAILED: _('failed', default=u'Failed'),
        ifaces.SALARIED_MIXED: _('mixed', default=u'Mixed'),
    }
    return vocab
Esempio n. 9
0
def salaried_transitions_vocab():
    vocab = {
        ifaces.SALARIED_TRANSITION_SALARIED:
        _('mark_salaried', default=u'Mark salaried'),
        ifaces.SALARIED_TRANSITION_OUTSTANDING:
        _('mark_outstanding', default=u'Mark outstanding'),
    }
    return vocab
def state_transitions_vocab():
    vocab = {
        ifaces.STATE_TRANSITION_RENEW: _('renew', default=u'Renew'),
        ifaces.STATE_TRANSITION_PROCESS: _('process', default=u'Process'),
        ifaces.STATE_TRANSITION_FINISH: _('finish', default=u'Finish'),
        ifaces.STATE_TRANSITION_CANCEL: _('cancel', default=u'Cancel'),
    }
    return vocab
def salaried_vocab():
    vocab = {
        ifaces.SALARIED_YES: _('yes', default=u'Yes'),
        ifaces.SALARIED_NO: _('no', default=u'No'),
        ifaces.SALARIED_FAILED: _('failed', default=u'Failed'),
        ifaces.SALARIED_MIXED: _('mixed', default=u'Mixed'),
    }
    return vocab
def salaried_transitions_vocab():
    vocab = {
        ifaces.SALARIED_TRANSITION_SALARIED: _(
            'mark_salaried', default=u'Mark salaried'),
        ifaces.SALARIED_TRANSITION_OUTSTANDING: _(
            'mark_outstanding', default=u'Mark outstanding'),
    }
    return vocab
Esempio n. 13
0
def groups_vocab():
    """
    used for grouping the bookings table
    """
    vocab = {
        'email': _('email', default=u'Email'),
        'buyable': _('buyable', default=u'Buyable'),
    }
    return vocab
Esempio n. 14
0
 def text(self):
     try:
         if self.order_data.state in self.reservation_states:
             return _('reservation_text',
                      default=u'Thanks for your Reservation.')
         return _('order_text', default=u'Thanks for your Order.')
     except ValueError:
         return _('unknown_order_text',
                  default=u'Sorry, this order does not exist.')
Esempio n. 15
0
 def text(self):
     try:
         if self.order_data.state in self.reservation_states:
             return _('reservation_text',
                      default=u'Thanks for your Reservation.')
         return _('order_text', default=u'Thanks for your Order.')
     except ValueError:
         return _('unknown_order_text',
                  default=u'Sorry, this order does not exist.')
def groups_vocab():
    """
    used for grouping the bookings table
    """
    vocab = {
        'email': _('email', default=u'Email'),
        'buyable': _('buyable', default=u'Buyable'),
    }
    return vocab
Esempio n. 17
0
    def render_order_actions(self, colname, record):
        order_uid = record.attrs['order_uid']

        tag = Tag(Translate(self.request))
        vendor_uid = self.request.form.get('vendor', '')
        if vendor_uid:
            view_order_target = '%s?uid=%s&vendor=%s' % (
                self.context.absolute_url(), str(order_uid), vendor_uid)
        else:
            view_order_target = '%s?uid=%s' % (self.context.absolute_url(),
                                               str(order_uid))
        view_order_attrs = {
            'ajax:bind': 'click',
            'ajax:target': view_order_target,
            'ajax:overlay': 'order',
            'class_': 'contenttype-document',
            'href': '',
            'title': _('view_order', default=u'View Order'),
        }
        view_order = tag('a', '&nbsp', **view_order_attrs)
        select_order_attrs = {
            'name': 'select_order',
            'type': 'checkbox',
            'value': order_uid,
            'class_': 'select_order',
        }
        select_order = tag('input', **select_order_attrs)

        site = plone.api.portal.get()
        portal_url = site.absolute_url()

        ## Custom print order
        data = OrderData(self.context, uid=order_uid)

        ordernumber = data.order.attrs.get('ordernumber', '')
        email = data.order.attrs.get('personal_data.email', '')

        print_order_attrs = {
            "class_":
            "contenttype-document",
            "href":
            "%s/showorder?ordernumber=%s&email=%s" %
            (portal_url, ordernumber, email),
            "target":
            "_blank",
            "title":
            _('view_order', default=u'View Order'),
        }

        print_order = tag('a', '&nbsp', **print_order_attrs)

        return select_order + print_order
Esempio n. 18
0
def fix_shipping_attrs(ctx=None):
    portal = getSite()
    orders_soup = get_orders_soup(portal)
    data = orders_soup.storage.data
    for item in data.values():
        try:
            item.attrs['shipping_method']
        except KeyError:
            item.attrs['shipping_method'] = 'unknown'
            logging.info(
                u"Added shipping_method {0} to booking {1}".format(
                    'unknown', item.attrs['uid']
                )
            )
        try:
            item.attrs['shipping_label']
        except KeyError:
            item.attrs['shipping_label'] = _('unknown', default=u'Unknown')
            logging.info(
                u"Added shipping_label {0} to booking {1}".format(
                    'unknown', item.attrs['uid']
                )
            )
        try:
            item.attrs['shipping_description']
        except KeyError:
            item.attrs['shipping_description'] = \
                _('unknown', default=u'Unknown')
            logging.info(
                u"Added shipping_description {0} to booking {1}".format(
                    'unknown', item.attrs['uid']
                )
            )
        try:
            item.attrs['shipping_net']
        except KeyError:
            item.attrs['shipping_net'] = item.attrs['shipping']
            logging.info(
                u"Added shipping_net {0} to booking {1}".format(
                    item.attrs['shipping'], item.attrs['uid']
                )
            )
        try:
            item.attrs['shipping_vat']
        except KeyError:
            item.attrs['shipping_vat'] = Decimal(0)
            logging.info(
                u"Added shipping_vat {0} to booking {1}".format(
                    Decimal(0), item.attrs['uid']
                )
            )
Esempio n. 19
0
 def columns(self):
     return [{
         'id': 'actions',
         'label': _('actions', default=u'Actions'),
         'head': self.render_order_actions_head,
         'renderer': self.render_order_actions,
     }, {
         'id': 'created',
         'label': _('date', default=u'Date'),
         'renderer': self.render_dt,
     }, {
         'id': 'personal_data.lastname',
         'label': _('lastname', default=u'Last Name'),
     }, {
         'id': 'personal_data.firstname',
         'label': _('firstname', default=u'First Name'),
     }, {
         'id': 'personal_data.email',
         'label': _('email', default=u'Email'),
     }, {
         'id': 'billing_address.city',
         'label': _('city', default=u'City'),
     }, {
         'id': 'salaried',
         'label': _('salaried', default=u'Salaried'),
         'renderer': self.render_salaried,
     }, {
         'id': 'state',
         'label': _('state', default=u'State'),
         'renderer': self.render_state,
     }]
Esempio n. 20
0
 def columns(self):
     return [{
         'id': 'actions',
         'label': _('actions', default=u'Actions'),
         'head': self.render_order_actions_head,
         'renderer': self.render_order_actions,
     }, {
         'id': 'created',
         'label': _('date', default=u'Date'),
         'renderer': self.render_dt,
     }, {
         'id': 'personal_data.lastname',
         'label': _('lastname', default=u'Last Name'),
     }, {
         'id': 'personal_data.firstname',
         'label': _('firstname', default=u'First Name'),
     }, {
         'id': 'personal_data.email',
         'label': _('email', default=u'Email'),
     }, {
         'id': 'billing_address.city',
         'label': _('city', default=u'City'),
     }, {
         'id': 'salaried',
         'label': _('salaried', default=u'Salaried'),
         'renderer': self.render_salaried,
     }, {
         'id': 'state',
         'label': _('state', default=u'State'),
         'renderer': self.render_state,
     }]
Esempio n. 21
0
    def render_order_actions(self, colname, record):
        order_uid = record.attrs['order_uid']

        tag = Tag(Translate(self.request))
        vendor_uid = self.request.form.get('vendor', '')
        if vendor_uid:
            view_order_target = '%s?uid=%s&vendor=%s' % (
                self.context.absolute_url(),
                str(order_uid),
                vendor_uid)
        else:
            view_order_target = '%s?uid=%s' % (
                self.context.absolute_url(),
                str(order_uid))
        view_order_attrs = {
            'ajax:bind': 'click',
            'ajax:target': view_order_target,
            'ajax:overlay': 'order',
            'class_': 'contenttype-document',
            'href': '',
            'title': _('view_order', default=u'View Order'),
        }
        view_order = tag('a', '&nbsp', **view_order_attrs)
        select_order_attrs = {
            'name': 'select_order',
            'type': 'checkbox',
            'value': order_uid,
            'class_': 'select_order',
        }
        select_order = tag('input', **select_order_attrs)
        return select_order + view_order
Esempio n. 22
0
def fix_payment_attrs(ctx=None):
    portal = getSite()
    payments = Payments(portal)
    orders_soup = get_orders_soup(portal)
    data = orders_soup.storage.data
    for item in data.values():
        try:
            item.attrs['payment_method']
            item.attrs['payment_label']
            continue
        except KeyError:
            payment_method = item.attrs['payment_selection.payment']
            payment = payments.get(payment_method)
            if payment:
                payment_label = payment.label
            else:
                payment_label = _('unknown', default=u'Unknown')
            item.attrs['payment_method'] = payment_method
            logging.info(
                u"Added payment_method {0} to booking {1}".format(
                    payment_method, item.attrs['uid']
                )
            )
            item.attrs['payment_label'] = payment_label
            logging.info(
                u"Added payment_label {0} to booking {1}".format(
                    payment_label, item.attrs['uid']
                )
            )
Esempio n. 23
0
 def from_before_to(self, widget, data):
     from_date = data.fetch('exportorders.from').extracted
     to_date = data.fetch('exportorders.to').extracted
     if to_date <= from_date:
         raise ExtractionError(_('from_date_before_to_date',
                                 default=u'From-date after to-date'))
     return data.extracted
Esempio n. 24
0
    def __call__(self):
        booking_uid = self.request.form.get('uid')
        if not booking_uid:
            raise BadRequest('value not given')
        try:
            booking_data = BookingData(self.context, uid=uuid.UUID(booking_uid))  # noqa
            if booking_data.booking is None:
                raise ValueError('invalid value (no booking found)')
            do_transition_for(
                booking_data,
                transition=ifaces.STATE_TRANSITION_CANCEL,
                context=self.context,
                request=self.request
            )
        except ValueError:
            raise BadRequest('something is wrong with the value')

        plone.api.portal.show_message(
            message=_(u"Booking cancelled."),
            request=self.request,
            type='info'
        )
        self.request.response.redirect(
            self.context.absolute_url() + '/@@orders'
        )
Esempio n. 25
0
 def render_order_actions(self, colname, record):
     tag = Tag(Translate(self.request))
     vendor_uid = self.request.form.get('vendor', '')
     if vendor_uid:
         view_order_target = '%s?uid=%s&vendor=%s' % (
             self.context.absolute_url(), str(
                 record.attrs['uid']), vendor_uid)
     else:
         view_order_target = '%s?uid=%s' % (self.context.absolute_url(),
                                            str(record.attrs['uid']))
     view_order_attrs = {
         'ajax:bind': 'click',
         'ajax:target': view_order_target,
         'ajax:overlay': 'order',
         'class_': 'contenttype-document',
         'href': '',
         'title': _('view_order', default=u'View Order'),
     }
     view_order = tag('a', '&nbsp;', **view_order_attrs)
     select_order_attrs = {
         'name': 'select_order',
         'type': 'checkbox',
         'value': record.attrs['uid'],
         'class_': 'select_order',
     }
     select_order = tag('input', **select_order_attrs)
     return select_order + view_order
Esempio n. 26
0
 def template_vocabulary(self, widget, data):
     vocab = [
         ('-', _('no_template_selected', default=u'No template selected')),
     ]
     tpllib = IDynamicMailTemplateLibrary(self.context)
     for key in tpllib.keys():
         vocab.append((key, key))
     return vocab
Esempio n. 27
0
 def from_before_to(self, widget, data):
     from_date = data.fetch('exportorders.from').extracted
     to_date = data.fetch('exportorders.to').extracted
     if to_date <= from_date:
         raise ExtractionError(
             _('from_date_before_to_date',
               default=u'From-date after to-date'))
     return to_date
 def template_vocabulary(self, widget, data):
     vocab = [
         ('-', _('no_template_selected', default=u'No template selected')),
     ]
     tpllib = IDynamicMailTemplateLibrary(self.context)
     for key in tpllib.keys():
         vocab.append((key, key))
     return vocab
Esempio n. 29
0
 def columns(self):
     return [{
         'id': 'actions',
         'label': _('actions', default=u'Actions'),
         'head': self.render_order_actions_head,
         'renderer': self.render_order_actions,
     }, {
         'id': 'uid',
         'label': _('Ticket UID', default=u'Ticket UID'),
         'head': self.render_order_uid_head,
         'renderer': self.render_order_uid,
     }, {
         'id': 'title',
         'label': _('Title', default=u'Title'),
         'head': self.render_booking_title_head,
         'renderer': self.render_booking_title,
     }, {
         'id': 'created',
         'label': _('date', default=u'Date'),
         'renderer': self.render_dt,
     }, {
         'id': 'personal_data.firstname',
         'label': _('firstname', default=u'First Name'),
         'head': self.render_order_firstname_head,
         'renderer': self.render_order_firstname
     }, {
         'id': 'personal_data.lastname',
         'label': _('lastname', default=u'Last Name'),
         'head': self.render_order_lastname_head,
         'renderer': self.render_order_lastname
     }, {
         'id': 'state',
         'label': _('state', default=u'State'),
         'renderer': self.render_state,
     }]
Esempio n. 30
0
 def render_auth_form(self):
     # Render the authentication form for anonymous users.
     req = self.request
     action = req.getURL()
     ordernumber = self.ordernumber or req.form.get('ordernumber', '')
     email = self.email or req.form.get('email', '')
     form = factory('form',
                    name='order_auth_form',
                    props={'action': action})
     form['ordernumber'] = factory('div:label:error:text',
                                   value=ordernumber,
                                   props={
                                       'label':
                                       _('anon_auth_label_ordernumber',
                                         default=u'Ordernumber'),
                                       'div.class':
                                       'ordernumber',
                                       'required':
                                       True,
                                   })
     form['email'] = factory('div:label:error:text',
                             value=email,
                             props={
                                 'label':
                                 _('anon_auth_label_email',
                                   default=u'Email'),
                                 'div.class':
                                 'email',
                                 'required':
                                 True,
                             })
     form['submit'] = factory('div:label:submit',
                              props={
                                  'label':
                                  _('anon_auth_label_submit',
                                    default=u'Submit'),
                                  'div.class':
                                  'submit',
                                  'handler':
                                  self._form_handler,
                                  'action':
                                  'submit',
                              })
     controller = Controller(form, req)
     return controller.rendered
Esempio n. 31
0
 def order(self):
     if not self.uid:
         err = _(
             'statusmessage_err_no_order_uid_given',
             default='Cannot show order information because no order uid was given.'  # noqa
         )
         IStatusMessage(self.request).addStatusMessage(err, 'error')
         raise Redirect(self.context.absolute_url())
     return dict(self.order_data.order.attrs)
 def send_success(self, request):
     message = _('customers_notified_success',
                 default=u'Mail to customers sent')
     continuation = [
         AjaxOverlay(close=True),
         AjaxMessage(message, 'info', None)
     ]
     ajax_continue(self.request, continuation)
     return True
Esempio n. 33
0
 def order(self):
     if not self.uid:
         err = _(
             'statusmessage_err_no_order_uid_given',
             default=
             'Cannot show order information because no order uid was given.'  # noqa
         )
         IStatusMessage(self.request).addStatusMessage(err, 'error')
         raise Redirect(self.context.absolute_url())
     return dict(self.order_data.order.attrs)
Esempio n. 34
0
 def send_success(self, request):
     message = translate(_('customers_notified_success',
                           default=u'Mail to customers sent'),
                         context=self.request)
     continuation = [
         AjaxOverlay(close=True),
         AjaxMessage(message, 'info', None)
     ]
     ajax_continue(self.request, continuation)
     return True
Esempio n. 35
0
 def render_filter(self):
     # vendor areas of current user
     vendors = vendors_form_vocab()
     vendor_selector = None
     # vendor selection, include if more than one vendor
     if len(vendors) > 2:
         vendor_selector = factory('label:select',
                                   name='vendor',
                                   value=self.request.form.get(
                                       'vendor', ''),
                                   props={
                                       'vocabulary':
                                       vendors,
                                       'label':
                                       _('filter_for_vendors',
                                         default=u'Filter for vendors'),
                                   })
     # customers of current user
     customers = customers_form_vocab()
     customer_selector = None
     # customers selection, include if more than one customer
     if len(customers) > 2:
         customer_selector = factory('label:select',
                                     name='customer',
                                     value=self.request.form.get(
                                         'customer', ''),
                                     props={
                                         'vocabulary':
                                         customers,
                                         'label':
                                         _('filter_for_customers',
                                           default=u'Filter for customers'),
                                     })
     if not vendor_selector and not customer_selector:
         return
     # concatenate filters
     filter = ''
     if vendor_selector:
         filter += vendor_selector(request=self.request)
     if customer_selector:
         filter += customer_selector(request=self.request)
     return filter
Esempio n. 36
0
 def __call__(self):
     req = self.request
     ordernumber = req.form.get('content_auth_form.ordernumber', None)
     email = req.form.get('content_auth_form.email', None)
     order = None
     errs = []
     if ordernumber and email:
         orders_soup = get_orders_soup(self.context)
         order = orders_soup.query(Eq('ordernumber', ordernumber))
         try:
             # generator should have only one item
             order = next(order)
             try:
                 assert(order.attrs['personal_data.email'] == email)
             except AssertionError:
                 # Don't raise Unauthorized, as this allows to draw
                 # conclusions on existing ordernumbers
                 order = None
         except StopIteration:
             # order by ordernumber not exists
             order = None
     if not email:
         err = _('anon_auth_err_email',
                 default=u'Please provide the email adress you used for '
                         u'submitting the order.')
         errs.append(err)
     if not ordernumber:
         err = _('anon_auth_err_ordernumber',
                 default=u'Please provide the ordernumber')
         errs.append(err)
     if email and ordernumber and not order:
         err = _('anon_auth_err_order',
                 default=u'No order could be found for the given '
                         u'credentials')
         errs.append(err)
     if not ordernumber and not email:
         # first call of this form
         errs = []
     for err in errs:
         IStatusMessage(self.request).addStatusMessage(err, 'error')
     self.uid = order.attrs['uid'] if order else None
     return self.view_template(self)
Esempio n. 37
0
 def columns(self):
     return [
         {
             'id': 'actions',
             'label': _('actions', default=u'Actions'),
             'renderer': self.render_get_actions_for_contact,
         },
         {
             'id': 'personal_data.email',
             'label': _('email', default=u'Email'),
         },
         {
             'id': 'personal_data.lastname',
             'label': _('lastname', default=u'Last Name'),
         },
         {
             'id': 'personal_data.firstname',
             'label': _('firstname', default=u'First Name'),
         },
     ]
Esempio n. 38
0
 def render_order_actions_head(self):
     tag = Tag(Translate(self.request))
     select_all_orders_attrs = {
         'name': 'select_all_orders',
         'type': 'checkbox',
         'class_': 'select_all_orders',
         'title': _('select_all_orders',
                    default=u'Select all visible orders'),
     }
     select_all_orders = tag('input', **select_all_orders_attrs)
     notify_customers_target = self.context.absolute_url()
     notify_customers_attributes = {
         'ajax:target': notify_customers_target,
         'class_': 'notify_customers',
         'href': '',
         'title': _('notify_customers',
                    default=u'Notify customers of selected orders'),
     }
     notify_customers = tag('a', '&nbsp', **notify_customers_attributes)
     return select_all_orders + notify_customers
Esempio n. 39
0
 def columns(self):
     return [
         {
             'id': 'actions',
             'label': _('actions', default=u'Actions'),
             'renderer': self.render_get_actions_for_contact,
         },
         {
             'id': 'personal_data.email',
             'label': _('email', default=u'Email'),
         },
         {
             'id': 'personal_data.lastname',
             'label': _('lastname', default=u'Last Name'),
         },
         {
             'id': 'personal_data.firstname',
             'label': _('firstname', default=u'First Name'),
         },
     ]
Esempio n. 40
0
    def render_email(self, colname, record):
        email = record.attrs.get(colname, '')
        bookings_quantity = self.render_bookings_quantity(colname, record)
        bookings_total_sum = self.render_bookings_total_sum(colname, record)
        value = \
            '<tr class="group_email">' \
            '<td colspan="13">' + '<p>' + email + '</p>' +\
            '<span>' +\
            translate(
                _("bookings_quantity", default=u"Bookings quantity"),
                self.request
            ) \
            + ': ' + str(bookings_quantity) + '</span>' \
            '<span>' +\
            translate(
                _("bookings_total_sum", default=u"Bookings total sum"),
                self.request
            ) \
            + ': ' + str(bookings_total_sum) + '</td></tr>'

        return value
Esempio n. 41
0
 def render_date_to_filter(self):
     to_date = factory(
         'label:text',
         name='to_date',
         value=self.request.form.get('to_date', ''),
         props={
             'label': _('to_date',
                        default=u'to date'),
         }
     )
     filter = to_date(request=self.request)
     return filter
Esempio n. 42
0
 def render_date_from_filter(self):
     from_date = factory(
         'label:text',
         name='from_date',
         value=self.request.form.get('from_date', ''),
         props={
             'label': _('from_date',
                        default=u'Filter from date'),
         }
     )
     filter = from_date(request=self.request)
     return filter
Esempio n. 43
0
    def render_email(self, colname, record):
        email = record.attrs.get(colname, '')
        bookings_quantity = self.render_bookings_quantity(colname, record)
        bookings_total_sum = self.render_bookings_total_sum(colname, record)
        value = \
            '<tr class="group_email">' \
            '<td colspan="13">' + '<p>' + email + '</p>' +\
            '<span>' +\
            translate(
                _("bookings_quantity", default=u"Bookings quantity"),
                self.request
            ) \
            + ': ' + str(bookings_quantity) + '</span>' \
            '<span>' +\
            translate(
                _("bookings_total_sum", default=u"Bookings total sum"),
                self.request
            ) \
            + ': ' + str(bookings_total_sum) + '</td></tr>'

        return value
Esempio n. 44
0
 def render_date_from_filter(self):
     from_date = factory(
         'label:text',
         name='from_date',
         value=self.request.form.get('from_date', ''),
         props={
             'label': _('from_date',
                        default=u'Filter from date'),
         }
     )
     filter = from_date(request=self.request)
     return filter
Esempio n. 45
0
 def render_date_to_filter(self):
     to_date = factory(
         'label:text',
         name='to_date',
         value=self.request.form.get('to_date', ''),
         props={
             'label': _('to_date',
                        default=u'to date'),
         }
     )
     filter = to_date(request=self.request)
     return filter
Esempio n. 46
0
 def render_filter(self):
     # vendor areas of current user
     vendors = vendors_form_vocab()
     vendor_selector = None
     # vendor selection, include if more than one vendor
     if len(vendors) > 2:
         vendor_selector = factory(
             'label:select',
             name='vendor',
             value=self.request.form.get('vendor', ''),
             props={
                 'vocabulary': vendors,
                 'label': _('filter_for_vendors',
                            default=u'Filter for vendors'),
             }
         )
     # customers of current user
     customers = customers_form_vocab()
     customer_selector = None
     # customers selection, include if more than one customer
     if len(customers) > 2:
         customer_selector = factory(
             'label:select',
             name='customer',
             value=self.request.form.get('customer', ''),
             props={
                 'vocabulary': customers,
                 'label': _('filter_for_customers',
                            default=u'Filter for customers'),
             }
         )
     if not vendor_selector and not customer_selector:
         return
     # concatenate filters
     filter = ''
     if vendor_selector:
         filter += vendor_selector(request=self.request)
     if customer_selector:
         filter += customer_selector(request=self.request)
     return filter
Esempio n. 47
0
    def render_buyable_uid(self, colname, record):
        # this actually gets the title of a buyable_uid
        title = record.attrs.get('title', '')
        bookings_quantity = self.render_bookings_quantity(colname, record)
        bookings_total_sum = self.render_bookings_total_sum(colname, record)
        value = \
            '<tr class="group_buyable">' \
            '<td colspan="13">' + '<p>' + title + '</p>' +\
            '<span>' +\
            translate(
                _("bookings_quantity", default=u"Bookings quantity"),
                self.request
            ) \
            + ': ' + str(bookings_quantity) + '</span>' \
            '<span>' +\
            translate(
                _("bookings_total_sum", default=u"Bookings total sum"),
                self.request
            ) \
            + ': ' + str(bookings_total_sum) + '</td></tr>'

        return value
Esempio n. 48
0
    def render_buyable_uid(self, colname, record):
        # this actually gets the title of a buyable_uid
        title = record.attrs.get('title', '')
        bookings_quantity = self.render_bookings_quantity(colname, record)
        bookings_total_sum = self.render_bookings_total_sum(colname, record)
        value = \
            u'<tr class="group_buyable">' \
            u'<td colspan="13">' + u'<p>' + safe_unicode(title) + u'</p>' +\
            u'<span>' +\
            translate(
                _("bookings_quantity", default=u"Bookings quantity"),
                self.request
            ) \
            + u': ' + safe_unicode(bookings_quantity) + u'</span>' \
            u'<span>' +\
            translate(
                _("bookings_total_sum", default=u"Bookings total sum"),
                self.request
            ) \
            + u': ' + bookings_total_sum + u'</td></tr>'

        return value
Esempio n. 49
0
def do_notify(context, order_data, templates, receiver):
    attrs = order_data.order.attrs
    subject = templates['subject'] % attrs['ordernumber']
    message = create_mail_body(templates, context, order_data)
    mail_notify = MailNotify(context)
    try:
        mail_notify.send(subject, message, receiver)
    except Exception:
        msg = translate(
            _('email_sending_failed',
              default=u'Failed to send notification to ${receiver}',
              mapping={'receiver': receiver}))
        api.portal.show_message(message=msg, request=context.REQUEST)
        logger.exception("Email could not be sent.")
Esempio n. 50
0
 def render_order_actions(self, colname, record):
     tag = Tag(Translate(self.request))
     view_order_target = '%s?uid=%s' % (self.context.absolute_url(),
                                        str(record.attrs['uid']))
     view_order_attrs = {
         'ajax:bind': 'click',
         'ajax:target': view_order_target,
         'ajax:overlay': 'myorder',
         'class_': 'contenttype-document',
         'href': '',
         'title': _('view_order', default=u'View Order'),
     }
     view_order = tag('a', '&nbsp;', **view_order_attrs)
     return view_order
Esempio n. 51
0
    def render_address(self, colname, record):
        street = safe_unicode(self._get_ordervalue(
            'billing_address.street',
            record,
        ))
        city = safe_unicode(self._get_ordervalue(
            'billing_address.city',
            record,
        ))
        phone = safe_unicode(self._get_ordervalue(
            'personal_data.phone',
            record,
        ))
        email = safe_unicode(record.attrs.get('email', ''))

        return u"{0} {1}<br/>{2}: {3}<br/>{4}: {5}".format(
            street,
            city,
            _("phone", default=u"Phone"),
            phone,
            _("email", default=u"Email"),
            email
        )
Esempio n. 52
0
    def render_address(self, colname, record):
        street = safe_unicode(self._get_ordervalue(
            'billing_address.street',
            record,
        ))
        city = safe_unicode(self._get_ordervalue(
            'billing_address.city',
            record,
        ))
        phone = safe_unicode(self._get_ordervalue(
            'personal_data.phone',
            record,
        ))
        email = safe_unicode(record.attrs.get('email', ''))

        return u"{0} {1}<br/>{2}: {3}<br/>{4}: {5}".format(
            street,
            city,
            _("phone", default=u"Phone"),
            phone,
            _("email", default=u"Email"),
            email
        )
Esempio n. 53
0
def do_notify(context, order_data, templates, receiver):
    attrs = order_data.order.attrs
    subject = templates['subject'] % attrs['ordernumber']
    message = create_mail_body(templates, context, order_data)
    mail_notify = MailNotify(context)
    try:
        mail_notify.send(subject, message, receiver)
    except Exception:
        msg = translate(
            _('email_sending_failed',
              default=u'Failed to send notification to ${receiver}',
              mapping={'receiver': receiver}))
        api.portal.show_message(message=msg, request=context.REQUEST)
        logger.exception("Email could not be sent.")
Esempio n. 54
0
    def __call__(self):
        booking_uid = self.request.form.get('uid')
        if not booking_uid:
            raise BadRequest('value not given')
        try:
            booking_cancel(self.context, self.request, uuid.UUID(booking_uid))
        except ValueError:
            raise BadRequest('something is wrong with the value')

        plone.api.portal.show_message(message=_(u"Booking cancelled."),
                                      request=self.request,
                                      type='info')
        self.request.response.redirect(self.context.absolute_url() +
                                       '/@@orders')
Esempio n. 55
0
def fix_shipping_attrs(ctx=None):
    portal = getSite()
    orders_soup = get_orders_soup(portal)
    data = orders_soup.storage.data
    for item in data.values():
        try:
            item.attrs['shipping_method']
        except KeyError:
            item.attrs['shipping_method'] = 'unknown'
            logging.info("Added shipping_method {0} to booking {1}".format(
                'unknown', item.attrs['uid']))
        try:
            item.attrs['shipping_label']
        except KeyError:
            item.attrs['shipping_label'] = _('unknown', default=u'Unknown')
            logging.info("Added shipping_label {0} to booking {1}".format(
                'unknown', item.attrs['uid']))
        try:
            item.attrs['shipping_description']
        except KeyError:
            item.attrs['shipping_description'] = \
                _('unknown', default=u'Unknown')
            logging.info(
                "Added shipping_description {0} to booking {1}".format(
                    'unknown', item.attrs['uid']))
        try:
            item.attrs['shipping_net']
        except KeyError:
            item.attrs['shipping_net'] = item.attrs['shipping']
            logging.info("Added shipping_net {0} to booking {1}".format(
                item.attrs['shipping'], item.attrs['uid']))
        try:
            item.attrs['shipping_vat']
        except KeyError:
            item.attrs['shipping_vat'] = Decimal(0)
            logging.info("Added shipping_vat {0} to booking {1}".format(
                Decimal(0), item.attrs['uid']))
Esempio n. 56
0
 def __call__(self):
     req = self.request
     ordernumber = req.form.get('order_auth_form.ordernumber', None)
     email = req.form.get('order_auth_form.email', None)
     order = None
     errs = []
     if ordernumber and email:
         orders_soup = get_orders_soup(self.context)
         order = orders_soup.query(Eq('ordernumber', ordernumber))
         order = order.next()  # generator should have only one item
         try:
             assert (order.attrs['personal_data.email'] == email)
         except AssertionError:
             # Don't raise Unauthorized, as this allows to draw conclusions
             # on existing ordernumbers
             order = None
     if not email:
         err = _('anon_auth_err_email',
                 default=u'Please provide the email adress you used for '
                 u'submitting the order.')
         errs.append(err)
     if not ordernumber:
         err = _('anon_auth_err_ordernumber',
                 default=u'Please provide the ordernumber')
         errs.append(err)
     if email and ordernumber and not order:
         err = _('anon_auth_err_order',
                 default=u'No order could be found for the given '
                 u'credentials')
         errs.append(err)
     if not ordernumber and not email:
         # first call of this form
         errs = []
     for err in errs:
         IStatusMessage(self.request).addStatusMessage(err, 'error')
     self.uid = order.attrs['uid'] if order else None
     return self.order_auth_template(self)
Esempio n. 57
0
 def render_auth_form(self):
     # Render the authentication form for anonymous users.
     req = self.request
     action = req.getURL()
     ordernumber = self.ordernumber or req.form.get('ordernumber', '')
     email = self.email or req.form.get('email', '')
     form = factory(
         'form',
         name='order_auth_form',
         props={'action': action})
     form['ordernumber'] = factory(
         'div:label:error:text',
         value=ordernumber,
         props={
             'label': _('anon_auth_label_ordernumber',
                        default=u'Ordernumber'),
             'div.class': 'ordernumber',
             'required': True,
         })
     form['email'] = factory(
         'div:label:error:text',
         value=email,
         props={
             'label': _('anon_auth_label_email', default=u'Email'),
             'div.class': 'email',
             'required': True,
         })
     form['submit'] = factory(
         'div:label:submit',
         props={
             'label': _('anon_auth_label_submit', default=u'Submit'),
             'div.class': 'submit',
             'handler': self._form_handler,
             'action': 'submit',
         })
     controller = Controller(form, req)
     return controller.rendered
Esempio n. 58
0
 def render_group_filter(self):
     # group orders
     groups = vocabs.groups_vocab()
     group_selector = factory(
         'label:select',
         name='group',
         value=self.request.form.get('group', ''),
         props={
             'vocabulary': groups,
             'label': _('group_orders_by',
                        default=u'Group orders by'),
         }
     )
     filter = group_selector(request=self.request)
     return filter
Esempio n. 59
0
 def render_order_actions_head(self):
     tag = Tag(Translate(self.request))
     select_all_orders_attrs = {
         'name': 'select_all_orders',
         'type': 'checkbox',
         'class_': 'select_all_orders',
         'title': _('select_all_orders',
                    default=u'Select all visible orders'),
     }
     select_all_orders = tag('input', **select_all_orders_attrs)
     notify_customers_target = self.context.absolute_url()
     notify_customers_attributes = {
         'ajax:target':
         notify_customers_target,
         'class_':
         'notify_customers',
         'href':
         '',
         'title':
         _('notify_customers',
           default=u'Notify customers of selected orders'),
     }
     notify_customers = tag('a', '&nbsp;', **notify_customers_attributes)
     return select_all_orders + notify_customers
Esempio n. 60
0
 def render_group_filter(self):
     # group orders
     groups = vocabs.groups_vocab()
     group_selector = factory(
         'label:select',
         name='group',
         value=self.request.form.get('group', ''),
         props={
             'vocabulary': groups,
             'label': _('group_orders_by',
                        default=u'Group orders by'),
         }
     )
     filter = group_selector(request=self.request)
     return filter