import os import stat from fckeditor_connector import ElementTree from fckeditor_connector import settings from django.http import HttpResponse import actions import support from support import actual_path, actual_url def browser(request): # extract the command, type and folder path command_name = request.REQUEST.get('Command', None) resource_type, resource_type_path = \ support.get_resource_type_folder(request) folder_path = request.REQUEST.get('CurrentFolder', None) # set the default return values to successful completion err_no = 0 err_txt = 'Successful' xml_response = ElementTree.ElementTree( ElementTree.Element("Connector", {'command':command_name, 'resourceType':resource_type}) ) if None in (command_name, resource_type, folder_path): err_no = 1 err_txt = 'Incomplete command.' else: # construct the response # append current folder information abs_path = actual_path(settings.FCKEDITOR_CONNECTOR_ROOT, resource_type_path, folder_path) abs_url = actual_url(settings.FCKEDITOR_CONNECTOR_URL, resource_type_path, folder_path) xml_response.getroot().append( ElementTree.Element("CurrentFolder", {'path':folder_path, 'url': abs_url, }) ) if (command_name == 'GetFolders'): # append Folder list actions.get_folders(xml_response, abs_path) elif (command_name == 'GetFoldersAndFiles'): # append Folder and list actions.get_folders_and_files(xml_response, abs_path) elif (command_name == 'CreateFolder'): new_folder_name = request.REQUEST.get('NewFolderName', None) if new_folder_name is None: err_no = 102 err_txt = 'Invalid folder name.' else: try: os.mkdir(os.path.join(abs_path, new_folder_name)) except Exception, e: err_no = 110 err_txt = str(e) elif (command_name == 'FileUpload'): status, filename = actions.file_upload(request, abs_path) if int(status) == 201: # upload through the browser requires a conjoined # status and filename if the file was renamed status = "%s, '%s'" % (status, filename) return HttpResponse( """""" % status) else: # unknown command xml_response.getroot().append( ElementTree.Element("Error", {'number':1, 'text':'blarf'}) ) xml_response.getroot().append( ElementTree.Element("Error", {'number':str(err_no), 'text':err_txt}) ) response = HttpResponse(ElementTree.tostring(xml_response.getroot(), 'utf-8'), mimetype='text/xml') #response['Cache-Control'] = 'no-cache' response['Cache-Control']='max-age=0' return response def uploader(request): """Quick Uploader server-side support. Responds to a POST request with the file uploaded as NewFile.""" # extract the command, type and folder path try: resource_type, resource_type_path = \ support.get_resource_type_folder(request) if resource_type is None: # no type specified resource_type_path = '' # determine the actual folder path folder_path = actual_path(settings.FCKEDITOR_CONNECTOR_ROOT, resource_type_path, '') # handle the upload status, filename = actions.file_upload(request, folder_path) # calculate the resulting file URL file_url = actual_url(settings.FCKEDITOR_CONNECTOR_URL, resource_type_path, '', filename) except Exception, e: print e raise e # return an HTML response return HttpResponse( """""" % (status, file_url, filename,) )