degal/gallery.py
author Tero Marttila <terom@fixme.fi>
Wed, 01 Jul 2009 20:40:00 +0300
changeset 141 9387da0dc183
parent 129 a4698fa2066c
permissions -rw-r--r--
move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
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
    """
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    13
    
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    14
    def _init_config (self) :
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    15
        """
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    16
            Keep using our given .config
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    17
        """
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    18
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    19
        return self.config
64
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
    def __init__ (self, path, config) :
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
            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
    24
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
            XXX: replace path with config.gallery_path?
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    28
        # store config for access by Folder.__init__
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    29
        self.config = config
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    30
        
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    31
        # cooperative
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    32
        super(Gallery, self).__init__(path)
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
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
    34
    @property
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    35
    def _app_dir (self) :
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
    36
        """
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    37
            The dir containing our application data.
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
    38
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    39
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 112
diff changeset
    40
        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
    41
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
    @lazy_load
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    43
    def app_dir (self) :
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
        """
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    45
            The dir containing our application data.
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
            It will be created if it does not exist.
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
73
8897352630a5 misc. stuff in gallery.py utils.py
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    50
        return self.subdir('.degal', create=True)
8897352630a5 misc. stuff in gallery.py utils.py
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    51
    
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
    @lazy_load
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
    def stylesheet (self) :
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
            The stylesheet file.
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
            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
    58
        """
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    60
        stylesheet = self.app_dir.subfile('style.css')
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
        
82
c21d9145aabc fix Gallery.stylesheet to actually copy it into place
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    62
        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
    63
            # load the resources dir
129
a4698fa2066c fix Gallery.stylesheet typo
Tero Marttila <terom@fixme.fi>
parents: 124
diff changeset
    64
            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
    65
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
    66
            # 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
    67
            stylesheet.copy_from(STATIC_DIR.subfile('style.css'))
141
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    68
        
9387da0dc183 move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
Tero Marttila <terom@fixme.fi>
parents: 129
diff changeset
    69
        # elif stylesheet-is-older-than-resources-one: warn
64
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
        return stylesheet
4ebd563214d2 begin implementation of folder, gallery
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72