# -*- coding: utf-8 -*- from lybmods.lybformauth import member_of, any_of from urllib.request import FancyURLopener from lybmods.lybclasses import Cat from random import random from lybmods import lybshared import lybmods.lybhtdata as lybhtdata import cherrypy import lybmods.lybtools as lybtools class URLOpener(FancyURLopener): version = 'Mozilla/5.0 (X11; Linux x86_64; rv:10.0.6) Gecko/20100101 Firefox/10.0.6 Iceweasel/10.0.6' class Edit: '''Управление хранилищем''' _cp_config = { 'auth.require': [any_of(member_of('admins'),member_of('editors'))] } def __init__(self, root): self.root = root @cherrypy.expose def index(self): cherrypy.HTTPRedirect("/") @cherrypy.expose def nejs(self): return lybhtdata.ne_js() @cherrypy.expose def negif(self): response = cherrypy.response response.headers['Content-Type'] = 'image/gif' return lybhtdata.ne_gif() @cherrypy.expose def upl(self, catid = 0): catid = int(catid) cat = Cat(catid) catname = cat.name return self.root.buildhtml('Архив [Загрузка документа в архив]', lybhtdata.form_upload.format(catid = catid, catname = catname) + '\n← Обратно в раздел "' + catname + '"\n\n') @cherrypy.expose def upload(self, catid = 0, filein=''): if catid: catid = int(catid) url = filein try: res = URLOpener().open(url) except: cat = Cat(catid) catname = cat.name return self.root.buildhtml('Архив [Загрузка документа в архив]', lybhtdata.form_upload.format(catid = catid, catname = catname) + '
Имя раздела не должно быть пустым
\n') catname = catname.strip() if category.newcat(catname): return self.root.category(catid = catid) else: return self.root.buildhtml('Архив[Ошибка создания раздела]', 'Ошибка создания раздела "' + catname + '"
\n') @cherrypy.expose def catrename(self, catid = None, catname = None): if catid: catid = int(catid) if not catname: return self.catedit(submit = 'Переименовать', catid = catid, err = '!!!Пустое имя раздела!!!') catname = catname.strip() cat = Cat(catid) parent = cat.parent for subc in parent.categories: if subc.name == catname: return self.catedit(submit = 'Переименовать', catid = catid, err = '!!!В разделе "' + parent.name + '" есть подраздел с именем "' + catname + '"!!!') if catname == cat.name: return self.catedit(submit = 'Переименовать', catid = catid, err = '!!!Исходное имя равно новому!!!') cat.setname(catname) return self.root.category(catid = parent.id) @cherrypy.expose def catdelete(self, catid = None): if catid: catid = int(catid) cat = Cat(catid) parent = cat.parent cat.delete() return self.root.category(catid = parent.id) @cherrypy.expose def catmove(self, catid = None, toid = None): if not catid: return if not toid: return self.catedit(submit = 'Перенести', catid = catid, err = '!!!Не выбран раздел!!!') catid = int(catid) toid = int(toid) cat = Cat(catid) tocat = Cat(toid) if catid == toid: return self.catedit(submit = 'Перенести', catid = catid, err = '!!!Нельзя перенести себя в себя!!!') if toid == cat.parent.id: return self.catedit(submit = 'Перенести', catid = catid, err = '!!!Раздел уже в этом месте!!!') if cat.name in [x.name for x in tocat.categories]: return self.catedit(submit = 'Перенести', catid = catid, err = '!!!В разделе "' + cat.parent.name + '" уже есть подраздел с таким именем!!!') cat.setparentid(toid) return self.root.category(catid = cat.parent.id) @cherrypy.expose def catedit(self, submit = None, catid = None, err = ''): if submit and catid: catid = int(catid) cat = Cat(catid) catname = cat.name parent = cat.parent if submit == 'Переименовать': html = '' title, document = ('Архив[Переименовать раздел "' + catname + '"]' + err, html) elif submit == 'Перенести': l = '\n' lo = '\n' lopts = '' def lgen(lopts, mod = '', cid = 0): c = Cat(cid) lopts += lo.format(id = cid, name = mod + c.name) for subcat in c.categories: if subcat.id == catid: continue lopts = lgen(lopts, mod = mod + '...', cid = subcat.id) return lopts lopts = lgen(lopts) sel = l.format(lbody = lopts) html = '' title, document = ('Архив[Переместить раздел "' + catname + '"]' + err, html) elif submit == 'Удалить': html = '