Diff for /basket/basket.py between versions 1.2 and 1.6

version 1.2, 2006/03/02 19:57:32 version 1.6, 2006/04/05 16:54:59
Line 8  import cgi Line 8  import cgi
   
 from OFS.OrderedFolder import OrderedFolder  from OFS.OrderedFolder import OrderedFolder
 from OFS.SimpleItem import SimpleItem  from OFS.SimpleItem import SimpleItem
   from OFS.Image import File
   
 from AccessControl import ClassSecurityInfo  from AccessControl import ClassSecurityInfo
 from AccessControl.User import UserFolder  from AccessControl.User import UserFolder
Line 21  from Globals import Persistent, package_ Line 22  from Globals import Persistent, package_
 from Acquisition import Implicit  from Acquisition import Implicit
 from Products.ZCatalog.CatalogPathAwareness import CatalogAware  from Products.ZCatalog.CatalogPathAwareness import CatalogAware
   
   
   from groups import manage_addGroupFolder
   
 refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s  refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s
   
   basketMetatypes=['BasketXRef','BasketInternalLink','BasketExternalLink','BasketText','BasketFile']
   
 #basis url for references  #basis url for references
   
 publicationStatusList=['private','hidden','open_intern','open','group']   publicationStatusList=['private','hidden','open_intern','open','group'] 
Line 40  class BasketBasis(OrderedFolder): Line 47  class BasketBasis(OrderedFolder):
           
         return last          return last
           
       def addBasketFile(self,REQUEST=None,fileUpload=None,comment=None,title=""):
           """add a file to the basket"""
           if fileUpload==None:
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketFile.zpt')).__of__(self)
               pt.content_type="text/html"
               return pt()
           else:
               id=self.getNewId()
               if title=="":
                   title=fileUpload.filename
                   
               manage_addBasketFile(self,id,title,comment,fileUpload)
               if REQUEST:
                   REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
       
     def addBasketText(self,REQUEST=None):      def addBasketText(self,REQUEST=None):
         """add a text"""          """add a text"""
         id=self.getNewId()          id=self.getNewId()
Line 93  class BasketBasis(OrderedFolder): Line 115  class BasketBasis(OrderedFolder):
           
     def isAuthorized(self,role="read"):      def isAuthorized(self,role="read"):
         """check whether actual user is authorized"""          """check whether actual user is authorized"""
         #TODO implement isAuthorized to do type, read or edit          #TODO replace occurences with checkPermission
         return True          return True
           
     def getActualUserName(self):      def getActualUserName(self):
Line 120  class BasketFolder(BasketBasis): Line 142  class BasketFolder(BasketBasis):
         ret=[]          ret=[]
                   
         if mode=='open':          if mode=='open':
              
             for object in self.getObjects():              for object in self.getObjects():
                         
                 if object.publicationStatus=='open':                  if object.publicationStatus=='open':
Line 148  class BasketFolder(BasketBasis): Line 169  class BasketFolder(BasketBasis):
                     ret.append(object)                      ret.append(object)
                 return ret                  return ret
   
     def checkPermission(self,modus):  
         """check permission"""  
         if modus=='open':  
             return True  
         elif modus=='private':  
             return self.isMemberOf('admin')  
           
     def getCurrentBasket(self):      def getCurrentBasket(self):
         """select this basket for further work"""          """select this basket for further work"""
             
         return self.REQUEST.cookies.get('vlp_basket',None)          id=self.REQUEST.cookies.get('vlp_basket',None)
       if id:  
           return getattr(self,id,None)
       else:
           return None
           
       
     def index_html(self,mode='open'):      def index_html(self,mode='open'):
         """generische ansicht"""          """generische ansicht"""
Line 194  class BasketFolder(BasketBasis): Line 213  class BasketFolder(BasketBasis):
         """add a new basket"""          """add a new basket"""
         id=self.getNewId()          id=self.getNewId()
         username=self.getActualUserName()          username=self.getActualUserName()
         publicatonStatus="private"          publicationStatus="private"
         manage_addBasket(self,str(id),title,"",username,publicationStatus,RESPONSE=None)          manage_addBasket(self,str(id),title,"",username,publicationStatus,RESPONSE=None)
         newObj=getattr(self,str(id))          newObj=getattr(self,str(id))
           #create a groupfolder
           
           manage_addGroupFolder(newObj,'groupFolder')
           
           #add current user to admin group of the new set
           
           newObj.groupFolder.addUserToGroups(str(self.REQUEST['AUTHENTICATED_USER']),['admin'])
         if RESPONSE:          if RESPONSE:
             RESPONSE.redirect(newObj.absolute_url()+'/manageBasket')              RESPONSE.redirect(newObj.absolute_url()+'/manageBasket')
                   
Line 224  class Basket(BasketBasis): Line 250  class Basket(BasketBasis):
           
     security=ClassSecurityInfo()      security=ClassSecurityInfo()
           
       publicationStatusList=publicationStatusList
       
     manage_options=OrderedFolder.manage_options+(      manage_options=OrderedFolder.manage_options+(
         {'label':'manage main','action':'changeBasketForm'},          {'label':'manage main','action':'changeBasketForm'},
         )          )
           
       def checkPermission(self,modus):
           """check permission"""
           if modus=='open':
               return True
           elif modus=='private':
               return self.groupFolder.isMemberOf('admin')
           elif modus=='admin':
               return self.groupFolder.isMemberOf('admin')
           elif modus=='edit':
               return self.groupFolder.isMemberOf('edit')
           elif modus=='publish':
               return self.groupFolder.isMemberOf('publish')
        
       def manageUserRights_html(self):
           """manage user rights"""
           if hasattr(self,"Basket_manageUserRights_template"):
               obj=getattr(self,"Basket_manageUserRights_template")
               return obj()
           else:
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketMain_Basket_manageUserRights_standard.zpt')).__of__(self)
               pt.content_type="text/html"
               return pt()
       
    
       def getBasketObjects(self):
           """get all basket objects"""
           
           objs=self.getObjects()
           ret=[]
           for x in objs:
               if x.meta_type in basketMetatypes:
                  ret.append(x)
           return ret
       
     def checkRef(self,xref):      def checkRef(self,xref):
         """check if XRef is already in Basket"""          """check if XRef is already in Basket"""
                   
Line 267  class Basket(BasketBasis): Line 329  class Basket(BasketBasis):
         pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasket.zpt')).__of__(self)          pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','changeBasket.zpt')).__of__(self)
         return pt()          return pt()
   
   
     def changeBasket(self,title,comment,shortDescription,publicationStatus=None,username=None,accessGroups=None,RESPONSE=None,target=None):      def changeBasket(self,title,comment,shortDescription,publicationStatus=None,username=None,accessGroups=None,RESPONSE=None,target=None):
         '''          '''
         init the basket          init the basket
Line 384  def manage_addBasket(self,id,title,comme Line 447  def manage_addBasket(self,id,title,comme
     #find username      #find username
     owner=username      owner=username
       
     newObj=Basket(id,title,comment,owner,publicationStatus,shortDescription,accessGroups)      newObj=Basket(id,title,comment,owner,publicationStatus,shortDescription)
           
     self._setObject(id,newObj)      self._setObject(id,newObj)
           
Line 443  class BasketBasis(SimpleItem): Line 506  class BasketBasis(SimpleItem):
             pt.content_type="text/html"              pt.content_type="text/html"
             return pt()              return pt()
           
   class BasketFile(BasketBasis,File):
       """class for fileupload"""
       meta_type="BasketFile"
       
       def __init__(self,id,title,comment,content_type='',precondition=''):
           """init"""
           self.id=id
           self.title=title
           self.comment=comment
           self.content_type=content_type
           self.precondition=precondition
           
       
       def download(self):
           """download the file"""
           self.REQUEST.RESPONSE.setHeader("Content-Disposition","""attachement; filename=%s"""%self.title)
           self.REQUEST.RESPONSE.setHeader("Content-Type","application/octet-stream")
      
           self.content_type="application/octet-stream"
           self.REQUEST.RESPONSE.write(self.data)
           
       
       def upDateFile(self,fileUpload=None,comment=None,title="",REQUEST=None):
           """update file"""
           if fileUpload==None:
               pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','upDateBasketFile.zpt')).__of__(self)
               pt.content_type="text/html"
               return pt()
           else:
               id=self.getNewId()
               if title=="":
                   title=fileUpload.filename
                   
               if fileUpload:
                   self.manage_upload(fileUpload)
       
               if comment:
                   self.comment=comment
                   
               if REQUEST:
                   REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket")
       
       def content_html(self):
           """format object as html fragment"""
           
           
           return BasketBasis.content_html(self,"BasketFile")
       
   def manage_addBasketFile(self,id,title,comment,fileUpload,content_type='',precondition='',REQUEST=None):
       """add a basket file"""
       
       id=str(id)
       title=str(title)
       content_type=str(content_type)
       precondition=str(precondition)
   
       #id, title = cookId(id, title, file)
   
       self=self.this()
   
       # First, we create the file without data:
       self._setObject(id, BasketFile(id,title,comment,content_type, precondition))
   
       # Now we "upload" the data.  By doing this in two steps, we
       # can use a database trick to make the upload more efficient.
       if fileUpload:
           self._getOb(id).manage_upload(fileUpload)
       if content_type:
           self._getOb(id).content_type=content_type
   
       if REQUEST is not None:
           REQUEST['RESPONSE'].redirect(self.absolute_url()+'/manage_main')
           
 class BasketXRef(BasketBasis):  class BasketXRef(BasketBasis):
     """class for internal references based on xrefs"""      """class for internal references based on xrefs"""
           

Removed from v.1.2  
changed lines
  Added in v.1.6


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>