Blame repotypes/base.py

Ivan Mahonin e5b0ac
Ivan Mahonin e5b0ac
Ivan Mahonin e5b0ac
import os
Ivan Mahonin e5b0ac
Ivan Mahonin e5b0ac
Ivan Mahonin e5b0ac
class RepotypeBase:
Ivan Mahonin e5b0ac
  def __init__(self, name):
Ivan Mahonin e5b0ac
    self.name = name
Ivan Mahonin e5b0ac
    self.server = None
Ivan Mahonin e5b0ac
    self.config = None
Ivan Mahonin e5b0ac
    self.path = None
Ivan Mahonin e5b0ac
    
Ivan Mahonin e5b0ac
  def check_config(self, server, config):
Ivan Mahonin e5b0ac
    config['internalurl'] = str(config['internalurl'] or '')
Ivan Mahonin e5b0ac
    while config['internalurl'][-1] == '/':
Ivan Mahonin e5b0ac
      del config['internalurl'][-1]
Ivan Mahonin e5b0ac
    assert config['internalurl']
Ivan Mahonin e5b0ac
    config['path'] = server.fixpath(config['path'], root = True)
Ivan Mahonin e5b0ac
  
Ivan Mahonin e5b0ac
  def configure(self, server, config):
Ivan Mahonin e5b0ac
    self.server = server
Ivan Mahonin e5b0ac
    self.config = config
Ivan Mahonin e5b0ac
    self.check_config(self.server, self.config)
Ivan Mahonin e5b0ac
    self.internalurl = config['internalurl']
Ivan Mahonin e5b0ac
    self.path = config['path']
Ivan Mahonin e5b0ac
  
Ivan Mahonin e5b0ac
  def parentdir(self, path):
Ivan Mahonin e5b0ac
    assert type(path) is str
Ivan Mahonin e5b0ac
    assert path[0] == '/'
Ivan Mahonin e5b0ac
    assert path[-1] != '/'
Ivan Mahonin e5b0ac
    return '/'.join(path.split('/')[:-1])
Ivan Mahonin e5b0ac
  
Ivan Mahonin e5b0ac
  def mkdir(self, path):
Ivan Mahonin e5b0ac
    assert type(path) is str
Ivan Mahonin e5b0ac
    assert path[0] == '/'
Ivan Mahonin e5b0ac
    assert path[-1] != '/'
Ivan Mahonin e5b0ac
    os.makedirs(path, exist_ok = True)
Ivan Mahonin e5b0ac
          
Ivan Mahonin e5b0ac
  def gen_path(self, subpath):
Ivan Mahonin e5b0ac
    assert type(subpath) is str
Ivan Mahonin e5b0ac
    assert subpath[-1] != '/'
Ivan Mahonin e5b0ac
    return self.path + '/' + subpath
Ivan Mahonin e5b0ac
Ivan Mahonin e5b0ac
  def gen_internalurl(self, subpath):
Ivan Mahonin e5b0ac
    assert type(subpath) is str
Ivan Mahonin e5b0ac
    assert subpath[-1] != '/'
Ivan Mahonin e5b0ac
    return self.internalurl + '/' + subpath
Ivan Mahonin e5b0ac
Ivan Mahonin 61454c
  def iswriteaccess(self, request, path):
Ivan Mahonin 61454c
    return True
Ivan Mahonin 61454c
Ivan Mahonin e5b0ac
  def create(self, subpath):
Ivan Mahonin e5b0ac
    raise Exception()
Ivan Mahonin e5b0ac
Ivan Mahonin e5b0ac
  def delete(self, subpath):
Ivan Mahonin e5b0ac
    raise Exception()