Changeset 216

Show
Ignore:
Timestamp:
12/20/05 19:47:07 (3 years ago)
Author:
eblot
Message:

TracFrenchTranslation:

Updated to trunk:2669 (post-Trac 0.9.2, w/ vc-refactoring)

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • tracfrenchtranslation/0.9/htdocs/css/browser.css

    r160 r216  
    2424 color: #888; 
    2525 white-space: nowrap; 
     26 vertical-align: baseline; 
     27} 
     28#dirlist td.rev { 
     29 font-family: monospace; 
     30 letter-spacing: -0.02em; 
     31 font-size: 90%; 
     32 text-align: right; 
    2633} 
    2734#dirlist td.size {   
     
    6067#chglist td.date { font-size: 85%; vertical-align: top; padding-top: 0.55em; white-space: nowrap } 
    6168#chglist td.author { font-size: 85%; vertical-align: top; padding-top: 0.55em } 
    62 #chglist td.rev, #chglist td.chgset { text-align: right } 
     69#chglist td.rev, #chglist td.chgset {  
     70 font-family: monospace;   
     71 letter-spacing: -0.02em; 
     72 font-size: 90%; 
     73 text-align: right;  
     74
    6375#chglist td.rev a, #chglist td.chgset a { border-bottom: none } 
    6476#chglist td.summary { width: 100%; font-size: 85%; vertical-align: middle; white-space: nowrap } 
     
    7789} 
    7890#info th, #info td { font-size: 85%; padding: 2px .5em; vertical-align: top } 
    79 #info th { font-weight: bold; white-space: nowrap;
    80 #info td.message { width: 100%;
     91#info th { font-weight: bold; text-align: left; white-space: nowrap
     92#info td.message { width: 100%
    8193#info .message ul { padding: 0; margin: 0 2em } 
    8294#info .message p { margin: 0; padding: 0 } 
  • tracfrenchtranslation/0.9/htdocs/css/trac.css

    r160 r216  
    258258.wikipage h1, .wikipage h2, .wikipage h3 { margin-left: -18px } 
    259259 
    260 a.missing:link, a.missing:visited { background: #fafaf0; color: #998 } 
     260a.missing:link, a.missing:visited, span.missing { background: #fafaf0; color: #998 } 
    261261a.missing:hover { color: #000; } 
    262262a.closed:link, a.closed:visited { text-decoration: line-through } 
  • tracfrenchtranslation/0.9/templates/browser.cs

    r160 r216  
    7979  <table id="info" summary="Info révisions"><?cs 
    8080   if:!browser.is_dir ?><tr> 
    81     <th scope="row"> 
     81    <th scope="col"> 
    8282     Révision <a href="<?cs var:file.changeset_href ?>"><?cs var:file.rev ?></a> 
    8383     (déposée par <?cs var:file.author ?>, <?cs var:file.age ?> ago) 
    84     </th> 
     84    </th></tr><tr> 
    8585    <td class="message"><?cs var:file.message ?></td> 
    8686   </tr><?cs /if ?><?cs 
  • tracfrenchtranslation/0.9/templates/changeset.cs

    r160 r216  
    55 <h2>Consultation des versions</h2><?cs 
    66 with:links = chrome.links ?> 
    7   <ul><?cs 
    8    if:len(links.prev) ?
    9     <li class="first<?cs if:!len(links.next) ?> last<?cs /if ?>"> 
    10      &larr; <a class="prev" href="<?cs var:links.prev.0.href ?>" title="<?cs 
    11       var:links.prev.0.title ?>">Version précédente</a> 
    12     </li><?cs 
    13    /if ?><?cs 
    14    if:len(links.next) ?
    15     <li class="<?cs if:len(links.prev) ?>first <?cs /if ?>last"
     7  <ul> 
     8   <li class="first"
     9    <?cs if:len(links.prev) ?> &larr;  
     10     <a class="prev" href="<?cs var:links.prev.0.href ?>" title="<?cs 
     11      var:links.prev.0.title ?>">Version précédente</a> 
     12    <?cs else ?><span class="missing">&larr; Version précédente</span><?cs /if ?> 
     13   </li> 
     14   <li class="last"
     15    <?cs if:len(links.next) ?
    1616     <a class="next" href="<?cs var:links.next.0.href ?>" title="<?cs 
    17       var:links.next.0.title ?>">Version suivante</a> &rarr; 
    18     </li><?cs 
    19    /if ?
     17      var:links.next.0.title ?>">Version suivante</a> &rarr; 
     18    <?cs else ?><span class="missing">Version suivante &rarr;</span><?cs /if ?> 
     19   </li
    2020  </ul><?cs 
    2121 /with ?> 
     
    3333<form method="post" id="prefs" action=""> 
    3434 <div> 
    35   <label for="style">Voir les differences</label> 
     35  <label for="style">Voir les différences</label> 
    3636  <select id="style" name="style"> 
    3737   <option value="inline"<?cs 
     
    103103<dl id="overview"> 
    104104 <dt class="time">Date:</dt> 
    105  <dd class="time"><?cs var:changeset.time ?></dd> 
     105 <dd class="time"><?cs var:changeset.time ?>  
     106  (<?cs alt:changeset.age ?>moins d'une heure<?cs /alt ?> auparavant)</dd> 
    106107 <dt class="author">Auteur:</dt> 
    107108 <dd class="author"><?cs var:changeset.author ?></dd> 
  • tracfrenchtranslation/0.9/templates/log.cs

    r160 r216  
    2828   <input type="hidden" name="action" value="<?cs var:log.mode ?>" /> 
    2929   <label>Voir le journal du dépÃŽt à partir de <input type="text" id="rev" name="rev" value="<?cs 
    30     var:log.items.0.rev ?>" size="5" /></label> 
     30    var:log.items.0.rev ?>" size="5" /></label><br/> 
    3131   <label>et jusqu'à <input type="text" id="stop_rev" name="stop_rev" value="<?cs 
    3232    var:log.stop_rev ?>" size="5" />révisions précédentes</label> 
     
    4949      <input type="radio" id="path_history" name="mode" value="path_history" <?cs 
    5050       if:log.mode == "path_history" ?> checked="checked" <?cs /if ?> /> 
    51       Montrer uniquement les ajouts, déplacements et suppression 
     51      Ajouts, déplacements et suppression uniquement 
    5252     </label> 
    5353    </fieldset> 
  • tracfrenchtranslation/0.9/trac/attachment.py

    r160 r216  
    259259            parent_id = '/'.join(segments[:-1]) 
    260260            filename = segments[-1] 
     261            if len(segments) == 1 or not filename: 
     262                raise TracError('Mauvaise requête')             
    261263            attachment = Attachment(self.env, parent_type, parent_id, filename) 
    262264 
     
    385387 
    386388        fmt = req.args.get('format') 
    387         mimetype = fmt == 'txt' and 'text/plain' or \ 
    388                    get_mimetype(attachment.filename) or 'application/octet-stream' 
    389389 
    390390        req.check_modified(attachment.time) 
     
    395395 
    396396        req.hdf['title'] = attachment.title 
    397         req.hdf['attachment'] = attachment_to_hdf(self.env, None, req, attachment) 
     397        req.hdf['attachment'] = attachment_to_hdf(self.env, None, req, 
     398                                                  attachment) 
    398399        req.hdf['attachment.parent'] = { 
    399400            'type': attachment.parent_type, 'id': attachment.parent_id, 
     
    401402        } 
    402403 
    403         raw_href = attachment.href(format='raw') 
    404         add_link(req, 'alternate', raw_href, 'Format original', mimetype) 
    405         req.hdf['attachment.raw_href'] = raw_href 
    406  
    407404        perm_map = {'ticket': 'TICKET_ADMIN', 'wiki': 'WIKI_DELETE'} 
    408405        if req.perm.has_permission(perm_map[attachment.parent_type]): 
    409406            req.hdf['attachment.can_delete'] = 1 
    410407 
    411         self.log.debug("Rendering preview of file %s with mime-type %s" 
    412                        % (attachment.filename, mimetype)) 
    413408        fd = attachment.open() 
    414409        try: 
    415410            mimeview = Mimeview(self.env) 
    416411 
    417             max_preview_size = mimeview.max_preview_size() 
    418             data = fd.read(max_preview_size) 
     412            data = fd.read(mimeview.max_preview_size()) 
     413             
     414            mime_type = fmt == 'txt' and 'text/plain' or \ 
     415                       get_mimetype(attachment.filename, data) or \ 
     416                       'application/octet-stream' 
     417 
     418            self.log.debug("Rendering preview of file %s with mime-type %s" 
     419                           % (attachment.filename, mime_type)) 
     420             
     421            raw_href = attachment.href(format='raw') 
     422            add_link(req, 'alternate', raw_href, 'Format Original', mime_type) 
     423            req.hdf['attachment.raw_href'] = util.escape(raw_href) 
    419424             
    420425            if fmt in ('raw', 'txt'): 
    421426                # Send raw file 
    422                 charset = mimeview.preview_charset(data) 
    423                 req.send_file(attachment.path, mimetype + ';charset=' + charset) 
     427                charset = mimeview.get_charset(data, mime_type) 
     428                req.send_file(attachment.path, 
     429                              mime_type + ';charset=' + charset) 
    424430                return 
    425431             
    426432            if not is_binary(data): 
    427                 add_link(req, 'alternate', attachment.href(format='txt'), 
    428                          'Texte standard', mimetype) 
    429  
    430             hdf = mimeview.preview_to_hdf(req, mimetype, None, data, 
     433                plaintext_href = attachment.href(format='txt') 
     434                add_link(req, 'alternate', plaintext_href, 'Text Standard', 
     435                         mime_type) 
     436 
     437            hdf = mimeview.preview_to_hdf(req, data, mime_type, 
    431438                                          attachment.filename, None, 
    432439                                          annotations=['lineno']) 
  • tracfrenchtranslation/0.9/trac/config.py

    r160 r216  
    1818import os 
    1919import sys 
     20 
     21_TRUE_VALUES = ('yes', 'true',  'on', 'aye', '1', 1, True) 
    2022 
    2123 
     
    4446            return default 
    4547        return self.parser.get(section, name) 
     48 
     49    def getbool(self, section, name, default=None): 
     50        if isinstance(default, basestring): 
     51            default = default.lower() 
     52        return self.get(section, name, default) in _TRUE_VALUES 
    4653 
    4754    def setdefault(self, section, name, value): 
  • tracfrenchtranslation/0.9/trac/db_default.py

    r160 r216  
    384384 
    385385default_config = \ 
    386  (('trac', 'repository_dir', ''), 
     386 (('trac', 'repository_type', 'svn'), 
     387  ('trac', 'repository_dir', ''), 
    387388  ('trac', 'templates_dir', default_dir('templates')), 
    388389  ('trac', 'database', 'sqlite:db/trac.db'), 
     
    477478                      'trac.Timeline', 
    478479                      'trac.versioncontrol.web_ui', 
     480                      'trac.versioncontrol.svn_fs', 
    479481                      'trac.wiki.macros', 'trac.wiki.web_ui', 
    480482                      'trac.web.auth') 
  • tracfrenchtranslation/0.9/trac/env.py

    r160 r216  
    2222                      ExtensionPoint, TracError 
    2323from trac.db import DatabaseManager 
     24from trac.versioncontrol import RepositoryManager 
    2425 
    2526__all__ = ['Environment', 'IEnvironmentSetupParticipant', 'open_environment'] 
     
    122123                return enabled 
    123124 
     125        # versioncontrol components are enabled if the repository is configured 
     126        if component_name.startswith('trac.versioncontrol.'): 
     127            return self.config.get('trac', 'repository_dir') != '' 
     128 
    124129        # By default, all components in the trac package are enabled 
    125130        return component_name.startswith('trac.') 
     
    144149        environment. 
    145150         
    146         The repository is wrapped in a `CachedRepository`. 
    147          
    148151        @param authname: user name for authorization 
    149152        """ 
    150         from trac.versioncontrol.cache import CachedRepository 
    151         from trac.versioncontrol.svn_authz import SubversionAuthorizer 
    152         from trac.versioncontrol.svn_fs import SubversionRepository 
     153        repos_type = self.config.get('trac', 'repository_type') 
    153154        repos_dir = self.config.get('trac', 'repository_dir') 
    154155        if not repos_dir: 
    155             raise EnvironmentError, 'Chemin du dépot non configuré' 
    156         authz = None 
    157         if authname: 
    158             authz = SubversionAuthorizer(self, authname) 
    159         repos = SubversionRepository(repos_dir, authz, self.log) 
    160         return CachedRepository(self.get_db_cnx(), repos, authz, self.log) 
     156            raise TracError, "Le chemin du dépÃŽt n'est pas configuré" 
     157        return RepositoryManager(self).get_repository(repos_type, repos_dir, 
     158                                                      authname) 
    161159 
    162160    def create(self, options=[]): 
     
    275273        db_str = self.config.get('trac', 'database') 
    276274        if not db_str.startswith('sqlite:'): 
    277             raise EnvironmentError, 'Seuls les bases de données sqlite peuvent être sauvegardées' 
     275            raise EnvironmentError, 'Seules les bases de données sqlite ' \ 
     276                                    'peuvent être sauvegardées' 
    278277        db_name = os.path.join(self.path, db_str[7:]) 
    279278        if not dest: 
  • tracfrenchtranslation/0.9/trac/__init__.py

    r160 r216  
    1111__docformat__ = 'epytext en' 
    1212 
    13 __version__ = '1.0dev
     13__version__ = '1.0dev-vc-refactoring
    1414__url__ = 'http://trac.edgewall.com/' 
    1515__copyright__ = '(C) 2003-2005 Edgewall Software' 
  • tracfrenchtranslation/0.9/trac/mimeview/api.py

    r160 r216  
    2727from trac.util import escape, to_utf8 
    2828 
    29 __all__ = ['get_charset', 'get_mimetype', 'is_binary', 'detect_unicode', 
    30            'Mimeview'] 
     29__all__ = ['get_mimetype', 'is_binary', 'detect_unicode', 'Mimeview'] 
    3130 
    3231MIME_MAP = { 
     
    6261    'm':'text/x-objc', 'mm':'text/x-objc', 
    6362    'm4':'text/x-m4', 
    64     'make':'text/x-makefile', 'mk':'text/x-makefile', 'Makefile':'text/x-makefile', 
     63    'make':'text/x-makefile', 'mk':'text/x-makefile', 
     64    'Makefile':'text/x-makefile', 
    6565    'mail':'text/x-mail', 
    6666    'pas':'text/x-pascal', 
    6767    'pdf':'application/pdf', 
    68     'pl':'text/x-perl', 'pm':'text/x-perl', 'PL':'text/x-perl', 'perl':'text/x-perl', 
     68    'pl':'text/x-perl', 'pm':'text/x-perl', 'PL':'text/x-perl', 
     69    'perl':'text/x-perl', 
    6970    'php':'text/x-php', 'php4':'text/x-php', 'php3':'text/x-php', 
    7071    'ps':'application/postscript', 
     
    7273    'py':'text/x-python', 'python':'text/x-python', 
    7374    'pyx':'text/x-pyrex', 
    74     'nroff':'application/x-troff', 'roff':'application/x-troff', 'troff':'application/x-troff', 
     75    'nroff':'application/x-troff', 'roff':'application/x-troff', 
     76    'troff':'application/x-troff', 
    7577    'rb':'text/x-ruby', 'ruby':'text/x-ruby', 
    7678    'rfc':'text/x-rfc', 
     
    9597} 
    9698 
    97 def get_charset(mimetype): 
    98     """Return the character encoding included in the given content type string, 
    99     or `None` if `mimetype` is `None` or empty or if no charset information is 
    100     available. 
    101     """ 
    102     if mimetype: 
    103         ctpos = mimetype.find('charset=') 
    104         if ctpos >= 0: 
    105             return mimetype[ctpos + 8:] 
    106  
    107 def get_mimetype(filename): 
     99 
     100MODE_RE = re.compile( 
     101    r"#!(?:[/\w.-_]+/)?(\w+)|"               # look for shebang 
     102    r"-\*-\s*(?:mode:\s*)?([\w+-]+)\s*-\*-"  # look for Emacs' -*- mode -*- 
     103    ) 
     104 
     105def get_mimetype(filename, content=None): 
    108106    """Guess the most probable MIME type of a file with the given name.""" 
     107    suffix = filename.split('.')[-1] 
     108    if MIME_MAP.has_key(suffix): 
     109        return MIME_MAP[suffix] 
     110    elif content: 
     111        match = re.search(MODE_RE, content[:1000]) 
     112        if match: 
     113            mode = match.group(1) or match.group(2).lower() 
     114            if MIME_MAP.has_key(mode): 
     115                return MIME_MAP[mode] 
    109116    try: 
    110         suffix = filename.split('.')[-1] 
    111         return MIME_MAP[suffix] 
    112     except KeyError: 
    113117        import mimetypes 
    114118        return mimetypes.guess_type(filename)[0] 
    115119    except: 
    116         return None 
     120        if content and is_binary(content): 
     121            return 'application/octet-stream' 
     122        else: 
     123            return None 
    117124 
    118125def is_binary(str): 
     
    205212 
    206213        if filename and not mimetype: 
    207             mimetype = get_mimetype(filename
     214            mimetype = get_mimetype(filename, content
    208215        mimetype = mimetype.split(';')[0].strip() # split off charset 
    209216 
     
    284291        return int(self.config.get('mimeviewer', 'max_preview_size', '262144')) 
    285292 
    286     def preview_charset(self, content): 
    287         return detect_unicode(content) or self.config.get('trac', 
    288                                                           'default_charset') 
    289  
    290     def preview_to_hdf(self, req, mimetype, charset, content, filename, 
     293    def get_charset(self, content='', mimetype=None): 
     294        """Infer the character encoding from the `content` or the `mimetype`. 
     295 
     296        The charset information in the `mimetype`, if given, 
     297        takes precedence over auto-detection. 
     298        Return the configured `default_charset` if no other information 
     299        is available. 
     300        """ 
     301        if mimetype: 
     302            ctpos = mimetype.find('charset=') 
     303            if ctpos >= 0: 
     304                return mimetype[ctpos + 8:].strip() 
     305        return detect_unicode(content) or \ 
     306               self.config.get('trac', 'default_charset') 
     307 
     308    def to_utf8(self, content, mimetype=None): 
     309        """Convert an encoded `content` to utf-8. 
     310 
     311        Tries to auto-detect the encoding using `Mimeview.get_charset()`. 
     312        """ 
     313        return to_utf8(content, self.get_charset(content, mimetype)) 
     314 
     315    def preview_to_hdf(self, req, content, mimetype, filename, 
    291316                       detail=None, annotations=None): 
    292317        max_preview_size = self.max_preview_size() 
     
    296321 
    297322        if not is_binary(content): 
    298             content = to_utf8(content, charset or self.preview_charset(content)
     323            content = self.to_utf8(content, mimetype
    299324        return {'preview': self.render(req, mimetype, content, 
    300325                                       filename, detail, annotations)} 
  • tracfrenchtranslation/0.9/trac/Notify.py

    r160 r216  
    1717from trac.__init__ import __version__ 
    1818from trac.core import TracError 
    19 from trac.util import CRLF, TRUE, FALSE, wrap 
     19from trac.util import CRLF, wrap 
    2020from trac.web.clearsilver import HDFWrapper 
    2121from trac.web.main import populate_hdf 
     
    8888        self.subject = subject 
    8989 
    90         enabled = self.config.get('notification', 'smtp_enabled') 
    91         if not enabled.lower() in TRUE: 
     90        if not self.config.getbool('notification', 'smtp_enabled'): 
    9291            return 
    9392        self.smtp_server = self.config.get('notification', 'smtp_server') 
     
    267266 
    268267    def get_recipients(self, tktid): 
    269         val = self.config.get('notification', 'always_notify_reporter') 
    270         notify_reporter = val.lower() in TRUE 
    271         val = self.config.get('notification', 'always_notify_owner') 
    272         notify_owner = val.lower() in TRUE 
     268        notify_reporter = self.config.getbool('notification', 
     269                                              'always_notify_reporter') 
     270        notify_owner = self.config.getbool('notification', 
     271                                           'always_notify_owner') 
    273272 
    274273        recipients = self.prev_cc 
  • tracfrenchtranslation/0.9/trac/scripts/admin.py

    r161 r216  
    3737    """Recursively copy a directory tree using copy2() (from shutil.copytree.) 
    3838 
    39     Added an `skip` parameter consisting of absolute paths 
     39    Added a `skip` parameter consisting of absolute paths 
    4040    which we don't want to copy. 
    4141    """ 
     
    251251            seconds = int(time.time()) 
    252252        else: 
    253             for format in [self._date_format, '%x %X', '%x, %X', '%X %x', '%X, %x', '%x', '%c', 
    254                            '%b %d, %Y']: 
     253            for format in [self._date_format, '%x %X', '%x, %X', '%X %x', 
     254                           '%X, %x', '%x', '%c', '%b %d, %Y']: 
    255255                try: 
    256256                    pt = time.strptime(t, format) 
     
    297297#                    self._help_config + self._help_wiki + 
    298298                    self._help_permission + self._help_component + 
     299                    self._help_ticket + 
    299300                    self._help_ticket_type + self._help_priority + 
    300301                    self._help_severity +  self._help_version + 
    301302                    self._help_milestone) 
    302             print 'trac-admin - The Trac Administration Console %s' % trac.__version__ 
     303            print 'trac-admin - The Trac Administration Console %s' \ 
     304                  % trac.__version__ 
    303305            if not self.interactive: 
    304306                print 
     
    487489    _help_initenv = [('initenv', 
    488490                      'Create and initialize a new environment interactively'), 
    489                      ('initenv <projectname> <db> <repospath> <templatepath>', 
     491                     ('initenv <projectname> <db> <repostype> <repospath> <templatepath>', 
    490492                      'Create and initialize a new environment from arguments')] 
    491493 
     
    516518        returnvals.append(raw_input(prompt).strip() or ddb) 
    517519        print 
    518         print ' Please specify the absolute path to the project Subversion repository.' 
    519         print ' Repository must be local, and trac-admin requires read+write' 
    520         print ' permission to initialize the Trac database.' 
    521         print 
    522         drp = '/var/svn/test' 
    523         prompt = 'Path to repository [%s]> ' % drp 
    524         returnvals.append(raw_input(prompt).strip() or drp) 
     520        print ' Please specify the type of version control system,' 
     521        print ' By default, it will be svn.' 
     522        print 
     523        print ' If you don\'t want to use Trac with version control integration, ' 
     524        print ' choose the default here and don\'t specify a repository directory. ' 
     525        print ' in the next question.' 
     526        print  
     527        drpt = 'svn' 
     528        prompt = 'Repository type [%s]> ' % drpt 
     529        returnvals.append(raw_input(prompt).strip() or drpt) 
     530        print 
     531        print ' Please specify the absolute path to the version control ' 
     532        print ' repository, or leave it blank to use Trac without a repository.' 
     533        print ' You can also set the repository location later.' 
     534        print  
     535        prompt = 'Path to repository [/path/to/repos]> ' 
     536        returnvals.append(raw_input(prompt).strip()) 
    525537        print 
    526538        print ' Please enter location of Trac page templates.' 
     
    546558        if len(arg) == 1 and not arg[0]: 
    547559            returnvals = self.get_initenv_args() 
    548             project_name, db_str, repository_dir, templates_dir = returnvals 
    549         elif len(arg) != 4: 
     560            project_name, db_str, repository_type, repository_dir, \ 
     561                          templates_dir = returnvals 
     562        elif len(arg) != 5: 
    550563            print 'Wrong number of arguments to initenv: %d' % len(arg) 
    551564            return 2 
    552565        else: 
    553             project_name, db_str, repository_dir, templates_dir = arg[:4] 
     566            project_name, db_str, repository_type, repository_dir, \ 
     567                          templates_dir = arg[:4] 
    554568 
    555569        if not os.access(os.path.join(templates_dir, 'header.cs'), os.F_OK): 
     
    561575            options = [ 
    562576                ('trac', 'database', db_str), 
     577                ('trac', 'repository_type', repository_type), 
    563578                ('trac', 'repository_dir', repository_dir), 
    564579                ('trac', 'templates_dir', templates_dir), 
     
    580595            cnx.commit() 
    581596 
    582             print ' Indexing repository' 
    583             repos = self.__env.get_repository() 
    584             repos.sync() 
    585  
     597            if repository_dir: 
     598                try: 
     599                    repos = self.__env.get_repository() 
     600                    if repos: 
     601                        print ' Indexing repository' 
     602                        repos.sync() 
     603                except util.TracError, e: 
     604                    print>>sys.stderr, "\nWarning:\n" 
     605                    if repository_type == "svn": 
     606                        print>>sys.stderr, "You should install the SVN bindings" 
     607                    else: 
     608                        print>>sys.stderr, ("You should install the plugin for" 
     609                                            " %s in the %s folder." \ 
     610                                            % (repository_type, 
     611                                               os.path.join(self.envname, 
     612                                                            'plugins'))) 
    586613        except Exception, e: 
    587614            print 'Failed to initialize environment.', e 
     
    757784                self._do_wiki_import(filename, page, cursor) 
    758785 
     786    ## Ticket 
     787    _help_ticket = [('ticket remove <number>', 'Remove ticket')] 
     788 
     789    def complete_ticket(self, text, line, begidx, endidx): 
     790        argv = self.arg_tokenize(line) 
     791        argc = len(argv) 
     792        if line[-1] == ' ': # Space starts new argument 
     793            argc += 1 
     794        comp = [] 
     795        if argc == 2: 
     796            comp = ['remove'] 
     797        return self.word_complete(text, comp) 
     798 
     799    def do_ticket(self, line): 
     800        arg = self.arg_tokenize(line) 
     801        if arg[0] == 'remove'  and len(arg)==2: 
     802            try: 
     803                number = int(arg[1]) 
     804            except ValueError: 
     805                print>>sys.stderr, "<number> must be a number" 
     806                return 
     807            self._do_ticket_remove(number) 
     808        else:     
     809            self.do_help ('ticket') 
     810 
     811    def _do_ticket_remove(self, number): 
     812        ticket = Ticket(self.env_open(), number) 
     813        ticket.delete() 
     814        print "Ticket %d and all associated data removed." % number 
     815 
    759816 
    760817    ## (Ticket) Type 
  • tracfrenchtranslation/0.9/trac/scripts/tests/admin-tests.txt

    r160 r216  
    11===== test_help_ok ===== 
    2 trac-admin - The Trac Administration Console %(version)s 
     2trac-admin - The Trac Administration Console 1.0dev-vc-refactoring 
    33 
    44Usage: trac-admin </path/to/projenv> [command [subcommand] [option ...]] 
     
    66Invoking trac-admin without command starts interactive mode. 
    77 
    8 about                                                  -- Shows information about trac-admin 
    9 help                                                   -- Show documentation 
    10 initenv                                                -- Create and initialize a new environment interactively 
    11 initenv <projectname> <db> <repospath> <templatepath>  -- Create and initialize a new environment from arguments 
    12 hotcopy <backupdir>                                    -- Make a hot backup copy of an environment 
    13 resync                                                 -- Re-synchronize trac with the repository 
    14 upgrade                                                -- Upgrade database to current version 
    15 wiki list                                              -- List wiki pages 
    16 wiki remove <name>                                     -- Remove wiki page 
    17 wiki export <page> [file]                              -- Export wiki page to file or stdout 
    18 wiki import <page> [file]                              -- Import wiki page from file or stdin 
    19 wiki dump <directory>                                  -- Export all wiki pages to files named by title 
    20 wiki load <directory>                                  -- Import all wiki pages from directory 
    21 wiki upgrade                                           -- Upgrade default wiki pages to current version 
    22 permission list [user]                                 -- List permission rules 
    23 permission add <user> <action> [action] [...]          -- Add a new permission rule 
    24 permission remove <user> <action> [action] [...]       -- Remove permission rule 
    25 component list                                         -- Show available components 
    26 component add <name> <owner>                           -- Add a new component 
    27 component rename <name> <newname>                      -- Rename a component 
    28 component remove <name>                                -- Remove/uninstall component 
    29 component chown <name> <owner>                         -- Change component ownership 
    30 ticket_type list                                       -- Show possible ticket types 
    31 ticket_type add <value>                                -- Add a ticket type 
    32 ticket_type change <value> <newvalue>                  -- Change a ticket type 
    33 ticket_type remove <value>                             -- Remove a ticket type 
    34 ticket_type order <value> up|down                      -- Move a ticket type up or down in the list 
    35 priority list                                          -- Show possible ticket priorities 
    36 priority add <value>                                   -- Add a priority value option 
    37 priority change <value> <newvalue>                     -- Change a priority value 
    38 priority remove <value>                                -- Remove priority value 
    39 priority order <value> up|down                         -- Move a priority value up or down in the list 
    40 severity list                                          -- Show possible ticket severities 
    41 severity add <value>                                   -- Add a severity value option 
    42 severity change <value> <newvalue>                     -- Change a severity value 
    43 severity remove <value>                                -- Remove severity value 
    44 severity order <value> up|down                         -- Move a severity value up or down in the list 
    45 version list                                           -- Show versions 
    46 version add <name> [time]                              -- Add version 
    47 version rename <name> <newname>                        -- Rename version 
    48 version time <name> <time>                             -- Set version date (Format: "YYYY-MM-DD" or "now") 
    49 version remove <name>                                  -- Remove version 
    50 milestone list                                         -- Show milestones 
    51 milestone add <name> [due]                             -- Add milestone 
    52 milestone rename <name> <newname>                      -- Rename milestone 
    53 milestone due <name> <due>                             -- Set milestone due date (Format: "YYYY-MM-DD" or "now") 
    54 milestone completed <name> <completed>                 -- Set milestone completed date (Format: "YYYY-MM-DD" or "now") 
    55 milestone remove <name>                                -- Remove milestone 
     8about                                                              -- Shows information about trac-admin 
     9help                                                               -- Show documentation 
     10initenv                                                            -- Create and initialize a new environment interactively 
     11initenv <projectname> <db> <repostype> <repospath> <templatepath>  -- Create and initialize a new environment from arguments 
     12hotcopy <backupdir>                                                -- Make a hot backup copy of an environment 
     13resync                                                             -- Re-synchronize trac with the repository 
     14upgrade                                                            -- Upgrade database to current version 
     15wiki list                                                          -- List wiki pages 
     16wiki remove <name>                                                 -- Remove wiki page 
     17wiki export <page> [file]                                          -- Export wiki page to file or stdout 
     18wiki import <page> [file]                                          -- Import wiki page from file or stdin 
     19wiki dump <directory>                                              -- Export all wiki pages to files named by title 
     20wiki load <directory>                                              -- Import all wiki pages from directory 
     21wiki upgrade                                                       -- Upgrade default wiki pages to current version 
     22permission list [user]                                             -- List permission rules 
     23permission add <user> <action> [action] [...]                      -- Add a new permission rule 
     24permission remove <user> <action> [action] [...]                   -- Remove permission rule 
     25component list                                                     -- Show available components 
     26component add <name> <owner>                                       -- Add a new component 
     27component rename <name> <newname>                                  -- Rename a component 
     28component remove <name>                                            -- Remove/uninstall component 
     29component chown <name> <owner>                                     -- Change component ownership 
     30ticket remove <number>                                             -- Remove ticket 
     31ticket_type list                                                   -- Show possible ticket types 
     32ticket_type add <value>                                            -- Add a ticket type 
     33ticket_type change <value> <newvalue>                              -- Change a ticket type 
     34ticket_type remove <value>                                         -- Remove a ticket type 
     35ticket_type order <value> up|down                                  -- Move a ticket type up or down in the list 
     36priority list                                                      -- Show possible ticket priorities 
     37priority add <value>                                               -- Add a priority value option 
     38priority change <value> <newvalue>                                 -- Change a priority value 
     39priority remove <value>                                            -- Remove priority value 
     40priority order <value> up|down                                     -- Move a priority value up or down in the list 
     41severity list                                                      -- Show possible ticket severities 
     42severity add <value>                                               -- Add a severity value option 
     43severity change <value> <newvalue>                                 -- Change a severity value 
     44severity remove <value>                                            -- Remove severity value 
     45severity order <value> up|down                                     -- Move a severity value up or down in the list 
     46version list                                                       -- Show versions 
     47version add <name> [time]                                          -- Add version 
     48version rename <name> <newname>                                    -- Rename version 
     49version time <name> <time>                                         -- Set version date (Format: "YYYY-MM-DD" or "now") 
     50version remove <name>                                              -- Remove version 
     51milestone list                                                     -- Show milestones <