def my_handler(self): self.socket.trace("start my handler") self.datas.url_base=self.config.http['url_base'] self.datas.url_proxy=self.config.http['url_proxy'] self.datas.my_session=self.sessions.get_session(self.interfaces) if self.datas.my_session==None: # operation open Id => interupt affichage pour redirection open id. return False self.datas._=self.traduct[self.datas.my_session.get_langue_interface()] self.datas.actions_backup=[] self.datas.actions_fssvn=[] self.datas.my_session.set_new_url(self.socket.path) self.datas.classes=classes self.datas.rendus={} self.datas.templates={} self.datas.id_cl={} self.datas.instances={} self.datas.includes=[] self.datas.to_exec=[] self.datas.dispos_normals={} self.datas.dispos_parents={} self.datas.detruit=[] self.socket.trace("session ok") ids_path(self.datas,self.glob,self.socket,self.log) self.datas.objet_actu=get_instance_from_infos(self.datas.infos_objet_actu, self.interfaces) self.datas.objet_actu.is_actu=True self.datas.objet_actu.init_actu() self.datas.objet_actu.name_class=self.datas.ids_path[-1][1] self.socket.trace("id_path ok") #self.log.debug("IDACTU : %s" % self.datas.objet_actu.id ) if self.datas.objet_actu.is_direct(): self.socket.trace("action directe") self.datas.objet_actu.pre_execution() self.datas.objet_actu.action() else: get_objets_actifs(self.glob,self.datas) # on considere ici que le rendu doit etre un rendu HTML # on pourra eventuelement ajouter d'autre style # genre comme pour direct pour d'autre type d'affichage # par exemple, pour pda / xml / rss ou autres... self.socket.trace("objets actifs ok") get_instances_includes_exec(self.interfaces) self.socket.trace("get instance exec ok") self.socket.trace("debut header HTML") HTML.header(self.interfaces) self.socket.trace("fin header HTML") for (fct,params) in self.datas.to_exec: if fct: self.socket.trace("lance %s(%s)" % (fct,params)) if params: fct(params) else: fct() else: self.socket.send_datas(params) self.socket.trace("debut footer HTML") HTML.footer(self.interfaces) self.socket.trace("fin action") #TODO : enregistrement des svn et sqlbackup pour revert possible. if self.datas.actions_backup or self.datas.actions_fssvn: for action_backup in self.datas.actions_backup: pass for action_fssvn in self.datas.actions_fssvn: pass return True self.dbg('fin my_handler HTTP_Handler_Tekio')
def analyse_instance(interfaces,id_i,cl_i,path,path_r,branche_actu=0): log = interfaces[5] datas = interfaces[7] glob = interfaces[8] lang=datas.my_session.langue ouvre_div='<div %s%s>' ferme_div='</div>' infos=(id_i,cl_i,path,path_r) instance=get_instance_from_infos(infos,interfaces) actu=instance.is_actu parent=False if branche_actu>-1 and not actu: parent=True proprietes=glob.objets[id_i]['proprietes'] if parent: dispo=proprietes.get('dispo_parent','#') else: dispo=proprietes.get('dispo_normal','=') include_css=proprietes.get('include_css',None) if include_css: add_include=('css',include_css) if not add_include in datas.includes: datas.includes.append(add_include) includes_css=proprietes.get('includes_css',None) if includes_css: for include_css in includes_css.split(','): add_include=('css',include_css.strip()) if not add_include in datas.includes: datas.includes.append(add_include) include_js=proprietes.get('include_js',None) if include_js: add_include=('js',include_js) if not add_include in datas.includes: datas.includes.append(add_include) includes_js=proprietes.get('includes_js',None) if includes_js: for include_js in includes_js.split(','): add_include=('js',include_js.strip()) if not add_include in datas.includes: datas.includes.append(add_include) for i in instance.includes(): if not i in datas.includes: datas.includes.append(i) instance.pre_execution() dispo=dispo.replace(']',',]') decdispo=dispo.split('[') initdec=True idec=0 for dec in decdispo: idec+=1 if initdec: initdec=False else: idname="" classename="" if ':' in dec: (classename,dec)=dec.split(':',1) if '+' in classename: (classename,idname)=classename.split('+',1) strclass='' if classename: strclass=' class="%s"' % classename if idname=='' and classename=="elem": dectmp=dec.split(',',1) if len(dectmp)>0: idname='elemid_'+dectmp[0] if idname!='': strid=' id="%s"' % idname else: strid='' datas.to_exec.append((None,ouvre_div % (strclass,strid))) datas.inbalises.append(classename+'+'+idname) dec2=dec.split(',') for subdec in dec2: if subdec: if subdec=="]": datas.to_exec.append((None,ferme_div)) try: pass datas.inbalises.pop() except: pass elif subdec=="=": if actu: datas.to_exec.append((instance.action,[])) else: datas.to_exec.append((instance.affiche,[])) elif subdec=="#": if branche_actu<len(datas.objets_actifs): (id_a,cl_a,a_path,a_path_r)=datas.objets_actifs[branche_actu+1] analyse_instance(interfaces,id_a,cl_a,a_path,a_path_r,branche_actu+1) else: try: idsub=int(subdec) except: idsub=-1 if idsub>=0: namefils=glob.get_name_by_id(idsub,lang) if namefils: newpath=path+'/'+namefils newpath_r=path_r[len(namefils)+1:] else: newpath=path newpath_r=path_r clsub=get_classe(glob,idsub) analyse_instance(interfaces,idsub,clsub,newpath,newpath_r,-1)