version 1.1, 2006/01/19 16:25:49
|
version 1.2, 2006/03/02 19:57:32
|
Line 24 from Products.ZCatalog.CatalogPathAwaren
|
Line 24 from Products.ZCatalog.CatalogPathAwaren
|
refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s" |
refBasis="http://vlp.mpiwg-berlin.mpg.de/references?id=%s" |
#basis url for references |
#basis url for references |
|
|
publicationStatus=['private','restricted','open','published'] |
publicationStatusList=['private','hidden','open_intern','open','group'] |
# private only access for the owner, restricted only for users in accessGroup, open open for everyone, published occurs in basket list |
# private only access for the owner, restricted only for users in accessGroup, open open for everyone, published occurs in basket list |
|
|
class Basket(OrderedFolder): |
class BasketBasis(OrderedFolder): |
"""Basket class""" |
"""Basis class for BasketFolder and Baskets""" |
|
|
meta_type="basket" |
|
|
|
security=ClassSecurityInfo() |
security=ClassSecurityInfo() |
|
|
manage_options=OrderedFolder.manage_options+( |
|
{'label':'manage main','action':'changeBasketForm'}, |
|
) |
|
|
|
def __init__(self,id,title,comment,owner,publicationStatus,shortDescription,accessGroups=None): |
|
''' |
|
init the basket |
|
@param id: id |
|
@param title: title of the basket |
|
@param comment: description of the basket |
|
@param shortDescription: short description of the basket for the overviewList |
|
@param owner: user object describing the owner |
|
@param publication_status: one of publicationStatus if restricted, optional parameter accessGroups has to be set |
|
@param aaccessGroups: default value is none, contains list of groups which are allowed to access this basket |
|
''' |
|
|
|
self.id=id |
|
self.title=title |
|
self.comment=comment |
|
self.owner=owner |
|
self.publicationStatus=publicationStatus |
|
self.accessGroups=accessGroups |
|
self.shortDecription=shortDescription |
|
|
|
security.declareProtected('View','getOwner') |
|
|
|
def getNewId(self): |
def getNewId(self): |
"""createIds""" |
"""createIds""" |
last=getattr(self,'last',0) |
last=getattr(self,'last',0) |
last +=1 |
last +=1 |
while len(self.ZopeFind(self,obj_ids=[str(last)]))>0: |
while len(self.ZopeFind(self,obj_ids=[str(last)]))>0: |
last+=1 |
last+=1 |
|
|
return last |
return last |
|
|
def addBasketText(self,REQUEST=None): |
def addBasketText(self,REQUEST=None): |
Line 75 class Basket(OrderedFolder):
|
Line 47 class Basket(OrderedFolder):
|
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
|
|
|
def addBasketExternalLink(self,REQUEST=None): |
|
"""add an external link""" |
|
id=self.getNewId() |
|
|
|
manage_addBasketExternalLink(self,str(id),"","","","",RESPONSE=None) |
|
if REQUEST: |
|
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
|
|
def deleteObject(self,id,REQUEST=None): |
def deleteObject(self,id,REQUEST=None): |
"""delete object""" |
"""delete object""" |
self.manage_delObjects([id]) |
self.manage_delObjects([id]) |
Line 105 class Basket(OrderedFolder):
|
Line 85 class Basket(OrderedFolder):
|
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
|
|
|
security.declareProtected('View','getOwner') |
|
|
def getOwner(self): |
def getOwner(self): |
"""get Owner as string""" |
"""get Owner as string""" |
return self.owner |
return self.owner |
|
|
|
def isAuthorized(self,role="read"): |
|
"""check whether actual user is authorized""" |
|
#TODO implement isAuthorized to do type, read or edit |
|
return True |
|
|
|
def getActualUserName(self): |
|
"""get username of actual user""" |
|
return self.REQUEST['AUTHENTICATED_USER'].getUserName() |
|
|
|
def getObjects(self): |
|
""""get objects""" |
|
return [getattr(self,x['id']) for x in self._objects] |
|
|
|
def numberOfObjects(self): |
|
"""anzahl der elemente im basket""" |
|
return len(self._objects) |
|
|
|
class BasketFolder(BasketBasis): |
|
"""Folder for Baskets""" |
|
|
|
meta_type="Basket Folder" |
|
|
|
#security=ClassSecurityInfo() |
|
|
|
def getSets(self,mode='open'): |
|
"""get sets, depending on mode selected""" |
|
ret=[] |
|
|
|
if mode=='open': |
|
|
|
for object in self.getObjects(): |
|
|
|
if object.publicationStatus=='open': |
|
ret.append(object) |
|
return ret |
|
elif mode=='open_intern': |
|
print "open_intern" |
|
if self.groupFolder.isMemberOf('user'): |
|
print "---public" |
|
for object in self.getObjects(): |
|
print object.getId(),object.publicationStatus |
|
if object.publicationStatus=='open_intern': |
|
ret.append(object) |
|
return ret |
|
else: |
|
return ret |
|
elif mode=='private': |
|
for object in self.getObjects(): |
|
if object.groupFolder.isMemberOf('admin') or object.groupFolder.isMemberOf('editor'): |
|
ret.append(object) |
|
return ret |
|
elif mode=='groups': |
|
for object in self.getObjects(): |
|
if object.groupFolder.isMemberOf('reader') or object.groupFolder.isMemberOf('editor') or object.groupFolder.isMemberOf('admin'): |
|
ret.append(object) |
|
return ret |
|
|
|
def checkPermission(self,modus): |
|
"""check permission""" |
|
if modus=='open': |
|
return True |
|
elif modus=='private': |
|
return self.isMemberOf('admin') |
|
|
|
def getCurrentBasket(self): |
|
"""select this basket for further work""" |
|
|
|
return self.REQUEST.cookies.get('vlp_basket',None) |
|
|
|
def index_html(self,mode='open'): |
|
"""generische ansicht""" |
|
|
|
#check if user has right for other modi |
|
|
|
if hasattr(self,"BasketFolder_template"): |
|
obj=getattr(self,"BaskeFolder_template") |
|
return obj() |
|
else: |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_template_standard.zpt')).__of__(self) |
|
pt.content_type="text/html" |
|
return pt(mode=mode) |
|
|
|
def __init__(self,id,title): |
|
"""init basket folder""" |
|
|
|
self.id=id |
|
self.title=title |
|
|
|
def manageBasketFolder(self): |
|
"""manage the basket""" |
|
|
|
if hasattr(self,"BasketFolder_manage_template"): |
|
obj=getattr(self,"BasketFolder_manage_template") |
|
return obj() |
|
else: |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','BasketFolder_manage_template_standard.zpt')).__of__(self) |
|
pt.content_type="text/html" |
|
return pt() |
|
|
|
def addBasket(self,title,RESPONSE=None): |
|
"""add a new basket""" |
|
id=self.getNewId() |
|
username=self.getActualUserName() |
|
publicatonStatus="private" |
|
manage_addBasket(self,str(id),title,"",username,publicationStatus,RESPONSE=None) |
|
newObj=getattr(self,str(id)) |
|
if RESPONSE: |
|
RESPONSE.redirect(newObj.absolute_url()+'/manageBasket') |
|
|
|
|
|
def manage_addBasketFolderForm(self): |
|
"""form for adding a basket""" |
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasketFolder.zpt')).__of__(self) |
|
return pt() |
|
|
|
def manage_addBasketFolder(self,id,title,RESPONSE=None): |
|
"""add a basket folder object""" |
|
|
|
|
|
newObj=BasketFolder(id,title) |
|
|
|
self._setObject(id,newObj) |
|
|
|
if RESPONSE is not None: |
|
RESPONSE.redirect('manage_main') |
|
|
|
class Basket(BasketBasis): |
|
"""Basket class""" |
|
|
|
meta_type="basket" |
|
|
|
security=ClassSecurityInfo() |
|
|
|
manage_options=OrderedFolder.manage_options+( |
|
{'label':'manage main','action':'changeBasketForm'}, |
|
) |
|
|
|
def checkRef(self,xref): |
|
"""check if XRef is already in Basket""" |
|
|
|
founds=self.ZopeFind(self,obj_metatypes=["BasketXRef"]) |
|
for found in founds: |
|
if self.xref==xref: |
|
return True |
|
return False |
|
|
|
def __init__(self,id,title,comment,owner,publicationStatus,shortDescription): |
|
''' |
|
init the basket |
|
@param id: id |
|
@param title: title of the basket |
|
@param comment: description of the basket |
|
@param shortDescription: short description of the basket for the overviewList |
|
@param owner: user object describing the owner |
|
@param publication_status: one of publicationStatus if restricted, optional parameter accessGroups has to be set |
|
''' |
|
|
|
self.id=id |
|
self.title=title |
|
self.comment=comment |
|
self.owner=owner |
|
self.publicationStatus=publicationStatus |
|
self.shortDescription=shortDescription |
|
|
|
|
|
|
|
def getTitle(self): |
|
"""print name""" |
|
return self.title |
|
|
|
security.declareProtected('Manage','changeBasketForm') |
def changeBasketForm(self): |
def changeBasketForm(self): |
"""form for changing the basket""" |
"""form for changing the basket""" |
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) |
Line 166 class Basket(OrderedFolder):
|
Line 319 class Basket(OrderedFolder):
|
pt.content_type="text/html" |
pt.content_type="text/html" |
return pt() |
return pt() |
|
|
def isAuthorized(self,role="read"): |
|
"""check whether actual user is authorized""" |
|
#TODO implement isAuthorized to do type, read or edit |
|
return True |
|
|
|
def getActualUserName(self): |
|
"""get username of actual user""" |
|
return self.REQUEST['AUTHENTICATED_USER'].getUserName() |
|
|
|
def getObjects(self): |
|
""""get objects""" |
|
return [getattr(self,x['id']) for x in self._objects] |
|
|
|
def numberOfObjects(self): |
|
"""anzahl der elemente im basket""" |
|
return len(self._objects) |
|
|
|
def changeBasketComments(self,REQUEST): |
def changeBasketComments(self,REQUEST): |
"""Change comment of basket elements""" |
"""Change comment of basket elements""" |
Line 191 class Basket(OrderedFolder):
|
Line 328 class Basket(OrderedFolder):
|
splitted=key.split("_") |
splitted=key.split("_") |
objects=self.ZopeFind(self,obj_ids=[splitted[0]]) |
objects=self.ZopeFind(self,obj_ids=[splitted[0]]) |
if len(objects)>0: |
if len(objects)>0: |
objects[0][1].comment=form[key] |
setattr(objects[0][1],splitted[1],form[key]) |
|
|
|
|
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
Line 204 class Basket(OrderedFolder):
|
Line 342 class Basket(OrderedFolder):
|
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
REQUEST.RESPONSE.redirect(self.absolute_url()+"/manageBasket") |
|
|
def getCurrentBasket(self): |
|
"""select this basket for further work""" |
|
return self.REQUEST.cookies.get('vlp_basket',None) |
|
|
|
def generateNewObject(self,type,link,title='',comment='',REQUEST=None): |
def generateNewObject(self,type,link,title='',comment='',REQUEST=None): |
"""generate a new object in the basket""" |
"""generate a new object in the basket""" |
Line 232 class Basket(OrderedFolder):
|
Line 367 class Basket(OrderedFolder):
|
manage_addBasketXRef(self,str(id),title,comment,xref) |
manage_addBasketXRef(self,str(id),title,comment,xref) |
|
|
if REQUEST: |
if REQUEST: |
REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']) |
import random |
|
rd=random.random() |
|
REQUEST.RESPONSE.redirect(REQUEST['HTTP_REFERER']+'&-dummy='+str(rd)) |
else: |
else: |
return True |
return True |
|
|
Line 241 def manage_addBasketForm(self):
|
Line 378 def manage_addBasketForm(self):
|
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasket.zpt')).__of__(self) |
pt=PageTemplateFile(os.path.join(package_home(globals()),'zpt','addBasket.zpt')).__of__(self) |
return pt() |
return pt() |
|
|
def manage_addBasket(self,id,title,comment,username,publicationStatus,accessGroups=None,RESPONSE=None): |
def manage_addBasket(self,id,title,comment,username,publicationStatus,shortDescription="",accessGroups=None,RESPONSE=None): |
"""add a basket object""" |
"""add a basket object""" |
#TODO:what happens in username does not exists |
#TODO:what happens in username does not exists |
#find username |
#find username |
owner=username |
owner=username |
|
|
newObj=Basket(id,title,comment,owner,publicationStatus,accessGroups=None) |
newObj=Basket(id,title,comment,owner,publicationStatus,shortDescription,accessGroups) |
|
|
self._setObject(id,newObj) |
self._setObject(id,newObj) |
|
|
Line 257 def manage_addBasket(self,id,title,comme
|
Line 394 def manage_addBasket(self,id,title,comme
|
class BasketBasis(SimpleItem): |
class BasketBasis(SimpleItem): |
"""basic class for baskets""" |
"""basic class for baskets""" |
|
|
security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
|
|
manage_options=SimpleItem.manage_options+( |
manage_options=SimpleItem.manage_options+( |
{'label':'manage main','action':'changeBasketBasisForm'}, |
{'label':'manage main','action':'changeBasketBasisForm'}, |
Line 309 class BasketBasis(SimpleItem):
|
Line 446 class BasketBasis(SimpleItem):
|
class BasketXRef(BasketBasis): |
class BasketXRef(BasketBasis): |
"""class for internal references based on xrefs""" |
"""class for internal references based on xrefs""" |
|
|
security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
meta_type="BasketXRef" |
meta_type="BasketXRef" |
|
|
manage_options=BasketBasis.manage_options+( |
manage_options=BasketBasis.manage_options+( |
Line 362 def manage_addBasketXRef(self,id,title,c
|
Line 499 def manage_addBasketXRef(self,id,title,c
|
class BasketInternalLink(BasketBasis): |
class BasketInternalLink(BasketBasis): |
"""class for internal referencens based on links""" |
"""class for internal referencens based on links""" |
|
|
security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
meta_type="BasketInternalLink" |
meta_type="BasketInternalLink" |
|
|
manage_options=BasketBasis.manage_options+( |
manage_options=BasketBasis.manage_options+( |
Line 418 def manage_addBasketInternalLink(self,id
|
Line 555 def manage_addBasketInternalLink(self,id
|
class BasketExternalLink(BasketBasis): |
class BasketExternalLink(BasketBasis): |
"""class for external links""" |
"""class for external links""" |
|
|
security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
meta_type="BasketExternalLink" |
meta_type="BasketExternalLink" |
|
|
manage_options=BasketBasis.manage_options+( |
manage_options=BasketBasis.manage_options+( |
Line 473 def manage_addBasketExternalLink(self,id
|
Line 610 def manage_addBasketExternalLink(self,id
|
class BasketText(BasketBasis): |
class BasketText(BasketBasis): |
"""class for text elements in baskets""" |
"""class for text elements in baskets""" |
|
|
security=ClassSecurityInfo() |
#security=ClassSecurityInfo() |
meta_type="BasketText" |
meta_type="BasketText" |
|
|
def content_html(self): |
def content_html(self): |