Пример #1
0
 def update(self):
     context = aq_inner(self.context)
     self.txnid = self.request.get("txnid", None)
     self.errors = {}
     unwanted = ("_authenticator", "form.button.Submit", "form.button.Enquiry")
     if "form.button.Submit" in self.request or "form.button.Enquiry" in self.request:
         form = self.request.form
         authenticator = getMultiAdapter((context, self.request), name=u"authenticator")
         if not authenticator.verify():
             raise Unauthorized
         formdata = {}
         formerrors = {}
         errorIdx = 0
         accept = self.request.get("terms-accept", None)
         if accept is None:
             errorIdx += 1
             formerrors["terms-accept"] = _(
                 u"You need to accept that you " u"have read and understood the " u"terms of use."
             )
         for value in form:
             if value not in unwanted:
                 formdata[value] = form[value]
         formdata["enquiry"] = self.request.get("form.button.Enquiry", None)
         if errorIdx > 0:
             self.errors = formerrors
             IStatusMessage(self.request).add(_(u"Required input missing"), type="error")
         else:
             self._process_order(formdata)
Пример #2
0
 def _process_order(self, data):
     pstate = getMultiAdapter((self.context, self.request), name=u"plone_portal_state")
     portal_url = pstate.portal_url()
     settings = self._payment_settings()
     cart = get_cart()
     txn = cart["txn_id"]
     orderinfo = txn[self.txnid]
     txnid = self._generate_txn_id()
     txn_id = self._url_quote(txnid)
     success_url = portal_url + "/@@order-processed?oid=" + txn_id
     mto = settings["shop_email"]
     envelope_from = orderinfo["billing.email"]
     if data["enquiry"] is None:
         order_type = _(u"Order")
     else:
         order_type = _(u"Enquiry")
     subject = _(u"Chromsystems Shop: %s") % order_type
     options = orderinfo
     cart = self.cart()
     options["cartitems"] = cart
     body = ViewPageTemplateFile("enquiry_mail.pt")(self, **options)
     # send email
     mailhost = getToolByName(self.context, "MailHost")
     mailhost.send(body, mto=mto, mfrom=envelope_from, subject=subject, charset="utf-8")
     IStatusMessage(self.request).add(_(u"Your email has been forwarded."), type="info")
     return self.request.response.redirect(success_url)
Пример #3
0
 def update(self):
     context = aq_inner(self.context)
     self.errors = {}
     unwanted = ("_authenticator", "form.button.Submit")
     required = self.required_fields()
     if "form.button.Submit" in self.request:
         form = self.request.form
         authenticator = getMultiAdapter((context, self.request), name=u"authenticator")
         if not authenticator.verify():
             raise Unauthorized
         formdata = {}
         formerrors = {}
         errorIdx = 0
         for value in form:
             if value not in unwanted:
                 formdata[value] = form[value]
                 if value in required and not form[value]:
                     error = {}
                     error["active"] = True
                     error["msg"] = _(u"This field is required")
                     formerrors[value] = error
                     errorIdx += 1
                 else:
                     error = {}
                     error["active"] = False
                     error["msg"] = form[value]
                     formerrors[value] = error
         if errorIdx > 0:
             self.errors = formerrors
         else:
             self._storeCheckoutData(formdata)
Пример #4
0
 def update(self):
     context = aq_inner(self.context)
     wipe_cart()
     self.context_url = context.absolute_url()
     IStatusMessage(self.request).addStatusMessage(
         _(u"Remove item from cart executed. This is not yet implemented"),
         type="info")
     redirect_url = self.context_url + '/@@cart'
     return self.request.response.redirect(redirect_url)
Пример #5
0
 def update(self):
     context = aq_inner(self.context)
     #self.context_url = context.absolute_url()
     if 'form.button.Submit' in self.request:
         updater = getUtility(ICartUpdaterUtility)
         item_uuid = self.request.get('item_uuid', None)
         item = updater.delete(item_uuid)
         if not item:
             IStatusMessage(self.request).addStatusMessage(
                 _(u"Item could not be removed from the shopping cart. "
                   u"Please try again. If the error should persist, please "
                   u"contact the shop owner"),
                 type="error")
             return self.request.response.redirect(context.absolute_url())
         else:
             IStatusMessage(self.request).addStatusMessage(
                 _(u"Item has been removed from the shopping cart"),
                 type="info")
             return_url = context.absolute_url() + '/@@cart'
             return self.request.response.redirect(return_url)
Пример #6
0
 def update(self):
     context = aq_inner(self.context)
     self.context_url = context.absolute_url()
     pstate = getMultiAdapter((context, self.request),
                              name=u"plone_portal_state")
     self.portal_url = pstate.portal_url()
     self.uuid = IUUID(context, None)
     unwanted = ('_authenticator', 'form.button.Submit',
                 'form.button.Clear')
     if 'form.button.Clear' in self.request:
         authenticator = getMultiAdapter((context, self.request),
                                         name=u"authenticator")
         if not authenticator.verify():
             raise Unauthorized
         wipe_cart()
         IStatusMessage(self.request).addStatusMessage(
             _(u"Your shopping cart has successfully been purged"),
             type="info")
         return self.request.response.redirect(self.context_url)
     if 'form.button.Submit' in self.request:
         self.errors = {}
         item = self.request.get('item.uuid', None)
         quantity = self.request.get('item.quantity', None)
         form = self.request.form
         idx = 0
         for item in form:
             if item not in unwanted:
                 fieldname = item.split('.')
                 uuid = fieldname[0]
                 quantity = form[item]
                 if quantity is None or quantity is '':
                     self.errors[item] = _(u"Quantity must be given")
                 else:
                     updater = getUtility(ICartUpdaterUtility)
                     updater.add(uuid, quantity)
                     idx += 1
         IStatusMessage(self.request).add(
             _(u"%s cart items successfully updated") % idx,
             type="info")
         redirect_url = self.context_url + '/@@cart'
         return self.request.response.redirect(redirect_url)
Пример #7
0
 def update(self):
     context = aq_inner(self.context)
     pstate = getMultiAdapter((context, self.request),
                              name=u"plone_portal_state")
     self.portal_url = pstate.portal_url()
     self.context_url = context.absolute_url()
     item = self.request.get('item.uuid', None)
     qty = self.request.get('quantity', None)
     IStatusMessage(self.request).addStatusMessage(
         _(u"Add item to cart executed: %s %s ") % (item, qty),
         type="info")
     redirect_url = self.portal_url + '/@@cart'
     return self.request.response.redirect(redirect_url)
Пример #8
0
 def _storeCheckoutData(self, data):
     pstate = getMultiAdapter((self.context, self.request),
                              name=u"plone_portal_state")
     portal_url = pstate.portal_url()
     txn_id = self.get_txnid()
     cart = get_cart()
     address = cart['txn_id']
     order = address.values()[0]
     for item in data:
         order[item] = data[item]
     txn_data = {}
     txn_data[txn_id] = order
     updater = getUtility(ICartUpdaterUtility)
     updater.mark(txn_data)
     IStatusMessage(self.request).add(
         _(u"Billing address successfully updated"),
         type='info')
     success_url = portal_url + '/@@checkout?txnid=' + txn_id
     return self.request.response.redirect(success_url)