Пример #1
0
class UpYunStorage(Storage):
  def __init__(self, bucket=settings.UPYUN_BUCKET):
    self.upyun = UpYun(bucket, settings.UPYUN_USERNAME, settings.UPYUN_PASSWORD)
    self.upyun.setApiDomain(settings.UPYUN_API_DOMAIN)
    self.binding_domain = settings.IMG_CDN_DOMAIN


  def _open(self, name, mode='rb'):
    class UpYunFile(File):
      def __init__(self, name, upyun):
        self.name = name
        self.upyun = upyun

      def size(self):
        info = self.upyun.getFileInfo(name)
        if info:
          return info['size']
        return 0

      def read(self, *args, **kwargs):
        return self.upyun.readFile(self.name)

      def write(self, data):
        return self.upyun.writeFile(self.name, data)

      def close(self):
        return

    return UpYunFile(name, self.upyun)

  def _save(self, name, content):
    self.upyun.writeFile(name, content)
    return name

  def delete(self, name):
    self.upyun.deleteFile(name)

  def exists(self, name):
    return self.upyun.getFileInfo(name) != None

  def listdir(self, path):
    return [d.filename for d in self.upyun.readDir(path)]

  def path(self, name):
    raise NotImplementedError

  def size(self, name):
    info = self.upyun.getFileInfo(name)
    if info:
      return int(info['size'])
    return 0

  def url(self, name):
    return urljoin(self.binding_domain, name)

  def get_available_name(self, name):
    return name
Пример #2
0
 def __init__(self, bucket=settings.UPYUN_BUCKET):
   self.upyun = UpYun(bucket, settings.UPYUN_USERNAME, settings.UPYUN_PASSWORD)
   self.upyun.setApiDomain(settings.UPYUN_API_DOMAIN)
   self.binding_domain = settings.IMG_CDN_DOMAIN