fckconnector.py
上传用户:ah_jiwei
上传日期:2022-07-24
资源大小:54044k
文件大小:3k
源码类别:

数据库编程

开发平台:

Visual C++

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