Example #1
0
 def post(self):
     '''email address has been entered
     
     validate and send the confirmation mail'''
     to_address_1 = self.request.get('to_1')
     to_address_2 = self.request.get('to_2')
     if not to_address_1 == to_address_2:
         self.redirect('/abo/subscribe?error=mails')
     else:
         key = str(uuid().int)
         logging.error('%s' % key)
         confirmation_link = '%s/abo/confirm/%s' % (conf.host, key)
         mail_content = render('subscribe_mail.txt',
                 {'link':confirmation_link,
                  'host':conf.host,
                  'sender_mail':conf.mail_from_address,
                  'sender_name':conf.mail_from_name
                 }
         )
         query = Subscription.all().filter('email =', to_address_1)
         if query.count(): # email has been submitted before
             prev_mail = query.get()
             if prev_mail.active:
                 logging.debug('Repeat subscription: %s' % prev_mail.email)
                 self.redirect('/abo/success')
             else:
                 logging.debug('New subscription key for %s' %
                         prev_mail.email)
                 prev_mail.delete()
         subscription = Subscription(email=to_address_1,
                            validation_key=key,
                            active=False)
         subscription.put()
         logging.info('New subscription: %s' % subscription.email)
         logging.debug('Sending confirmation mail to %s' % to_address_1)
         mail.send_mail(
             sender='%s (Photoblog) <%s>' % (conf.mail_from_name,
                                             conf.mail_from_address
                                             ),
             to=to_address_1,
             subject=conf.mail_confirmation_subject,
             body = mail_content
         )
         self.redirect('/abo/success')