def __call__(self, context): # Just an example list of content for our vocabulary, # this can be any static or dynamic data, a catalog result for example. items = [ VocabItem(u'level_D', _(u'level_D')), VocabItem(u'level_C', _(u'level_C')), VocabItem(u'level_B', _(u'level_B')), VocabItem(u'level_A', _(u'level_A')), ] # Fix context if you are using the vocabulary in DataGridField. # See https://github.com/collective/collective.z3cform.datagridfield/issues/31: # NOQA: 501 if not IDexterityContent.providedBy(context): req = getRequest() context = req.PARENTS[0] # create a list of SimpleTerm items: terms = [] for item in items: terms.append( SimpleTerm( value=item.token, token=str(item.token), title=item.value, )) # Create a SimpleVocabulary from the terms list and return it: return SimpleVocabulary(terms)
def setWishList(self, wishItemUID): user = api.user.get_current() wishList = user.getProperty('wishList') checkUID = api.content.find(portal_type='Product', UID=wishItemUID) if len(checkUID) > 0: if wishList: if wishItemUID not in wishList: wishList = wishList.split(', ') wishList.append(wishItemUID) wishList = ', '.join(wishList) else: msg = _(u'Add WishList Repeat!!') trans_msg = api.portal.translate( msg, lang=self.context.Language()) return json.dumps({'error': trans_msg}) else: wishList = str(wishItemUID) alsoProvides(self.request, IDisableCSRFProtection) user.setMemberProperties(mapping={'wishList': wishList}) msg = _(u'Add WishList Success!!') trans_msg = api.portal.translate(msg, lang=self.context.Language()) return json.dumps({'success': trans_msg}) else: msg = _(u'wishItemUID is not valid!!') trans_msg = api.portal.translate(msg, lang=self.context.Language()) return json.dumps({'error': trans_msg})
class IProductimg(model.Schema): title = schema.TextLine(title=_(u'Title'), required=False) image = namedfile.NamedBlobImage( title=_(u'Product Image'), required=True, )
class IInform(Form.Schema): email = schema.Text( title=_(u'email'), required=False, ) cellphone = schema.Text( title=_(u'cellphone'), required=False, ) address = schema.Text(title=_(u'address'), required=False)
def email_invariant(data): com_email = data.email r_email = data.r_email if com_email: for email in com_email.split('\r\n'): if not re.match( r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", email): raise Invalid(_(u'Your Email is not valid!')) if r_email and not re.match( r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", r_email): raise Invalid(_(u'Receive Email is not valid!'))
class IDict(Form.Schema): sortList = schema.Text( title=_(u'store category and subject'), required=False, ) brandList = schema.Text( title=_(u'store brand count number'), required=False, ) productData = schema.Text( title=_(u'store full product data'), required=False )
def __call__(self): query = self.request.form.copy() if not api.user.is_anonymous(): if query.has_key('wishItemUID'): wishItemUID = query['wishItemUID'] return self.delWishList(wishItemUID) else: msg = _(u'Query string supplied is not valid') trans_msg = api.portal.translate(msg, lang=self.context.Language()) return json.dumps({'error': trans_msg}) else: msg = _(u'Add WishList Must Be Login!!') trans_msg = api.portal.translate(msg, lang=self.context.Language()) return json.dumps({'error': trans_msg})
class IProductreview(model.Schema): title = schema.TextLine( title=_(u'Title'), required=False ) review = schema.Text( title=_(u'Review'), required=False ) rating = schema.TextLine( title=_(u'Rating'), required=False )
def __call__(self): self.viewTitle = _(u'Contact Us') self.address = api.portal.get_registry_record('address', interface=IInform) self.cellphone = api.portal.get_registry_record('cellphone', interface=IInform) request = self.request name = request.get('name', '') email = request.get('email', '') message = request.get('message', '') if name and email and message: body_str = """Name:{}<br/>Email:{}<br/>Message:{}""".format( name, email, message) mime_text = MIMEText(body_str, 'html', 'utf-8') r_email = api.portal.get_registry_record('r_email', interface=IInform) or '' api.portal.send_email( recipient=r_email, sender=email, subject="Contact Us From {}".format(name), body=mime_text.as_string(), ) api.portal.show_message(message='發送成功!'.decode('utf-8'), request=request) return self.template()
def __call__(self): self.viewTitle = _(u'Confirm Cart') request = self.request abs_url = api.portal.get().absolute_url() cookie_shop_cart = request.cookies.get('shop_cart') if not cookie_shop_cart or not json.loads(cookie_shop_cart): api.portal.show_message(message='Shop Cart Is Empty', request=request, type='warn') request.response.redirect('%s/products' % abs_url) return shop_cart = json.loads(request.cookies['shop_cart']) uidList = shop_cart.keys() productData = [] totalNumber = 0 for uid in uidList: product = api.content.get(UID=uid) if product: amount = int(shop_cart[str(uid)]) title = product.title price = product.price salePrice = product.salePrice abs_url = product.absolute_url() totalNumber += self.salePrice(product) * amount productData.append( [title, price, salePrice, abs_url, amount, uid, product]) self.totalNumber = totalNumber self.productData = productData return self.template()
def __call__(self): self.viewTitle = _(u'Return') request = self.request first_name = request.get('first_name') last_name = request.get('last_name') phone = request.get('phone') product_name = request.get('product_name') product_code = request.get('product_code') date = request.get('date') opened = request.get('opened') order_id = request.get('order_id') reason = request.get('reason') amount = request.get('amount') detail = request.get('detail') if first_name and last_name: body_str = """fisrst_name:%s<br>last_name:%s<br>phone:%s<br>date:%s<br>order_id:%s<br>product_name:%s<br>product_code:%s<br> amount:%s<br>reason:%s<br>opened:%s<br>detail:%s<br> """ % (first_name, last_name, phone, date, order_id, product_name, product_code, amount, reason, opened, detail) mime_text = MIMEText(body_str, 'html', 'utf-8') api.portal.send_email( recipient="*****@*****.**", sender="*****@*****.**", subject="退貨申請", body=mime_text.as_string(), ) return self.template()
class IMapCategory(model.Schema): """ """ mapCategory = schema.Choice( title=_(u'Map Category'), vocabulary='alpha.content.MapCategory', )
class IUser(Form.Schema): promoCode = schema.Dict( title=_(u'Exist PromoCode'), key_type=schema.ASCIILine(), value_type=schema.ASCIILine(), required=False, )
class IInform(Form.Schema): description = schema.Text( title=_(u'Company Description'), required=False, ) email = schema.Text( title=_(u'email'), required=False, ) cellphone = schema.Text( title=_(u'cellphone'), required=False, ) address = schema.Text(title=_(u'address'), required=False) r_email = schema.TextLine( title=_(u'Recipient Email'), required=False, ) fb_link = schema.TextLine( title=_(u'Facebook Link'), required=False, ) weibo_link = schema.TextLine( title=_(u'Weibo Link'), required=False, ) youku_link = schema.TextLine( title=_(u'Youku Link'), required=False, ) youtube_link = schema.TextLine( title=_(u'Youtube Link'), required=False, ) @invariant def email_invariant(data): com_email = data.email r_email = data.r_email if com_email: for email in com_email.split('\r\n'): if not re.match( r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", email): raise Invalid(_(u'Your Email is not valid!')) if r_email and not re.match( r"^[A-Za-z0-9\.\+_-]+@[A-Za-z0-9\._-]+\.[a-zA-Z]*$", r_email): raise Invalid(_(u'Receive Email is not valid!'))
def test_vocab_map_category(self): vocab_name = 'alpha.content.MapCategory' factory = getUtility(IVocabularyFactory, vocab_name) self.assertTrue(IVocabularyFactory.providedBy(factory)) vocabulary = factory(self.portal) self.assertTrue(IVocabularyTokenized.providedBy(vocabulary)) self.assertEqual( vocabulary.getTerm('sony-a7r-iii').title, _(u'Sony Aplha 7R III'), )
def __call__(self): self.viewTitle = _('Brands') brandList = {} productBrains = api.content.find(context=api.portal.get()['products'], portal_type='Product') for item in productBrains: obj = item.getObject() brand = obj.brand firstLetter = brand[0] if brandList.has_key(firstLetter): if brand not in brandList[firstLetter]: brandList[firstLetter].append(brand) else: brandList[firstLetter] = [brand] self.brandList = brandList return self.template()
def __call__(self): self.viewTitle = _(u'Personal Details') if not api.user.is_anonymous(): formdata = self.request.form if formdata.has_key('email') and formdata.has_key('fName'): formNameList = ['fName' , 'lName', 'email', 'phone' , 'fax' , 'company', 'address1', 'address2', 'city' , 'zip' , 'country', 'state', 'newsletter'] self.setProperties(formNameList) current_url = self.request.URL self.request.response.redirect(current_url) return self.template() else: portal_url = self.context.portal_url() self.request.response.redirect(portal_url+'/login')
def __call__(self): self.viewTitle = _(u'Compare List') request = self.request json_compare_list = request.cookies.get('compare_list') data = [] if json_compare_list: compare_list = json.loads(json_compare_list) for item in compare_list: contents = api.content.find(UID=item) for brain in contents: data.append(brain) self.data = data else: self.data = False return self.template()
def price_invariant(data): if data.price < data.salePrice: raise Invalid(_(u'The sale price is bigger than price!')) if data.price < data.disc_amount: raise Invalid(_(u'The Discount Amount is bigger than price!'))
def viewTitle(self): viewTitle = _(u'Wish List') return viewTitle
# -*- coding: utf-8 -*- from alpha.content import _ from plone.app.registry.browser.controlpanel import RegistryEditForm from plone.app.registry.browser.controlpanel import ControlPanelFormWrapper from zope import schema from plone.z3cform import layout from z3c.form import form from plone.directives import form as Form class IUser(Form.Schema): promoCode = schema.Dict( title=_(u'Exist PromoCode'), key_type=schema.ASCIILine(), value_type=schema.ASCIILine(), required=False, ) class UserControlPanelForm(RegistryEditForm): form.extends(RegistryEditForm) schema = IUser CustomControlPanelView = layout.wrap_form(UserControlPanelForm, ControlPanelFormWrapper) CustomControlPanelView.label = _(u"User PromoCode")
from zope import schema from plone.z3cform import layout from z3c.form import form from plone.directives import form as Form class IDict(Form.Schema): sortList = schema.Text( title=_(u'store category and subject'), required=False, ) brandList = schema.Text( title=_(u'store brand count number'), required=False, ) productData = schema.Text( title=_(u'store full product data'), required=False ) class CategoriesControlPanelForm(RegistryEditForm): form.extends(RegistryEditForm) schema = IDict CustomControlPanelView = layout.wrap_form(CategoriesControlPanelForm, ControlPanelFormWrapper) CustomControlPanelView.label = _(u"Custom Related Setting")
def viewTitle(self): viewTitle = _(u'Order History') return viewTitle
class IProduct(model.Schema): fieldset(_('Product Info'), fields=[ 'title', 'productNo', 'rating', 'cover', 'description', 'category', 'subcategory', 'relatedProduct' ]) title = schema.TextLine( title=_(u'Title'), required=True, ) productNo = schema.TextLine( title=_(u'Product Number'), required=True, ) rating = schema.Int( title=_(u'Rating'), required=True, default=4, constraint=rating_constraint, ) cover = namedfile.NamedBlobImage( title=_(u'Cover Image'), required=True, ) description = schema.Text(title=_(u'Description'), required=False) category = schema.TextLine(title=_(u'Category'), required=True) subcategory = schema.TextLine(title=_(u'Subcategory'), required=True) relatedProduct = RelationList( title=_(u"Related Product"), default=[], value_type=RelationChoice(title=_(u"Related"), source=CatalogSource(portal_type='Product')), required=False, ) fieldset(_('More Info'), fields=[ 'brand', 'productCode', 'availability', 'downloadFile', 'feature', 'specification' ]) brand = schema.TextLine(title=_(u'Brand'), required=True) productCode = schema.TextLine(title=_(u'Product Code'), required=False) availability = schema.Bool(title=(u'Availability'), default=True, required=False) downloadFile = namedfile.NamedBlobFile( title=_(u'Download File'), required=False, ) feature = RichText(title=_(u'Feature'), required=False) specification = schema.List( title=_(u'specification'), description=_(u'ex. clockspeed:100mhz'), value_type=schema.TextLine(), required=False, ) fieldset(_('Product Price'), fields=[ 'price', 'salePrice', 'l_c_price', 'l_b_price', 'l_a_price', 'disc_amount' ]) price = schema.Int( title=_(u'Price'), description=_(u'Enter USD$'), required=True, ) salePrice = schema.Int( title=_(u'Sale Price'), description=_(u'Enter USD$'), required=True, ) l_c_price = schema.Int(title=_(u'Level C Group Price'), description=_(u'Enter USD$'), required=False) l_b_price = schema.Int(title=_(u'Level B Group Price'), description=_(u'Enter USD$'), required=False) l_a_price = schema.Int(title=_(u'Level A Group Price'), description=_(u'Enter USD$'), required=False) disc_amount = schema.Int(title=_(u'Discount Amount'), description=_(u'Enter USD$'), default=0, min=0, required=False) @invariant def price_invariant(data): if data.price < data.salePrice: raise Invalid(_(u'The sale price is bigger than price!')) if data.price < data.disc_amount: raise Invalid(_(u'The Discount Amount is bigger than price!')) fieldset(_('Slider'), fields=['img1', 'img2', 'img3', 'img4']) img1 = NamedBlobImage( title=_(u"Slider Image1"), required=False, ) img2 = NamedBlobImage( title=_(u"Slider Image2"), required=False, ) img3 = NamedBlobImage( title=_(u"Slider Image3"), required=False, ) img4 = NamedBlobImage( title=_(u"Slider Image4"), required=False, ) fieldset(_('Index Information'), fields=['indexCategory', 'bestSeller', 'timeLimit']) directives.widget(indexCategory=CheckBoxFieldWidget) indexCategory = schema.List( title=_(u"Index Category"), description= _(u'Select the classification of this product (Most View, Special, Latest)' ), value_type=schema.Choice(vocabulary=categoryVocabulary, ), required=False, ) bestSeller = schema.Bool( title=_(u"Best Seller"), required=False, ) timeLimit = schema.Datetime( title=_(u'Time Limit'), description= _(u'If you want to set the time limit, you must put this product in the "Promotions" folder' ), constraint=future_date, required=False, )
class Register(RegistrationForm): RegistrationForm.template = ViewPageTemplateFile( 'templates/register_form.pt') RegistrationForm.viewTitle = _(u'Register')
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm from z3c.form import validator from plone.directives import form from plone.autoform import directives from z3c.form.browser.checkbox import CheckBoxFieldWidget import zope.component import zope.interface from zope.interface import Invalid from zope.interface import invariant from zope import schema from zope.interface import implementer from alpha.content import _ import datetime categoryVocabulary = SimpleVocabulary([ SimpleTerm(value=u'mostView', title=_(u'Most View')), SimpleTerm(value=u'special', title=_(u'Special')), SimpleTerm(value=u'latest', title=_(u'Latest')) ]) def rating_constraint(value): if value <= 0 or value > 5: raise Invalid(_(u'Please enter 1 to 5 in the Rating field')) return True def future_date(value): if value and not value >= datetime.datetime.today(): raise Invalid(_(u"Time limit date can not be before today.")) return True
from alpha.content import _ from plone.app.registry.browser.controlpanel import RegistryEditForm from plone.app.registry.browser.controlpanel import ControlPanelFormWrapper from zope import schema from plone.z3cform import layout from z3c.form import form from plone.directives import form as Form class IInform(Form.Schema): email = schema.Text( title=_(u'email'), required=False, ) cellphone = schema.Text( title=_(u'cellphone'), required=False, ) address = schema.Text(title=_(u'address'), required=False) class BasicInformControlPanelForm(RegistryEditForm): form.extends(RegistryEditForm) schema = IInform CustomControlPanelView = layout.wrap_form(BasicInformControlPanelForm, ControlPanelFormWrapper) CustomControlPanelView.label = _(u"Basic Inform")
def rating_constraint(value): if value <= 0 or value > 5: raise Invalid(_(u'Please enter 1 to 5 in the Rating field')) return True
def viewTitle(self): viewTitle = _(u'Search') return viewTitle
def future_date(value): if value and not value >= datetime.datetime.today(): raise Invalid(_(u"Time limit date can not be before today.")) return True