Changeset 18476


Ignore:
Timestamp:
Apr 9, 2022, 10:54:14 PM (3 years ago)
Author:
Jun Omae
Message:

TracDragDropPlugin: make compatible with Python 3 (closes #14129)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • tracdragdropplugin/0.12/tracdragdrop/web_ui.py

    r18448 r18476  
    77import re
    88import socket
     9import sys
    910from pkg_resources import parse_version, resource_filename
    1011from tempfile import TemporaryFile
     
    2324from trac.util.translation import domain_functions, dgettext
    2425
     26if sys.version_info[0] == 2:
     27    text_type = unicode
     28    binary_type = str
     29else:
     30    text_type = str
     31    binary_type = bytes
     32
    2533_parsed_version = parse_version(__version__)
    2634
     
    5462def gettext_messages(msgid, **args):
    5563    return dgettext('messages', msgid, **args)
     64
     65
     66def _get_except():
     67    return sys.exc_info()[1]
    5668
    5769
     
    205217                req.args['realm'] = match.group(2)
    206218                req.args['path'] = match.group(3)
    207             except (IOError, socket.error), e:
    208                 if _is_disconnected(req, e):
     219            except (IOError, socket.error):
     220                if _is_disconnected(req, _get_except()):
    209221                    raise RequestDone
    210222                raise
     
    247259        except RequestDone:
    248260            raise
    249         except TracError, e:
    250             return self._send_message_on_except(req, e, 500)
    251         except PermissionError, e:
    252             return self._send_message_on_except(req, e, 403)
    253         except Exception, e:
    254             self.log.error('Internal error in tracdragdrop',
    255                            exc_info=True)
    256             return self._send_message_on_except(req, e, 500)
     261        except TracError:
     262            return self._send_message_on_except(req, _get_except(), 500)
     263        except PermissionError:
     264            return self._send_message_on_except(req, _get_except(), 403)
     265        except:
     266            self.log.error('Internal error in tracdragdrop', exc_info=True)
     267            return self._send_message_on_except(req, _get_except(), 500)
    257268
    258269    def _delegate_new_request(self, req):
     
    266277            try:
    267278                mod.process_request(req)
    268             except OSError, e:
     279            except OSError:
     280                e = _get_except()
    269281                if e.args[0] == errno.ENAMETOOLONG:
    270282                    raise TracError(_("Can't attach due to too long file "
     
    291303            AttachmentModule(self.env).process_request(req)
    292304        except RedirectListened:
    293             req.send('Ok', status=200)
     305            req.send(binary_type(), status=200)
    294306
    295307    def _render_attachments(self, req):
     
    322334
    323335    def _send_message_on_except(self, req, message, status):
    324         if not isinstance(message, unicode):
     336        if not isinstance(message, text_type):
    325337            message = to_unicode(message)
    326338        req.send_header('Connection', 'close')
     
    360372        if value is None:
    361373            return None
    362         if isinstance(value, unicode):
     374        if isinstance(value, text_type):
    363375            value = value.encode('utf-8')
    364376
     
    389401            try:
    390402                buf = input.read(n)
    391             except (IOError, socket.error), e:
    392                 if _is_disconnected(req, e):
     403            except (IOError, socket.error):
     404                if _is_disconnected(req, _get_except()):
    393405                    raise RequestDone
    394406                raise
Note: See TracChangeset for help on using the changeset viewer.