degal/gallery.py
author Tero Marttila <terom@fixme.fi>
Wed, 01 Jul 2009 20:15:08 +0300
changeset 139 d3167c40e7b9
parent 129 a4698fa2066c
child 141 9387da0dc183
permissions -rw-r--r--
remove old scripts/cgi-bin stuff. They wouldn't work as such with the new version, and replacements can be written while referring to the history
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Top-level gallery state
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
112
e990b7a54d40 only load the resources/pkg_resources stuff if needed - slight optimization for importing without referencing the stylesheet
Tero Marttila <terom@fixme.fi>
parents: 82
diff changeset
     5
import filesystem, folder
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
from utils import lazy_load
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
class Gallery (filesystem.Root, folder.Folder) :
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
        A Gallery is a single place in the filesystem which acts as a Folder of Images, but had some additional stuff
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
    def __init__ (self, path, config) :
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
            Build a Gallery rooted at the given filesystem path, and using the given user configuration.
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
            XXX: replace path with config.gallery_path?
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
        super(Gallery, self).__init__(path, config)
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    23
    @property
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    24
    def _degal_dir (self) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    25
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    26
            The dir containing the degal configuration.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    27
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    28
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    29
        return self.subdir('.degal')
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    30
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
    @lazy_load
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
    def degal_dir (self) :
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
            The dir containing the degal configuration.
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
            It will be created if it does not exist.
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
73
8897352630a5 misc. stuff in gallery.py utils.py
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    39
        return self.subdir('.degal', create=True)
8897352630a5 misc. stuff in gallery.py utils.py
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    40
    
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
    @lazy_load
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
    def stylesheet (self) :
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
            The stylesheet file.
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
            It will be copied from internal resources if it does not exist.
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
        stylesheet = self.degal_dir.subfile('style.css')
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
        
82
c21d9145aabc fix Gallery.stylesheet to actually copy it into place
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    51
        if not stylesheet.exists() :
112
e990b7a54d40 only load the resources/pkg_resources stuff if needed - slight optimization for importing without referencing the stylesheet
Tero Marttila <terom@fixme.fi>
parents: 82
diff changeset
    52
            # load the resources dir
129
a4698fa2066c fix Gallery.stylesheet typo
Tero Marttila <terom@fixme.fi>
parents: 124
diff changeset
    53
            from resources import STATIC_DIR
112
e990b7a54d40 only load the resources/pkg_resources stuff if needed - slight optimization for importing without referencing the stylesheet
Tero Marttila <terom@fixme.fi>
parents: 82
diff changeset
    54
e990b7a54d40 only load the resources/pkg_resources stuff if needed - slight optimization for importing without referencing the stylesheet
Tero Marttila <terom@fixme.fi>
parents: 82
diff changeset
    55
            # copy it from the static resource file
e990b7a54d40 only load the resources/pkg_resources stuff if needed - slight optimization for importing without referencing the stylesheet
Tero Marttila <terom@fixme.fi>
parents: 82
diff changeset
    56
            stylesheet.copy_from(STATIC_DIR.subfile('style.css'))
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
        return stylesheet
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59