view pyikriam/lazy/www/work/__init__.py @ 68:4ba1e981716d

merged kevint and hychen's work.
author "Rex Tsai <chihchun@kalug.linux.org.tw>"
date Wed, 22 Oct 2008 06:24:39 +0800
parents a4c364888197
children 60c4b4b78a01
line wrap: on
line source

from lazy.www.work.fetch import Fetcher
from lazy.www.work.find import Finder
from lazy.www.core import SemiProduct
class WorkFlow:
    
    serial_number = 0
    working_product = None
    worker = None
    
    def __init__(self, worker):
        self.set_worker(worker)

    def set_worker(self, worker):
        self.worker = worker
        if self.worker.working_product is None:
            self.working_product = SemiProduct()
        else:
            self.working_product = self.worker.working_product
    
    def get_content(self):
        return self.working_product.content
     
    def change_worker(self, new_worker):
        self.serial_number += 1
        self.worker = new_worker
        
    def is_fetcher(self, obj):
        if  obj is not None:    return True
    
    def get(self, data = {} ):
        if not self.is_fetcher(self.worker) :
            self.change_worker( Fetcher(self.working_product) )
        
        self.working_product.content = self.worker.get(data)
        return self
            
    def post(self, data = {} ):
        if not self.is_fetcher(self.worker):
            self.change_worker( Fetcher(self.working_product) )
        
        self.working_product.content = self.worker.post(data)
        return self
    
    def is_finder(self, obj):
        if obj is not None: return True
    
    def find(self, express):
        #if not self.is_finder(self.worker):
        self.worker = Finder(self.working_product)
        self.working_product.content = self.worker.find(express)
        
        return self