Ticket #6879: change_but_rollback_on_preview_or_failure.patch
| File change_but_rollback_on_preview_or_failure.patch, 2.4 KB (added by trac@…, 4 years ago) |
|---|
-
ticket/web_ui.py
431 431 return self._render_diff(req, ticket, data, text_fields) 432 432 elif req.method == 'POST': # 'Preview' or 'Submit' 433 433 self._populate(req, ticket) 434 valid = self._validate_ticket(req, ticket)435 434 436 435 # Do any action on the ticket? 437 436 actions = TicketSystem(self.env).get_available_actions( … … 441 440 # (this should never happen in normal situations) 442 441 field_changes, problems = self.get_ticket_changes(req, ticket, 443 442 action) 443 valid = True 444 444 if problems: 445 445 valid = False 446 446 for problem in problems: … … 451 451 tag.pre('[trac]\nworkflow = ...\n'), 452 452 tag.p('in your ', tag.tt('trac.ini'), '.')) 453 453 ) 454 if 'preview' not in req.args: 455 if valid: 456 self._apply_ticket_changes(ticket, field_changes) 457 # redirected if successful 458 self._do_save(req, ticket, action) 459 # else fall through in a preview 460 req.args['preview'] = True 454 if valid: 455 ## I can't work out how to copy a whole ticket so I only copy 456 ## the relevent bits that could change 457 ## There is almost certainly a better way to do this!!! 458 from copy import copy 459 bkup_old = copy(ticket._old) 460 bkup_values = copy(ticket.values) 461 workflow_ticket = ticket 462 self._apply_ticket_changes(workflow_ticket, field_changes) 463 # redirected if successful 464 if self._validate_ticket(req, workflow_ticket): 465 if 'preview' not in req.args: 466 ticket = workflow_ticket 467 self._do_save(req, ticket, action) 468 ticket._old = bkup_old 469 ticket.values = bkup_values 470 # else fall through in a preview 471 req.args['preview'] = True 461 472 462 473 # Preview an existing ticket (after a Preview or a failed Save) 463 474 data.update({
