Example #1
0
 def foldermgt(self):
     m=hmenu(self.langconfig,self.dbf)
     sname=cherrypy.session['name']
     contenu=m.foldersAndGroup()
     actions=""
     HTMLpage=self.html["globalTemplate"].format(actions,contenu)
     return HTMLpage
Example #2
0
    def usermgt(self,name='',pwd='',group=''):
        m=hmenu(self.langconfig,self.dbf)
        db=SQLite(self.dbf)

        ### parameter treatment
        if name=='':
            if group!='':
                req='insert into groups values("{}")'.format(group)
                status=db.upd_ins(req)
        else:
            req='select rowid from groups where name="{}"'.format(group)
            idgroup=db.select(req)
            hashpwd=bcrypt.hashpw(pwd,bcrypt.gensalt())

            req='insert into users (name,hashpass,id_group)'
            req+=' values("{}","{}",{})'.format(name,hashpwd,idgroup[0][0])
            status=db.upd_ins(req)

        try:
            sname=cherrypy.session['name']
            [actions,contenu]=m.usersAndGroup()
        except Exception as err:
            logging.error("in usermgt: %s",err)
            contenu=m.unknown()
        HTMLpage=self.html["globalTemplate"].format(actions,contenu)
        return HTMLpage
Example #3
0
    def index(self,path='.',uname='',pwd=''):
        messagefile=getconfig(self.langconfig)
        messages=messagefile.getconfig()
        messagefile.close()

        ### affichage de la colonne menu: login, arbo, timeline
        actions=""
        contenu='<td valign="top">\n'
        bouton='<p><a href="/highslide/login.html" \
                    class="highslide" id="login" '
        bouton+='onclick="return hs.htmlExpand(this,\
                {objectType: \'iframe\', outlineType: \'rounded-white\'})">\n'
        bouton+='login</a></p>\n'

        #### checking for the user connection
        m=hmenu(self.langconfig,self.dbf)
        if uname!='':
            try:
                sname=cherrypy.session['name']
                contenu+='<p class="error">{}</p>\n'.format(
                    messages['alreadyconnected'])
                actions+=m.actionfor(sname)

            except:
                userac=account(uname,pwd,self.dbf)
                if cherrypy.session['mess']=="userKO":
                    contenu+='<p class="error">{}</p>\n'.format(
                        messages['userko'])
                    contenu+=bouton
                elif cherrypy.session['mess']=="pwdKO":
                    contenu+='<p class="error">{}</p>\n'.format(
                        messages['passwordko'])
                    contenu+=bouton
                else:
                    sname=cherrypy.session['name']
                    actions+=m.actionfor(sname)
        else:
            try:
                sname=cherrypy.session['name']
                actions+=m.actionfor(sname)
            except:
                contenu+=bouton

        #### getting list of directory in current folder
        db=SQLite(self.dbf)
        req='select dirname,rowid from folder where folder.rowid in\n'
        req+='(select id_folder_son from folderParent\n'
        req+='inner join folder on id_folder_father=folder.rowid\n'
        req+='and dirname="{}")'.format(path)
        res=db.select(req)
        
        #### getting access right on the list of folders
        listidfolder=''
        for r in res:
            listidfolder+="{},".format(r[1])

        listidfolder=listidfolder[:1] ### delete last comma

        try:
            req='select id_folder from folderByGroup '
            req+='where id_group={} '.format(self.id_group_all)
            req+='or id_group={}'.format(cherrypy.session['id_group'])
            access=db.select(req)
        except:
            req='select id_folder from folderByGroup '
            req+='where id_group={}'.format(self.id_group_all)
            access=db.select(req)

        aright=[]
        for i in access:
            aright.append(i[0])
        affpath="/"+path[2:]

        contenu+='<div class="menu">\n'
        contenu+='<a href="index?path=.">\
        <img src="/highslide/home.png" width=25 height=25></a>\n'
        contenu+='{}\n<ul>\n'.format(affpath)
        for r in res:
            if r[1] in aright:
                contenu+='<li class="open">'
                contenu+='<a href="index?path={}">{}</a></li>\n'.\
                         format(r[0],basename(r[0]))
            else:
                contenu+='<li class="lock"><a href="/highslide/login.html" '
                contenu+='class="highslide" id="login" '
                contenu+='onclick="return hs.htmlExpand(this,'
                contenu+='{objectType: \'iframe\', outlineType: '
                contenu+='\'rounded-white\'})">\n'
                contenu+='{}</a></li>\n'.format(basename(r[0]))


        contenu+='</ul>\n</td>\n'
        contenu+='</div>\n'

        #### getting list of image in current folder
        db=SQLite(self.dbf)
        req='select filename from files where id_dir=\n'
        req+='(select rowid from folder where dirname="{}")'.format(path)
        res=db.select(req)

        #### affichage des thumbs
        contenu+='<td>\n'
        contenu+='<div class="highslide-gallery">\n'
        if res!=[]:
            for p in res:
                contenu+='<a class="highslide" '
                contenu+='href="/photos/{}/{}" '.format(path,p[0])
                contenu+='onclick="return hs.expand(this,config1)">\n'
                contenu+='<img \
                src="/photos/{}/.Thumbnails/{}"/>'.format(path,p[0])
                contenu+='</a>'
    
    
        contenu+="</td>\n"
        HTMLpage=self.html["globalTemplate"].format(actions,contenu)
        return HTMLpage