control.py 917 B

1234567891011121314151617181920212223242526272829303132
  1. import os
  2. import json
  3. import hashlib
  4. from sqlalchemy import create_engine
  5. from sqlalchemy.orm import sessionmaker
  6. from models import Dataset
  7. DB_NAME = 'nova.db'
  8. def database_uri(path='.'):
  9. return 'sqlite:///{}'.format(os.path.join(os.path.abspath(path), DB_NAME))
  10. class Control(object):
  11. def __init__(self, path='.'):
  12. self.path = os.path.abspath(path)
  13. self.engine = create_engine(database_uri(path))
  14. self.session_factory = sessionmaker(bind=self.engine)
  15. self.session = self.session_factory()
  16. def create_dataset(self, user, name, parent=None):
  17. if parent:
  18. parent = self.session.query(Dataset).filter(Dataset.name == parent).first()
  19. path = hashlib.sha256(user.name + name).hexdigest()
  20. dataset = Dataset(name=name, owner=user, path=path, parent=[parent])
  21. abspath = os.path.join(self.path, path)
  22. os.makedirs(abspath)