Annotation of MPIWGWeb/MPIWGProjects.py, revision 1.1
1.1 ! dwinter 1: """This files contains the class MPIWG Projects"""
! 2: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
! 3: from Products.PageTemplates.PageTemplate import PageTemplate
! 4: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
! 5:
! 6: import MPIWGStaff
! 7: import string
! 8: import re
! 9:
! 10: import xmlhelper # Methoden zur Verwaltung der projekt xmls
! 11: from OFS.SimpleItem import SimpleItem
! 12: from OFS.Folder import Folder
! 13:
! 14: definedFields=['WEB_title','xdata_01','xdata_02','xdata_03','xdata_04','xdata_05','xdata_06','xdata_07','xdata_08','xdata_09','xdata_10','xdata_11','xdata_12','xdata_13','WEB_project_header','WEB_project_description','WEB_related_pub']
! 15:
! 16: checkFields = ['xdata_01']
! 17:
! 18: def sortF(x,y):
! 19:
! 20: return cmp(x[1],y[1])
! 21:
! 22: class MPIWGRoot(Folder):
! 23: """Stammordner für den Web-Server"""
! 24:
! 25: folders=['MPIWGProject','Folder']
! 26: meta_type='MPIWGRoot'
! 27:
! 28: def __init__(self, id, title):
! 29: """init"""
! 30: self.id=id
! 31: self.title=title
! 32:
! 33: def getProjectFields(self,fieldName,folder=None):
! 34: """getListofFieldNames"""
! 35: ret=[]
! 36: #print "FN",fieldName
! 37: if not folder:
! 38: folder=self
! 39: for object in folder.__dict__:
! 40:
! 41: obj=getattr(folder,object)
! 42: if hasattr(obj,'meta_type'):
! 43:
! 44: if obj.meta_type=='MPIWGProject':
! 45:
! 46: ret.append((obj,obj.getContent(fieldName)))
! 47: if obj.meta_type in self.folders:
! 48:
! 49: ret += self.getProjectFields(fieldName,obj)
! 50:
! 51: ret.sort(sortF)
! 52:
! 53: return ret
! 54:
! 55: manage_options = Folder.manage_options+(
! 56: {'label':'Import Persons','action':'importNamesForm'},
! 57: )
! 58:
! 59: def importNamesForm(self):
! 60: """Form"""
! 61: pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGNamesForm.zpt').__of__(self)
! 62: return pt()
! 63:
! 64: def importNames(self,fileupload,folderName,RESPONSE=None):
! 65: """import komma-sep list email,lastName,firstName"""
! 66: project=getattr(self,folderName)
! 67:
! 68: for line in fileupload.readlines():
! 69: print line
! 70: splitted=line.split(",")
! 71: if not (splitted[0]==""):
! 72: newObj=MPIWGStaff.MPIWGStaff(splitted[0],splitted[1],splitted[2])
! 73: try:
! 74: project._setObject(splitted[0],newObj)
! 75: except:
! 76: print "not done:",splitted[0]
! 77: if RESPONSE is not None:
! 78: RESPONSE.redirect('manage_main')
! 79:
! 80: def givePersonList(self,name):
! 81: """check if person is in personfolder and return list of person objects"""
! 82:
! 83:
! 84:
! 85: splitted=name.split(",") # version nachname, vorname...
! 86: if len(splitted)>1:
! 87: lastName=splitted[0]
! 88: firstName=splitted[1]
! 89: else:
! 90: splitted=name.split(" ") #version vorname irgenwas nachnamae
! 91:
! 92: lastName=splitted[len(splitted)-1]
! 93: firstName=string.join(splitted[0:len(splitted)-1])
! 94:
! 95: objs=[]
! 96:
! 97: print self.members
! 98: for x in self.members.__dict__:
! 99: obj=getattr(self.members,x)
! 100: if hasattr(obj,'lastName') and hasattr(obj,'firstName'):
! 101:
! 102: if (re.match(".*"+obj.lastName+".*",lastName) or re.match(".*"+lastName+".*",obj.lastName)) and (re.match(obj.firstName+".*",firstName) or re.match(firstName+".*",obj.firstName)):
! 103:
! 104: objs.append((obj,lastName+", "+firstName))
! 105:
! 106: return objs
! 107:
! 108:
! 109: def personCheck(self,names):
! 110: """all persons for list"""
! 111: print "names",names
! 112: splitted=names.split(";")
! 113: ret={}
! 114: for name in splitted:
! 115:
! 116: if not (name==""):
! 117: ret[name]=self.givePersonList(name)
! 118:
! 119: print "RET",ret
! 120: return ret
! 121:
! 122: def giveCheckList(self,person,fieldname):
! 123: """return checklist"""
! 124: #print "GCL",fieldname
! 125: if fieldname=='xdata_01':
! 126: x=self.personCheck(person.getContent(fieldname))
! 127: #print "GCLBACKX",x
! 128: return x
! 129:
! 130:
! 131: def isCheckField(self,fieldname):
! 132: """return chechfield"""
! 133:
! 134: return (fieldname in checkFields)
! 135:
! 136:
! 137:
! 138:
! 139: def manage_addMPIWGRootForm(self):
! 140: """form for adding the root"""
! 141: pt=PageTemplateFile('Products/MPIWGWeb/zpt/addMPIWGRootForm.zpt').__of__(self)
! 142: return pt()
! 143:
! 144: def manage_addMPIWGRoot(self,id,title,RESPONSE=None):
! 145: """add a root folder"""
! 146: newObj=MPIWGRoot(id,title)
! 147: self._setObject(id,newObj)
! 148:
! 149: if RESPONSE is not None:
! 150: RESPONSE.redirect('manage_main')
! 151:
! 152:
! 153: class MPIWGProject(Folder):
! 154: """Class for Projects"""
! 155:
! 156: meta_type='MPIWGProject'
! 157:
! 158:
! 159:
! 160: def generateTemplate(self,RESPONSE=None):
! 161: """Erzeuge Template für defined fields not_used"""
! 162:
! 163: id="index_html"
! 164: title=id
! 165: if self._getOb('index_html'):
! 166: self._delObject('index_html')
! 167:
! 168:
! 169: newObj=ZopePageTemplate(id,'TEXT')
! 170: self._setObject(id,newObj)
! 171: #self.manage_addPageTemplate(id,title)
! 172: if RESPONSE is not None:
! 173: RESPONSE.redirect('manage_main')
! 174:
! 175: def __init__(self, id, argv):
! 176: """initieriere classe"""
! 177:
! 178: self.id=id
! 179: self.title=id
! 180: for arg in definedFields:
! 181:
! 182: setattr(self,arg,argv[arg])
! 183: """NP"""
! 184: manage_options = Folder.manage_options+(
! 185: {'label':'Load New File','action':'loadNewFileForm'},
! 186: {'label':'Edit ProjectInfo','action':'editMPIWGProjectForm'},
! 187: {'label':'Edit BasisInfo','action':'editMPIWGBasisForm'},
! 188: {'label':'Edit Publications','action':'editMPIWGRelatedPublicationsForm'},
! 189: )
! 190:
! 191: def getDataFields(self):
! 192: """giveListofDatafields"""
! 193: ret=[]
! 194: for x in range(1,14):
! 195: ret.append('xdata_%02i'%x)
! 196: return ret
! 197:
! 198: def getDefinedFields(self):
! 199: """show all defined fields"""
! 200:
! 201: return definedFields
! 202:
! 203: def getAttribute(self,field):
! 204: """get attrbiute"""
! 205: return getattr(self,field)
! 206:
! 207: def getContent(self,field):
! 208: """Inhalt des Feldes"""
! 209:
! 210: text=u''
! 211: #print "FIELD",field
! 212: for x in getattr(self,field):
! 213: #print "HIHIIII"
! 214:
! 215: try:
! 216: text +=x
! 217: except:
! 218: try:
! 219: text =x
! 220: except:
! 221: text="ERROR"
! 222: #print "TEXT",text
! 223: return text
! 224:
! 225: def show_html(self):
! 226: """simple index"""
! 227: #return "HI"
! 228: pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGProject_index.zpt').__of__(self)
! 229: return pt()
! 230:
! 231: def editMPIWGProjectForm(self):
! 232: """editform"""
! 233: pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGProject.zpt').__of__(self)
! 234: return pt()
! 235:
! 236: def editMPIWGBasisForm(self):
! 237: """editform"""
! 238: pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGBasis.zpt').__of__(self)
! 239: return pt()
! 240: def editMPIWGRelatedPublicationsForm(self):
! 241: """Edit related Publications"""
! 242: pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGRelatedPublications.zpt').__of__(self)
! 243: return pt()
! 244:
! 245: def editMPIWGProject(self,RESPONSE=None):
! 246: """edit the project"""
! 247:
! 248: #return self.REQUEST
! 249: for x in definedFields:
! 250: if self.REQUEST.has_key(x):
! 251:
! 252: setattr(self,x,[self.REQUEST[x]])
! 253:
! 254: if RESPONSE is not None:
! 255: RESPONSE.redirect('manage_main')
! 256:
! 257:
! 258: def loadNewFileForm(self):
! 259: """Neues XML-File einlesen"""
! 260: pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGProject_newfile.zpt').__of__(self)
! 261: return pt()
! 262:
! 263: def loadNewFile(self,RESPONSE=None):
! 264: """einlesen des neuen files"""
! 265: fileupload=self.REQUEST['fileupload']
! 266: if fileupload:
! 267: file_name=fileupload.filename
! 268: filedata=fileupload.read()
! 269:
! 270: argv=xmlhelper.proj2hash(filedata)
! 271: #print argv.keys()
! 272: for arg in definedFields:
! 273:
! 274: #print arg,argv[arg],getattr(self,arg)
! 275: try:
! 276: temp=argv[arg][0:]
! 277: #old=getattr(self,arg)
! 278: setattr(self,arg,temp)
! 279: #print old,getattr(self,arg)
! 280: except:
! 281: """nothing"""
! 282:
! 283: if RESPONSE is not None:
! 284: RESPONSE.redirect('manage_main')
! 285:
! 286: def manage_addMPIWGProjectForm(self):
! 287: """form for adding the project"""
! 288: pt=PageTemplateFile('Products/MPIWGWeb/zpt/addMPIWGProjectForm.zpt').__of__(self)
! 289: return pt()
! 290:
! 291: def manage_addMPIWGProject(self,id,RESPONSE=None):
! 292: """method to add a project"""
! 293: #print argv
! 294: fileupload=self.REQUEST['fileupload']
! 295: if fileupload:
! 296: file_name=fileupload.filename
! 297: filedata=fileupload.read()
! 298:
! 299: argv=xmlhelper.proj2hash(filedata)
! 300:
! 301: #print argv
! 302:
! 303: newObj=MPIWGProject(id,argv)
! 304:
! 305: self._setObject(id,newObj)
! 306:
! 307:
! 308: if RESPONSE is not None:
! 309: RESPONSE.redirect('manage_main')
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>