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)
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)
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
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()
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)
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')
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)
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)
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
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()