Annotation of MPIWGWeb/MPIWGProjects.py, revision 1.1.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>