Changeset 3377

Show
Ignore:
Timestamp:
03/17/08 14:23:11 (10 months ago)
Author:
coderanger
Message:

Moving to laptop.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tracforgeplugin/0.11/setup.py

    r3248 r3377  
    1414    version = '1.1', 
    1515    packages = ['tracforge', 
    16                 'tracforge/subscriptions', 
    1716                'tracforge/admin', 
    1817                'tracforge/linker', 
     
    3938            'tracforge.linker = tracforge.linker', 
    4039        ], 
     40        'console_scripts': [ 
     41            'tracforge-helper = tracforge.admin.constructor:main', 
     42        ], 
    4143    }, 
    4244 
    43     install_requires = [ 'TracWebAdmin' ], 
     45    install_requires = ['Trac'], 
    4446) 
  • tracforgeplugin/0.11/tracforge/admin/admin.py

    r1572 r3377  
     1# Created by Noah Kantrowitz on 2008-02-19. 
     2# Copyright (c) 2008 Noah Kantrowitz. All rights reserved. 
     3import os.path 
     4 
    15from trac.core import * 
    2  
    3 from webadmin.web_ui import IAdminPageProvider 
     6from trac.admin.api import IAdminPanelProvider 
     7from trac.web.chrome import add_script 
     8from trac.util.compat import sorted 
    49 
    510from model import Project, Prototype 
     
    813    """A module to manage projects in TracForge.""" 
    914 
    10     implements(IAdminPageProvider)     
     15    implements(IAdminPanelProvider)     
    1116     
    1217    # IAdminPageProvider methods 
    13     def get_admin_pages(self, req): 
     18    def get_admin_panels(self, req): 
    1419        if req.perm.has_permission('TRACFORGE_ADMIN'): 
    1520            yield ('tracforge', 'TracForge', 'admin', 'Project Admin') 
    1621             
    17     def process_admin_request(self, req, cat, page, path_info): 
     22    def render_admin_panel(self, req, cat, page, path_info): 
     23        data = {} 
     24         
    1825        if req.method == 'POST': 
    1926            if 'create' in req.args.keys(): # Project creation 
     
    5966            elif 'delete' in req.args.keys(): # Project deleteion 
    6067                raise TracError, 'Not implemented yet. Sorry.' 
    61  
    62         #self.log.debug('TracForge: Starting data grab') 
    63         projects = [Project(self.env, n) for n in Project.select(self.env)] 
    64         #self.log.debug('TracForge: Done with data grab') 
    65      
    66         #self.log.debug('TracForge: Starting data grab') 
    67         project_data = {} 
    68         for proj in projects: 
    69             #self.log.debug('TracForge: Getting data for %s', proj.name) 
    70             project_data[proj.name] = { 
    71                 'fullname': proj.valid and proj.env.project_name or '', 
    72                 'env_path': proj.env_path, 
    73             } 
    74         #self.log.debug('TracForge: Done with data grab') 
    75              
    76         req.hdf['tracforge.projects'] = project_data 
    77         req.hdf['tracforge.prototypes'] = Prototype.select(self.env) 
    78      
    79         return 'admin_tracforge.cs', None 
     68         
     69        data['projects'] = sorted([Project(self.env, n) for n in Project.select(self.env)], key=lambda p: p.name) 
     70        data['prototypes'] = Prototype.select(self.env) 
     71        data['env_base_path'] = os.path.join(os.path.dirname(self.env.path), '') 
     72         
     73        add_script(req, 'tracforge/js/typewatch1.1.js') 
     74        return 'admin_tracforge_projects.html', data 
    8075              
  • tracforgeplugin/0.11/tracforge/admin/db_default.py

    r2635 r3377  
    1717        Column('stderr'), 
    1818    ], 
    19     #Table('tracforge_project_output', key=('ts' 
     19#    Table('tracforge_project_output', key=('ts' 
    2020    Table('tracforge_members', key=('project', 'username'))[ 
    2121        Column('project'), 
  • tracforgeplugin/0.11/tracforge/admin/__init__.py

    r2163 r3377  
    1 import api 
     1#import api 
    22import admin 
    3 import membership 
    4 import perm 
    5 import perm_admin 
    6 import prototypes 
    7 import prototypes_admin 
    8 import dispatch 
     3#import membership 
     4#import perm 
     5#import perm_admin 
     6#import prototypes 
     7#import prototypes_admin 
     8#import dispatch 
  • tracforgeplugin/0.11/tracforge/admin/model.py

    r2635 r3377  
    1 from trac.env import Environment 
    2 from trac.web.main import _open_environment 
     1from trac.env import open_environment 
    32from trac.config import Configuration, Section 
    43 
     
    7069            yield row[0] 
    7170 
     71 
    7272class Project(object): 
    7373    """Model object for TracForge projects.""" 
     
    9292             
    9393    exists = property(lambda self: self.env_path is not None) 
    94      
     94 
    9595    def _get_env(self): 
    9696        if not self._env: 
    9797            assert self.exists, "Can't use a non-existant project" 
    9898            try: 
    99                 self._env = _open_environment(self.env_path
     99                self._env = open_environment(self.env_path, use_cache=True
    100100                self._valid = True 
    101101            except Exception, e: 
     
    103103        return self._env 
    104104    env = property(_get_env)     
    105      
     105 
    106106    def _get_valid(self): 
    107         unused = self.env # This will make sure that we have tried loading the env at least once 
     107        self._get_env() # This will make sure that we have tried loading the env at least once 
    108108        return self._valid 
    109109    valid = property(_get_valid) 
    110          
     110 
     111    full_name = property(lambda self: self.valid and self.env.project_name or '') 
     112 
    111113    def save(self, db=None): 
    112114        handle_commit = False 
     
    120122        if not cursor.rowcount: 
    121123            cursor.execute('INSERT INTO tracforge_projects (name, env_path) VALUES (%s, %s)',(self.name, self.env_path or '')) 
    122              
    123         if handle_commit: 
    124             db.commit() 
    125      
     124         
     125        if handle_commit: 
     126            db.commit() 
     127 
    126128    def delete(self, db=None): 
    127129        assert self.exists 
     
    136138        if handle_commit: 
    137139            db.commit() 
    138  
    139140 
    140141    def __contains__(self, key): 
     
    151152    select = classmethod(select)             
    152153 
     154    # XXX: Should be from_env_path <NPK> 
    153155    def by_env_path(cls, env, env_path, db=None): 
    154156        """Find a Project based on its env_path.""" 
     
    163165            name = row[0] 
    164166        return Project(env, name, db) 
    165     by_env_path = classmethod(by_env_path)             
     167    by_env_path = classmethod(by_env_path) 
     168 
    166169 
    167170class Prototype(list): 
     
    169172     
    170173    def __init__(self, env, tag, db=None): 
    171         """Initialize a new Prototype. `env in the master environment.""" 
     174        """Initialize a new Prototype. `env` is the master environment.""" 
    172175        self.env = env 
    173176        self.tag = tag 
     
    189192         
    190193        cursor.execute('DELETE FROM tracforge_prototypes WHERE tag=%s', (self.tag,)) 
    191         for data, i in zip(self, xrange(len(self))): 
    192             action = args = None 
    193             if isinstance(data, dict): 
    194                 action = data['action'] 
    195                 args = data['args'] 
    196             elif isinstance(data, (tuple, list)): 
    197                 action = data[0] 
    198                 args = data[1] 
    199             else: 
    200                 raise TypeError('Invalid type %s in prototype'%type(data)) 
    201             cursor.execute('INSERT INTO tracforge_prototypes (tag, step, action, args) VALUES (%s, %s, %s, %s)', (self.tag, i, action, args)) 
     194        for i, data in enumerate(self): 
     195            cursor.execute('INSERT INTO tracforge_prototypes (tag, step, action, args) VALUES (%s, %s, %s, %s)', (self.tag, i, data[0], data[1])) 
    202196             
    203197        if handle_commit: 
     
    215209         
    216210        if handle_commit: 
    217             db.commit()         
     211            db.commit() 
    218212             
    219213    def __contains__(self, other): 
    220         fn = None 
    221         if isinstance(other, (str, unicode)): 
     214        if isinstance(other, basestring): 
    222215            fn = lambda a,b: a == b[0] # Check if the string is an action in this prototype 
    223         elif isinstance(other, (tuple, list))
     216        else
    224217            fn = lambda a,b: a[0] == b[0] and a[1] == b[1] 
    225         elif isinstance(other, dict): 
    226             fn = lambda a,b: a['action'] == b[0] and a['args'] == b[1] 
    227218 
    228219        for x in self: 
    229             if isinstance(x, dict): 
    230                 x = (x['action'], x['args']) 
    231220            if fn(other, x): 
    232221                return True 
  • tracforgeplugin/0.11/tracforge/linker/auth.py

    r2798 r3377  
    5858    def pre_process_request(self, req, handler): 
    5959        if req.path_info.startswith('/login') or req.path_info.startswith('/logout'): 
     60            old_redirect = req.redirect 
    6061            def my_redirect(*args, **kwords): 
    6162                # Munge the cookie path 
     
    7374                        Request.redirect(req, referer) 
    7475 
    75                 Request.redirect(req, *args, **kwords) 
     76                old_redirect(req, *args, **kwords) 
    7677             
    77             assert repr(req.redirect).startswith('<bound method'), 'Someone else changed req.redirect first' 
    7878            req.redirect = my_redirect 
    7979