File:  [Repository] / MPIWGWeb / MPIWGProjects.py
Revision 1.1: download - view: text, annotated - select for diffs - revision graph
Wed Feb 4 10:03:33 2004 UTC (20 years, 4 months ago) by dwinter
Branches: MAIN
CVS tags: HEAD
Initial revision

    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>