Changeset 216
- Timestamp:
- 12/20/05 19:47:07 (3 years ago)
- Files:
-
- tracfrenchtranslation/0.9/contrib/migrateticketmodel.py (added)
- tracfrenchtranslation/0.9/htdocs/css/browser.css (modified) (3 diffs)
- tracfrenchtranslation/0.9/htdocs/css/trac.css (modified) (1 diff)
- tracfrenchtranslation/0.9/templates/browser.cs (modified) (1 diff)
- tracfrenchtranslation/0.9/templates/changeset.cs (modified) (3 diffs)
- tracfrenchtranslation/0.9/templates/log.cs (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/attachment.py (modified) (4 diffs)
- tracfrenchtranslation/0.9/trac/config.py (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/db_default.py (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/env.py (modified) (4 diffs)
- tracfrenchtranslation/0.9/trac/__init__.py (modified) (1 diff)
- tracfrenchtranslation/0.9/trac/mimeview/api.py (modified) (7 diffs)
- tracfrenchtranslation/0.9/trac/Notify.py (modified) (3 diffs)
- tracfrenchtranslation/0.9/trac/scripts/admin.py (modified) (9 diffs)
- tracfrenchtranslation/0.9/trac/scripts/tests/admin-tests.txt (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/Search.py (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/tests/config.py (modified) (1 diff)
- tracfrenchtranslation/0.9/trac/ticket/api.py (modified) (1 diff)
- tracfrenchtranslation/0.9/trac/ticket/model.py (modified) (6 diffs)
- tracfrenchtranslation/0.9/trac/ticket/query.py (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/ticket/tests/model.py (modified) (6 diffs)
- tracfrenchtranslation/0.9/trac/ticket/web_ui.py (modified) (3 diffs)
- tracfrenchtranslation/0.9/trac/util.py (modified) (3 diffs)
- tracfrenchtranslation/0.9/trac/versioncontrol/api.py (modified) (4 diffs)
- tracfrenchtranslation/0.9/trac/versioncontrol/svn_fs.py (modified) (14 diffs)
- tracfrenchtranslation/0.9/trac/versioncontrol/tests/svn_fs.py (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/versioncontrol/tests/svnrepos.dump (modified) (1 diff)
- tracfrenchtranslation/0.9/trac/versioncontrol/web_ui/browser.py (modified) (4 diffs)
- tracfrenchtranslation/0.9/trac/versioncontrol/web_ui/changeset.py (modified) (10 diffs)
- tracfrenchtranslation/0.9/trac/versioncontrol/web_ui/util.py (modified) (1 diff)
- tracfrenchtranslation/0.9/trac/web/api.py (modified) (2 diffs)
- tracfrenchtranslation/0.9/trac/web/auth.py (modified) (4 diffs)
- tracfrenchtranslation/0.9/trac/web/chrome.py (modified) (3 diffs)
- tracfrenchtranslation/0.9/trac/wiki/api.py (modified) (3 diffs)
- tracfrenchtranslation/0.9/trac/wiki/formatter.py (modified) (14 diffs)
- tracfrenchtranslation/0.9/trac/wiki/macros.py (modified) (1 diff)
- tracfrenchtranslation/0.9/trac/wiki/tests/wiki-tests.txt (modified) (7 diffs)
- tracfrenchtranslation/0.9/trac/wiki/web_ui.py (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tracfrenchtranslation/0.9/htdocs/css/browser.css
r160 r216 24 24 color: #888; 25 25 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; 26 33 } 27 34 #dirlist td.size { … … 60 67 #chglist td.date { font-size: 85%; vertical-align: top; padding-top: 0.55em; white-space: nowrap } 61 68 #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 } 63 75 #chglist td.rev a, #chglist td.chgset a { border-bottom: none } 64 76 #chglist td.summary { width: 100%; font-size: 85%; vertical-align: middle; white-space: nowrap } … … 77 89 } 78 90 #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% } 81 93 #info .message ul { padding: 0; margin: 0 2em } 82 94 #info .message p { margin: 0; padding: 0 } tracfrenchtranslation/0.9/htdocs/css/trac.css
r160 r216 258 258 .wikipage h1, .wikipage h2, .wikipage h3 { margin-left: -18px } 259 259 260 a.missing:link, a.missing:visited { background: #fafaf0; color: #998 }260 a.missing:link, a.missing:visited, span.missing { background: #fafaf0; color: #998 } 261 261 a.missing:hover { color: #000; } 262 262 a.closed:link, a.closed:visited { text-decoration: line-through } tracfrenchtranslation/0.9/templates/browser.cs
r160 r216 79 79 <table id="info" summary="Info révisions"><?cs 80 80 if:!browser.is_dir ?><tr> 81 <th scope=" row">81 <th scope="col"> 82 82 Révision <a href="<?cs var:file.changeset_href ?>"><?cs var:file.rev ?></a> 83 83 (déposée par <?cs var:file.author ?>, <?cs var:file.age ?> ago) 84 </th> 84 </th></tr><tr> 85 85 <td class="message"><?cs var:file.message ?></td> 86 86 </tr><?cs /if ?><?cs tracfrenchtranslation/0.9/templates/changeset.cs
r160 r216 5 5 <h2>Consultation des versions</h2><?cs 6 6 with:links = chrome.links ?> 7 <ul> <?cs8 if:len(links.prev) ?>9 < li class="first<?cs if:!len(links.next) ?> last<?cs /if ?>">10 ←<a class="prev" href="<?cs var:links.prev.0.href ?>" title="<?cs11 var:links.prev.0.title ?>">Version précédente</a>12 </li><?cs13 /if ?><?cs14 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) ?> ← 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">← Version précédente</span><?cs /if ?> 13 </li> 14 <li class="last"> 15 <?cs if:len(links.next) ?> 16 16 <a class="next" href="<?cs var:links.next.0.href ?>" title="<?cs 17 var:links.next.0.title ?>">Version suivante</a> →18 < /li><?cs19 /if ?>17 var:links.next.0.title ?>">Version suivante</a> → 18 <?cs else ?><span class="missing">Version suivante →</span><?cs /if ?> 19 </li> 20 20 </ul><?cs 21 21 /with ?> … … 33 33 <form method="post" id="prefs" action=""> 34 34 <div> 35 <label for="style">Voir les diff erences</label>35 <label for="style">Voir les différences</label> 36 36 <select id="style" name="style"> 37 37 <option value="inline"<?cs … … 103 103 <dl id="overview"> 104 104 <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> 106 107 <dt class="author">Auteur:</dt> 107 108 <dd class="author"><?cs var:changeset.author ?></dd> tracfrenchtranslation/0.9/templates/log.cs
r160 r216 28 28 <input type="hidden" name="action" value="<?cs var:log.mode ?>" /> 29 29 <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/> 31 31 <label>et jusqu'à <input type="text" id="stop_rev" name="stop_rev" value="<?cs 32 32 var:log.stop_rev ?>" size="5" />révisions précédentes</label> … … 49 49 <input type="radio" id="path_history" name="mode" value="path_history" <?cs 50 50 if:log.mode == "path_history" ?> checked="checked" <?cs /if ?> /> 51 Montrer uniquement les ajouts, déplacements et suppression51 Ajouts, déplacements et suppression uniquement 52 52 </label> 53 53 </fieldset> tracfrenchtranslation/0.9/trac/attachment.py
r160 r216 259 259 parent_id = '/'.join(segments[:-1]) 260 260 filename = segments[-1] 261 if len(segments) == 1 or not filename: 262 raise TracError('Mauvaise requête') 261 263 attachment = Attachment(self.env, parent_type, parent_id, filename) 262 264 … … 385 387 386 388 fmt = req.args.get('format') 387 mimetype = fmt == 'txt' and 'text/plain' or \388 get_mimetype(attachment.filename) or 'application/octet-stream'389 389 390 390 req.check_modified(attachment.time) … … 395 395 396 396 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) 398 399 req.hdf['attachment.parent'] = { 399 400 'type': attachment.parent_type, 'id': attachment.parent_id, … … 401 402 } 402 403 403 raw_href = attachment.href(format='raw')404 add_link(req, 'alternate', raw_href, 'Format original', mimetype)405 req.hdf['attachment.raw_href'] = raw_href406 407 404 perm_map = {'ticket': 'TICKET_ADMIN', 'wiki': 'WIKI_DELETE'} 408 405 if req.perm.has_permission(perm_map[attachment.parent_type]): 409 406 req.hdf['attachment.can_delete'] = 1 410 407 411 self.log.debug("Rendering preview of file %s with mime-type %s"412 % (attachment.filename, mimetype))413 408 fd = attachment.open() 414 409 try: 415 410 mimeview = Mimeview(self.env) 416 411 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) 419 424 420 425 if fmt in ('raw', 'txt'): 421 426 # 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) 424 430 return 425 431 426 432 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, 431 438 attachment.filename, None, 432 439 annotations=['lineno']) tracfrenchtranslation/0.9/trac/config.py
r160 r216 18 18 import os 19 19 import sys 20 21 _TRUE_VALUES = ('yes', 'true', 'on', 'aye', '1', 1, True) 20 22 21 23 … … 44 46 return default 45 47 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 46 53 47 54 def setdefault(self, section, name, value): tracfrenchtranslation/0.9/trac/db_default.py
r160 r216 384 384 385 385 default_config = \ 386 (('trac', 'repository_dir', ''), 386 (('trac', 'repository_type', 'svn'), 387 ('trac', 'repository_dir', ''), 387 388 ('trac', 'templates_dir', default_dir('templates')), 388 389 ('trac', 'database', 'sqlite:db/trac.db'), … … 477 478 'trac.Timeline', 478 479 'trac.versioncontrol.web_ui', 480 'trac.versioncontrol.svn_fs', 479 481 'trac.wiki.macros', 'trac.wiki.web_ui', 480 482 'trac.web.auth') tracfrenchtranslation/0.9/trac/env.py
r160 r216 22 22 ExtensionPoint, TracError 23 23 from trac.db import DatabaseManager 24 from trac.versioncontrol import RepositoryManager 24 25 25 26 __all__ = ['Environment', 'IEnvironmentSetupParticipant', 'open_environment'] … … 122 123 return enabled 123 124 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 124 129 # By default, all components in the trac package are enabled 125 130 return component_name.startswith('trac.') … … 144 149 environment. 145 150 146 The repository is wrapped in a `CachedRepository`.147 148 151 @param authname: user name for authorization 149 152 """ 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') 153 154 repos_dir = self.config.get('trac', 'repository_dir') 154 155 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) 161 159 162 160 def create(self, options=[]): … … 275 273 db_str = self.config.get('trac', 'database') 276 274 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' 278 277 db_name = os.path.join(self.path, db_str[7:]) 279 278 if not dest: tracfrenchtranslation/0.9/trac/__init__.py
r160 r216 11 11 __docformat__ = 'epytext en' 12 12 13 __version__ = '1.0dev '13 __version__ = '1.0dev-vc-refactoring' 14 14 __url__ = 'http://trac.edgewall.com/' 15 15 __copyright__ = '(C) 2003-2005 Edgewall Software' tracfrenchtranslation/0.9/trac/mimeview/api.py
r160 r216 27 27 from trac.util import escape, to_utf8 28 28 29 __all__ = ['get_charset', 'get_mimetype', 'is_binary', 'detect_unicode', 30 'Mimeview'] 29 __all__ = ['get_mimetype', 'is_binary', 'detect_unicode', 'Mimeview'] 31 30 32 31 MIME_MAP = { … … 62 61 'm':'text/x-objc', 'mm':'text/x-objc', 63 62 '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', 65 65 'mail':'text/x-mail', 66 66 'pas':'text/x-pascal', 67 67 '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', 69 70 'php':'text/x-php', 'php4':'text/x-php', 'php3':'text/x-php', 70 71 'ps':'application/postscript', … … 72 73 'py':'text/x-python', 'python':'text/x-python', 73 74 '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', 75 77 'rb':'text/x-ruby', 'ruby':'text/x-ruby', 76 78 'rfc':'text/x-rfc', … … 95 97 } 96 98 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 100 MODE_RE = re.compile( 101 r"#!(?:[/\w.-_]+/)?(\w+)|" # look for shebang 102 r"-\*-\s*(?:mode:\s*)?([\w+-]+)\s*-\*-" # look for Emacs' -*- mode -*- 103 ) 104 105 def get_mimetype(filename, content=None): 108 106 """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] 109 116 try: 110 suffix = filename.split('.')[-1]111 return MIME_MAP[suffix]112 except KeyError:113 117 import mimetypes 114 118 return mimetypes.guess_type(filename)[0] 115 119 except: 116 return None 120 if content and is_binary(content): 121 return 'application/octet-stream' 122 else: 123 return None 117 124 118 125 def is_binary(str): … … 205 212 206 213 if filename and not mimetype: 207 mimetype = get_mimetype(filename )214 mimetype = get_mimetype(filename, content) 208 215 mimetype = mimetype.split(';')[0].strip() # split off charset 209 216 … … 284 291 return int(self.config.get('mimeviewer', 'max_preview_size', '262144')) 285 292 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, 291 316 detail=None, annotations=None): 292 317 max_preview_size = self.max_preview_size() … … 296 321 297 322 if not is_binary(content): 298 content = to_utf8(content, charset or self.preview_charset(content))323 content = self.to_utf8(content, mimetype) 299 324 return {'preview': self.render(req, mimetype, content, 300 325 filename, detail, annotations)} tracfrenchtranslation/0.9/trac/Notify.py
r160 r216 17 17 from trac.__init__ import __version__ 18 18 from trac.core import TracError 19 from trac.util import CRLF, TRUE, FALSE,wrap19 from trac.util import CRLF, wrap 20 20 from trac.web.clearsilver import HDFWrapper 21 21 from trac.web.main import populate_hdf … … 88 88 self.subject = subject 89 89 90 enabled = self.config.get('notification', 'smtp_enabled') 91 if not enabled.lower() in TRUE: 90 if not self.config.getbool('notification', 'smtp_enabled'): 92 91 return 93 92 self.smtp_server = self.config.get('notification', 'smtp_server') … … 267 266 268 267 def get_recipients(self, tktid): 269 val = self.config.get('notification', 'always_notify_reporter')270 notify_reporter = val.lower() in TRUE271 val = self.config.get('notification', 'always_notify_owner')272 notify_owner = val.lower() in TRUE268 notify_reporter = self.config.getbool('notification', 269 'always_notify_reporter') 270 notify_owner = self.config.getbool('notification', 271 'always_notify_owner') 273 272 274 273 recipients = self.prev_cc tracfrenchtranslation/0.9/trac/scripts/admin.py
r161 r216 37 37 """Recursively copy a directory tree using copy2() (from shutil.copytree.) 38 38 39 Added a n`skip` parameter consisting of absolute paths39 Added a `skip` parameter consisting of absolute paths 40 40 which we don't want to copy. 41 41 """ … … 251 251 seconds = int(time.time()) 252 252 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']: 255 255 try: 256 256 pt = time.strptime(t, format) … … 297 297 # self._help_config + self._help_wiki + 298 298 self._help_permission + self._help_component + 299 self._help_ticket + 299 300 self._help_ticket_type + self._help_priority + 300 301 self._help_severity + self._help_version + 301 302 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__ 303 305 if not self.interactive: 304 306 print … … 487 489 _help_initenv = [('initenv', 488 490 'Create and initialize a new environment interactively'), 489 ('initenv <projectname> <db> <repos path> <templatepath>',491 ('initenv <projectname> <db> <repostype> <repospath> <templatepath>', 490 492 'Create and initialize a new environment from arguments')] 491 493 … … 516 518 returnvals.append(raw_input(prompt).strip() or ddb) 517 519 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()) 525 537 print 526 538 print ' Please enter location of Trac page templates.' … … 546 558 if len(arg) == 1 and not arg[0]: 547 559 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: 550 563 print 'Wrong number of arguments to initenv: %d' % len(arg) 551 564 return 2 552 565 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] 554 568 555 569 if not os.access(os.path.join(templates_dir, 'header.cs'), os.F_OK): … … 561 575 options = [ 562 576 ('trac', 'database', db_str), 577 ('trac', 'repository_type', repository_type), 563 578 ('trac', 'repository_dir', repository_dir), 564 579 ('trac', 'templates_dir', templates_dir), … … 580 595 cnx.commit() 581 596 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'))) 586 613 except Exception, e: 587 614 print 'Failed to initialize environment.', e … … 757 784 self._do_wiki_import(filename, page, cursor) 758 785 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 759 816 760 817 ## (Ticket) Type tracfrenchtranslation/0.9/trac/scripts/tests/admin-tests.txt
r160 r216 1 1 ===== test_help_ok ===== 2 trac-admin - The Trac Administration Console %(version)s2 trac-admin - The Trac Administration Console 1.0dev-vc-refactoring 3 3 4 4 Usage: trac-admin </path/to/projenv> [command [subcommand] [option ...]] … … 6 6 Invoking trac-admin without command starts interactive mode. 7 7 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 8 about -- Shows information about trac-admin 9 help -- Show documentation 10 initenv -- Create and initialize a new environment interactively 11 initenv <projectname> <db> <repostype> <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 remove <number> -- Remove ticket 31 ticket_type list -- Show possible ticket types 32 ticket_type add <value> -- Add a ticket type 33 ticket_type change <value> <newvalue> -- Change a ticket type 34 ticket_type remove <value> -- Remove a ticket type 35 ticket_type order <value> up|down -- Move a ticket type up or down in the list 36 priority list -- Show possible ticket priorities 37 priority add <value> -- Add a priority value option 38 priority change <value> <newvalue> -- Change a priority value 39 priority remove <value> -- Remove priority value 40 priority order <value> up|down -- Move a priority value up or down in the list 41 severity list -- Show possible ticket severities 42 severity add <value> -- Add a severity value option 43 severity change <value> <newvalue> -- Change a severity value 44 severity remove <value> -- Remove severity value 45 severity order <value> up|down -- Move a severity value up or down in the list 46 version list -- Show versions 47 version add <name> [time] -- Add version 48 version rename <name> <newname> -- Rename version 49 version time <name> <time> -- Set version date (Format: "YYYY-MM-DD" or "now") 50 version remove <name> -- Remove version 51 milestone list -- Show milestones <
