NewWorkflow: patch-newworkflow-0_8_2-r1752.diff
| File patch-newworkflow-0_8_2-r1752.diff, 100.1 KB (added by pkou at ua.fm, 3 years ago) |
|---|
-
htdocs/css/timeline.css
40 40 /* Apply icon background-image twice to avoid hover-flicker in IE/Win */ 41 41 dt.changeset, dt.changeset a { background-image: url(../changeset.png) !important } 42 42 dt.newticket, dt.newticket a { background-image: url(../newticket.png) !important } 43 dt.resolvedticket, dt.resolvedticket a { background-image: url(../resolvedticket.png) !important } 44 dt.reopenedticket, dt.reopenedticket a { background-image: url(../reopenedticket.png) !important } 43 45 dt.closedticket, dt.closedticket a { background-image: url(../closedticket.png) !important } 44 46 dt.wiki, dt.wiki a { background-image: url(../wiki.png) !important } 45 47 dt.milestone, dt.milestone a { background-image: url(../milestone.png) !important } -
wiki-default/TracIni
27 27 See also: TracLogging 28 28 29 29 == [ticket] == 30 || workflow || Ticket workflow class. If not specified, it is ''trac.workflows.SimpleWorkflow'' || 30 31 || default_version || Default version for newly created tickets || 31 32 || default_severity || Default severity for newly created tickets || 32 33 || default_priority || Default priority for newly created tickets || -
wiki-default/TracAdmin
28 28 permission add <user> <action> [action] [...] -- Add a new permission rule 29 29 permission remove <user> <action> [action] [...] -- Remove permission rule 30 30 component list -- Show available components 31 component add <name> <owner> -- Add a new component31 component add <name> <owner> [<qaowner>] -- Add a new component 32 32 component rename <name> <newname> -- Rename a component 33 33 component remove <name> -- Remove/uninstall component 34 component chown <name> <owner> -- Change component ownership34 component chown <name> <owner> [<qaowner>] -- Change component ownership 35 35 priority list -- Show possible ticket priorities 36 36 priority add <value> -- Add a priority value option 37 37 priority change <value> <newvalue> -- Change a priority value … … 46 46 version time <name> <time> -- Set version date (Format: "Jun 3, 2003") 47 47 version remove <name> -- Remove version 48 48 milestone list -- Show milestones 49 milestone add <name> [ time]-- Add milestone49 milestone add <name> [<owner> [time]] -- Add milestone 50 50 milestone rename <name> <newname> -- Rename milestone 51 51 milestone time <name> <time> -- Set milestone date (Format: "Jun 3, 2003") 52 52 milestone remove <name> -- Remove milestone 53 milestone chown <name> <owner> -- Change milestone ownership 53 54 }}} 54 55 55 56 == Interactive Mode == -
scripts/trac-admin
292 292 293 293 # ## Component 294 294 _help_component = [('component list', 'Show available components'), 295 ('component add <name> <owner> ', 'Add a new component'),295 ('component add <name> <owner> [<qaowner>]', 'Add a new component'), 296 296 ('component rename <name> <newname>', 'Rename a component'), 297 297 ('component remove <name>', 'Remove/uninstall component'), 298 ('component chown <name> <owner> ', 'Change component ownership')]298 ('component chown <name> <owner> [<qaowner>]', 'Change component ownership')] 299 299 300 300 def complete_component (self, text, line, begidx, endidx): 301 301 if begidx in [16,17]: … … 311 311 try: 312 312 if arg[0] == 'list': 313 313 self._do_component_list() 314 elif arg[0] == 'add' and len(arg) ==3:314 elif arg[0] == 'add' and len(arg) in [3,4]: 315 315 name = arg[1] 316 316 owner = arg[2] 317 self._do_component_add(name, owner) 317 if len(arg) == 4: 318 qaowner = arg[3] 319 else: 320 qaowner = owner 321 self._do_component_add(name, owner, qaowner) 318 322 elif arg[0] == 'rename' and len(arg)==3: 319 323 name = arg[1] 320 324 newname = arg[2] … … 322 326 elif arg[0] == 'remove' and len(arg)==2: 323 327 name = arg[1] 324 328 self._do_component_remove(name) 325 elif arg[0] == 'chown' and len(arg) ==3:329 elif arg[0] == 'chown' and len(arg) in [3,4]: 326 330 name = arg[1] 327 331 owner = arg[2] 328 self._do_component_set_owner(name, owner) 332 if len(arg) == 4: 333 qaowner = arg[3] 334 else: 335 qaowner = owner 336 self._do_component_set_owner(name, owner, qaowner) 329 337 else: 330 338 self.do_help ('component') 331 339 except Exception, e: 332 340 print 'Component %s failed:' % arg[0], e 333 341 334 342 def _do_component_list(self): 335 data = self.db_execsql('SELECT name, owner FROM component')336 self.print_listing(['Name', 'Owner' ], data)343 data = self.db_execsql('SELECT name, owner, qaowner FROM component') 344 self.print_listing(['Name', 'Owner', 'QA Owner'], data) 337 345 338 def _do_component_add(self, name, owner ):339 data = self.db_execsql("INSERT INTO component VALUES('%s', '%s' )"340 % (name, owner))346 def _do_component_add(self, name, owner, qaowner): 347 data = self.db_execsql("INSERT INTO component VALUES('%s', '%s', '%s')" 348 % (name,owner,qaowner)) 341 349 342 350 def _do_component_rename(self, name, newname): 343 351 cnx = self.db_open() … … 362 370 data = self.db_execsql("DELETE FROM component WHERE name='%s'" 363 371 % (name)) 364 372 365 def _do_component_set_owner(self, name, owner ):373 def _do_component_set_owner(self, name, owner, qaowner): 366 374 cnx = self.db_open() 367 375 cursor = cnx.cursor () 368 376 cursor.execute('SELECT name FROM component WHERE name=%s', name) 369 377 data = cursor.fetchone() 370 378 if not data: 371 379 raise Exception("No such component '%s'" % name) 372 data = self.db_execsql("UPDATE component SET owner='%s' WHERE name='%s'"373 % (owner, name))380 data = self.db_execsql("UPDATE component SET owner='%s', qaowner='%s' WHERE name='%s'" 381 % (owner,qaowner,name)) 374 382 375 383 376 384 ## Permission … … 797 805 798 806 ## Milestone 799 807 _help_milestone = [('milestone list', 'Show milestones'), 800 ('milestone add <name> [ time]', 'Add milestone'),808 ('milestone add <name> [<owner> [time]]', 'Add milestone'), 801 809 ('milestone rename <name> <newname>', 802 810 'Rename milestone'), 811 ('milestone chown <name> <newowner>', 'Change milestone owner'), 803 812 ('milestone time <name> <time>', 'Set milestone date (Format: "Jun 3, 2003")'), 804 813 ('milestone remove <name>', 'Remove milestone')] 805 814 … … 807 816 808 817 if begidx in [15,17]: 809 818 comp = self.get_milestone_list () 819 elif begidx > 15 and line.startswith('milestone chown '): 820 comp = self.get_user_list() 810 821 elif begidx < 15: 811 comp = ['list','add','rename',' time','remove']822 comp = ['list','add','rename','chown','time','remove'] 812 823 return self.word_complete(text, comp) 813 824 814 825 def do_milestone(self, line): 815 self._do_mile_ver('milestone', line) 826 type = 'milestone' 827 arg = self.arg_tokenize(line) 828 try: 829 if arg[0] == 'list': 830 self._do_milestone_list() 831 elif arg[0] == 'add' and len(arg) in [2,3,4]: 832 name = arg[1] 833 self._do_mile_ver_add(type, name) 834 if len(arg) >= 3: 835 owner = arg[2] 836 self._do_mile_ver_chown(type, name, owner) 837 if len(arg) >= 4: 838 time = arg[3] 839 self._do_mile_ver_time(type, name, time) 840 elif arg[0] == 'rename' and len(arg)==3: 841 name = arg[1] 842 newname = arg[2] 843 self._do_mile_ver_rename(type, name, newname) 844 elif arg[0] == 'chown' and len(arg)==3: 845 name = arg[1] 846 owner = arg[2] 847 self._do_mile_ver_chown(type, name, owner) 848 elif arg[0] == 'time' and len(arg)==3: 849 name = arg[1] 850 time = arg[2] 851 self._do_mile_ver_time(type, name, time) 852 elif arg[0] == 'remove' and len(arg)==2: 853 name = arg[1] 854 self._do_mile_ver_remove(type, name) 855 else: 856 self.do_help (type) 857 except Exception, e: 858 print 'Command %s failed:' % arg[0], e 816 859 860 def _do_milestone_list(self): 861 data = self.db_execsql("SELECT name,owner,time FROM milestone ORDER BY time,name") 862 data = map(lambda x: (x[0], x[1], x[2] and time.strftime('%c', time.localtime(x[2]))), data) 863 #print data 864 self.print_listing(['Name', 'Owner', 'Time'], data) 817 865 866 818 867 ## Version 819 868 _help_version = [('version list', 'Show versions'), 820 869 ('version add <name> [time]', 'Add version'), … … 834 883 def do_version(self, line): 835 884 self._do_mile_ver('version', line) 836 885 837 # Milestone and Version are identical, methods886 # Milestone and Version are almost identical, methods 838 887 839 888 def _do_mile_ver(self, type, line): 840 889 arg = self.arg_tokenize(line) … … 925 974 else: 926 975 print >> sys.stderr, 'Unknown time format' 927 976 977 def _do_mile_ver_chown(self, type, name, owner): 978 data = self.db_execsql("UPDATE %s SET owner='%s' WHERE name='%s'" 979 % (type, owner, name)); 980 928 981 _help_upgrade = [('upgrade', 'Upgrade database to current version.')] 929 982 def do_upgrade(self, line): 930 983 arg = self.arg_tokenize(line) -
setup.py
206 206 author_email="info@edgewall.com", 207 207 license=LICENSE, 208 208 url=URL, 209 packages=['trac', 'trac.upgrades', 'trac.wikimacros', 'trac.mimeviewers'], 209 packages=['trac', 'trac.upgrades', 'trac.wikimacros', 'trac.mimeviewers', 210 'trac.workflows'], 210 211 data_files=[(_p('share/trac/templates'), glob('templates/*')), 211 212 (_p('share/trac/htdocs'), glob(_p('htdocs/*.*')) + [_p('htdocs/README')]), 212 213 (_p('share/trac/htdocs/css'), glob(_p('htdocs/css/*'))), -
trac/db_default.py
21 21 22 22 23 23 # Database version identifier. Used for automatic upgrades. 24 db_version = 724 db_version = 8 25 25 26 26 def __mkreports(reps): 27 27 """Utility function used to create report data in same syntax as the … … 125 125 ); 126 126 CREATE TABLE component ( 127 127 name text PRIMARY KEY, 128 owner text 128 owner text, 129 qaowner text 129 130 ); 130 131 CREATE TABLE milestone ( 131 132 id integer PRIMARY KEY, 132 133 name text, 133 134 time integer, 135 owner text, 134 136 descr text, 135 137 UNIQUE(name) 136 138 ); … … 209 211 """, 210 212 """ 211 213 SELECT p.value AS __color__, 212 versionAS __group__,213 id AS ticket, summary, component, version, severity,214 (CASE WHEN IFNULL(version, '') = '' THEN 'Not Specified' ELSE 'Version ' || version END) AS __group__, 215 id AS ticket, summary, component, milestone, severity, 214 216 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 215 217 time AS created, 216 218 changetime AS _changetime, description AS _description, … … 218 220 FROM ticket t, enum p 219 221 WHERE status IN ('new', 'assigned', 'reopened') 220 222 AND p.name = t.priority AND p.type = 'priority' 221 ORDER BY ( version IS NULL),version, p.value, severity, time223 ORDER BY (IFNULL(version, '') = '') DESC,version, p.value, severity, time 222 224 """), 223 225 #---------------------------------------------------------------------------- 224 ('A llTickets by Milestone',226 ('Active Tickets by Milestone', 225 227 """ 226 228 This report shows how to color results by priority, 227 229 while grouping results by milestone. … … 231 233 """, 232 234 """ 233 235 SELECT p.value AS __color__, 234 milestone||' Release'AS __group__,236 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 235 237 id AS ticket, summary, component, version, severity, 236 238 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 237 239 time AS created, … … 240 242 FROM ticket t, enum p 241 243 WHERE status IN ('new', 'assigned', 'reopened') 242 244 AND p.name = t.priority AND p.type = 'priority' 243 ORDER BY ( milestone IS NULL),milestone, p.value, severity, time245 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 244 246 """), 245 247 #---------------------------------------------------------------------------- 246 248 ('Assigned, Active Tickets by Owner', … … 248 250 List assigned tickets, group by ticket owner, sorted by priority. 249 251 """, 250 252 """ 251 252 253 SELECT p.value AS __color__, 253 ownerAS __group__,254 id AS ticket, summary, component, milestone, severity, time AS created,254 (CASE WHEN IFNULL(owner, '') = '' THEN 'Not Assigned' ELSE owner END) AS __group__, 255 id AS ticket, summary, component, version, milestone, severity, time AS created, 255 256 changetime AS _changetime, description AS _description, 256 257 reporter AS _reporter 257 258 FROM ticket t,enum p 258 259 WHERE status = 'assigned' 259 260 AND p.name=t.priority AND p.type='priority' 260 ORDER BY owner, p.value, severity, time261 ORDER BY (IFNULL(owner, '') = '') DESC, owner, p.value, severity, time 261 262 """), 262 263 #---------------------------------------------------------------------------- 263 264 ('Assigned, Active Tickets by Owner (Full Description)', … … 268 269 """ 269 270 SELECT p.value AS __color__, 270 271 owner AS __group__, 271 id AS ticket, summary, component, milestone, severity, time AS created,272 id AS ticket, summary, component, version, milestone, severity, time AS created, 272 273 description AS _description_, 273 274 changetime AS _changetime, reporter AS _reporter 274 275 FROM ticket t, enum p … … 283 284 """, 284 285 """ 285 286 SELECT p.value AS __color__, 286 t.milestoneAS __group__,287 (CASE WHEN IFNULL(t.milestone, '') = '' THEN 'Not Assigned' ELSE t.milestone || ' Release' END) AS __group__, 287 288 (CASE status 288 289 WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;' 289 290 ELSE 290 291 (CASE owner WHEN '$USER' THEN 'font-weight: bold' END) 291 292 END) AS __style__, 292 293 id AS ticket, summary, component, status, 293 resolution,version, severity, priority, owner, 294 (CASE WHEN resolution ISNULL THEN '' ELSE resolution END) AS resolution, 295 version, severity, priority, owner, 294 296 changetime AS modified, 295 297 time AS _time,reporter AS _reporter 296 298 FROM ticket t,enum p 297 299 WHERE p.name=t.priority AND p.type='priority' 298 ORDER BY ( milestone IS NULL), milestone DESC, (status = 'closed'),300 ORDER BY (IFNULL(milestone, '') = '') DESC, milestone DESC, (status = 'closed'), 299 301 (CASE status WHEN 'closed' THEN modified ELSE -p.value END) DESC 300 302 """), 301 303 #---------------------------------------------------------------------------- … … 307 309 """, 308 310 """ 309 311 SELECT p.value AS __color__, 310 (CASE status WHEN 'assigned' THEN 'Assigned' ELSE 'Owned' END) AS __group__, 311 id AS ticket, summary, component, version, milestone, 312 severity, priority, time AS created, 312 (CASE WHEN status <> 'new' THEN 'Assigned' 313 ELSE 'Owned in ' || IFNULL(milestone, 'N/A') 314 END) AS __group__, 315 id AS ticket, summary, component, status, resolution, version, milestone, 316 priority, time AS created, 313 317 changetime AS _changetime, description AS _description, 314 318 reporter AS _reporter 315 319 FROM ticket t, enum p 316 WHERE t.status IN ('new', 'assigned', 'reopened')320 WHERE t.status <> 'closed' 317 321 AND p.name = t.priority AND p.type = 'priority' AND owner = '$USER' 318 ORDER BY (status = 'assigned') DESC, p.value, milestone, severity, time 322 ORDER BY (status = 'new'), (IFNULL(milestone, '') = '') DESC, 323 milestone, p.value, resolution, time 319 324 """), 320 325 #---------------------------------------------------------------------------- 321 326 ('Active Tickets, Mine first', … … 338 343 WHERE status IN ('new', 'assigned', 'reopened') 339 344 AND p.name = t.priority AND p.type = 'priority' 340 345 ORDER BY (owner = '$USER') DESC, p.value, milestone, severity, time 346 """), 347 #---------------------------------------------------------------------------- 348 ('Open Tickets, Mine first', 349 """ 350 * List all not closed tickets by priority. 351 * Show all tickets owned by the logged in user in a group first. 352 """, 353 """ 354 SELECT p.value AS __color__, 355 (CASE owner 356 WHEN '$USER' THEN 'My Tickets' 357 ELSE 'Open Tickets' 358 END) AS __group__, 359 id AS ticket, summary, component, status, version, milestone, severity, 360 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 361 time AS created, 362 changetime AS _changetime, description AS _description, 363 reporter AS _reporter 364 FROM ticket t, enum p 365 WHERE status <> 'closed' 366 AND p.name = t.priority AND p.type = 'priority' 367 ORDER BY (owner = '$USER') DESC, p.value, milestone, severity, time 368 """), 369 #---------------------------------------------------------------------------- 370 ('Open Tickets by Version', 371 """ 372 * List all not closed tickets by priority. 373 * Group results by version. 374 """, 375 """ 376 SELECT p.value AS __color__, 377 (CASE WHEN IFNULL(version, '') = '' THEN 'Not Specified' ELSE 'Version ' || version END) AS __group__, 378 id AS ticket, summary, component, status, milestone, severity, 379 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 380 time AS created, 381 changetime AS _changetime, description AS _description, 382 reporter AS _reporter 383 FROM ticket t, enum p 384 WHERE status <> 'closed' 385 AND p.name = t.priority AND p.type = 'priority' 386 ORDER BY (IFNULL(version, '') = '') desc,version, p.value, severity, time 387 """), 388 #---------------------------------------------------------------------------- 389 ('Open Tickets by Milestone', 390 """ 391 * List all not closed tickets by priority. 392 * Group results by milestone. 393 """, 394 """ 395 SELECT p.value AS __color__, 396 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 397 id AS ticket, summary, component, status, version, severity, 398 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 399 time AS created, 400 changetime AS _changetime, description AS _description, 401 reporter AS _reporter 402 FROM ticket t, enum p 403 WHERE status <> 'closed' 404 AND p.name = t.priority AND p.type = 'priority' 405 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 406 """), 407 #---------------------------------------------------------------------------- 408 ('Open Tickets by Owner', 409 """ 410 List not closed tickets, group by ticket owner, sorted by priority. 411 """, 412 """ 413 SELECT p.value AS __color__, 414 (CASE WHEN IFNULL(owner, '') = '' THEN 'Not Assigned' ELSE owner END) AS __group__, 415 id AS ticket, summary, component, status, version, milestone, severity, 416 time AS created, changetime AS _changetime, description AS _description, 417 reporter AS _reporter 418 FROM ticket t,enum p 419 WHERE status <> 'closed' 420 AND p.name=t.priority AND p.type='priority' 421 ORDER BY (IFNULL(owner, '') = '') DESC, owner, p.value, severity, time 422 """), 423 #---------------------------------------------------------------------------- 424 ('Open Tickets by Status', 425 """ 426 * List all not closed tickets by priority. 427 * Group results by status. 428 """, 429 """ 430 SELECT p.value AS __color__, 431 status AS __group__, 432 id AS ticket, summary, component, version, milestone, severity, owner, 433 time AS created, 434 changetime AS _changetime, description AS _description, 435 reporter AS _reporter 436 FROM ticket t, enum q, enum p 437 WHERE status <> 'closed' 438 AND q.name = t.status AND q.type = 'status' 439 AND p.name = t.priority AND p.type = 'priority' 440 ORDER BY q.value, p.value, severity, time 441 """), 442 #---------------------------------------------------------------------------- 443 ('Resolved Tickets, Mine first', 444 """ 445 * List all resolved tickets by priority. 446 * Show all tickets owned by the logged in user in a group first. 447 """, 448 """ 449 SELECT p.value AS __color__, 450 (CASE owner 451 WHEN '$USER' THEN 'My Tickets' 452 ELSE 'Active Tickets' 453 END) AS __group__, 454 id AS ticket, summary, component, version, milestone, severity, 455 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 456 time AS created, 457 changetime AS _changetime, description AS _description, 458 reporter AS _reporter 459 FROM ticket t, enum p 460 WHERE status = 'resolved' 461 AND p.name = t.priority AND p.type = 'priority' 462 ORDER BY (owner = '$USER') DESC, p.value, milestone, severity, time 463 """), 464 #---------------------------------------------------------------------------- 465 ('Resolved Tickets by Milestone', 466 """ 467 List resolved tickets, sorted by priority, grouped by milestone 468 """, 469 """ 470 SELECT p.value AS __color__, 471 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 472 id AS ticket, summary, component, version, severity, 473 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 474 time AS created, 475 changetime AS _changetime, description AS _description, 476 reporter AS _reporter 477 FROM ticket t, enum p 478 WHERE status = 'resolved' 479 AND p.name = t.priority AND p.type = 'priority' 480 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 481 """), 482 #---------------------------------------------------------------------------- 483 ('Resolved Tickets by Owner', 484 """ 485 List resolved tickets, group by ticket owner, sorted by priority. 486 """, 487 """ 488 SELECT p.value AS __color__, 489 (CASE WHEN IFNULL(owner, '') = '' THEN 'Not Assigned' ELSE owner END) AS __group__, 490 id AS ticket, summary, component, version, milestone, severity, time AS created, 491 changetime AS _changetime, description AS _description, 492 reporter AS _reporter 493 FROM ticket t,enum p 494 WHERE status = 'resolved' 495 AND p.name=t.priority AND p.type='priority' 496 ORDER BY (IFNULL(owner, '') = '') DESC, owner, p.value, severity, time 497 """), 498 #---------------------------------------------------------------------------- 499 ('Completed Tickets by Milestone (Full Description)', 500 """ 501 Release Notes: List verified and closed tickets, group by milestone, include description. 502 """, 503 """ 504 SELECT p.value AS __color__, 505 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 506 id AS ticket, summary, component, status, version, severity, time AS created, 507 description AS _description_, 508 changetime AS _changetime, reporter AS _reporter 509 FROM ticket t, enum p 510 WHERE status IN ('verified', 'closed') 511 AND p.name = t.priority AND p.type = 'priority' 512 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 341 513 """)) 342 514 343 515 … … 347 519 348 520 # (table, (column1, column2), ((row1col1, row1col2), (row2col1, row2col2))) 349 521 data = (('component', 350 ('name', 'owner' ),351 (('component1', 'somebody' ),352 ('component2', 'somebody' ))),522 ('name', 'owner', 'qaowner'), 523 (('component1', 'somebody', 'qasomebody'), 524 ('component2', 'somebody', 'qasomebody'))), 353 525 ('milestone', 354 526 ('name', 'time'), 355 527 (('', 0), … … 367 539 (('status', 'new', 1), 368 540 ('status', 'assigned', 2), 369 541 ('status', 'reopened', 3), 370 ('status', 'closed', 4), 542 ('status', 'resolved', 4), 543 ('status', 'verified', 5), 544 ('status', 'closed', 6), 371 545 ('resolution', 'fixed', 1), 372 546 ('resolution', 'invalid', 2), 373 547 ('resolution', 'wontfix', 3), … … 426 600 ('project', 'footer', 427 601 ' Visit the Trac open source project at<br />' 428 602 '<a href="http://trac.edgewall.com/">http://trac.edgewall.com/</a>'), 603 ('ticket', 'workflow', 'trac.workflows.QaRmtWorkflow'), 429 604 ('ticket', 'default_version', ''), 430 605 ('ticket', 'default_severity', 'normal'), 431 606 ('ticket', 'default_priority', 'normal'), -
trac/Milestone.py
60 60 if not group: 61 61 queries['all_tickets'] = env.href.query({'milestone': milestone}) 62 62 queries['active_tickets'] = env.href.query({ 63 'milestone': milestone, 'status': ['new', 'assigned', 'reopened' ]63 'milestone': milestone, 'status': ['new', 'assigned', 'reopened', 'resolved'] 64 64 }) 65 65 queries['closed_tickets'] = env.href.query({ 66 'milestone': milestone, 'status': 'closed'66 'milestone': milestone, 'status': ['closed', 'verified'] 67 67 }) 68 68 else: 69 69 queries['all_tickets'] = env.href.query({ … … 71 71 }) 72 72 queries['active_tickets'] = env.href.query({ 73 73 'milestone': milestone, grouped_by: group, 74 'status': ['new', 'assigned', 'reopened' ]74 'status': ['new', 'assigned', 'reopened', 'resolved'] 75 75 }) 76 76 queries['closed_tickets'] = env.href.query({ 77 77 'milestone': milestone, grouped_by: group, 78 'status': 'closed'78 'status': ['closed', 'verified'] 79 79 }) 80 80 return queries 81 81 82 82 def calc_ticket_stats(tickets): 83 83 total_cnt = len(tickets) 84 active = [ticket for ticket in tickets if ticket['status'] != 'closed' ]84 active = [ticket for ticket in tickets if ticket['status'] != 'closed' and ticket['status'] != 'verified'] 85 85 active_cnt = len(active) 86 86 closed_cnt = total_cnt - active_cnt 87 87 … … 116 116 if datestr: 117 117 date = self.parse_date(datestr) 118 118 descr = self.args.get('descr', '') 119 owner = self.args.get('owner', '') 119 120 if not id: 120 self.create_milestone(name, date, descr )121 self.create_milestone(name, date, descr, owner) 121 122 else: 122 &n
