NewWorkflow: patch-newworkflow-r1003.diff
| File patch-newworkflow-r1003.diff, 80.4 KB (added by pkou@…, 4 years ago) |
|---|
-
htdocs/css/timeline.css
30 30 /* Apply icon background-image twice to avoid hover-flicker in IE/Win */ 31 31 dt.changeset, dt.changeset a { background-image: url(../changeset.png) !important } 32 32 dt.newticket, dt.newticket a { background-image: url(../newticket.png) !important } 33 dt.resolvedticket, dt.resolvedticket a { background-image: url(../resolvedticket.png) !important } 33 34 dt.closedticket, dt.closedticket a { background-image: url(../closedticket.png) !important } 34 35 dt.wiki, dt.wiki a { background-image: url(../wiki.png) !important } 35 36 dt.milestone, dt.milestone a { background-image: url(../milestone.png) !important } -
wiki-default/TracIni
Cannot display: file marked as a binary type. svn:mime-type = image/png
22 22 See also: TracLogging 23 23 24 24 == [ticket] == 25 || workflow_version || Workflow version: 1 for simple, 2 for advanced || 25 26 || default_version || Default version for newly created tickets || 26 27 || default_severity || Default severity for newly created tickets || 27 28 || default_priority || Default priority for newly created tickets || -
wiki-default/TracAdmin
23 23 permission add <user> <action> -- Add a new permission rule 24 24 permission remove <user> <action> -- Remove permission rule 25 25 component list -- Show available components 26 component add <name> <owner> -- Add a new component26 component add <name> <owner> [<qaowner>] -- Add a new component 27 27 component rename <name> <newname> -- Rename a component 28 28 component remove <name> -- Remove/uninstall component 29 component chown <name> <owner> -- Change component ownership29 component chown <name> <owner> [<qaowner>] -- Change component ownership 30 30 priority list -- Show possible ticket priorities 31 31 priority add <value> -- Add a priority value option 32 32 priority change <value> <newvalue> -- Change a priority value … … 41 41 version time <name> <time> -- Set version date/time 42 42 version remove <name> -- Remove version 43 43 milestone list -- Show milestones 44 milestone add <name> [ time]-- Add milestone44 milestone add <name> [<owner> [time]] -- Add milestone 45 45 milestone rename <name> <newname> -- Rename milestone 46 46 milestone time <name> <time> -- Set milestone date/time 47 milestone chown <name> <owner> -- Change milestone ownership 47 48 milestone remove <name> -- Remove milestone 48 49 }}} 49 50 -
scripts/trac-admin
290 290 291 291 # ## Component 292 292 _help_component = [('component list', 'Show available components'), 293 ('component add <name> <owner> ', 'Add a new component'),293 ('component add <name> <owner> [<qaowner>]', 'Add a new component'), 294 294 ('component rename <name> <newname>', 'Rename a component'), 295 295 ('component remove <name>', 'Remove/uninstall component'), 296 ('component chown <name> <owner> ', 'Change component ownership')]296 ('component chown <name> <owner> [<qaowner>]', 'Change component ownership')] 297 297 298 298 def complete_component (self, text, line, begidx, endidx): 299 299 if begidx in [16,17]: … … 309 309 try: 310 310 if arg[0] == 'list': 311 311 self._do_component_list() 312 elif arg[0] == 'add' and len(arg) ==3:312 elif arg[0] == 'add' and len(arg) in [3,4]: 313 313 name = arg[1] 314 314 owner = arg[2] 315 self._do_component_add(name, owner) 315 if len(arg) == 4: 316 qaowner = arg[3] 317 else: 318 qaowner = owner 319 self._do_component_add(name, owner, qaowner) 316 320 elif arg[0] == 'rename' and len(arg)==3: 317 321 name = arg[1] 318 322 newname = arg[2] … … 320 324 elif arg[0] == 'remove' and len(arg)==2: 321 325 name = arg[1] 322 326 self._do_component_remove(name) 323 elif arg[0] == 'chown' and len(arg) ==3:327 elif arg[0] == 'chown' and len(arg) in [3,4]: 324 328 name = arg[1] 325 329 owner = arg[2] 326 self._do_component_set_owner(name, owner) 330 if len(arg) == 4: 331 qaowner = arg[3] 332 else: 333 qaowner = owner 334 self._do_component_set_owner(name, owner, qaowner) 327 335 else: 328 336 self.do_help ('component') 329 337 except Exception, e: 330 338 print 'Component %s failed:' % arg[0], e 331 339 332 340 def _do_component_list(self): 333 data = self.db_execsql('SELECT name, owner FROM component')334 self.print_listing(['Name', 'Owner' ], data)341 data = self.db_execsql('SELECT name, owner, qaowner FROM component') 342 self.print_listing(['Name', 'Owner', 'QA Owner'], data) 335 343 336 def _do_component_add(self, name, owner ):337 data = self.db_execsql("INSERT INTO component VALUES('%s', '%s' )"338 % (name, owner))344 def _do_component_add(self, name, owner, qaowner): 345 data = self.db_execsql("INSERT INTO component VALUES('%s', '%s', '%s')" 346 % (name,owner,qaowner)) 339 347 340 348 def _do_component_rename(self, name, newname): 341 349 cnx = self.db_open() … … 349 357 self.db_execsql("UPDATE ticket SET component='%s' WHERE component='%s'" 350 358 % (newname,name), cursor) 351 359 cnx.commit() 360 if self.__env.get_config('ticket', 'default_component') == name: 361 self.__env.set_config('ticket', 'default_component', newname) 362 self.__env.save_config() 352 363 353 364 def _do_component_remove(self, name): 354 365 cnx = self.db_open() … … 359 370 raise Exception("No such component '%s'" % name) 360 371 data = self.db_execsql("DELETE FROM component WHERE name='%s'" 361 372 % (name)) 373 if self.__env.get_config('ticket', 'default_component') == name: 374 self.__env.set_config('ticket', 'default_component', '') 375 self.__env.save_config() 362 376 363 def _do_component_set_owner(self, name, owner ):377 def _do_component_set_owner(self, name, owner, qaowner): 364 378 cnx = self.db_open() 365 379 cursor = cnx.cursor () 366 380 cursor.execute('SELECT name FROM component WHERE name=%s', name) 367 381 data = cursor.fetchone() 368 382 if not data: 369 383 raise Exception("No such component '%s'" % name) 370 data = self.db_execsql("UPDATE component SET owner='%s' WHERE name='%s'"371 % (owner, name))384 data = self.db_execsql("UPDATE component SET owner='%s', qaowner='%s' WHERE name='%s'" 385 % (owner,qaowner,name)) 372 386 373 387 374 388 ## Permission … … 783 797 raise Exception, "No such value '%s'" % name 784 798 data = self.db_execsql("UPDATE enum SET name='%(newname)s'" 785 799 " WHERE type='%(type)s' AND name='%(name)s'" % d) 800 if self.__env.get_config('ticket', 'default_' + type) == name: 801 self.__env.set_config('ticket', 'default_' + type, newname) 802 self.__env.save_config() 803 data = self.db_execsql("UPDATE ticket SET %(type)s='%(newname)s'" 804 " WHERE %(type)s='%(name)s'" % d) 786 805 787 806 def _do_enum_remove(self, type, name): 788 807 data = self.db_execsql("SELECT name FROM enum" … … 791 810 raise Exception, "No such value '%s'" % name 792 811 data = self.db_execsql("DELETE FROM enum WHERE type='%s' AND name='%s'" 793 812 % (type, name)) 813 if self.__env.get_config('ticket', 'default_' + type) == name: 814 self.__env.set_config('ticket', 'default_' + type, '') 815 self.__env.save_config() 816 newname = self.__env.get_config('ticket', 'default_' + type) 817 d = {'name':name, 'newname':newname, 'type':type} 818 data = self.db_execsql("UPDATE ticket SET %(type)s='%(newname)s'" 819 " WHERE %(type)s='%(name)s'" % d) 794 820 795 821 796 822 ## Milestone 797 823 _help_milestone = [('milestone list', 'Show milestones'), 798 ('milestone add <name> [ time]', 'Add milestone'),824 ('milestone add <name> [<owner> [time]]', 'Add milestone'), 799 825 ('milestone rename <name> <newname>', 800 826 'Rename milestone'), 827 ('milestone chown <name> <newowner>', 'Change milestone owner'), 801 828 ('milestone time <name> <time>', 'Set milestone date (Format: "Jun 3, 2003")'), 802 829 ('milestone remove <name>', 'Remove milestone')] 803 830 … … 805 832 806 833 if begidx in [15,17]: 807 834 comp = self.get_milestone_list () 835 elif begidx > 15 and line.startswith('milestone chown '): 836 comp = self.get_user_list() 808 837 elif begidx < 15: 809 comp = ['list','add','rename',' time','remove']838 comp = ['list','add','rename','chown','time','remove'] 810 839 return self.word_complete(text, comp) 811 840 812 841 def do_milestone(self, line): 813 self._do_mile_ver('milestone', line) 842 type = 'milestone' 843 arg = self.arg_tokenize(line) 844 try: 845 if arg[0] == 'list': 846 self._do_milestone_list() 847 elif arg[0] == 'add' and len(arg) in [2,3,4]: 848 name = arg[1] 849 self._do_mile_ver_add(type, name) 850 if len(arg) >= 3: 851 owner = arg[2] 852 self._do_mile_ver_chown(type, name, owner) 853 if len(arg) >= 4: 854 time = arg[3] 855 self._do_mile_ver_time(type, name, time) 856 elif arg[0] == 'rename' and len(arg)==3: 857 name = arg[1] 858 newname = arg[2] 859 self._do_mile_ver_rename(type, name, newname) 860 elif arg[0] == 'chown' and len(arg)==3: 861 name = arg[1] 862 owner = arg[2] 863 self._do_mile_ver_chown(type, name, owner) 864 elif arg[0] == 'time' and len(arg)==3: 865 name = arg[1] 866 time = arg[2] 867 self._do_mile_ver_time(type, name, time) 868 elif arg[0] == 'remove' and len(arg)==2: 869 name = arg[1] 870 self._do_mile_ver_remove(type, name) 871 else: 872 self.do_help (type) 873 except Exception, e: 874 print 'Command %s failed:' % arg[0], e 814 875 876 def _do_milestone_list(self): 877 data = self.db_execsql("SELECT name,owner,time FROM milestone ORDER BY time,name") 878 data = map(lambda x: (x[0], x[1], x[2] and time.strftime('%c', time.localtime(x[2]))), data) 879 #print data 880 self.print_listing(['Name', 'Owner', 'Time'], data) 815 881 882 816 883 ## Version 817 884 _help_version = [('version list', 'Show versions'), 818 885 ('version add <name> [time]', 'Add version'), … … 832 899 def do_version(self, line): 833 900 self._do_mile_ver('version', line) 834 901 835 # Milestone and Version are identical, methods902 # Milestone and Version are almost identical, methods 836 903 837 904 def _do_mile_ver(self, type, line): 838 905 arg = self.arg_tokenize(line) … … 876 943 raise Exception, "No such %s '%s'" % (type, name) 877 944 data = self.db_execsql("UPDATE %(type)s SET name='%(newname)s'" 878 945 " WHERE name='%(name)s'" % d) 946 if self.__env.get_config('ticket', 'default_' + type) == name: 947 self.__env.set_config('ticket', 'default_' + type, newname) 948 self.__env.save_config() 949 data = self.db_execsql("UPDATE ticket SET %(type)s='%(newname)s'" 950 " WHERE %(type)s='%(name)s'" % d) 879 951 880 952 def _do_mile_ver_add(self, type, name): 881 953 sql = ("INSERT INTO %(type)s('name', 'time') " … … 891 963 raise Exception, "No such %s '%s'" % (type, name) 892 964 data = self.db_execsql("DELETE FROM %(type)s" 893 965 " WHERE name='%(name)s'" % d) 966 if self.__env.get_config('ticket', 'default_' + type) == name: 967 self.__env.set_config('ticket', 'default_' + type, '') 968 self.__env.save_config() 969 data = self.db_execsql("UPDATE ticket SET %(type)s=''" 970 " WHERE %(type)s='%(name)s'" % d) 894 971 895 972 def _do_mile_ver_time(self, type, name, t): 896 973 d = {'name':name, 'type':type} … … 923 1000 else: 924 1001 print >> sys.stderr, 'Unknown time format' 925 1002 1003 def _do_mile_ver_chown(self, type, name, owner): 1004 data = self.db_execsql("UPDATE %s SET owner='%s' WHERE name='%s'" 1005 % (type, owner, name)); 1006 926 1007 _help_upgrade = [('upgrade', 'Upgrade database to current version.')] 927 1008 def do_upgrade(self, line): 928 1009 arg = self.arg_tokenize(line) -
trac/db_default.py
21 21 22 22 23 23 # Database version identifier. Used for automatic upgrades. 24 db_version = 7 24 db_version = 8 25 # Current workflow version identifier 26 current_workflow_version = 2 25 27 26 28 def __mkreports(reps): 27 29 """Utility function used to create report data in same syntax as the … … 125 127 ); 126 128 CREATE TABLE component ( 127 129 name text PRIMARY KEY, 128 owner text 130 owner text, 131 qaowner text 129 132 ); 130 133 CREATE TABLE milestone ( 131 134 id integer PRIMARY KEY, 132 135 name text, 133 136 time integer, 137 owner text, 134 138 descr text, 135 139 UNIQUE(name) 136 140 ); … … 209 213 """, 210 214 """ 211 215 SELECT p.value AS __color__, 212 versionAS __group__,213 id AS ticket, summary, component, version, severity,216 (CASE WHEN IFNULL(version, '') = '' THEN 'Not Specified' ELSE 'Version ' || version END) AS __group__, 217 id AS ticket, summary, component, milestone, severity, 214 218 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 215 219 time AS created, 216 220 changetime AS _changetime, description AS _description, … … 218 222 FROM ticket t, enum p 219 223 WHERE status IN ('new', 'assigned', 'reopened') 220 224 AND p.name = t.priority AND p.type = 'priority' 221 ORDER BY ( version IS NULL),version, p.value, severity, time225 ORDER BY (IFNULL(version, '') = '') DESC,version, p.value, severity, time 222 226 """), 223 227 #---------------------------------------------------------------------------- 224 ('A llTickets by Milestone',228 ('Active Tickets by Milestone', 225 229 """ 226 230 This report shows how to color results by priority, 227 231 while grouping results by milestone. … … 231 235 """, 232 236 """ 233 237 SELECT p.value AS __color__, 234 milestone||' Release'AS __group__,238 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 235 239 id AS ticket, summary, component, version, severity, 236 240 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 237 241 time AS created, … … 240 244 FROM ticket t, enum p 241 245 WHERE status IN ('new', 'assigned', 'reopened') 242 246 AND p.name = t.priority AND p.type = 'priority' 243 ORDER BY ( milestone IS NULL),milestone, p.value, severity, time247 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 244 248 """), 245 249 #---------------------------------------------------------------------------- 246 250 ('Assigned, Active Tickets by Owner', … … 248 252 List assigned tickets, group by ticket owner, sorted by priority. 249 253 """, 250 254 """ 251 252 255 SELECT p.value AS __color__, 253 ownerAS __group__,254 id AS ticket, summary, component, milestone, severity, time AS created,256 (CASE WHEN IFNULL(owner, '') = '' THEN 'Not Assigned' ELSE owner END) AS __group__, 257 id AS ticket, summary, component, version, milestone, severity, time AS created, 255 258 changetime AS _changetime, description AS _description, 256 259 reporter AS _reporter 257 260 FROM ticket t,enum p 258 261 WHERE status = 'assigned' 259 262 AND p.name=t.priority AND p.type='priority' 260 ORDER BY owner, p.value, severity, time263 ORDER BY (IFNULL(owner, '') = '') DESC, owner, p.value, severity, time 261 264 """), 262 265 #---------------------------------------------------------------------------- 263 266 ('Assigned, Active Tickets by Owner (Full Description)', … … 268 271 """ 269 272 SELECT p.value AS __color__, 270 273 owner AS __group__, 271 id AS ticket, summary, component, milestone, severity, time AS created,274 id AS ticket, summary, component, version, milestone, severity, time AS created, 272 275 description AS _description_, 273 276 changetime AS _changetime, reporter AS _reporter 274 277 FROM ticket t, enum p … … 283 286 """, 284 287 """ 285 288 SELECT p.value AS __color__, 286 t.milestoneAS __group__,289 (CASE WHEN IFNULL(t.milestone, '') = '' THEN 'Not Assigned' ELSE t.milestone || ' Release' END) AS __group__, 287 290 (CASE status 288 291 WHEN 'closed' THEN 'color: #777; background: #ddd; border-color: #ccc;' 289 292 ELSE … … 295 298 time AS _time,reporter AS _reporter 296 299 FROM ticket t,enum p 297 300 WHERE p.name=t.priority AND p.type='priority' 298 ORDER BY ( milestone IS NULL), milestone DESC, (status = 'closed'),301 ORDER BY (IFNULL(milestone, '') = '') DESC, milestone DESC, (status = 'closed'), 299 302 (CASE status WHEN 'closed' THEN modified ELSE -p.value END) DESC 300 303 """), 301 304 #---------------------------------------------------------------------------- … … 308 311 """ 309 312 SELECT p.value AS __color__, 310 313 (CASE status WHEN 'assigned' THEN 'Assigned' ELSE 'Owned' END) AS __group__, 311 id AS ticket, summary, component, version, milestone,314 id AS ticket, summary, component, status, version, milestone, 312 315 severity, priority, time AS created, 313 316 changetime AS _changetime, description AS _description, 314 317 reporter AS _reporter 315 318 FROM ticket t, enum p 316 WHERE t.status IN ('new', 'assigned', 'reopened')319 WHERE t.status <> 'closed' 317 320 AND p.name = t.priority AND p.type = 'priority' AND owner = '$USER' 318 321 ORDER BY (status = 'assigned') DESC, p.value, milestone, severity, time 319 322 """), … … 338 341 WHERE status IN ('new', 'assigned', 'reopened') 339 342 AND p.name = t.priority AND p.type = 'priority' 340 343 ORDER BY (owner = '$USER') DESC, p.value, milestone, severity, time 344 """), 345 #---------------------------------------------------------------------------- 346 ('Open Tickets, Mine first', 347 """ 348 * List all not closed tickets by priority. 349 * Show all tickets owned by the logged in user in a group first. 350 """, 351 """ 352 SELECT p.value AS __color__, 353 (CASE owner 354 WHEN '$USER' THEN 'My Tickets' 355 ELSE 'Open Tickets' 356 END) AS __group__, 357 id AS ticket, summary, component, status, version, milestone, severity, 358 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 359 time AS created, 360 changetime AS _changetime, description AS _description, 361 reporter AS _reporter 362 FROM ticket t, enum p 363 WHERE status <> 'closed' 364 AND p.name = t.priority AND p.type = 'priority' 365 ORDER BY (owner = '$USER') DESC, p.value, milestone, severity, time 366 """), 367 #---------------------------------------------------------------------------- 368 ('Open Tickets by Version', 369 """ 370 * List all not closed tickets by priority. 371 * Group results by version. 372 """, 373 """ 374 SELECT p.value AS __color__, 375 (CASE WHEN IFNULL(version, '') = '' THEN 'Not Specified' ELSE 'Version ' || version END) AS __group__, 376 id AS ticket, summary, component, status, milestone, severity, 377 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 378 time AS created, 379 changetime AS _changetime, description AS _description, 380 reporter AS _reporter 381 FROM ticket t, enum p 382 WHERE status <> 'closed' 383 AND p.name = t.priority AND p.type = 'priority' 384 ORDER BY (IFNULL(version, '') = '') desc,version, p.value, severity, time 385 """), 386 #---------------------------------------------------------------------------- 387 ('Open Tickets by Milestone', 388 """ 389 * List all not closed tickets by priority. 390 * Group results by milestone. 391 """, 392 """ 393 SELECT p.value AS __color__, 394 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 395 id AS ticket, summary, component, status, version, severity, 396 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 397 time AS created, 398 changetime AS _changetime, description AS _description, 399 reporter AS _reporter 400 FROM ticket t, enum p 401 WHERE status <> 'closed' 402 AND p.name = t.priority AND p.type = 'priority' 403 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 404 """), 405 #---------------------------------------------------------------------------- 406 ('Open Tickets by Owner', 407 """ 408 List not closed tickets, group by ticket owner, sorted by priority. 409 """, 410 """ 411 SELECT p.value AS __color__, 412 (CASE WHEN IFNULL(owner, '') = '' THEN 'Not Assigned' ELSE owner END) AS __group__, 413 id AS ticket, summary, component, status, version, milestone, severity, 414 time AS created, changetime AS _changetime, description AS _description, 415 reporter AS _reporter 416 FROM ticket t,enum p 417 WHERE status <> 'closed' 418 AND p.name=t.priority AND p.type='priority' 419 ORDER BY (IFNULL(owner, '') = '') DESC, owner, p.value, severity, time 420 """), 421 #---------------------------------------------------------------------------- 422 ('Open Tickets by Status', 423 """ 424 * List all not closed tickets by priority. 425 * Group results by status. 426 """, 427 """ 428 SELECT p.value AS __color__, 429 status AS __group__, 430 id AS ticket, summary, component, version, milestone, severity, owner, 431 time AS created, 432 changetime AS _changetime, description AS _description, 433 reporter AS _reporter 434 FROM ticket t, enum q, enum p 435 WHERE status <> 'closed' 436 AND q.name = t.status AND q.type = 'status' 437 AND p.name = t.priority AND p.type = 'priority' 438 ORDER BY q.value, p.value, severity, time 439 """), 440 #---------------------------------------------------------------------------- 441 ('Resolved Tickets, Mine first', 442 """ 443 * List all resolved tickets by priority. 444 * Show all tickets owned by the logged in user in a group first. 445 """, 446 """ 447 SELECT p.value AS __color__, 448 (CASE owner 449 WHEN '$USER' THEN 'My Tickets' 450 ELSE 'Active Tickets' 451 END) AS __group__, 452 id AS ticket, summary, component, version, milestone, severity, 453 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 454 time AS created, 455 changetime AS _changetime, description AS _description, 456 reporter AS _reporter 457 FROM ticket t, enum p 458 WHERE status = 'resolved' 459 AND p.name = t.priority AND p.type = 'priority' 460 ORDER BY (owner = '$USER') DESC, p.value, milestone, severity, time 461 """), 462 #---------------------------------------------------------------------------- 463 ('Resolved Tickets by Milestone', 464 """ 465 List resolved tickets, sorted by priority, grouped by milestone 466 """, 467 """ 468 SELECT p.value AS __color__, 469 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 470 id AS ticket, summary, component, version, severity, 471 (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner, 472 time AS created, 473 changetime AS _changetime, description AS _description, 474 reporter AS _reporter 475 FROM ticket t, enum p 476 WHERE status = 'resolved' 477 AND p.name = t.priority AND p.type = 'priority' 478 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 479 """), 480 #---------------------------------------------------------------------------- 481 ('Resolved Tickets by Owner', 482 """ 483 List resolved tickets, group by ticket owner, sorted by priority. 484 """, 485 """ 486 SELECT p.value AS __color__, 487 (CASE WHEN IFNULL(owner, '') = '' THEN 'Not Assigned' ELSE owner END) AS __group__, 488 id AS ticket, summary, component, version, milestone, severity, time AS created, 489 changetime AS _changetime, description AS _description, 490 reporter AS _reporter 491 FROM ticket t,enum p 492 WHERE status = 'resolved' 493 AND p.name=t.priority AND p.type='priority' 494 ORDER BY (IFNULL(owner, '') = '') DESC, owner, p.value, severity, time 495 """), 496 #---------------------------------------------------------------------------- 497 ('Verified Tickets by Milestone (Full Description)', 498 """ 499 Release Notes: List verified and closed tickets, group by milestone, include description. 500 """, 501 """ 502 SELECT p.value AS __color__, 503 (CASE WHEN IFNULL(milestone, '') = '' THEN 'Not Assigned' ELSE milestone||' Release' END) AS __group__, 504 id AS ticket, summary, component, status, version, severity, time AS created, 505 description AS _description_, 506 changetime AS _changetime, reporter AS _reporter 507 FROM ticket t, enum p 508 WHERE status IN ('verified', 'closed') 509 AND p.name = t.priority AND p.type = 'priority' 510 ORDER BY (IFNULL(milestone, '') = '') DESC,milestone, p.value, severity, time 341 511 """)) 342 512 343 513 … … 347 517 348 518 # (table, (column1, column2), ((row1col1, row1col2), (row2col1, row2col2))) 349 519 data = (('component', 350 ('name', 'owner' ),351 (('component1', 'somebody' ),352 ('component2', 'somebody' ))),520 ('name', 'owner', 'qaowner'), 521 (('component1', 'somebody', 'qasomebody'), 522 ('component2', 'somebody', 'qasomebody'))), 353 523 ('milestone', 354 524 ('name', 'time'), 355 525 (('', 0), … … 367 537 (('status', 'new', 1), 368 538 ('status', 'assigned', 2), 369 539 ('status', 'reopened', 3), 370 ('status', 'closed', 4), 540 ('status', 'resolved', 4), 541 ('status', 'verified', 5), 542 ('status', 'closed', 6), 371 543 ('resolution', 'fixed', 1), 372 544 ('resolution', 'invalid', 2), 373 545 ('resolution', 'wontfix', 3), 374 546 ('resolution', 'duplicate', 4), 375 547 ('resolution', 'worksforme', 5), 548 ('resolution', 'moved', 6), 376 549 ('severity', 'blocker', 1), 377 550 ('severity', 'critical', 2), 378 551 ('severity', 'major', 3), … … 426 599 ('project', 'footer', 427 600 ' Visit the Trac open source project at<br />' 428 601 '<a href="http://trac.edgewall.com/">http://trac.edgewall.com/</a>'), 602 ('ticket', 'workflow_version', str(current_workflow_version)), 429 603 ('ticket', 'default_version', ''), 430 604 ('ticket', 'default_severity', 'normal'), 431 605 ('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']
