class CouponCodeForm(form.Form): """ """ fields = field.Fields(ICouponCodeForm) ignoreContext = True label = _(u"If you have a Coupon Code please enter it here") @button.buttonAndHandler(_("apply code")) def apply_code(self,action): data, errors = self.extractData() coupon_id = data.get('couponId','') context = aq_inner(self.context) cm = ICouponManagement(context) sm = IStatusMessage(self.request) if not coupon_id: self.status = _("please enter a valid coupon id") return try: cm.saveCouponConsumer(coupon_id.strip()) sm.addStatusMessage(_("valid coupon consumed")) template_id = component.getMultiAdapter( (self.context,self.request), name="plone_context_state").current_page_url().split('/').pop() return self.request.response.redirect(template_id) except Exception, msg: # see easyshop.coupon.adapters.coupon_management for exceptions self.status = translate(_(str(msg)), target_language=self.request.get('LANGUAGE','de'))
def apply_code(self,action): data, errors = self.extractData() coupon_id = data.get('couponId','') context = aq_inner(self.context) cm = ICouponManagement(context) sm = IStatusMessage(self.request) if not coupon_id: self.status = _("please enter a valid coupon id") return try: cm.saveCouponConsumer(coupon_id.strip()) sm.addStatusMessage(_("valid coupon consumed")) template_id = component.getMultiAdapter( (self.context,self.request), name="plone_context_state").current_page_url().split('/').pop() return self.request.response.redirect(template_id) except Exception, msg: # see easyshop.coupon.adapters.coupon_management for exceptions self.status = translate(_(str(msg)), target_language=self.request.get('LANGUAGE','de'))
atapi.StringField('title', widget=atapi.StringWidget( visible=dict( edit='invisible', view='invisible', ), ), required=False ), atapi.StringField('couponId', default_method='generate_cid', required=True, widget=atapi.StringWidget( label=_('coupon ID'), ), ), atapi.LinesField('consumers', widget=atapi.LinesWidget( visible=dict( view='visible', edit='hidden', ), ), ), )) class Coupon(atapi.BaseContent): """easyshop coupon"""
class ICouponCodeForm(interface.Interface): couponId = schema.ASCIILine( title = _("coupon code"), required = False, )
return len(coupons)>0 and coupons[0].getObject() or None def getValidCoupon(self, check_coupon=None): """ """ stored_coupon_id = self.shop.REQUEST.get(COUPON_COOKIE_NAME) if not stored_coupon_id: return coupon_id = decodestring(unquote(stored_coupon_id)) coupon = self.getCoupon(coupon_id) if check_coupon is not None: if coupon!=check_coupon: return customer = ICustomerManagement(self.shop).getAuthenticatedCustomer() if customer and \ customer.id in coupon.getConsumers(): return coupon return # messagefactories for i18ndude _("invalid customer") _("no coupon found") _("coupon already consumed")
from easyshop.coupon.interfaces import ICoupon from easyshop.coupon.config import PROJECTNAME, COUPON_ID_PATTERN, \ COUPON_ID_LENGTH schema = atapi.BaseSchema.copy() + atapi.Schema(( atapi.StringField('title', widget=atapi.StringWidget(visible=dict( edit='invisible', view='invisible', ), ), required=False), atapi.StringField( 'couponId', default_method='generate_cid', required=True, widget=atapi.StringWidget(label=_('coupon ID'), ), ), atapi.LinesField( 'consumers', widget=atapi.LinesWidget(visible=dict( view='visible', edit='hidden', ), ), ), )) class Coupon(atapi.BaseContent): """easyshop coupon""" implements(ICoupon) _at_rename_after_creation = True