author | Tero Marttila <terom@fixme.fi> |
Wed, 01 Jul 2009 20:46:27 +0300 | |
changeset 142 | 2b8dfacc6d2d |
parent 135 | 6534c77de93f |
child 144 | 97505a789003 |
permissions | -rw-r--r-- |
51
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
1 |
""" |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
2 |
Configuration |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
""" |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
4 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
5 |
import copy, logging |
142
2b8dfacc6d2d
externalize footer contents from template into config
Tero Marttila <terom@fixme.fi>
parents:
135
diff
changeset
|
6 |
import templates |
67 | 7 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
8 |
class InstanceContext (object) : |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
9 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
10 |
An object that behaves like a dict, performing all item lookups as attribute lookups on the given object. |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
11 |
|
134
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
12 |
Additionally, it only lets you re-bind existing attributes via setitem, raising AttributeError if setting |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
13 |
unknown attributes. |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
14 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
15 |
Useful for binding an exec statement's locals. |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
16 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
17 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
18 |
def __init__ (self, obj) : self.obj = obj |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
19 |
def __getitem__ (self, key) : return getattr(self.obj, key) |
134
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
20 |
def __setitem__ (self, key, value) : |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
21 |
""" |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
22 |
Replace the named attribute, asserting that the target has such an attribute. |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
23 |
""" |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
24 |
|
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
25 |
# test |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
26 |
if hasattr(self.obj, key) : |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
27 |
setattr(self.obj, key, value) |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
28 |
|
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
29 |
else : |
ea05fe81ff67
modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents:
120
diff
changeset
|
30 |
raise AttributeError(key) |
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
31 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
32 |
class ConfigurationMachinery (object) : |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
33 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
34 |
The low-level configuration machinery. |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
35 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
36 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
37 |
def import_py (self, path) : |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
38 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
39 |
Import python-style configuration from the given File object into this one. |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
40 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
41 |
This runs the file's code using exec, using a context mapped to this object. |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
42 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
43 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
44 |
# the code |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
45 |
file = open(path) |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
46 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
47 |
# build suitable locals/globals to proxy this object |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
48 |
locals = InstanceContext(self) |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
49 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
50 |
# run |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
51 |
exec file in {}, locals |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
52 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
53 |
def import_file (self, path) : |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
54 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
55 |
Import configuration from the given File into this one. |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
56 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
57 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
58 |
# as python code |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
59 |
self.import_py(path) |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
60 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
61 |
def load (self, path) : |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
62 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
63 |
Loads the configuration from the given File, creating a new Configuration with defaults from this one. |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
64 |
""" |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
65 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
66 |
# copy ourself |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
67 |
new = copy.copy(self) |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
68 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
69 |
# import into it |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
70 |
new.import_file(path) |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
71 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
72 |
# return |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
73 |
return new |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
74 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
75 |
class Configuration (ConfigurationMachinery) : |
51
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
76 |
""" |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
77 |
Various configuration settings |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
78 |
""" |
67 | 79 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
80 |
# the path to the gallery root |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
81 |
# only valid in top-level config |
60
406da27a4be2
do some filesystem.Path stuff, and read_only mode
Tero Marttila <terom@fixme.fi>
parents:
57
diff
changeset
|
82 |
gallery_path = "." |
87
a7a18893730d
implement up-to-date checking for commands.main, and add --force-update option
Tero Marttila <terom@fixme.fi>
parents:
77
diff
changeset
|
83 |
|
a7a18893730d
implement up-to-date checking for commands.main, and add --force-update option
Tero Marttila <terom@fixme.fi>
parents:
77
diff
changeset
|
84 |
# force-update items |
101
698dc68a985d
split --force-update into --force-thumb/--force-html options, implement for main
Tero Marttila <terom@fixme.fi>
parents:
87
diff
changeset
|
85 |
force_thumb = False |
698dc68a985d
split --force-update into --force-thumb/--force-html options, implement for main
Tero Marttila <terom@fixme.fi>
parents:
87
diff
changeset
|
86 |
force_html = False |
60
406da27a4be2
do some filesystem.Path stuff, and read_only mode
Tero Marttila <terom@fixme.fi>
parents:
57
diff
changeset
|
87 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
88 |
def get_force_update (self) : |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
89 |
return self.force_thumb or self.force_html |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
90 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
91 |
def set_force_update (self, value) : |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
92 |
self.force_thumb = self.force_html = value |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
93 |
|
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
94 |
force_update = property(get_force_update, set_force_update) |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
95 |
|
67 | 96 |
# minimum logging level |
97 |
log_level = logging.INFO |
|
98 |
||
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
99 |
def quiet (self) : self.log_level = logging.WARN |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
100 |
def debug (self) : self.log_level = logging.DEBUG |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
101 |
|
117 | 102 |
# number of threads to use for concurrency |
135
6534c77de93f
urlencode native filesystem node paths for template's http URLs
Tero Marttila <terom@fixme.fi>
parents:
134
diff
changeset
|
103 |
# use some heuristic? |
117 | 104 |
thread_count = 2 |
105 |
||
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
106 |
# the name of this folder, only applies on one level |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
107 |
# default applies to the root gallery |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
108 |
title = "Image Gallery" |
51
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
109 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
110 |
# recognized image extensions, case-insensitive |
51
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
111 |
image_exts = ('jpg', 'jpeg', 'png', 'gif', 'bmp') |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
112 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
113 |
# subdirectory names used for generated thumbnails/previews |
51
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
114 |
thumb_dir = 'thumbs' |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
115 |
preview_dir = 'previews' |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
116 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
117 |
# size of generated thumbnails/previews as (width, height) tuples |
51
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
118 |
thumb_size = (160, 120) |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
119 |
preview_size = (640, 480) |
0f39cb5e4b11
start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
120 |
|
57
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
121 |
# number of images displayed per folder page |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
122 |
images_per_page = 50 |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
123 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
124 |
# load Exif data for images, this may be slow |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
125 |
with_exif = False |
111
ecceaf23c969
make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents:
109
diff
changeset
|
126 |
|
120
55cb7fc9c8fb
add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents:
118
diff
changeset
|
127 |
# name of Exif handler to use |
55cb7fc9c8fb
add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents:
118
diff
changeset
|
128 |
exif_handler_name = None |
55cb7fc9c8fb
add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents:
118
diff
changeset
|
129 |
|
55cb7fc9c8fb
add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents:
118
diff
changeset
|
130 |
# explicit Exif handler class |
55cb7fc9c8fb
add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents:
118
diff
changeset
|
131 |
exif_handler = None |
55cb7fc9c8fb
add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents:
118
diff
changeset
|
132 |
|
57
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
133 |
# exif tags used in output |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
134 |
# Copyright (C) 2008, Santtu Pajukanta <santtu@pajukanta.fi> |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
135 |
# XXX: import from dexif? |
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
136 |
exif_tags = ( |
57
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
137 |
# TODO Create date is in a useless format, needs some strptime love |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
138 |
("CreateDate", "Create date" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
139 |
("Model", "Camera model" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
140 |
("Aperture", "Aperture" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
141 |
("ExposureMode", "Exposure mode" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
142 |
("ExposureCompensation", "Exposure compensation" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
143 |
("ExposureTime", "Exposure time" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
144 |
("Flash", "Flash mode" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
145 |
("ISO", "ISO" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
146 |
("ShootingMode", "Shooting mode" ), |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
147 |
("LensType", "Lens type" ), |
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
148 |
("FocalLength", "Focal length" ), |
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
149 |
) |
60
406da27a4be2
do some filesystem.Path stuff, and read_only mode
Tero Marttila <terom@fixme.fi>
parents:
57
diff
changeset
|
150 |
|
142
2b8dfacc6d2d
externalize footer contents from template into config
Tero Marttila <terom@fixme.fi>
parents:
135
diff
changeset
|
151 |
# footer text HTML element, must use html.raw if this includes formatting |
2b8dfacc6d2d
externalize footer contents from template into config
Tero Marttila <terom@fixme.fi>
parents:
135
diff
changeset
|
152 |
footer = templates.footer |
2b8dfacc6d2d
externalize footer contents from template into config
Tero Marttila <terom@fixme.fi>
parents:
135
diff
changeset
|
153 |
|
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
154 |
# XXX: move elsewhere? |
57
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
155 |
def is_image (self, file) : |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
156 |
""" |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
157 |
Tests if the given File is an image, based on its file extension |
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
158 |
|
57
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
159 |
""" |
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
160 |
|
8d06e0283b88
start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents:
51
diff
changeset
|
161 |
return file.matchext(self.image_exts) |
118
60b126ff0b74
configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents:
117
diff
changeset
|
162 |