BaseFile.viewSnapshot()   A
last analyzed

Complexity

Conditions 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
c 2
b 0
f 0
dl 0
loc 4
rs 10
1
import copy
2
from niprov.dependencies import Dependencies
3
import niprov.comparing
4
5
6
class BaseFile(object):
7
8
    def __init__(self, location, provenance=None, dependencies=Dependencies()):
9
        self.dependencies = dependencies
10
        self.listener = dependencies.getListener()
11
        self.filesystem = dependencies.getFilesystem()
12
        self.hasher = dependencies.getHasher()
13
        self.location = dependencies.getLocationFactory().fromString(location)
14
        self.formats = dependencies.getFormatFactory()
15
        self.pictures = dependencies.getPictureCache()
16
        if provenance:
17
            self.provenance = provenance
18
        else:
19
            self.provenance = {}
20
        self.provenance.update(self.location.toDictionary())
21
        self.path = self.provenance['path']
22
        self.status = 'new'
23
24
    def inspect(self):
25
        self.provenance['size'] = self.filesystem.getsize(self.path)
26
        self.provenance['created'] = self.filesystem.getctime(self.path)
27
        self.provenance['hash'] = self.hasher.digest(self.path)
28
        if not 'modality' in self.provenance:
29
            self.provenance['modality'] = 'other'
30
        return self.provenance
31
32
    def attach(self, form='json'):
33
        """
34
        Not implemented for BaseFile parent class.
35
36
        Args:
37
            form (str): Data format in which to serialize provenance. Defaults 
38
                to 'json'.
39
        """
40
        pass
41
42
    def getProvenance(self, form='dict'):
43
        return self.formats.create(form).serialize(self)
44
45
    def getSeriesId(self):
46
        pass
47
48
    @property
49
    def parents(self):
50
        return self.provenance.get('parents', [])
51
52
    @property
53
    def versions(self):
54
        return self.provenance.get('_versions', [])
55
56
    def compare(self, other):
57
        return niprov.comparing.compare(self, other, self.dependencies)
58
59
    def getProtocolFields(self):
60
        return None
61
62
    def viewSnapshot(self):
63
        viewer = self.dependencies.getMediumFactory().create('viewer')
64
        snapshot = self.pictures.getFilepath(for_=self)
65
        viewer.export(snapshot)
66
67
    def getSnapshotFilepath(self):
68
        return self.pictures.getFilepath(for_=self)
69
70
    def keepVersionsFromPrevious(self, previous):
71
        history = previous.provenance.get('_versions', [])
72
        prevprov = copy.copy(previous.provenance)
73
        if '_versions' in prevprov:
74
            del prevprov['_versions']
75
        history.append(prevprov)
76
        self.provenance['_versions'] = history
77
        self.status = 'new-version'
78
79