Example #1
0
  def get(self, media_id, unused_filename):
    def get_param(name, error_message=None):
      """Convenience function to get a parameter from request.

      Returns:
        String value of field if it exists, else ''.  If the key does not exist
        at all, it will return None.
      """
      try:
        value = self.request.params[name]
        if isinstance(value, cgi.FieldStorage):
          value = value.value
        return value or ''
      except KeyError:
        #error_messages.append(error_message)
        return None

    user_info = get_user_info()
    #if user_info is None and get_param("password") == "xx":
    #  user_info = UserInfo.get_by_key_name('user:[email protected]')      
    if user_info is None:
      self.redirect('/?error_message=%s' % 'log-in required')
    media_object = MediaObject.get_by_id(long(media_id), parent=user_info)
    if media_object is None:
      self.redirect('/?error_message=Unidentified+object')
      return

    last_modified_string = media_object.creation.strftime("%a, %d %b %Y %H:%M:%S GMT")
    self.response.headers['Cache-Control'] = "private"
    self.response.headers['Content-Type'] = str(media_object.guessed_type)
    self.response.headers['Last-Modified'] = last_modified_string
    expires = media_object.creation + datetime.timedelta(days=30)
    self.response.headers['Expires'] = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")

    # Caching
    if self.request.headers.has_key("If-Modified-Since"):
      ims = self.request.headers.get("If-Modified-Since")
      if ims == last_modified_string:
        self.error(304)
        return
      modsince = datetime.datetime.strptime(ims, "%a, %d %b %Y %H:%M:%S %Z")
      if modsince >= media_object.creation:
        self.error(304)
        return

    blob_key = media_object.blob.key()

    resize = self.request.get('resize')
    if resize:
      image = images.Image(blob_key=str(blob_key))
      image.resize(width=int(resize), height=int(resize))
      self.response.out.write(image.execute_transforms())
      return

    if 'Range' in self.request.headers:
      self.response.headers['Range'] = self.request.headers['Range']

    self.send_blob(blob_key, str(media_object.guessed_type))
Example #2
0
    def get(self, media_id, unused_filename):
        user_info = get_user_info()
        if user_info is None:
            self.redirect('/?error_message=%s' % 'log-in required')
        media_object = MediaObject.get_by_id(long(media_id), parent=user_info)
        if media_object is None:
            self.redirect('/?error_message=Unidentified+object')
            return

        last_modified_string = media_object.creation.strftime(
            "%a, %d %b %Y %H:%M:%S GMT")
        self.response.headers['Cache-Control'] = "public, max-age=31536000"
        self.response.headers['Content-Type'] = str(media_object.guessed_type)
        self.response.headers['Last-Modified'] = last_modified_string
        expires = media_object.creation + datetime.timedelta(days=30)
        self.response.headers['Expires'] = expires.strftime(
            "%a, %d %b %Y %H:%M:%S GMT")

        # Caching
        if self.request.headers.has_key("If-Modified-Since"):
            ims = self.request.headers.get("If-Modified-Since")
            if ims == last_modified_string:
                self.error(304)
                return
            modsince = datetime.datetime.strptime(ims,
                                                  "%a, %d %b %Y %H:%M:%S %Z")
            if modsince >= media_object.creation:
                self.error(304)
                return

        blob_key = media_object.blob.key()

        resize = self.request.get('resize')
        if resize:
            image = images.Image(blob_key=str(blob_key))
            image.resize(width=int(resize), height=int(resize))
            self.response.out.write(image.execute_transforms())
            return

        if 'Range' in self.request.headers:
            self.response.headers['Range'] = self.request.headers['Range']

        self.send_blob(blob_key, str(media_object.guessed_type))
Example #3
0
  def get(self, media_id, unused_filename):
    user_info = get_user_info()
    if user_info is None:
      self.redirect('/?error_message=%s' % 'log-in required')
    media_object = MediaObject.get_by_id(long(media_id), parent=user_info)
    if media_object is None:
      self.redirect('/?error_message=Unidentified+object')
      return

    last_modified_string = media_object.creation.strftime("%a, %d %b %Y %H:%M:%S GMT")
    self.response.headers['Cache-Control'] = "public, max-age=31536000"
    self.response.headers['Content-Type'] = str(media_object.guessed_type)
    self.response.headers['Last-Modified'] = last_modified_string
    expires = media_object.creation + datetime.timedelta(days=30)
    self.response.headers['Expires'] = expires.strftime("%a, %d %b %Y %H:%M:%S GMT")

    # Caching
    if self.request.headers.has_key("If-Modified-Since"):
      ims = self.request.headers.get("If-Modified-Since")
      if ims == last_modified_string:
        self.error(304)
        return
      modsince = datetime.datetime.strptime(ims, "%a, %d %b %Y %H:%M:%S %Z")
      if modsince >= media_object.creation:
        self.error(304)
        return

    blob_key = media_object.blob.key()

    resize = self.request.get('resize')
    if resize:
      image = images.Image(blob_key=str(blob_key))
      image.resize(width=int(resize), height=int(resize))
      self.response.out.write(image.execute_transforms())
      return

    if 'Range' in self.request.headers:
      self.response.headers['Range'] = self.request.headers['Range']

    self.send_blob(blob_key, str(media_object.guessed_type))
    def get(self, media_id, unused_filename):
        def get_param(name, error_message=None):
            """Convenience function to get a parameter from request.

      Returns:
        String value of field if it exists, else ''.  If the key does not exist
        at all, it will return None.
      """
            try:
                value = self.request.params[name]
                if isinstance(value, cgi.FieldStorage):
                    value = value.value
                return value or ''
            except KeyError:
                #error_messages.append(error_message)
                return None

        user_info = get_user_info()
        #if user_info is None and get_param("password") == "xx":
        #  user_info = UserInfo.get_by_key_name('user:[email protected]')
        if user_info is None:
            self.redirect('/?error_message=%s' % 'log-in required')
        media_object = MediaObject.get_by_id(long(media_id), parent=user_info)
        if media_object is None:
            self.redirect('/?error_message=Unidentified+object')
            return

        last_modified_string = media_object.creation.strftime(
            "%a, %d %b %Y %H:%M:%S GMT")
        self.response.headers['Cache-Control'] = "private"
        self.response.headers['Content-Type'] = str(media_object.guessed_type)
        self.response.headers['Last-Modified'] = last_modified_string
        expires = media_object.creation + datetime.timedelta(days=30)
        self.response.headers['Expires'] = expires.strftime(
            "%a, %d %b %Y %H:%M:%S GMT")

        # Caching
        if self.request.headers.has_key("If-Modified-Since"):
            ims = self.request.headers.get("If-Modified-Since")
            if ims == last_modified_string:
                self.error(304)
                return
            modsince = datetime.datetime.strptime(ims,
                                                  "%a, %d %b %Y %H:%M:%S %Z")
            if modsince >= media_object.creation:
                self.error(304)
                return

        blob_key = media_object.blob.key()

        resize = self.request.get('resize')
        if resize:
            image = images.Image(blob_key=str(blob_key))
            image.resize(width=int(resize), height=int(resize))
            self.response.out.write(image.execute_transforms())
            return

        if 'Range' in self.request.headers:
            self.response.headers['Range'] = self.request.headers['Range']

        self.send_blob(blob_key, str(media_object.guessed_type))