hserver-fahrradboerse/hServer/packages/derkleinebasar/basar.py

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