Annotation of MPIWGWeb/MPIWGProjects.py, revision 1.8

1.6       dwinter     1: """This files contains the class MPIWG Projects
                      2: for organizing and maintaining the different projectspages
                      3: 
                      4: """
1.1       dwinter     5: from Products.PageTemplates.PageTemplateFile import PageTemplateFile
                      6: from Products.PageTemplates.PageTemplate import PageTemplate
                      7: from Products.PageTemplates.ZopePageTemplate import ZopePageTemplate
                      8: 
                      9: import MPIWGStaff
                     10: import string
                     11: import re
1.5       dwinter    12: from types import *
1.1       dwinter    13: 
                     14: import xmlhelper # Methoden zur Verwaltung der projekt xmls
                     15: from OFS.SimpleItem import SimpleItem
                     16: from OFS.Folder import Folder
                     17: 
                     18: 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']
                     19: 
                     20: checkFields = ['xdata_01']
                     21: 
                     22: def sortF(x,y):
1.5       dwinter    23:     
                     24:     return cmp(x[1],y[1])
1.1       dwinter    25: 
1.5       dwinter    26: def sortI(x,y):
                     27:     xsplit=x[1].split(".")
                     28:     ysplit=y[1].split(".")
                     29:     xret=""
                     30:     yret=""
                     31:     try:
                     32:         for i in range(5):
                     33:             try:
                     34:                 yret=yret+"%04i"%int(xsplit[i])
                     35:             except:
                     36:                 yret=yret+"%04i"%0
                     37: 
                     38:             try:
                     39:                 xret=xret+"%04i"%int(ysplit[i])
                     40:             except:
                     41:                 xret=xret+"%04i"%0
                     42:                 
                     43:         
                     44:         return cmp(int(yret),int(xret))
                     45:     except:
                     46:         return cmp(x[1],y[1])
1.1       dwinter    47: 
1.5       dwinter    48:     
1.1       dwinter    49: class MPIWGRoot(Folder):
                     50:     """Stammordner für den Web-Server"""
                     51: 
                     52:     folders=['MPIWGProject','Folder']
                     53:     meta_type='MPIWGRoot'
1.8     ! dwinter    54: 
        !            55:     def sortedNames(self,list):
        !            56:         """sort names"""
        !            57: 
        !            58:         def sortLastName(x,y):
        !            59:             try:
        !            60:                 last_x=x.split()[len(x.split())-1]
        !            61:                 last_y=y.split()[len(y.split())-1]
        !            62: 
        !            63:             except:
        !            64: 
        !            65:                 last_x=""
        !            66:                 last_y=""
        !            67:             
        !            68:             
        !            69:             
        !            70:             if last_x<last_y:
        !            71:                 return 1
        !            72:             elif last_x>last_y:
        !            73:                 return -1
        !            74:             else:
        !            75:                 return 0
        !            76:             
        !            77:         list.sort(sortLastName)
        !            78:         list.reverse()
        !            79:         
        !            80:         return list
1.1       dwinter    81:     
                     82:     def __init__(self, id, title):
                     83:         """init"""
                     84:         self.id=id
                     85:         self.title=title
1.8     ! dwinter    86:         
        !            87:     def harvestHistoricalPersons(self):
        !            88:         """erstelle liste aller erwaehnten actors"""
        !            89: 
        !            90:         def normalize(str):
        !            91:             """loesche fuhrendes space"""
        !            92:             if (len(str)>1) and (str[0]==" "):
        !            93:                 ret=str[1:]
        !            94:             else:
        !            95:                 ret=str
        !            96:             return ret
        !            97:         
        !            98:         list={}
        !            99:         projects=self.ZopeFind(self.projects,obj_metatypes=['MPIWGProject'])
        !           100:         
        !           101:         for project in projects:
        !           102:             lg=len(project[1].xdata_03[0])-1
        !           103: 
        !           104:             if (lg>1) and (project[1].xdata_03[0][lg]==";"):
        !           105:                 project[1].xdata_03[0]=project[1].xdata_03[0][0:lg-1]
        !           106: 
        !           107:           
        !           108:      
        !           109:                 
        !           110:             try:
        !           111:                 if len(project[1].xdata_03[0].split(";"))>1: # guess if separator is ;
        !           112:                     for person in project[1].xdata_03[0].split(";"):
        !           113:                         personNormal=normalize(person)
        !           114:                         if personNormal in list.keys():
        !           115:                             list[personNormal].append(project[1])
        !           116:                         else:
        !           117:                             list[personNormal]=[project[1]]
        !           118:                 else: #guess , is sepeator
        !           119:                     for person in project[1].xdata_03[0].split(","):
        !           120:                         personNormal=normalize(person)
        !           121:                         if personNormal in list.keys():
        !           122:                             list[personNormal].append(project[1])
        !           123:                         else:
        !           124:                             list[personNormal]=[project[1]]
        !           125: 
        !           126:             except:
        !           127:                 print "ERROR",project
        !           128:                 
        !           129:         return list
        !           130: 
        !           131:     def storeHistoricalPersons(self,RESPONSE=None):
        !           132:         """store persons"""
        !           133:         self.personDict={}
        !           134:         personDict=self.harvestHistoricalPersons()
        !           135:         for person in personDict.keys():
        !           136:             for project in personDict[person]:
        !           137:                 if person in self.personDict.keys():
        !           138:                     self.personDict[person].append((project.absolute_url(),project.WEB_title[0],project.xdata_01[0]))
        !           139:                 else:
        !           140:                     self.personDict[person]=[(project.absolute_url(),project.WEB_title[0],project.xdata_01[0])]
1.1       dwinter   141: 
1.8     ! dwinter   142:         if RESPONSE is not None:
        !           143:             RESPONSE.redirect("showHistoricalPersons")
        !           144:             
        !           145: 
        !           146:     def showHistoricalPersons(self):
        !           147:         """show persons"""
        !           148:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/showHistoricalPersons').__of__(self)
        !           149:         return pt()
        !           150: 
        !           151:         
        !           152:     def editHistoricalPersonsForm(self):
        !           153:         """edit historical persons for consistency"""
        !           154:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/editHistoricalPersonsForm').__of__(self)
        !           155:         return pt()
        !           156: 
        !           157:     def getProjectsByFieldContent(self,fieldName,fieldContentsEntry):
        !           158:         """gib alle Projekte aus mit Value von field mit fieldName enthält ein Element der Liste fieldContents"""
        !           159:         if type(fieldContentsEntry) is StringType:
        !           160:             fieldContents=[fieldContentsEntry]
        !           161:         else:
        !           162:             fieldContents=fieldContentsEntry
        !           163:             
        !           164:         projects=self.ProjectCatalog({fieldName:string.join(fieldContents,' OR')})
        !           165:         #print projects
        !           166:         return projects
        !           167: 
        !           168:     def changeMPIWGRootForm(self):
        !           169:         """edit"""
        !           170:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/changeMPIWGRootForm').__of__(self)
        !           171:         return pt()
        !           172: 
        !           173:     def changeMPIWGRoot(self,title,disciplineList,themesList,RESPONSE=None):
        !           174:         """change"""
        !           175:         self.title=title
        !           176:         self.disciplineList=disciplineList
        !           177:         self.themesList=themesList
        !           178: 
        !           179:         if RESPONSE is not None:
        !           180:             RESPONSE.redirect('manage_main')
        !           181: 
        !           182:    
        !           183:     def test(self):
        !           184:         """test"""
        !           185:         return self.getProjectsByFieldContent('xdata_09',['biology'])[0].absolute_url
        !           186:     
1.5       dwinter   187:     def getProjectFields(self,fieldName,folder=None,sort=None):
1.1       dwinter   188:         """getListofFieldNames"""
                    189:         ret=[]
                    190:         #print "FN",fieldName
                    191:         if not folder:
                    192:             folder=self
                    193:         for object in folder.__dict__:
                    194: 
                    195:             obj=getattr(folder,object)
                    196:             if hasattr(obj,'meta_type'):
1.5       dwinter   197:                 #print obj.meta_type
1.1       dwinter   198:                 if obj.meta_type=='MPIWGProject':
1.5       dwinter   199:                     if fieldName=="WEB_title_or_short":
                    200:                         #print "HI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
                    201:                         #print len(obj.getContent('xdata_07'))
                    202:                         if len(obj.getContent('xdata_07'))<3: # hack weil z.Z. manchmal noch ein Trennzeichen ; oder , im Feld statt leer
                    203:                             fieldNameTmp="WEB_title"
                    204:                         else:
                    205:                             fieldNameTmp="xdata_07"
                    206:                     else:
                    207:                         fieldNameTmp=fieldName
1.1       dwinter   208:                     
1.5       dwinter   209:                     ret.append((obj,obj.getContent(fieldNameTmp)))
                    210: 
1.1       dwinter   211:                 if obj.meta_type in self.folders:
                    212:                     
                    213:                     ret += self.getProjectFields(fieldName,obj)
1.5       dwinter   214: 
                    215:         if sort=="int":
                    216:             ret.sort(sortI)
                    217:         else:
                    218:             ret.sort(sortF)
1.1       dwinter   219:         
                    220:         return ret
                    221: 
1.5       dwinter   222:     def showNewProjects(self):
                    223:         projects=[]
                    224:         for objs in self.getProjectFields('WEB_title_or_short'): # Get all Projets
                    225:             if objs[0].xdata_05[0] == "":
                    226:                 
                    227:                 projects.append(objs)
                    228:                 
                    229:         return projects
                    230:     
                    231:         
1.1       dwinter   232:     manage_options = Folder.manage_options+(
                    233:         {'label':'Import Persons','action':'importNamesForm'},
1.8     ! dwinter   234:         {'label':'Main config','action':'changeMPIWGRootForm'},
        !           235:         {'label':'Store Historical Persons','action':'storeHistoricalPersons'},
1.1       dwinter   236:         )
                    237:     
                    238:     def importNamesForm(self):
                    239:         """Form"""
                    240:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGNamesForm.zpt').__of__(self)
                    241:         return pt()
                    242: 
                    243:     def importNames(self,fileupload,folderName,RESPONSE=None):
                    244:         """import komma-sep list email,lastName,firstName"""
                    245:         project=getattr(self,folderName)
                    246:         
                    247:         for line in fileupload.readlines():
1.4       dwinter   248:             #print line
1.1       dwinter   249:             splitted=line.split(",")
                    250:             if not (splitted[0]==""):
                    251:                 newObj=MPIWGStaff.MPIWGStaff(splitted[0],splitted[1],splitted[2])
                    252:                 try:
                    253:                     project._setObject(splitted[0],newObj)
                    254:                 except:
                    255:                     print "not done:",splitted[0]
                    256:         if RESPONSE is not None:
                    257:             RESPONSE.redirect('manage_main')
                    258: 
1.3       dwinter   259:     def getAllMembers(self):
                    260:         """give list of all members"""
                    261:         ret=[]
                    262: 
                    263:         for x in self.members.objectValues('MPIWGStaff'):
1.4       dwinter   264:             #print x.title
1.3       dwinter   265:             ret.append(x.title)
                    266:             
                    267:         ret.sort()
                    268:         return ret
                    269: 
1.5       dwinter   270:     def makeList(self,entry):
                    271:         """makes a list out of one entry or repeat a list"""
                    272:         if type(entry) is StringType:
                    273:             return [entry]
                    274:         else:
                    275:             return entry
                    276: 
                    277: 
                    278:     def getTree(self):
                    279:         """generate Tree from project list"""
                    280:         returnList=[]
                    281:         for project in self.getProjectFields('xdata_05',sort="int"): # get Projects sorted by xdata_05
                    282:             for idNr in project[1].split(";"): # more than one number
                    283:                 if not idNr=="":
                    284:                     splittedId=idNr.split(".")
                    285:                     depth=len(splittedId)
                    286:                     nr=idNr
                    287:                     title=project[0].WEB_title
                    288:                     returnList.append((depth,nr,title,project[0]))
                    289:         
                    290:         return returnList
                    291: 
                    292:     def changePosition(self,treeId,select,RESPONSE=None):
                    293:         """Change Postion Entry"""
                    294:         numbers=[]
                    295: 
                    296:         # Suche hoechste bisherige nummer
                    297:         projects=self.getProjectFields('xdata_05') # get Projects sorted by xdata_05
1.8     ! dwinter   298:         #print "pj",projects
1.5       dwinter   299:         for project in projects: #suche alle subtrees der treeId
                    300:             #print treeId
                    301:             
                    302:             founds=re.match(treeId+"\.(.*)",project[1].split(";")[0])
                    303:             if founds:
                    304:                 #print "x",founds.group(0),len(founds.group(0).split("."))
                    305:                 if len(founds.group(0).split("."))==len(treeId.split("."))+1: # nur ein punkt mehr, d.h. untere ebene
                    306:                     try:
                    307:                         numbers.append(int(founds.group(0).split(".")[len(founds.group(0).split("."))-1]))
                    308:                     except:
1.6       dwinter   309:                         numbers.append(int(0))
                    310: 
                    311:         try:
                    312:             highest=max(numbers)
                    313:         except:
                    314:             highest=0
1.5       dwinter   315:         projects=self.showNewProjects()
                    316:         for i in self.makeList(select):
                    317:             highest+=10
                    318:             projects[int(i)][0].xdata_05=treeId+"."+str(highest)
                    319: 
                    320: 
                    321:         if RESPONSE is not None:
                    322:             RESPONSE.redirect('showTree')
                    323:         
                    324:     def changeTree(self,RESPONSE=None):
                    325:         """change the complete tree"""
                    326:         form=self.REQUEST.form
                    327:         hashList={}
                    328:         fields=self.getTree()
                    329: 
                    330:         
                    331:         for idNr in form.keys():
                    332:             fields[int(idNr)][3].xdata_05=form[idNr]
                    333: 
                    334:         
                    335: 
                    336:         if RESPONSE is not None:
                    337:             RESPONSE.redirect('showTree')
                    338: 
                    339:     def getProjectWithId(self,id):
                    340:         fields=self.getProjectFields('xdata_05')
                    341:         for field in fields:
                    342:             if field[1]==id:
                    343:                 return field[0]
                    344: 
                    345:         return None
                    346:             
                    347:         
                    348:             
                    349:         
                    350:         
                    351:             
1.3       dwinter   352:     def getUrlFromPerson(self,list):
                    353:         """get urls to person list"""
                    354:         ret=[]
                    355:         persons=list.split(";")
                    356:         for person in persons:
                    357:             
                    358:             splitted=person.split(",")
                    359:             if len(splitted)==1:
                    360:                 splitted=person.split(" ")
                    361:             splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]
                    362:             if splittedNew[0]=='':
                    363:                 del splittedNew[0]
                    364:             search=string.join(splittedNew,' AND ')
                    365:             if not search=='':
1.4       dwinter   366:                 
                    367:                 try:
                    368:                     proj=self.MembersCatalog({'title':search})
                    369:                 except:
                    370:                     proj=None
1.3       dwinter   371:         
                    372:             if proj:
                    373:                 ret.append("<a href=%s >%s</a>"%(proj[0].absolute_url,person))
                    374:             else:
                    375:                 ret.append("%s"%person)
                    376:         return string.join(ret,";")
                    377:                          
                    378:     def getProjectsOfMembers(self):
                    379:         """give tuple member /projects"""
                    380:         ret=[]
                    381:         members=self.getAllMembers()
                    382:         for x in members:
                    383:             splitted=x.split(",")
                    384:             
                    385:             proj=self.ProjectCatalog({'xdata_01':string.join(splitted,' AND')})
                    386:             if proj:
                    387:               ret.append((x,proj))
                    388:         return ret
1.1       dwinter   389:     def givePersonList(self,name):
                    390:         """check if person is in personfolder and return list of person objects"""
1.3       dwinter   391:         
                    392:         splitted=name.split(",")
                    393:         if len(splitted)==1:
                    394:             splitted=name.split(" ")
                    395:         splittedNew=[re.sub(r'\s(.*)','$1',split) for split in splitted]
                    396:         if splittedNew[0]=='':
                    397:             del splittedNew[0]
                    398:         search=string.join(splittedNew,' AND ')
                    399:         if not search=='':
                    400:             proj=self.MembersCatalog({'title':search})
                    401: 
                    402:         if proj:
                    403:             return [[x.lastName,x.firstName] for x in proj]
                    404:         else:
                    405:             return []
                    406:             
                    407: ##         splitted=name.split(",") # version nachname, vorname...
                    408: ##         if len(splitted)>1:
                    409: ##             lastName=splitted[0] 
                    410: ##             firstName=splitted[1]
                    411: ##         else: 
                    412: ##             splitted=name.split(" ") #version vorname irgenwas nachnamae
                    413:         
                    414: ##             lastName=splitted[len(splitted)-1]
                    415: ##             firstName=string.join(splitted[0:len(splitted)-1])
                    416: 
                    417: ##         objs=[]
1.1       dwinter   418: 
1.3       dwinter   419:         #print  self.members 
                    420:       ##   for x in self.members.__dict__:
                    421: ##             obj=getattr(self.members,x)
                    422: ##             if hasattr(obj,'lastName') and hasattr(obj,'firstName'):
1.1       dwinter   423:                 
1.3       dwinter   424: ##                 if (re.match(".*"+obj.lastName+".*",lastName) or re.match(".*"+lastName+".*",obj.lastName)) and (re.match(".*"+obj.firstName+".*",firstName) or re.match(".*"+firstName+".*",obj.firstName)):
1.1       dwinter   425:                     
1.3       dwinter   426: ##                     objs.append((obj,lastName+", "+firstName))
1.1       dwinter   427: 
1.3       dwinter   428:         
1.1       dwinter   429:         return objs
                    430: 
                    431: 
                    432:     def personCheck(self,names):
                    433:         """all persons for list"""
1.4       dwinter   434:         #print "names",names
1.1       dwinter   435:         splitted=names.split(";")
                    436:         ret={}
                    437:         for name in splitted:
                    438: 
                    439:             if not (name==""):
1.3       dwinter   440:                 try:
                    441:                     ret[name]=self.givePersonList(name)
                    442:                 except:
                    443:                     """NOTHIHN"""
1.4       dwinter   444:         #print "RET",ret
1.1       dwinter   445:         return ret
                    446: 
                    447:     def giveCheckList(self,person,fieldname):
                    448:         """return checklist"""
                    449:         #print "GCL",fieldname
                    450:         if fieldname=='xdata_01':
                    451:             x=self.personCheck(person.getContent(fieldname))
1.4       dwinter   452:             #print "GCLBACKX",x
1.1       dwinter   453:             return x
                    454:         
                    455: 
                    456:     def isCheckField(self,fieldname):
                    457:         """return chechfield"""
                    458:         
                    459:         return (fieldname in checkFields)
                    460: 
                    461:     
                    462:     
                    463:         
                    464: def manage_addMPIWGRootForm(self):
                    465:     """form for adding the root"""
                    466:     pt=PageTemplateFile('Products/MPIWGWeb/zpt/addMPIWGRootForm.zpt').__of__(self)
                    467:     return pt()
                    468: 
                    469: def manage_addMPIWGRoot(self,id,title,RESPONSE=None):
                    470:     """add a root folder"""
                    471:     newObj=MPIWGRoot(id,title)
                    472:     self._setObject(id,newObj)
                    473: 
                    474:     if RESPONSE is not None:
                    475:         RESPONSE.redirect('manage_main')
                    476:         
                    477: 
                    478: class MPIWGProject(Folder):
                    479:     """Class for Projects"""
                    480: 
                    481:     meta_type='MPIWGProject'
                    482: 
1.3       dwinter   483:     def crossLinker(self):
                    484:         """experimental crosslinker"""
                    485:         splitted=self.WEB_project_description[0].split()
                    486:         new=[]
                    487:         for split in splitted:
                    488:             try:
                    489:                 found=self.DescriptionCatalog({'fulltext':split})
                    490:           
                    491:                 if len(found)>1:
                    492:              
                    493:                     new.append("<a href=%s>%s</a>"%(split,split))
                    494:                 else:
                    495:                     new.append(split)
                    496:             except:
                    497:                 new.append(split)
                    498:         return string.join(new)
                    499:             
                    500:             
                    501: 
1.1       dwinter   502: 
                    503:     def generateTemplate(self,RESPONSE=None):
                    504:         """Erzeuge Template für defined fields not_used"""
                    505: 
                    506:         id="index_html"
                    507:         title=id
                    508:         if self._getOb('index_html'):
                    509:             self._delObject('index_html')
                    510: 
                    511:         
                    512:         newObj=ZopePageTemplate(id,'TEXT')
                    513:         self._setObject(id,newObj)
                    514:         #self.manage_addPageTemplate(id,title)
                    515:         if RESPONSE is not None:
                    516:             RESPONSE.redirect('manage_main')
                    517:             
1.5       dwinter   518:     def __init__(self, id, argv=None):
1.1       dwinter   519:         """initieriere classe"""
                    520:         
                    521:         self.id=id
                    522:         self.title=id
1.5       dwinter   523:         if argv:
                    524:             for arg in definedFields:
1.7       dwinter   525:        try:
                    526:                    setattr(self,arg,argv[arg])
                    527:        except:
                    528:            setattr(self,arg,"")
1.5       dwinter   529:         else:
                    530:             for arg in definedFields:
                    531:                 setattr(self,arg,'')
1.1       dwinter   532:             
                    533:     manage_options = Folder.manage_options+(
                    534:         {'label':'Load New File','action':'loadNewFileForm'},
                    535:         {'label':'Edit ProjectInfo','action':'editMPIWGProjectForm'},
                    536:         {'label':'Edit BasisInfo','action':'editMPIWGBasisForm'},
                    537:         {'label':'Edit Publications','action':'editMPIWGRelatedPublicationsForm'},
                    538:         )
                    539: 
                    540:     def getDataFields(self):
                    541:         """giveListofDatafields"""
                    542:         ret=[]
                    543:         for x in range(1,14):
                    544:             ret.append('xdata_%02i'%x)
                    545:         return ret
                    546:             
                    547:     def getDefinedFields(self):
                    548:         """show all defined fields"""
                    549:         
                    550:         return definedFields
                    551: 
                    552:     def getAttribute(self,field):
                    553:         """get attrbiute"""
                    554:         return getattr(self,field)
                    555: 
                    556:     def getContent(self,field):
                    557:         """Inhalt des Feldes"""
                    558:         
                    559:         text=u''
                    560:         #print "FIELD",field
                    561:         for x in getattr(self,field):
                    562:             #print "HIHIIII"
                    563:             
                    564:             try:
                    565:                 text +=x
                    566:             except:
                    567:                 try:
                    568:                     text =x
                    569:                 except:
                    570:                     text="ERROR"
1.5       dwinter   571:         #print "TEXT",text.encode('ascii','ignore')  
1.1       dwinter   572:         return text
                    573:     
                    574:     def show_html(self):
                    575:         """simple index"""
                    576:         #return "HI"
                    577:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGProject_index.zpt').__of__(self)
                    578:         return pt()
                    579: 
                    580:     def editMPIWGProjectForm(self):
                    581:         """editform"""
                    582:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGProject.zpt').__of__(self)
                    583:         return pt()
                    584: 
                    585:     def editMPIWGBasisForm(self):
                    586:         """editform"""
                    587:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGBasis.zpt').__of__(self)
                    588:         return pt()
                    589:     def editMPIWGRelatedPublicationsForm(self):
                    590:         """Edit related Publications"""
                    591:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/edit_MPIWGRelatedPublications.zpt').__of__(self)
                    592:         return pt()
                    593:         
                    594:     def editMPIWGProject(self,RESPONSE=None):
                    595:         """edit the project"""
                    596:         
                    597:         #return self.REQUEST
                    598:         for x in definedFields:
                    599:             if self.REQUEST.has_key(x):
                    600:                 
                    601:                 setattr(self,x,[self.REQUEST[x]])
                    602:             
                    603:         if RESPONSE is not None:
                    604:             RESPONSE.redirect('manage_main')
                    605: 
                    606:         
                    607:     def loadNewFileForm(self):
                    608:         """Neues XML-File einlesen"""
                    609:         pt=PageTemplateFile('Products/MPIWGWeb/zpt/MPIWGProject_newfile.zpt').__of__(self)
                    610:         return pt()
                    611: 
                    612:     def loadNewFile(self,RESPONSE=None):
                    613:         """einlesen des neuen files"""
                    614:         fileupload=self.REQUEST['fileupload']
                    615:         if fileupload:
                    616:             file_name=fileupload.filename
                    617:             filedata=fileupload.read()
                    618: 
                    619:             argv=xmlhelper.proj2hash(filedata)
                    620:             #print argv.keys()
                    621:             for arg in definedFields:
                    622:                 
                    623:                 #print arg,argv[arg],getattr(self,arg)
                    624:                 try:
                    625:                     temp=argv[arg][0:]
                    626:                     #old=getattr(self,arg)
                    627:                     setattr(self,arg,temp)
                    628:                     #print old,getattr(self,arg)
                    629:                 except:
                    630:                     """nothing"""
                    631:                     
                    632:         if RESPONSE is not None:
                    633:             RESPONSE.redirect('manage_main')
                    634: 
                    635: def manage_addMPIWGProjectForm(self):
                    636:     """form for adding the project"""
                    637:     pt=PageTemplateFile('Products/MPIWGWeb/zpt/addMPIWGProjectForm.zpt').__of__(self)
                    638:     return pt()
                    639: 
                    640: def manage_addMPIWGProject(self,id,RESPONSE=None):
                    641:     """method to add a project"""
                    642:     #print argv
1.5       dwinter   643:     if self.REQUEST.has_key('fileupload'):
                    644:         fileupload=self.REQUEST['fileupload']
                    645:         if fileupload:
                    646:             file_name=fileupload.filename
                    647:             filedata=fileupload.read()
1.1       dwinter   648: 
1.5       dwinter   649:             argv=xmlhelper.proj2hash(filedata)
1.1       dwinter   650: 
1.5       dwinter   651:             #print argv
                    652:         newObj=MPIWGProject(id,argv)
                    653:     else:
                    654:         newObj=MPIWGProject(id)
1.1       dwinter   655: 
                    656:     self._setObject(id,newObj)
                    657: 
                    658: 
                    659:     if RESPONSE is not None:
                    660:         RESPONSE.redirect('manage_main')

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