def modif(self,path,data,msg=None,binary=False): self.log.debug("MODIF") path=format_path(path) if path=='': #la racine n'est pas un fichier. return pere=path_pere(path) name=name_from_path(path) fsreptmp=self.prepare_fstmp(pere) if binary: acces='wb' else: acces='w' f=open('%s/%s' % (fsreptmp,name),acces) f.write(data) f.close() actions=[] message=msg if not message: message = "Modifie fichier %s " % path tmpcommit=fsreptmp+'/'+name new_rev=self.commit(actions,message,tmpcommit,fsreptmp) return new_rev
def edit_ok(self): if not check_edit(self.datas,self.socket): return baseurl=self.datas.url_base if self.path!='/': baseurl+=self.path url=self.socket.input_text_value('urlgalerie') titre=self.socket.input_text_value('titre') textnav=self.socket.input_text_value('textnav') description=self.socket.input_text_value('description') name=name_from_path(self.path) if self.id!=0: redirecturl=baseurl if url!=name: self.path='/'.join(baseurl.split('/')[:-1])+'/'+url redirecturl=self.path self.rename({"all":name}) self.set_propriete("titre",titre) self.set_propriete("textnav",textnav) self.set_propriete("description",description) self.socket.redirection_http(redirecturl, "Action Ok")
def edit_form(self): _=self.datas._ baseurl=self.datas.url_base if self.path!='/': baseurl+=self.path #todo multilangue. titre=self.get_propriete('titre','') textnav=self.get_propriete('textnav','') description=self.get_propriete('description','') name=name_from_path(self.path) urlgalerie="" if self.id!=0: urlgalerie="""%s : <input type="text" name="urlgalerie" value="%s"/><br />""" % (_('Url'),name) template=u""" %s : <form action="%s/edit/ok" method="POST"> %s %s : <input type="text" name="titre" value="%s"/><br /> %s : <input type="text" name="textnav" value="%s"/><br /> %s : <textarea name="description" class="petit">%s</textarea> <input type="submit" value="%s" /> </form> """ % (_('Editer les proprietes de la galerie'),baseurl,urlgalerie,_('Titre'),titre,_('Text Nav'),textnav,_('Description'),description,_('Valider')) self.socket.send_datas(template)
def edit_page_form(self): _=self.datas._ if not check_edit(self.datas,self.socket): return inputslang=u'' name=name_from_path(self.path) urllangdefault=name for code in self.config.langues: l=tablangtrad[code][self.datas.my_session.langue] inputslang+=u"<br /><br />%s %s : <br />" % (_('Information en '),l) if self.id!=0: try: urllang=self.glob.objets[self.id]['names'][code] except: urllang='' inputslang+=u"""<div class="label">%s</div> : <input type="text" name="urlpage_%s" value="%s"/> <br />""" % (_('Identifiant pour url '), code, urllang ) textnav=self.get_propriete('textnav_%s' % code,'') if type(textnav)==type(''): textnav=stou(textnav) inputslang+=u"""<div class="label">%s</div> : <input type="text" name="textnav_%s" value="%s"/> <br />""" % (_('Text Navigation'),code,textnav ) titre=stou(self.get_propriete('titre_%s' % code,'')) inputslang+=u""" <div class="label">%s</div> : <input type="text" name="titrepage_%s" value="%s"/><br /> """ % ( _('Titre'),code,titre) template=u""" %s : <form action="%s/edit_page" method="POST" id="panneauform" > %s <div id="div_valid" class="invisible"> <input type="button" value="%s" onClick="document.forms.panneauform.submit();"> </div> </form> """ % (_('Editer les proprietes de la page'), self.path,inputslang,_('Valider')) self.socket.send_datas(template)
def affiche(self): _=self.datas._ self.socket.send_datas('<body><h1>'+_('SERVEUR HTTPDtekio : Repertoires et Fichiers Publics')+'</h1>\n') pathpere=path_pere(self.path_entier) parent=name_from_path(pathpere) if not parent: parent='Racine' self.socket.send_datas(_('Retour')+' : <a href="%s">%s</a> <br />' % (pathpere,parent)) self.socket.send_datas('<br />') self.socket.send_datas(_("Contenu du Repertoire Actuel")+" : %s <br />" % self.path_entier) for elem in self.fs_svn.listdir(self.path_entier): path_obj="%s/%s" % (self.path_entier,elem) urlobj="%s/%s" % (self.datas.url_base,path_obj) admins_action='' if check_admin(self.datas,self.socket): typemime=mimetypes.guess_type(path_obj)[0] if typemime in self.type_edit: admins_action='[<a href="http://%s/edit">E</a>] [<a href="http://%s/delete">D</a>]' % (urlobj,urlobj) self.socket.send_datas('<a href="http://%s">%s</a> %s<br />' % (urlobj,elem,admins_action)) return
def add_folder(self,path,msg=None): self.log.debug("ADDFOLDER") path=format_path(path) if path=='': #on ne peux creer la racine (elle existe deja) return pere=path_pere(path) name=name_from_path(path) fsreptmp=self.prepare_fstmp(pere) system_no_ret("""mkdir "%s/%s" """ % (fsreptmp,name)) actions=[("""svn add "%s/%s" """ % (fsreptmp,name)),] message=msg if not message: message = "Ajouter Repertoire %s " % path tmpcommit=fsreptmp+'/'+name new_rev=self.commit(actions,message,tmpcommit,fsreptmp) return new_rev
def trash(self,path,msg=None): self.log.debug("TRASH") path=format_path(path) if path=='': #on ne peux pas mettre la racine dans trash return pere=path_pere(path) name=name_from_path(path) dt=datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S") pathtrash="/trash/%s" % dt self.log.debug('create %s' % pathtrash) new_rev=self.add_folder(pathtrash) pathtrashobj="%s/%s" % (pathtrash,name) message="Trash : %s => %s " % (path,pathtrashobj) self.log.debug(message) new_rev=self.move(path,pathtrashobj) return (new_rev,dt)
def add_link(self,pathlinkinit,pathlinkfinal,msg=None): self.log.debug("ADDLINK") pathlinkinit=format_path(pathlinkinit) pathlinkfinal=format_path(pathlinkfinal) perefinal=path_pere(pathlinkfinal) namefinal=name_from_path(pathlinkfinal) fsreptmp = self.prepare_fstmp(perefinal) #TODO BEST : lien en relatif et pas en absolu # pour permettre le deplacement dans un autre repertoire du contenu. system_no_ret("""ln -s "%s/%s" "%s/%s" """ % (self.dataread,pathlinkinit,fsreptmp,namefinal)) actions=[("""svn add "%s/%s" """ % (fsreptmp,namefinal)),] message=msg if not message: message="Ajout lien symbolique %s => %s " % (pathlinkinit,pathlinkfinal) tmpcommit=fsreptmp+'/'+namefinal new_rev=self.commit(actions,message,tmpcommit,fsreptmp) return new_rev
def delete(self,path,msg=None): self.log.debug("DELETE") ### Ne pas appeler directemer dans les modules, ### prefere appeler trash pour garder le contenu. path=format_path(path) if path=='': #on ne peux detruire la racine return pere=path_pere(path) name=name_from_path(path) fsreptmp=self.prepare_fstmp(pere) system_no_ret("""cp -r "%s%s" "%s" """ % (self.dataread,path,fsreptmp)) actions=[("""svn del "%s/%s" """ % (fsreptmp,name)),] message=msg if not message: message="Detruit fichier %s " % path tmpcommit=fsreptmp+'/'+name new_rev=self.commit(actions,message,tmpcommit,fsreptmp) return new_rev
def add(self,path,data,msg=None,binary=False): path=format_path(path) if path=='': return pere=path_pere(path) name=name_from_path(path) fsreptmp=self.prepare_fstmp(pere) if binary: acces='wb' else: acces='w' f=open('%s/%s' % (fsreptmp,name),acces) f.write(data) f.close() actions=[("""svn add "%s/%s" """ % (fsreptmp,name)),] message=msg if not message: message="Ajouter fichier %s " % path tmpcommit=fsreptmp+'/'+name new_rev=self.commit(actions,message,tmpcommit,fsreptmp) return new_rev
def affiche(self): _=self.datas._ name=name_from_path(self.path) if self.id!=self.datas.objet_actu.id: titre=self.get_propriete('titre','') description=self.get_propriete('description','') pathpage=self.config.path['files']+self.path pathlist=pathpage+'/normal/' elems=os.listdir(pathlist) images_elems="" if len(elems)>6: alea_elem=[] while len(alea_elem)<4: e=random.choice(elems) if e[0]!='.' and e not in alea_elem: alea_elem.append(e) images_elems+=""" <img src="%s/%s/mini/mini_%s" border="0" /> """ % (self.datas.objet_actu.path,name,e) self.socket.send_datas( u"""<div class="galerie_extrait"><a href="%s/%s" title="%s" alt="%s"><p class="bottom5">%s %s</p>%s</a></div>""" % ( self.datas.objet_actu.path,name,description,description,_('voir la galerie'),titre,images_elems)) return self.page()