![]() ![]() | ![]() |
first import product fuer www des insitutes
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')