Example #1
0
def deplace_element(interfaces,id,id_new_pere):
    database = interfaces[3]
    fs_svn   = interfaces[4]
    log      = interfaces[5]
    datas    = interfaces[7]
    glob     = interfaces[8]

    if id==0:
        #pas de deplacement de la racine
        return
    id_old_pere=glob.objets[id]['pere']
    if id_old_pere==id_new_pere:
        # pas de deplacement (meme endroit)
        return

    obj_instance=get_instance_from_id(interfaces,id)
    pere_instance=get_instance_from_id(interfaces,id_old_pere)

    files_names=obj_instance.listfiles()
    old_path=pere_instance.path
    new_path=glob.objets[id_new_pere]['path'].values()[0]
    for file_name in files_names:
        old_file='%s/%s' % (old_path,file_name)
        new_file='%s/%s' % (new_path,file_name)
        fs_svn.move(old_file,new_file)

    drop_dispo_in_instance(pere_instance,id)
    database.write('del_liaison',(id_old_pere,id))
    database.write('add_liaison',(id_new_pere,id,1))

    glob.deplace_obj(id,id_old_pere,id_new_pere)
Example #2
0
 def get_obj(self):
     if self.obj:
         return
     self.get_value()
     glob=self.interfaces[8]
     self.id_obj=id_get_fils_by_name(glob,self.piece.id,self.value)
     self.obj=get_instance_from_id(self.interfaces,self.id_obj)
Example #3
0
def create_piece(interfaces,id_piece_pere,name_moule,name,proprietes={}):
    glob=interfaces[8]
    id_forge=id_get_fils_by_name(glob,0,'forge')
    id_moule=id_get_fils_by_name(glob,id_forge,name_moule)
    moule=get_instance_from_id(interfaces,id_moule)
    id_piece=moule.create_piece(interfaces,id_piece_pere,name,proprietes)
    return id_piece
Example #4
0
def element_delete_confirm(self):
    _=self.datas._
    ido=int(self.datas.action_params[0])
    instance=get_instance_from_id(self.interfaces,ido)
    if instance:

        baseurl=self.datas.url_base
        if self.path!='/':
            baseurl+=self.path

    tpl="""
%s : <br />
%s : %s <br />
""" % (_('Etes vous sur que vous voulez detruire cette element'),
       instance.id, instance.path)

    tpl+="""

<div id="div_valid" class="invisible">
<center>
<a href="%s/enleve_element?id=%s"><h3>%s</h3></a>
</center>
</div>

<br />
""" % (baseurl,instance.id,_('Destruction'))

    self.socket.send_datas(tpl)
    instance.confirm_detruire()
Example #5
0
def rename_element(interfaces,id_obj,new_names,only_list=False):
    database = interfaces[3]
    fs_svn   = interfaces[4]
    log      = interfaces[5]
    glob     = interfaces[8]

    obj_instance=get_instance_from_id(interfaces,id_obj)

    old_names=glob.objets[id_obj]['names']
    old_files=obj_instance.listfiles()
    
    glob.set_names(id_obj, new_names)
    # TODO verif nombre de names identique ?!
    for (k,v) in new_names.items():
        obj_instance.set_propriete('name_%s' % k,v)
    new_files=obj_instance.listfiles()
    id_pere=glob.objets[id_obj]['pere']
    obj_pere=glob.objets[id_pere]
    path_pere=obj_pere['path'].values()[0]
    #TODO verif nombre de fichier identique ?!
    for i in range(len(new_files)):
        if old_files[i]!=new_files[i]:
            old_file='%s/%s' % (path_pere,old_files[i])
            new_file='%s/%s' % (path_pere,new_files[i])
            fs_svn.move(old_file,new_file)

    if glob.objets[id_obj]['type']==2:
        for l in glob.langues:
            glob.get_infos_sous_pages(l,id_pere)
Example #6
0
 def liste(self,max=None):
     self.get_liste_subs()
     if len(self.list_subs)>0:
         self.obj.affiche_template('headerliste')
         for id_sub in self.list_subs:
             obj_sub=get_instance_from_id(self.interfaces,id_sub)
             self.obj_sub.affiche_template('lineliste')
         self.obj.affiche_template('footerliste')
     else:
         self.obj.affiche_template('listevide')
Example #7
0
def detruire_element(interfaces,id,prems=True):
    database = interfaces[3]
    fs_svn   = interfaces[4]
    log      = interfaces[5]
    datas    = interfaces[7]
    glob     = interfaces[8]

    # racine indestructible.
    if id==0:
        return

    # get instance
    datas.detruit.append(id)
    elem_instance=get_instance_from_id(interfaces,id)
    if not elem_instance:
        print 'pas possible de detruire %s : no instance ' % id
        return

    id_pere=glob.objets[id]['pere']
    pere_instance=get_instance_from_id(interfaces,id_pere)
    if prems:
        drop_dispo_in_instance(pere_instance,id)

    #detruire les enfants.
    # TODO detruire les fils seulement si unique reference
    # lorsque l'on fera des liens symboliques...
    subs=glob.objets[id]['subs']
    for sub in subs:
        if not sub in datas.detruit:
            detruire_element(interfaces,sub,prems=False)

    # destruction fichier (vers poubelle)
    files=elem_instance.listfiles()
    for f in files:
        filepath=pere_instance.path+'/'+f
        if fs_svn.exist(filepath):
            fs_svn.trash(filepath)

    # destruction objet dans glob
    glob.delete_obj(id)

    purge_db_element(interfaces,id)
Example #8
0
    def affiche_user(self):
        name_moule_user=self.get_propriete('moule_user','')
        id_user=self.datas.my_session.id_user
        id_user_piece=self.get_fils_by_name('user_%s' % id_user)
        
        if id_user_piece==-1:
            id_user_piece=create_piece(self.interfaces,self.id,name_moule_user,'user_%s' % id_user,{})
        user_piece=get_instance_from_id(self.interfaces,id_user_piece)

        self.datas.my_session.set_new_url(self.path+'/user_'+str(id_user)+self.path_r)
        redirect_ok(self.socket,self.datas)
Example #9
0
    def create_piece(self,interfaces,id_piece_pere,name,proprietes={}):
        utilise_interface(self,interfaces)
        self.structure=self.get_dico_proprietes('struct')
        self.workflows=self.get_dico_proprietes('workflow',limit=1)
        self.log.debug("workflows moule %s" % self.id  )
        self.log.debug(str(self.workflows))

        id_type=52

        id_piece=create_element(self.glob,self.database,
                                id_type,id_piece_pere,
                                {'all':name,},proprietes)
        
        piece=get_instance_from_id(interfaces,id_piece)

        self.fs_svn.add_folder(piece.path)

        for (name,dico) in self.structure.items():
            etype=dico['type']
            title=dico.get('title',None)
            default=dico['default']
            cl=dico_type_classe[etype]
            obj=cl(interfaces,piece,name,title=title)
            if name=="id_user":
                default=self.datas.my_session.id_user
            obj.create(default)

        self.log.debug("workflows %s "% id_piece)
        self.log.debug(str(self.workflows))

        for (name,w) in self.workflows.items():
            piece.set_propriete('workflow.%s' % name,w)

        piece.set_propriete('modele', self.get_name())

        listfiles=self.fs_svn.listdir(self.path)
        listfiles.remove('.svn')


        for i in listfiles:
            fi=self.path+'/'+i
            ff=piece.path+'/'+i
            self.fs_svn.add_link(fi,ff)

        return id_piece
Example #10
0
def element_edit_form(self):
    ido=int(self.datas.action_params[0])
    instance=get_instance_from_id(self.interfaces,ido)
    if instance:
        instance.action_element_edit_form()