equal
deleted
inserted
replaced
2 Per-directory gallery state |
2 Per-directory gallery state |
3 """ |
3 """ |
4 |
4 |
5 import filesystem, image, html |
5 import filesystem, image, html |
6 |
6 |
7 from utils import lazy_load |
7 from utils import lazy_load, lazy_load_iter |
8 |
8 |
9 class Folder (filesyste.Directory) : |
9 import math |
|
10 |
|
11 class Folder (filesystem.Directory) : |
10 """ |
12 """ |
11 A Folder is a filesystem Directory that contains any number of other Folders and Images. |
13 A Folder is a filesystem Directory that contains any number of other Folders and Images. |
12 """ |
14 """ |
13 |
15 |
14 def __init__ (self, node) : |
16 def __init__ (self, *args, **kwargs) : |
15 super(Folder, self).__init__(node) |
17 super(Folder, self).__init__(*args, **kwargs) |
16 |
18 |
17 # info |
19 # info |
18 self.title = None |
20 self.title = None |
19 self.description = None |
21 self.description = None |
20 |
22 |
38 def subnodes (self) : |
40 def subnodes (self) : |
39 """ |
41 """ |
40 Load and return an ordered list of child-Nodes |
42 Load and return an ordered list of child-Nodes |
41 """ |
43 """ |
42 |
44 |
43 return super(Folder, self).subnodes(skip_dotfiles=True, sorted=True) |
45 return super(Folder, self).subnodes(skip_dotfiles=True, sort=True) |
44 |
46 |
45 @lazy_load_iter |
47 @lazy_load_iter |
46 def subfolders (self) : |
48 def subfolders (self) : |
47 """ |
49 """ |
48 Load and return an ordered list of sub-Folders |
50 Load and return an ordered list of sub-Folders |
59 prev = None |
61 prev = None |
60 |
62 |
61 for node in self.subnodes : |
63 for node in self.subnodes : |
62 # skip non-relevant ones |
64 # skip non-relevant ones |
63 # XXX: node should need to be a File |
65 # XXX: node should need to be a File |
64 if not isinstance(node, filesystem.File) or not self.config.is_image(node) : |
66 if not node.is_file() or not self.config.is_image(filesystem.File(node)) : |
65 continue |
67 continue |
66 |
68 |
67 # create new |
69 # create new |
68 img = image.Image(node, prev) |
70 img = image.Image(node, prev) |
69 |
71 |
70 # link up |
72 # link up |
71 if prev : |
73 if prev : |
|
74 img.prev = prev |
72 prev.next = img |
75 prev.next = img |
73 |
76 |
74 # yield the linked-up prev |
77 # yield the linked-up prev |
75 yield prev |
78 yield prev |
76 |
79 |
85 def page_count (self) : |
88 def page_count (self) : |
86 """ |
89 """ |
87 Returns the number of pages needed to show this folder's images |
90 Returns the number of pages needed to show this folder's images |
88 """ |
91 """ |
89 |
92 |
90 return math.ceil(len(self.images) / float(self.config.images_per_page)) |
93 return int(math.ceil(len(self.images) / float(self.config.images_per_page))) |
91 |
94 |
92 def images_for_page (self, page) : |
95 def images_for_page (self, page) : |
93 """ |
96 """ |
94 Returns the list of Images to be displayed for the given page, if any |
97 Returns the list of Images to be displayed for the given page, if any |
95 """ |
98 """ |