Example #1
0
 def cart_items(self, items):
     ret = list()
     sm = getSecurityManager()
     for uid, count, comment in items:
         try:
             obj = api.content.get(UID=uid)
         except ValueError:
             remove_item_from_cart(self.request, uid)
             continue
         if obj is None:
             remove_item_from_cart(self.request, uid)
             continue
         if not sm.checkPermission(permissions.BuyItems, obj):
             remove_item_from_cart(self.request, uid)
             continue
         buyable_period = queryAdapter(obj, IBuyablePeriod)
         if buyable_period:
             now = datetime.now()
             effective = buyable_period.effective
             if effective and now < effective:
                 remove_item_from_cart(self.request, uid)
                 continue
             expires = buyable_period.expires
             if expires and now > expires:
                 remove_item_from_cart(self.request, uid)
                 continue
         data = get_item_data_provider(obj)
         title = data.title
         discount_net = data.discount_net(count)
         price = (Decimal(str(data.net)) - discount_net) * count
         if data.display_gross:
             price = price + price / Decimal(100) * Decimal(str(data.vat))
         url = obj.absolute_url()
         description = obj.Description()
         comment_required = data.comment_required
         quantity_unit_float = data.quantity_unit_float
         quantity_unit = translate(data.quantity_unit, context=self.request)
         preview_image_url = get_item_preview(obj).url
         item_state = get_item_state(obj, self.request)
         no_longer_available = not item_state.validate_count(count)
         alert = item_state.alert(count)
         item = self.item(
             uid, title, count, price, url, comment, description,
             comment_required, quantity_unit_float, quantity_unit,
             preview_image_url, no_longer_available, alert)
         ret.append(item)
     return ret
Example #2
0
 def cart_items(self, items):
     ret = list()
     sm = getSecurityManager()
     for uid, count, comment in items:
         try:
             obj = api.content.get(UID=uid)
         except ValueError:
             remove_item_from_cart(self.request, uid)
             continue
         if obj is None:
             remove_item_from_cart(self.request, uid)
             continue
         if not sm.checkPermission(permissions.BuyItems, obj):
             remove_item_from_cart(self.request, uid)
             continue
         buyable_period = queryAdapter(obj, IBuyablePeriod)
         if buyable_period:
             now = datetime.now()
             effective = buyable_period.effective
             if effective and now < effective:
                 remove_item_from_cart(self.request, uid)
                 continue
             expires = buyable_period.expires
             if expires and now > expires:
                 remove_item_from_cart(self.request, uid)
                 continue
         data = get_item_data_provider(obj)
         title = data.title
         discount_net = data.discount_net(count)
         price = (Decimal(str(data.net)) - discount_net) * count
         if data.display_gross:
             price = price + price / Decimal(100) * Decimal(str(data.vat))
         url = obj.absolute_url()
         description = obj.Description()
         comment_required = data.comment_required
         quantity_unit_float = data.quantity_unit_float
         quantity_unit = translate(data.quantity_unit, context=self.request)
         preview_image_url = get_item_preview(obj).url
         item_state = get_item_state(obj, self.request)
         no_longer_available = not item_state.validate_count(count)
         alert = item_state.alert(count)
         item = self.item(uid, title, count, price, url, comment,
                          description, comment_required,
                          quantity_unit_float, quantity_unit,
                          preview_image_url, no_longer_available, alert)
         ret.append(item)
     return ret
Example #3
0
 def validate_set(self, uid):
     try:
         buyable = api.content.get(UID=uid)
     except ValueError:
         message = _(
             u'buyable_does_not_exist',
             default=u'Buyable item with UID {uuid} does not exist.',
                     mapping={'uuid': uid})
         return {
             'success': False,
             'error': message,
             'update': True,
         }
     # check whether user can buy item
     if not api.user.has_permission(permissions.BuyItems, obj=buyable):
         remove_item_from_cart(self.request, uid)
         message = _(u'permission_not_granted_to_buy_item',
                     default=u'Permission to buy ${title} not granted.',
                     mapping={'title': buyable.Title()})
         message = translate(message, context=self.request)
         return {
             'success': False,
             'error': message,
             'update': True,
         }
     # check buyable period
     buyable_period = queryAdapter(buyable, IBuyablePeriod)
     if buyable_period:
         now = datetime.now()
         # effective date not reached yet
         effective = buyable_period.effective
         if effective and now < effective:
             remove_item_from_cart(self.request, uid)
             message = _('item_not_buyable_yet',
                         default=u'Item not buyable yet')
             message = translate(message, context=self.request)
             return {
                 'success': False,
                 'error': message,
                 'update': True,
             }
         # expires date exceed
         expires = buyable_period.expires
         if expires and now > expires:
             remove_item_from_cart(self.request, uid)
             message = _('item_no_longer_buyable',
                         default=u'Item no longer buyable')
             message = translate(message, context=self.request)
             return {
                 'success': False,
                 'error': message,
                 'update': True,
             }
     return {
         'success': True,
         'error': '',
     }
Example #4
0
 def validate_set(self, uid):
     try:
         buyable = api.content.get(UID=uid)
     except ValueError:
         message = _(
             u'buyable_does_not_exist',
             default=u'Buyable item with UID {uuid} does not exist.',
             mapping={'uuid': uid})
         return {
             'success': False,
             'error': message,
             'update': True,
         }
     # check whether user can modify cart
     if not api.user.has_permission(permissions.ModifyCart, obj=buyable):
         remove_item_from_cart(self.request, uid)
         message = _(u'permission_not_granted_to_buy_item',
                     default=u'Permission to buy ${title} not granted.',
                     mapping={'title': buyable.Title()})
         message = translate(message, context=self.request)
         return {
             'success': False,
             'error': message,
             'update': True,
         }
     # check buyable period
     buyable_period = queryAdapter(buyable, IBuyablePeriod)
     if buyable_period:
         now = datetime.now()
         # effective date not reached yet
         effective = buyable_period.effective
         if effective and now < effective:
             remove_item_from_cart(self.request, uid)
             message = _('item_not_buyable_yet',
                         default=u'Item not buyable yet')
             message = translate(message, context=self.request)
             return {
                 'success': False,
                 'error': message,
                 'update': True,
             }
         # expires date exceed
         expires = buyable_period.expires
         if expires and now > expires:
             remove_item_from_cart(self.request, uid)
             message = _('item_no_longer_buyable',
                         default=u'Item no longer buyable')
             message = translate(message, context=self.request)
             return {
                 'success': False,
                 'error': message,
                 'update': True,
             }
     return {
         'success': True,
         'error': '',
     }
Example #5
0
 def validate_set(self, uid):
     buyable = get_object_by_uid(self.context, uid)
     # check whether user can buy item
     sm = getSecurityManager()
     if not sm.checkPermission(permissions.BuyItems, buyable):
         remove_item_from_cart(self.request, uid)
         message = _(u'permission_not_granted_to_buy_item',
                     default=u'Permission to buy ${title} not granted.',
                     mapping={'title': buyable.Title()})
         message = translate(message, context=self.request)
         return {
             'success': False,
             'error': message,
             'update': True,
         }
     # check buyable period
     buyable_period = queryAdapter(buyable, IBuyablePeriod)
     if buyable_period:
         now = datetime.now()
         # effective date not reached yet
         effective = buyable_period.effective
         if effective and now < effective:
             remove_item_from_cart(self.request, uid)
             message = _('item_not_buyable_yet',
                         default=u'Item not buyable yet')
             message = translate(message, context=self.request)
             return {
                 'success': False,
                 'error': message,
                 'update': True,
             }
         # expires date exceed
         expires = buyable_period.expires
         if expires and now > expires:
             remove_item_from_cart(self.request, uid)
             message = _('item_no_longer_buyable',
                         default=u'Item no longer buyable')
             message = translate(message, context=self.request)
             return {
                 'success': False,
                 'error': message,
                 'update': True,
             }
     return {
         'success': True,
         'error': '',
     }