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>