Changeset 2527

Show
Ignore:
Timestamp:
07/25/07 14:03:31 (1 year ago)
Author:
Blackhex
Message:

DiscussionPlugin:

  • Request redirecting after form submition added. This fixes unpleasant re-sumbition when page is refreshed after form submition.
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • discussionplugin/0.10/tracdiscussion/api.py

    r2273 r2527  
    312312                self.add_group(cursor, new_name, new_description) 
    313313 
     314                # Redirect request to prevent re-submit. 
     315                req.redirect(req.href.discussion('redirect', href = 
     316                  req.path_info)) 
     317 
    314318            elif mode == 'group-post-edit': 
    315319                req.perm.assert_permission('DISCUSSION_ADMIN') 
     
    323327                self.edit_group(cursor, new_group, new_name, new_description) 
    324328 
     329                # Redirect request to prevent re-submit. 
     330                req.redirect(req.href.discussion('redirect', href = 
     331                  req.path_info)) 
     332 
    325333            elif mode == 'group-delete': 
    326334                req.perm.assert_permission('DISCUSSION_ADMIN') 
     
    338346                    for group_id in selection: 
    339347                        self.delete_group(cursor, int(group_id)) 
     348 
     349                # Redirect request to prevent re-submit. 
     350                req.redirect(req.href.discussion('redirect', href = 
     351                  req.path_info)) 
    340352 
    341353            elif mode == 'forum-list': 
     
    402414                   new_description, new_moderators, new_group) 
    403415 
     416                # Redirect request to prevent re-submit. 
     417                req.redirect(req.href.discussion('redirect', href = 
     418                  req.path_info)) 
     419 
    404420            elif mode == 'forum-post-edit': 
    405421                req.perm.assert_permission('DISCUSSION_ADMIN') 
     
    421437                  new_description, new_moderators, new_group) 
    422438 
     439                # Redirect request to prevent re-submit. 
     440                req.redirect(req.href.discussion('redirect', href = 
     441                  req.path_info)) 
     442 
    423443            elif mode == 'forum-delete': 
    424444                req.perm.assert_permission('DISCUSSION_ADMIN') 
     
    426446                # Delete forum 
    427447                self.delete_forum(cursor, forum['id']) 
     448 
     449                # Redirect request to prevent re-submit. 
     450                req.redirect(req.href.discussion('redirect', href = 
     451                  req.path_info)) 
    428452 
    429453            elif mode == 'forums-delete': 
     
    439463                    for forum_id in selection: 
    440464                        self.delete_forum(cursor, int(forum_id)) 
     465 
     466                # Redirect request to prevent re-submit. 
     467                req.redirect(req.href.discussion('redirect', href = 
     468                  req.path_info)) 
    441469 
    442470            elif mode == 'topic-list': 
     
    504532                  cc) 
    505533 
     534                # Redirect request to prevent re-submit. 
     535                req.redirect(req.href.discussion('redirect', href = 
     536                  req.path_info)) 
     537 
    506538            elif mode == 'topic-edit': 
    507539                req.perm.assert_permission('DISCUSSION_APPEND') 
     
    530562                  new_subject, new_body) 
    531563 
     564                # Redirect request to prevent re-submit. 
     565                req.redirect(req.href.discussion('redirect', href = 
     566                  req.path_info)) 
     567 
    532568            elif mode == 'topic-move': 
    533569                req.perm.assert_permission('DISCUSSION_MODERATE') 
     
    549585                self.set_forum(cursor, topic['id'], new_forum) 
    550586 
     587                # Redirect request to prevent re-submit. 
     588                req.redirect(req.href.discussion('redirect', href = 
     589                  req.path_info)) 
     590 
    551591            elif mode == 'topic-delete': 
    552592                req.perm.assert_permission('DISCUSSION_MODERATE') 
     
    556596                # Delete topic. 
    557597                self.delete_topic(cursor, topic['id']) 
     598 
     599                # Redirect request to prevent re-submit. 
     600                req.redirect(req.href.discussion('redirect', href = 
     601                  req.path_info)) 
    558602 
    559603            elif mode == 'message-list': 
     
    598642                  to, cc) 
    599643 
     644                # Redirect request to prevent re-submit. 
     645                self.log.debug(req.href(req.path_info) + '/') 
     646                if req.args.get('component') != 'wiki': 
     647                    req.redirect(req.href.discussion('redirect', href = 
     648                      req.path_info)) 
     649 
    600650            elif mode == 'message-edit': 
    601651                req.perm.assert_permission('DISCUSSION_APPEND') 
     
    620670                  message['topic'], message['replyto'], new_body) 
    621671 
     672                # Redirect request to prevent re-submit. 
     673                if req.args.get('component') != 'wiki': 
     674                    req.redirect(req.href.discussion('redirect', href = 
     675                      req.path_info)) 
     676 
    622677            elif mode == 'message-delete': 
    623678                req.perm.assert_permission('DISCUSSION_MODERATE') 
     
    627682                # Delete message. 
    628683                self.delete_message(cursor, message['id']) 
     684 
     685                # Redirect request to prevent re-submit. 
     686                if req.args.get('component') != 'wiki': 
     687                    req.redirect(req.href.discussion('redirect', href = 
     688                      req.path_info)) 
    629689 
    630690            elif mode == 'message-set-display': 
  • discussionplugin/0.10/tracdiscussion/core.py

    r1482 r2527  
    4646    # IRequestHandler methods 
    4747    def match_request(self, req): 
    48         match = re.match(r'''/discussion(?:/?$|/(\d+)(?:/?$|/(\d+))(?:/?$|/(\d+)))$''', 
    49           req.path_info) 
    50         if match: 
    51             forum = match.group(1) 
    52             topic = match.group(2) 
    53             message = match.group(3) 
    54             if forum: 
    55                 req.args['forum'] = forum 
    56             if topic: 
    57                 req.args['topic'] = topic 
    58             if message: 
    59                 req.args['message'] = message 
    60         return match 
     48        if req.path_info == '/discussion/redirect': 
     49            # Proces redirection request. 
     50            req.redirect(req.href(req.args.get('href'))) 
     51        else: 
     52            # Prepare regular requests. 
     53            match = re.match(r'''/discussion(?:/?$|/(\d+)(?:/?$|/(\d+))(?:/?$|/(\d+)))$''', 
     54              req.path_info) 
     55            if match: 
     56                forum = match.group(1) 
     57                topic = match.group(2) 
     58                message = match.group(3) 
     59                if forum: 
     60                    req.args['forum'] = forum 
     61                if topic: 
     62                    req.args['topic'] = topic 
     63                if message: 
     64                    req.args['message'] = message 
     65            return match 
    6166 
    6267    def process_request(self, req):