Ignore:
Timestamp:
02/05/09 13:26:12 (12 years ago)
Author:
sander
Message:

Implemented working OOOServer. Not release-ready because of licensing problem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/factory/src/backends/__init__.py

    r57 r60  
    1919The core backend class 
    2020""" 
     21 
     22import os 
     23import base64 
     24import logging 
    2125 
    2226class BackendException: 
     
    5559                """ 
    5660                This is called right after instanciating the backend. 
    57                 Returning False will cause the backend not to be loaded 
    5861                """ 
    59                 return True 
     62                pass     
    6063 
    6164        def can_process(self, job): 
     
    7780                """ 
    7881                raise NotImplementedError 
     82 
     83        def save_document(self, job): 
     84                """ 
     85                Save the file in a job to a temporary location and return the full path. 
     86                Note that the job ID is used to form the name rather than the original filename 
     87                to help avoid collisions. 
     88                """ 
     89                if not 'job' in job or not 'filename' in job or not 'doctype' in job or not 'document' in job: 
     90                        raise BackendException('Could not save job document to temporary file. Invalid job.', True) 
     91 
     92                (root, ext) = os.path.splitext(job['filename']) 
     93                tmp_dir = os.path.normpath(self.config.get('global', 'tmp_files')) 
     94                if not os.path.exists(tmp_dir): 
     95                        logging.info('Temporary storage %s does not exist. Attempting to create', tmp_dir) 
     96                        try: 
     97                                os.makedirs(tmp_dir) 
     98                        except OSError: 
     99                                raise BackendException('Could not create temporary storage location %s' % tmp_dir) 
     100                 
     101                filename = os.path.join(tmp_dir, job['job'] + ext) 
     102                logging.debug('Temporary filename: %s' % filename) 
     103                try: 
     104                        file = open(filename, 'wb') 
     105                        file.write(base64.b64decode(job['document'])) 
     106                        file.close() 
     107                except (IOError): 
     108                        raise BackendException('Could not write temporary file %s' % filename) 
     109                except TypeError: 
     110                        raise BackendException('Document is not base64 encoded', True) 
     111 
     112                return filename 
     113 
     114        def load_document(self, path, encode=True): 
     115                try: 
     116                        file = open(path, 'rb') 
     117                        contents = file.read() 
     118                        file.close() 
     119                except (IOError): 
     120                        raise BackendException('Could not read file') 
     121 
     122                if encode: 
     123                        contents = base64.b64encode(contents) 
     124                return contents 
     125 
Note: See TracChangeset for help on using the changeset viewer.