X-Git-Url: https://scm.cri.ensmp.fr/git/photoprint.git/blobdiff_plain/ccaba0f54cbd41250107d36a49154353425da8b3..b521f0db73266a7bd6b69e6a9891046a03c482ee:/Products/photoprint/skins/customer_add_control.py diff --git a/Products/photoprint/skins/customer_add_control.py b/Products/photoprint/skins/customer_add_control.py new file mode 100755 index 0000000..6efd42b --- /dev/null +++ b/Products/photoprint/skins/customer_add_control.py @@ -0,0 +1,63 @@ +##parameters=**kw +from Products.CMFCore.utils import getToolByName +from Products.photoprint.utils import translate +from Products.CMFDefault.utils import translate as cmf_translate +from Products.CMFCore.exceptions import AccessControl_Unauthorized +from Products.Plinn.RegistrationTool import MODE_PASS_ANONYMOUS +rtool = getToolByName(context, 'portal_registration') +ptool = getToolByName(context, 'portal_properties') +_ = lambda msg : translate(msg, context) + +kg = lambda name : kw.get(name, '').strip() + +cmfprops = {'username' : kg('member_id') + ,'email' : kg('member_email')} + +failMessage = rtool.testPropertiesValidity(cmfprops) +if failMessage is not None : + return context.setStatus(False, cmf_translate(failMessage, context)) + +mandatoryFields = [ + ('given_name', _('Please enter a given name.')) + , ('name', _('Please enter a name.')) + , ('member_email', _('Please enter an email.')) + , ('member_id', _('Please enter a member id.')) + , ('billing_address', _('Please enter a billing address.')) + , ('billing_city', _('Please enter a city.')) + , ('billing_zipcode', _('Please enter zip code.')) + , ('country', _('Please enter a country.')) + , ('phone', _('Please enter a phone.')) + ] + +for name, failMessage in mandatoryFields : + value = kg(name) + if not value : + return context.setStatus(False, failMessage) + + +try: + rtool.addMember( id=kg('member_id'), + password=kg('password'), + properties={'username' : kg('member_id') + ,'given_name' : kg('given_name') + ,'name' : kg('name') + ,'email' : kg('member_email') + ,'billing_address' : kg('billing_address') + ,'billing_city' : kg('billing_city') + ,'billing_zipcode' : kg('billing_zipcode') + ,'country' : kg('country') + ,'phone' : kg('phone') + ,'collection_id' : kg('collection_id') + ,'collection_password': kg('collection_password')} ) +except ValueError, errmsg: + return context.setStatus(False, _(errmsg)) +except AccessControl_Unauthorized : + if rtool.getMode() == MODE_PASS_ANONYMOUS : + return context.setStatus(False, _('Wrong private collection credentials.')) + raise + + +if kg('send_password') or ptool.getProperty('validate_email') : + rtool.registeredNotify(kg('member_id')) + +return context.setStatus(True, 'Success!')