[go: up one dir, main page]

File: storage.py

package info (click to toggle)
cozy 1.3.0-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 3,140 kB
  • sloc: python: 8,014; xml: 392; makefile: 2
file content (71 lines) | stat: -rw-r--r-- 1,834 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
from pathlib import Path

from peewee import SqliteDatabase

from cozy.db.storage import Storage as StorageModel


class InvalidPath(Exception):
    pass


class Storage:
    def __init__(self, db: SqliteDatabase, db_id: int):
        self._db: SqliteDatabase = db
        self.id: int = db_id

        self._get_db_object()

    @staticmethod
    def new(db: SqliteDatabase, path: str):
        db_obj = StorageModel.create(path=path)
        return Storage(db, db_obj.id)

    def _get_db_object(self):
        self._db_object: StorageModel = StorageModel.get(self.id)

    @property
    def db_object(self):
        return self._db_object

    @property
    def path(self):
        return self._db_object.path

    @path.setter
    def path(self, path: str):
        if not Path(path).is_absolute():
            raise InvalidPath

        self._db_object.path = path
        self._db_object.save(

    @property
    def location_type(self):
        return self._db_object.location_type

    @location_type.setter
    def location_type(self, new_location_type: int):
        self._db_object.location_type = new_location_type
        self._db_object.save(

    @property
    def default(self):
        return self._db_object.default

    @default.setter
    def default(self, new_default: bool):
        self._db_object.default = new_default
        self._db_object.save(

    @property
    def external(self):
        return self._db_object.external

    @external.setter
    def external(self, new_external: bool):
        self._db_object.external = new_external
        self._db_object.save(

    def delete(self):
        self._db_object.delete_instance(recursive=True, delete_nullable=False)