PYTHON   10

fckconnector.py

Guest on 25th July 2021 04:37:26 PM

  1. #!/usr/bin/env python
  2.  
  3. """
  4. FCKeditor - The text editor for Internet - http://www.fckeditor.net
  5. Copyright (C) Frederico Caldeira Knabben
  6.  
  7. == BEGIN LICENSE ==
  8.  
  9. Licensed under the terms of any of the following licenses at your
  10. choice:
  11.  
  12. - GNU General Public License Version 2 or later (the "GPL")
  13. http://www.gnu.org/licenses/gpl.html
  14.  
  15. - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
  16. http://www.gnu.org/licenses/lgpl.html
  17.  
  18. - Mozilla Public License Version 1.1 or later (the "MPL")
  19. http://www.mozilla.org/MPL/MPL-1.1.html
  20.  
  21. == END LICENSE ==
  22.  
  23. Base Connector for Python (CGI and WSGI).
  24.  
  25. See config.py for configuration settings
  26.  
  27. """
  28. import cgi, os
  29.  
  30. from fckutil import *
  31. from fckcommands import *       # default command's implementation
  32. from fckoutput import *         # base http, xml and html output mixins
  33. import config as Config
  34.  
  35. class FCKeditorConnectorBase( object ):
  36.         "The base connector class. Subclass it to extend functionality (see Zope example)"
  37.  
  38.         def __init__(self, environ=None):
  39.                 "Constructor: Here you should parse request fields, initialize variables, etc."
  40.                 self.request = FCKeditorRequest(environ) # Parse request
  41.                 self.headers = []                                               # Clean Headers
  42.                 if environ:
  43.                         self.environ = environ
  44.                 else:
  45.                         self.environ = os.environ
  46.  
  47.         # local functions
  48.  
  49.         def setHeader(self, key, value):
  50.                 self.headers.append ((key, value))
  51.                 return
  52.  
  53. class FCKeditorRequest(object):
  54.         "A wrapper around the request object"
  55.         def __init__(self, environ):
  56.                 if environ: # WSGI
  57.                         self.request = cgi.FieldStorage(fp=environ['wsgi.input'],
  58.                                                         environ=environ,
  59.                                                         keep_blank_values=1)
  60.                         self.environ = environ
  61.                 else: # plain old cgi
  62.                         self.environ = os.environ
  63.                         self.request = cgi.FieldStorage()
  64.                 if 'REQUEST_METHOD' in self.environ and 'QUERY_STRING' in self.environ:
  65.                         if self.environ['REQUEST_METHOD'].upper()=='POST':
  66.                                 # we are in a POST, but GET query_string exists
  67.                                 # cgi parses by default POST data, so parse GET QUERY_STRING too
  68.                                 self.get_request = cgi.FieldStorage(fp=None,
  69.                                                         environ={
  70.                                                         'REQUEST_METHOD':'GET',
  71.                                                         'QUERY_STRING':self.environ['QUERY_STRING'],
  72.                                                         },
  73.                                                         )
  74.                 else:
  75.                         self.get_request={}
  76.  
  77.         def has_key(self, key):
  78.                 return self.request.has_key(key) or self.get_request.has_key(key)
  79.  
  80.         def get(self, key, default=None):
  81.                 if key in self.request.keys():
  82.                         field = self.request[key]
  83.                 elif key in self.get_request.keys():
  84.                         field = self.get_request[key]
  85.                 else:
  86.                         return default
  87.                 if hasattr(field,"filename") and field.filename: #file upload, do not convert return value
  88.                         return field
  89.                 else:
  90.                         return field.value

Raw Paste


Login or Register to edit or fork this paste. It's free.