Beispiel #1
0
    def post(self):
        try:
            sender = self.request.GET.get("from", "")
            if not sender or sender == '':
                self.error(500)
                return

            recipient = self.request.GET.get("to", "")
            if recipient == ADMIN_ADDRESS:
                mail.send_mail(sender=CONTACT_ADDRESS,
                               to=ADMIN_ADDRESS,
                               subject="mail to [email protected] from %s" % sender,
                               body=self.request.body)
                return
                
            message = email.message_from_string(self.request.body)

            for part in message.walk():
                if part.get_content_maintype() == 'multipart':
                    continue

                filename = part.get_filename()
                if filename and filename not in BAD_FILES:
                    ext = mimetypes.guess_extension(part.get_content_type())
                
                    if ext in ALLOWED_EXTENSIONS:
                        image = db.Blob(part.get_payload(decode=True))

                        ext = ext.replace('.', '')
                        # turn .jpe's into jpgs, there's no content/type: jpe
                        if ext == 'jpe': ext = 'jpg'
                        
                        image_id = ImageStore.add(image, ext=ext,
                                                  author=users.User(sender))

                        url = IMAGE_URL % image_id
                        mail.send_mail(sender=CONTACT_ADDRESS,
                                       to=sender,
                                       subject="tsurp: %s" % url,
                                       body=url)
                        logging.debug('sent image url %s to %s' % (url, sender))
                    else:
                        logging.debug('invalid ext for %s: %s' % (filename,
                                                                  ext))

        except apiproxy_errors.OverQuotaError, e:
            self.error(500)
            logging.debug('lost message for %s, over quota: %s.' % (sender, e))
Beispiel #2
0
    def post(self):
        try:
            if not isinstance(self.request.get('img'), str):
                self.redirect('/')
            image = db.Blob(self.request.get('img'))
            ext = self.request.POST.get('img').filename.split('.')[-1]
            author = users.get_current_user()
            title = self.request.get('title')

            image_id = ImageStore.add(image, ext=ext,
                                      author=author, title=title)

            self.redirect('/' + image_id)
        except Exception, e:
            self.error(500)
            logging.error('%s: %s' % (self.__class__.__name__,
                                     traceback.print_exc()))