Completed
Pull Request — master (#136)
by Jasper
01:18
created

BaseFile.viewSnapshot()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

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