Пример #1
0
    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')
Пример #2
0
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)