132 lines
3.2 KiB
Python
132 lines
3.2 KiB
Python
from hserver.api import WebObject,Persistence,WebFolder,WebCallable
|
|
import hserver
|
|
|
|
import Templates
|
|
import uuid
|
|
|
|
from verkaeufer import Verkaeufer
|
|
from artikel import Artikel
|
|
from verkauf import Verkauf
|
|
|
|
import qrcode
|
|
import qrcode.image.svg
|
|
|
|
import io
|
|
|
|
class KleinerBasar(WebObject,Persistence):
|
|
|
|
layout_css = Templates.layout_css
|
|
|
|
index = Templates.index_html
|
|
|
|
list_verk = Templates.list_verk_html
|
|
list_artikel = Templates.list_artikel_html
|
|
|
|
print_tags = Templates.print_tags_html
|
|
print_css = Templates.print_css
|
|
|
|
printers = {
|
|
"SLP440": "lpr -P SII_SLP440 {0}",
|
|
"SLP200": "lpr -P SII_SLP200 {0}",
|
|
"PDF": None,
|
|
"PDF (Server)": "open {0}"
|
|
}
|
|
|
|
|
|
def __init__(self):
|
|
self.setDefault("index")
|
|
self.artikel = WebFolder()
|
|
self.verkaeufer = WebFolder()
|
|
self.verkauf = WebFolder()
|
|
self.tags = WebFolder()
|
|
|
|
def walk(self,request):
|
|
if not hasattr(self,"verkauf"):
|
|
self.verkauf = WebFolder()
|
|
|
|
request.app = request.self()
|
|
WebObject.walk(self,request)
|
|
|
|
def _tags(self):
|
|
l = []
|
|
for n in range(128):
|
|
l.append(uuid.uuid4())
|
|
|
|
return l
|
|
|
|
def _addverk(self,request,o=None):
|
|
v = Verkaeufer()
|
|
v.update(request)
|
|
setattr( self.verkaeufer, v.id, v )
|
|
request.redirect( request.app + "/verkaeufer/" + v.id )
|
|
|
|
addverk = WebCallable(method=_addverk)
|
|
|
|
def _addartikel(self,request,o=None):
|
|
a = Artikel(request.getForm()["vid"].value())
|
|
a.update(request)
|
|
|
|
setattr( self.artikel, a.id, a )
|
|
request.redirect( request.app + "/artikel/" + a.id )
|
|
|
|
addartikel = WebCallable(method=_addartikel)
|
|
|
|
|
|
|
|
def _search(self,request,o=None):
|
|
q = request.getForm()["q"].value()
|
|
if hasattr(self.verkaeufer, q):
|
|
request.redirect(request.app + "/verkaeufer/" + q)
|
|
if hasattr(self.artikel, q):
|
|
request.redirect(request.app + "/artikel/" + q)
|
|
if hasattr(self.verkauf, q):
|
|
request.redirect(request.app + "/verkauf/" + q)
|
|
|
|
r = []
|
|
|
|
for n in self.artikel.children():
|
|
a = getattr(self.artikel, n)
|
|
for n in dir(a):
|
|
if (str(getattr(a,n)).lower().find(q.lower())>=0):
|
|
r.append( {
|
|
"link": request.app + "/artikel/" + a.id,
|
|
"text": "Artikel: %s" % (a.bezeichnung,)
|
|
})
|
|
break
|
|
|
|
for n in self.verkaeufer.children():
|
|
v = getattr(self.verkaeufer, n)
|
|
for n in dir(v):
|
|
if (str(getattr(v,n)).lower().find(q.lower())>=0):
|
|
r.append( {
|
|
"link": request.app + "/verkaeufer/" + v.id,
|
|
"text": "Verkäufer: %s, %s" % (v.lastname,v.firstname)
|
|
})
|
|
break
|
|
|
|
request.results = r
|
|
|
|
Templates.search_html(request,self)
|
|
|
|
search = WebCallable(method=_search)
|
|
|
|
def svgqrcode(self,c):
|
|
qr = qrcode.make(c, image_factory=qrcode.image.svg.SvgPathImage, box_size=8)
|
|
b = io.BytesIO()
|
|
qr.save(b)
|
|
return str(b.getvalue(),"utf-8").split("\n")[1]
|
|
|
|
def _qrcode(self,request,o=None):
|
|
img = qrcode.make(request.getForm()["c"].value())
|
|
img.save( request.getBinaryContentFile(), format="png" )
|
|
request.setResponseHeader("Content-Type","image/png")
|
|
qrcode = WebCallable(method=_qrcode)
|
|
|
|
def _verkaufen(self,request,o=None):
|
|
v = Verkauf()
|
|
setattr(self.verkauf, v._persistence_id(), v)
|
|
request.redirect(request.self(-1)+"/verkauf/"+v._persistence_id())
|
|
verkaufen = WebCallable(method=_verkaufen)
|
|
|
|
hserver.api.KleinerBasar = KleinerBasar
|