Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/atoidepoc/storage/utils.py
blob: 56a74c498c22517e46eaee55a62714dece6c60f9 (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

# python import
import logging, os

# gtk import
import gtk

# sugar import
from sugar.activity import activity
from sugar.datastore import datastore

# get application logger
logger = logging.getLogger('atoidepoc')

ACTIVITY_NAMES = {
        'paint': 'org.laptop.Oficina'
        }


def get_pixbuf_from_data(data, image_type=None, size=None):
    # load it
    if image_type:
        _loader = gtk.gdk.PixbufLoader(image_type=image_type)
    else:
        _loader = gtk.gdk.PixbufLoader()
    # size check
    if size is None:
        pass
    else:
        # parse size
        _w, _h = size
        # set loader size
        _loader.set_size(_w, _h)
    # load date
    _loader.write(data)
    # close loader
    _loader.close()
    # pix it
    return _loader.get_pixbuf()


def get_journal_objects(activity_name):
    # prepare query
    _query = {'activity': ACTIVITY_NAMES[activity_name]}
    # find in ds
    _results, _count = datastore.find(_query, sorting='timestamp')
    # return it
    return _results


def list_info_from_journal(activity_name):
    # get objects first
    _objs = get_journal_objects(activity_name)
    # make unique titles
    _titles = {}
    # return infos
    for _o in _objs:
        # get meta
        _m = _o.get_metadata()
        # get title
        _t = _m['title']
        # little check
        if _t in _titles:
            # udpate reg
            _titles[_t] += 1
            # update value to show
            _t = '%s (%s)' % (_t, _titles[_t])
        # init title reg
        else:
            _titles[_t] = 1
        # ensure info
        yield {
                'description'   : _m['description'],
                'activity_id'   : _m['activity_id'],
                'timestamp'     : _m['timestamp'],
                'preview'       : _m['preview'],
                'title'         : _t,
                }


def list_files_from_journal(activity_name):
    # get objects first
    _objs = get_journal_objects(activity_name)
    # return paths
    for _o in _objs:
        # TODO open the files
        yield _o.get_file_path()


def open_file_from_journal(activity_name, file_id):
    pass