7b2cdb2a37cb4fec158c921c523a931473c51d37
[burette/pos_membership.git] / controllers / main.py
1 # -*- coding: utf-8 -*-
2 import os
3 import openerp
4
5 from openerp.addons.web.controllers.main import manifest_list, module_boot, html_template
6 from openerp.addons.point_of_sale.controllers.main import PointOfSaleController
7
8 class PointOfSaleController(PointOfSaleController):
9
10 @openerp.addons.web.http.httprequest
11 def app(self, req, s_action=None, **kw):
12 js = "\n ".join('<script type="text/javascript" src="%s"></script>' % i for i in manifest_list(req, None, 'js'))
13 css = "\n ".join('<link rel="stylesheet" href="%s">' % i for i in manifest_list(req, None, 'css'))
14
15 cookie = req.httprequest.cookies.get("instance0|session_id")
16 session_id = cookie.replace("%22","")
17 template = html_template.replace('<html','<html manifest="/pos/manifest?session_id=%s"'%session_id)
18 r = template % {
19 'js': js,
20 'css': css,
21 'modules': simplejson.dumps(module_boot(req)),
22 'init': 'var wc = new s.web.WebClient();wc.appendTo($(document.body));'
23 }
24 print ("DEV: [pos_membership] [controllers] [main] [app] return=%s" % str(r))
25 return r
26
27 @openerp.addons.web.http.httprequest
28 def manifest(self, req, **kwargs):
29 """ This generates a HTML5 cache manifest files that preloads the categories and products thumbnails
30 and other ressources necessary for the point of sale to work offline """
31 ml = ["CACHE MANIFEST"]
32
33 # loading all the images in the static/src/img/* directories
34 def load_css_img(srcdir,dstdir):
35 for f in os.listdir(srcdir):
36 path = os.path.join(srcdir,f)
37 dstpath = os.path.join(dstdir,f)
38 if os.path.isdir(path) :
39 load_css_img(path,dstpath)
40 elif f.endswith(('.png','.PNG','.jpg','.JPG','.jpeg','.JPEG','.gif','.GIF')):
41 ml.append(dstpath)
42
43 imgdir = openerp.modules.get_module_resource('point_of_sale','static/src/img');
44 load_css_img(imgdir,'/point_of_sale/static/src/img')
45
46 products = req.session.model('product.product')
47 for p in products.search_read([('pos_categ_id','!=',False)], ['name']):
48 product_id = p['id']
49 url = "/web/binary/image?session_id=%s&model=product.product&field=image&id=%s" % (req.session_id, product_id)
50 ml.append(url)
51
52 categories = req.session.model('pos.category')
53 for c in categories.search_read([],['name']):
54 category_id = c['id']
55 url = "/web/binary/image?session_id=%s&model=pos.category&field=image&id=%s" % (req.session_id, category_id)
56 ml.append(url)
57
58 partners = req.session.model('res.partner')
59 for c in partners.search_read([],['name']):
60 partner_id = c['id']
61 url = "/web/binary/image?session_id=%s&model=res.partner&field=image&id=%s" % (req.session_id, partner_id)
62 ml.append(url)
63
64 ml += ["NETWORK:","*"]
65 m = "\n".join(ml)
66
67 print ("DEV: [pos_membership] [controllers] [main] [manifest] return=%s" % m)
68 return m
69
70 PointOfSaleController()