Uploaded image for project: 'mod_python'
  1. mod_python
  2. MODPYTHON-164

Allow req.add_handler()/req.register_*_filter() to take module/function for handler.

    Details

    • Type: New Feature
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 3.3.1
    • Component/s: core
    • Labels:
      None

      Description

      Currently, the:

      req.add_handler(phase, handler, dir)
      req.register_input_filter(filter_name, filter, dir)
      req.register_output_filter(filter_name, filter, dir)

      functions require the handler/filter to be a string. This string identifies the module that should be imported and which contains the necessary function, plus optionally, an alternate named function to the default for the phase or filter type. For example:

      req.add_handler("PythonHandler", "mymodule::myhandler")

      It would be simpler if the handler/filter argument could be overloaded and instead supplied an actual module reference or callable object reference. For example:

      import mymodule

      def myhandler(req):
      ...

      def fixuphandler(req):
      req.add_handler("PythonHandler", mymodule)
      req.add_handler("PythonHandler", mymodule.myhandler)
      req.add_handler("PythonHandler", myhandler)
      return apache.OK

      This would be easier than having to construct a string module/function reference when you have direct access to the handler function.

      In the main the "dir" argument would be irrelevant. The only circumstance where it would matter is where PythonInterpPerDirective was used as it could be used to control the interpreter the code executed within. If not supplied, it could be argued that the directory where the supplied module/function is defined in should be used as "dir".

        Attachments

          Activity

            People

            • Assignee:
              grahamd Graham Dumpleton
              Reporter:
              grahamd Graham Dumpleton
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: