def get_metadata_schema(cls): return merge_dicts(ShopFolder.get_metadata_schema(), data=XHTMLBody(multilingual=True), title=Unicode(multilingual=True), enabled=Boolean(default=True), only_this_groups=UserGroup_Enumerate(multiple=True), logo=ImagePathDataType(multilingual=True))
class PaymentWay_Configure(DBResource_Edit): access = 'is_admin' schema = { 'title': Unicode(mandatory=True, multilingual=True), 'logo': ImagePathDataType(mandatory=True, multilingual=True), 'data': XHTMLBody(mandatory=True, multilingual=True), 'only_this_groups': UserGroup_Enumerate(multiple=True), 'enabled': Boolean(mandatory=True) } widgets = [ TextWidget('title', title=MSG(u'Title')), ImageSelectorWidget('logo', title=MSG(u'Logo')), BooleanRadio('enabled', title=MSG(u'Enabled ?')), RTEWidget('data', title=MSG(u"Description")), SelectWidget('only_this_groups', title=MSG(u"Only for this groups")) ] submit_value = MSG(u'Edit configuration') def get_value(self, resource, context, name, datatype): language = resource.get_content_language(context) return resource.get_property(name, language=language) def action(self, resource, context, form): language = resource.get_content_language(context) for key, datatype in self.schema.items(): if getattr(datatype, 'multilingual', False): resource.set_property(key, form[key], language=language) else: resource.set_property(key, form[key]) return context.come_back(messages.MSG_CHANGES_SAVED, goto='./')
def get_schema(self, resource, context): product_model = resource.get_product_model() site_root = resource.get_site_root() shop = get_shop(site_root) # Cover is mandatory mandatory = shop.get_property('product_cover_is_mandatory') product_schema['cover'].mandatory = mandatory # Return schema return merge_dicts( product_schema, (product_model.get_model_schema() if product_model else {}), data=XHTMLBody(multilingual=True), category=CategoriesEnumerate, not_buyable_by_groups=UserGroup_Enumerate(multiple=True), tags=TagsList(site_root=site_root, multiple=True))
from itools.datatypes import Decimal from itools.gettext import MSG # Import from products from shop.products.enumerate import ProductModelsEnumerate from shop.datatypes import UserGroup_Enumerate class DeliveryModes(Enumerate): options = [{ 'name': 'weight', 'value': MSG(u'Depends of weight') }, { 'name': 'quantity', 'value': MSG(u'Depends of quantity') }] delivery_schema = { 'title': Unicode, 'logo': PathDataType, 'description': Unicode, 'enabled': Boolean(default=True), 'mode': DeliveryModes(default='weight'), 'only_this_models': ProductModelsEnumerate(multiple=True), 'only_this_groups': UserGroup_Enumerate(multiple=True), 'insurance': Decimal(default=decimal(0)), 'is_free': Boolean }