eggification
[photoprint.git] / 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 (executable)
index 0000000..6efd42b
--- /dev/null
@@ -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!')