def _validate_subscription(self, **kw): """ Validate add/edit subscription for authorized and anonymous users """ if (kw['notif_type'] not in self.available_notif_types(kw['location']) and not (kw['notif_type'] == 'administrative' and self.checkPermissionPublishObjects())): raise i18n_exception(ValueError, 'Subscribing to ${notif_type} ' 'notifications in "${location}" not allowed', location=kw['location'] or self.getSite().title, notif_type=kw['notif_type']) try: obj = self.getSite().restrictedTraverse(kw['location']) except: raise i18n_exception(ValueError, 'This path is invalid or protected') try: subscription_container = ISubscriptionContainer(obj) except: raise i18n_exception(ValueError, 'Cannot subscribe to this folder') if kw.get('anonymous', False): #Check if subscription exists for this anonymous subscriber if not is_valid_email(kw.get('email', '')): raise i18n_exception(ValueError, 'Your e-mail address does not appear to be valid.') for id, subscription in subscription_container.list_with_keys(): #Normal subscriptions don't have e-mail if isinstance(subscription, AnonymousSubscription): if (subscription.email == kw['email'] and subscription.notif_type == kw['notif_type'] and subscription.lang == kw['lang']): raise i18n_exception(ValueError, 'Subscription already exists')
def _validate_subscription(self, **kw): """ Validate add/edit subscription for authorized and anonymous users """ if kw['notif_type'] not in self.available_notif_types(kw['location']): raise i18n_exception(ValueError, 'Subscribing to notifications in ' '"${location}" not allowed', location=kw['location']) try: obj = self.getSite().restrictedTraverse(kw['location']) except: raise i18n_exception(ValueError, 'This path is invalid or protected') try: subscription_container = ISubscriptionContainer(obj) except: raise i18n_exception(ValueError, 'Cannot subscribe to this folder') if not kw.get('anonymous', False): n = utils.match_account_subscription(subscription_container, kw['user_id'], kw['notif_type'], kw['lang']) if n is not None: raise i18n_exception(ValueError, 'Subscription already exists') else: #Check if subscription exists for this anonymous subscriber if not is_valid_email(kw.get('email', '')): raise i18n_exception(ValueError, 'Your e-mail address does not appear to be valid.') for id, subscription in subscription_container.list_with_keys(): #Normal subscriptions don't have e-mail if isinstance(subscription, AnonymousSubscription): if (subscription.email == kw['email'] and subscription.notif_type == kw['notif_type'] and subscription.lang == kw['lang']): raise i18n_exception(ValueError, 'Subscription already exists')
def send_email(self, from_email, subject, body_text, cc_emails, REQUEST, to_uids=None): """ """ errors = [] if not to_uids: to_uids = [] if not (to_uids or cc_emails): errors.append('Please select at least on recipient') if not (subject or body_text): errors.append('Subject and message body cannot both be empty') for email in cc_emails: if not is_valid_email(email): errors.append('Invalid email "%s" in CC field' % email) if errors: self.setSessionErrorsTrans(errors) return REQUEST.RESPONSE.redirect(REQUEST.HTTP_REFERER) participants = self.getParticipants() subscriptions = participants.getSubscriptions() signup_emails = [participants.getAttendeeInfo(uid)['email'] for uid in to_uids if subscriptions._is_signup(uid)] account_emails = [participants.getAttendeeInfo(uid)['email'] for uid in to_uids if not subscriptions._is_signup(uid)] to_emails = signup_emails + account_emails if (self.eionet_meeting() and '*****@*****.**' not in cc_emails): cc_emails.append('*****@*****.**') # TODO validate cc_emails # We need to send the emails to signups one by one since each email # might be different (if they contain links to documents for # which the authentication keys is inserted into the link) for uid in to_uids: if subscriptions._is_signup(uid): signup_email = participants.getAttendeeInfo(uid)['email'] signup_body_text = self.insert_auth_link(body_text, uid) result = self._send_email( from_email, [signup_email], cc_emails, subject, signup_body_text, only_to=True) if account_emails: result = self._send_email(from_email, account_emails, cc_emails, subject, body_text) save_bulk_email(self.getSite(), to_emails, from_email, subject, body_text, where_to_save=path_in_site(self.getMeeting()), addr_cc=cc_emails) return self.getFormsTool().getContent( {'here': self, 'meeting': self.getMeeting(), 'result': result}, 'naaya.content.meeting.email_sendstatus')
def info_check(parent, request, ob): """ Receive and check what the user entered; save the name & email on the newly created object. """ errors = {} required = info_required(parent, request) # check Captcha/reCaptcha if required['captcha']: recaptcha_response = request.form.get('g-recaptcha-response', '') captcha_errors = parent.validateCaptcha(recaptcha_response, request) if captcha_errors: errors['captcha'] = captcha_errors # check name/email, if they are required if required['name_and_email']: info = { 'name': request.form.get('submitter-name', ''), 'email': request.form.get('submitter-email', ''), } request.SESSION['submitter-info'] = info name_and_email_errors = {} if not info['name']: name_and_email_errors['submitter-name'] = ([ "Submitter name is mandatory" ]) if not info['email']: name_and_email_errors['submitter-email'] = ([ "Submitter email is mandatory" ]) elif not is_valid_email(info['email']): name_and_email_errors['submitter-email'] = ([ "Invalid email address" ]) if name_and_email_errors: errors.update(name_and_email_errors) else: ob.submitter_info = info return errors
def info_check(parent, request, ob): """ Receive and check what the user entered; save the name & email on the newly created object. """ errors = {} required = info_required(parent, request) # check Captcha/reCaptcha if required['captcha']: recaptcha_response = request.form.get('g-recaptcha-response', '') captcha_errors = parent.validateCaptcha(recaptcha_response, request) if captcha_errors: errors['captcha'] = captcha_errors # check name/email, if they are required if required['name_and_email']: info = { 'name': request.form.get('submitter-name', ''), 'email': request.form.get('submitter-email', ''), } request.SESSION['submitter-info'] = info name_and_email_errors = {} if not info['name']: name_and_email_errors['submitter-name'] = ( ["Submitter name is mandatory"]) if not info['email']: name_and_email_errors['submitter-email'] = ( ["Submitter email is mandatory"]) elif not is_valid_email(info['email']): name_and_email_errors['submitter-email'] = ( ["Invalid email address"]) if name_and_email_errors: errors.update(name_and_email_errors) else: ob.submitter_info = info return errors
def info_check(parent, request, ob): """ Receive and check what the user entered; save the name & email on the newly created object. """ errors = {} required = info_required(parent, request) # check Captcha/reCaptcha if required["captcha"]: contact_word = request.form.get("contact_word", "") captcha_errors = parent.validateCaptcha(contact_word, request) if captcha_errors: errors["captcha"] = captcha_errors # check name/email, if they are required if required["name_and_email"]: info = {"name": request.form.get("submitter-name", ""), "email": request.form.get("submitter-email", "")} request.SESSION["submitter-info"] = info name_and_email_errors = {} if not info["name"]: name_and_email_errors["submitter-name"] = ["Submitter name is mandatory"] if not info["email"]: name_and_email_errors["submitter-email"] = ["Submitter email is mandatory"] elif not is_valid_email(info["email"]): name_and_email_errors["submitter-email"] = ["Invalid email address"] if name_and_email_errors: errors.update(name_and_email_errors) else: ob.submitter_info = info return errors