source: extensions/FCKEditor/editor/filemanager/connectors/py/connector.py @ 3295

Last change on this file since 3295 was 3295, checked in by patdenice, 15 years ago

New extension added:
FCK Editor (2.0.a)

File size: 4.0 KB
Line 
1#!/usr/bin/env python
2
3"""
4FCKeditor - The text editor for Internet - http://www.fckeditor.net
5Copyright (C) 2003-2009 Frederico Caldeira Knabben
6
7== BEGIN LICENSE ==
8
9Licensed under the terms of any of the following licenses at your
10choice:
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
23Connector for Python (CGI and WSGI).
24
25See config.py for configuration settings
26
27"""
28import os
29
30from fckutil import *
31from fckcommands import *       # default command's implementation
32from fckoutput import *         # base http, xml and html output mixins
33from fckconnector import FCKeditorConnectorBase # import base connector
34import config as Config
35
36class FCKeditorConnector(       FCKeditorConnectorBase,
37                                                        GetFoldersCommandMixin,
38                                                        GetFoldersAndFilesCommandMixin,
39                                                        CreateFolderCommandMixin,
40                                                        UploadFileCommandMixin,
41                                                        BaseHttpMixin, BaseXmlMixin, BaseHtmlMixin  ):
42        "The Standard connector class."
43        def doResponse(self):
44                "Main function. Process the request, set headers and return a string as response."
45                s = ""
46                # Check if this connector is disabled
47                if not(Config.Enabled):
48                        return self.sendError(1, "This connector is disabled.  Please check the connector configurations in \"editor/filemanager/connectors/py/config.py\" and try again.")
49                # Make sure we have valid inputs
50                for key in ("Command","Type","CurrentFolder"):
51                        if not self.request.has_key (key):
52                                return
53                # Get command, resource type and current folder
54                command = self.request.get("Command")
55                resourceType = self.request.get("Type")
56                currentFolder = getCurrentFolder(self.request.get("CurrentFolder"))
57                # Check for invalid paths
58                if currentFolder is None:
59                        return self.sendError(102, "")
60
61                # Check if it is an allowed command
62                if ( not command in Config.ConfigAllowedCommands ):
63                        return self.sendError( 1, 'The %s command isn\'t allowed' % command )
64
65                if ( not resourceType in Config.ConfigAllowedTypes  ):
66                        return self.sendError( 1, 'Invalid type specified' )
67
68                # Setup paths
69                if command == "QuickUpload":
70                        self.userFilesFolder = Config.QuickUploadAbsolutePath[resourceType]
71                        self.webUserFilesFolder =  Config.QuickUploadPath[resourceType]
72                else:
73                        self.userFilesFolder = Config.FileTypesAbsolutePath[resourceType]
74                        self.webUserFilesFolder = Config.FileTypesPath[resourceType]
75
76                if not self.userFilesFolder: # no absolute path given (dangerous...)
77                        self.userFilesFolder = mapServerPath(self.environ,
78                                                                        self.webUserFilesFolder)
79                # Ensure that the directory exists.
80                if not os.path.exists(self.userFilesFolder):
81                        try:
82                                self.createServerFoldercreateServerFolder( self.userFilesFolder )
83                        except:
84                                return self.sendError(1, "This connector couldn\'t access to local user\'s files directories.  Please check the UserFilesAbsolutePath in \"editor/filemanager/connectors/py/config.py\" and try again. ")
85
86                # File upload doesn't have to return XML, so intercept here
87                if (command == "FileUpload"):
88                        return self.uploadFile(resourceType, currentFolder)
89
90                # Create Url
91                url = combinePaths( self.webUserFilesFolder, currentFolder )
92
93                # Begin XML
94                s += self.createXmlHeader(command, resourceType, currentFolder, url)
95                # Execute the command
96                selector = {"GetFolders": self.getFolders,
97                                        "GetFoldersAndFiles": self.getFoldersAndFiles,
98                                        "CreateFolder": self.createFolder,
99                                        }
100                s += selector[command](resourceType, currentFolder)
101                s += self.createXmlFooter()
102                return s
103
104# Running from command line (plain old CGI)
105if __name__ == '__main__':
106        try:
107                # Create a Connector Instance
108                conn = FCKeditorConnector()
109                data = conn.doResponse()
110                for header in conn.headers:
111                        print '%s: %s' % header
112                print
113                print data
114        except:
115                print "Content-Type: text/plain"
116                print
117                import cgi
118                cgi.print_exception()
Note: See TracBrowser for help on using the repository browser.