Changes in / [20:30]

Show
Ignore:
Files:
3 added
14 modified

Legend:

Unmodified
Added
Removed
  • /ClueMapperThemer/trunk/setup.py

    r10 r26  
    37 37           'setuptools', 
    38 38           'deliverance', 
    39             'lxml >= 2.0.1, <= 2.0.9999', 
      39           'lxml >= 2.0.4, <= 2.0.9999', 
    40 40           'Paste >= 1.6, <= 1.6.9999', 
    41 41       ], 
  • /ClueMapperThemer/trunk/src/clue/themer/tests.py

    r10 r24  
    1 1 import unittest 
    2 2 import doctest 
      3  
    3 4  
    4 5 def test_suite(): 
     
    13 14     return suite 
    14 15  
      16  
    15 17 def main(): 
    16 18     runner = unittest.TextTestRunner() 
  • /ClueMapperThemer/trunk/src/clue/themer/theme.py

    r10 r24  
    6 6 WORKINGDIR = 'cluemapper.workingdir' 
    7 7  
      8  
    8 9 class Theme(object): 
    9 10     """A Theme.""" 
    10 11  
    11       def __init__(self, themeid, name, path=None, rule_uri=None, theme_uri=None): 
      12     def __init__(self, themeid, name, path=None, 
      13                  rule_uri=None, theme_uri=None): 
    12 14         self.themeid = themeid 
    13 15         self.name = name 
     
    24 26                       rule_uri='/.defaulttheme/rules/rules.xml', 
    25 27                       theme_uri='/.defaulttheme/static/theme.html') 
      28  
    26 29  
    27 30 class ThemeManager(object): 
     
    63 66         return self._cached_themes.get(themeid, None) 
    64 67  
      68  
    65 69 class ThemeFilter(object): 
    66 70     """Middleware for vhost handling for deliverance theming. 
     
    81 85  
    82 86     def _fix_vhost(self, environ): 
    83           # this is a fix for Deliverance since it doesn't deal with virtual hosts 
    84           # very well 
      87         # this is a fix for Deliverance since it doesn't deal with 
      88         # virtual hosts very well 
    85 89         forwarded = environ.get('HTTP_X_FORWARDED_HOST', None) 
    86 90         if forwarded: 
     
    94 98             return newthemeid 
    95 99         return None 
    96             
      100  
    97 101     def __call__(self, environ, start_response): 
    98 102         self._act_on_theme(environ) 
    99 103         self._fix_vhost(environ) 
    100 104         return self._app(environ, start_response) 
      105  
    101 106  
    102 107 def make_filter(app, global_conf, *args, **kwargs): 
     
    117 122     return ThemeFilter(deliver, workingdir) 
    118 123  
      124  
    119 125 def switch_theme(environ, themeid): 
    120 126     """Update deliverance-required environ entries to let it know which theme 
     
    122 128  
    123 129       >>> switch_theme({}, 'foo') 
    124         ('/.userthemes/foo/rules/rules.xml', '/.userthemes/foo/static/theme.html') 
      130       ('/.userthemes/foo/rules/rules.xml', ...) 
    125 131       >>> switch_theme({}, DEFAULT_THEME.themeid) 
    126 132       ('/.defaulttheme/rules/rules.xml', '/.defaulttheme/static/theme.html') 
  • /ClueMapperSecure/trunk/src/clue/secure/tests.py

    r11 r24  
    1 1 import unittest 
    2 2 import doctest 
      3  
    3 4  
    4 5 def test_suite(): 
     
    10 11     return suite 
    11 12  
      13  
    12 14 def main(): 
    13 15     runner = unittest.TextTestRunner() 
  • /buildout/trunk

    • Property svn:ignore set to
      .installed.cfg
      bin
      develop-eggs
      etc
      parts
      coverage
  • /ClueMapper/trunk/HISTORY.txt

    r12 r30  
    9 9 ================ 
    10 10  
    11     * unreleased 
      11   * Added 404 handling for when an invalid project is requested. 
  • /ClueMapper/trunk/setup.py

    r12 r27  
    39 39           'repoze.trac >= 0.5, <= 0.5.9999', 
    40 40           'Genshi >= 0.5dev', 
      41           'Pygments >= 0.9, <= 0.9.9999', 
      42           'pytz == 2007k', 
      43           'docutils >= 0.4, <= 0.4.9999', 
      44           'pysqlite >= 2.4.1, <= 2.4.9999', 
      45           'Paste >= 1.6, <= 1.6.9999', 
    41 46           ], 
    42 47       test_suite="clue.app.tests.test_suite", 
  • /ClueMapper/trunk/src/clue/app/utils.py

    r12 r25  
    3 3 import logging 
    4 4 logger = logging.getLogger('cluemapper') 
      5  
    5 6  
    6 7 class Sleeper(object): 
     
    39 40         self.event.set() 
    40 41  
      42  
    41 43 def get_prjid(environ): 
    42 44     """Get the active project id from environ. 
     
    62 64     return None 
    63 65  
    64   class AccessError(Exception): pass 
      66  
      67 class AccessError(Exception): 
      68     pass 
      69  
    65 70  
    66 71 def build_path(workingdir, p): 
     
    69 74     return os.path.abspath(p) 
    70 75  
      76  
    71 77 class PathBuilder(object): 
      78  
    72 79     def __init__(self, basepath): 
    73 80         self.basepath = basepath 
  • /ClueMapper/trunk/src/clue/app/redirect.py

    r12 r25  
      1  
    1 2  
    2 3 class RedirectApp(object): 
     
    30 31         return '' 
    31 32  
      33  
    32 34 def make_app(global_config, main_redirect, relative_redirect=None): 
    33 35     '''Factory for redirect app. 
  • /ClueMapper/trunk/src/clue/app/controller.py

    r12 r30  
    21 21  
    22 22     return cmp(prj1.name, prj2.name) 
      23  
      24  
      25 class ControllerException(Exception): 
      26     pass 
      27  
      28  
      29 class NoSuchProjectError(ControllerException): 
      30  
      31     def __init__(self, prjid, msg=None): 
      32         self.prjid = prjid 
      33         msg = msg or 'No such project: ' + prjid 
      34         super(NoSuchProjectError, self).__init__(msg) 
    23 35  
    24 36  
     
    49 61  
    50 62     def __call__(self, environ, start_response): 
      63         try: 
      64             return self._call(environ, start_response) 
      65         except NoSuchProjectError, err: 
      66             kwargs = {'error_message': str(err), 
      67                       'error_extended': None} 
      68             start_response('404 NOT FOUND', [('Content-Type', 'text/html')]) 
      69             loader = self.global_config['cluemapper.templateloader'] 
      70             return loader.load('error-404.html').generate(**kwargs).render() 
      71  
      72     def _call(self, environ, start_response): 
    51 73         path = environ.get('PATH_INFO', None) 
    52 74         if not path or path == '/': 
     
    75 97                              % prjid) 
    76 98             else: 
    77                   raise ValueError('No project with that id') 
      99                 raise NoSuchProjectError(prjid) 
    78 100         newenv = dict(environ) 
    79 101         newenv['SCRIPT_NAME'] = '%s/%s/%s' % (script, here, prjid) 
     
    109 131         cluemapperconfig = self.global_config['cluemapper.config'] 
    110 132         pmanager = project.ProjectManager(environ, self.global_config) 
    111           tmanager = theme.ThemeManager(self.global_config['cluemapper.workingdir']) 
      133         wd = self.global_config['cluemapper.workingdir'] 
      134         tmanager = theme.ThemeManager(wd) 
    112 135         loader = self.global_config['cluemapper.templateloader'] 
    113 136         prjs = sorted(pmanager.projects, name_sort) 
    114 137  
    115           username = environ.get('REMOTE_USER', 'anonymous') 
      138         username = environ.get('REMOTE_USER', '') 
    116 139         logout = '' 
    117 140         if username != 'anonymous': 
  • /ClueMapper/trunk/src/clue/app/environinit.py

    r12 r25  
      1  
    1 2  
    2 3 class EnvironInitFilter(object): 
     
    4 5     from global_conf. 
    5 6  
    6         >>> f = EnvironInitFilter(lambda x,y: None, {'cluemapper.templateloader': None, 
    7         ...                                          'cluemapper.config': None, 
    8         ...                                          'cluemapper.workingdir': None}) 
      7       >>> gf = {'cluemapper.templateloader': None, 
      8       ...       'cluemapper.config': None, 
      9       ...       'cluemapper.workingdir': None} 
      10       >>> f = EnvironInitFilter(lambda x,y: None, gf) 
    9 11       >>> f({}, None) 
    10 12     """ 
     
    13 15         self.app = app 
    14 16         self.global_conf = global_conf 
    15        
      17  
    16 18     def _sync_environ(self, environ): 
    17 19         for x in ('templateloader', 'config', 'workingdir'): 
  • /ClueMapper/trunk/src/clue/app/config.py

    r12 r25  
    147 147     def save(self): 
    148 148         if not self.filename: 
    149               raise ConfigError('Cannot save file since filename was never specified') 
    150                
      149             raise ConfigError('Cannot save file since filename was ' 
      150                               'never specified') 
      151  
    151 152         if os.path.exists(self.filename) and self._file_changed: 
    152 153             raise ConfigError('Configuration data on the filesystem has ' 
     
    239 240         projects = ','.join([prjid for prjid, p in self.projects]) 
    240 241         managers = ','.join([x for x in self.managers]) 
    241           return '<ClueMapperConfig projects=%s; managers=%s>' % (projects, managers) 
      242         return '<ClueMapperConfig projects=%s; managers=%s>' \ 
      243                % (projects, managers) 
    242 244  
    243 245     __str__ = __repr__ 
     
    254 256     } 
    255 257  
      258  
    256 259 def ensure_cm_config(filename): 
    257 260     config = ClueMapperConfig(filename) 
     
    261 264  
    262 265     return config 
      266  
    263 267  
    264 268 def load_config(workingdir): 
     
    273 277         changed = True 
    274 278     if not config['base'].get('auth_file', None): 
    275           af = config['base']['auth_file'] = pb(os.path.join('etc', 
    276                                                              'cluemapper.passwd')) 
      279         rel = os.path.join('etc', 'cluemapper.passwd') 
      280         af = config['base']['auth_file'] = pb(rel) 
    277 281         changed = True 
    278 282         if not os.path.exists(af): 
  • /ClueMapperTools/trunk/src/clue/tools/testing.py

    r9 r24  
    1 1 from clue.tools import fileio 
    2 2 import atexit 
      3  
    3 4  
    4 5 class Mock(object): 
  • /ClueMapperTools/trunk/src/clue/tools/tests.py

    r9 r24  
    1 1 import unittest 
    2 2 import doctest 
      3  
    3 4  
    4 5 def test_suite(): 
     
    12 13     return suite 
    13 14  
      15  
    14 16 def main(): 
    15 17     runner = unittest.TextTestRunner()