Gogs 7 лет назад
Родитель
Сommit
de3475b6c3
6 измененных файлов с 44 добавлено и 11 удалено
  1. 2 1
      __openerp__.py
  2. 13 4
      controllers/main.py
  3. 11 1
      models/printer.py
  4. 6 2
      models/socket.py
  5. 8 0
      security/printers_group.xml
  6. 4 3
      views/print_engine_sockets.xml

+ 2 - 1
__openerp__.py

@@ -8,7 +8,8 @@
     'data': [
         'templates.xml',
         'views/print_engine_sockets.xml',
-        'views/print_engine_printers.xml'
+        'views/print_engine_printers.xml',
+        'security/printers_group.xml'
     ],
     'qweb': ['static/src/xml/*.xml'],
 }

+ 13 - 4
controllers/main.py

@@ -3,6 +3,7 @@ from openerp import http
 from openerp.http import request
 from werkzeug.wrappers import Response
 from werkzeug.datastructures import Headers
+from werkzeug.utils import redirect
 from gzip import GzipFile
 from StringIO import StringIO as IO
 import json
@@ -38,15 +39,23 @@ class PrintEngineController(http.Controller):
  
     '''
     '''
-    @http.route('/print_engine/update', auth='user', methods=['POST'], cors='*')
+    @http.route('/print_engine/update', auth='user', type='http', methods=['POST'], cors='*')
     def printers_update(self, **kw):
+        assert len(request.env.user.socket_ids) <= 1
+
         printer_obj = request.env['print.engine.printer']
-        printer_ids = printer_obj.search([])
 
-        assert len(printer_ids) == 0
+        for printer in request.env.user.socket_ids.printer_ids:
+            printer.unlink()
 
-        print(kw)
+        for printer_name in json.loads(kw.get('data'))['printers']:
+            printer_obj.create({
+                'name': printer_name,
+                'socket_id': request.env.user.socket_ids.id
+            })
 
+        return redirect('/web?id={}&view_type=form&model=print.engine.socket'.format(request.env.user.socket_ids.id))
+        
     '''
     '''
     def get_sockets(self):

+ 11 - 1
models/printer.py

@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-from openerp import models, fields
+from openerp import api, models, fields
 
 class PrintEnginePrinter(models.Model):
     _name = 'print.engine.printer'
@@ -9,3 +9,13 @@ class PrintEnginePrinter(models.Model):
     prints_success_count = fields.Integer(string='Impresiones con éxito', default=0)
     prints_failed_count = fields.Integer(string='Impresiones fallidas', default=0)
     socket_id = fields.Many2one(comodel_name='print.engine.socket')
+
+    @api.onchange('is_default')
+    def update_defaults(self):
+        printer_ids = self.search([('id', '!=', self._origin.id), ('socket_id.user_id', '=', self.env.user.id)])
+
+        for printer in printer_ids:
+            printer.write({
+                'is_default': False
+            })
+   

+ 6 - 2
models/socket.py

@@ -1,5 +1,5 @@
 # -*- coding: utf-8 -*-
-from openerp import models, fields
+from openerp import api, models, fields
 
 AVAILABLE_PROTOCOLS = [
     ('ws', 'ws (WebSocket)'),
@@ -11,6 +11,10 @@ AVAILABLE_PROTOCOLS = [
 class PrintEngineSocket(models.Model):
     _name = 'print.engine.socket'
 
+    @api.multi
+    def _default_user(self):
+        return self.env.user.id
+
     name = fields.Char(string='Nombre', size=35, required=True)
     protocol = fields.Selection(string='Protocolo', selection=AVAILABLE_PROTOCOLS, default='ws')
     host = fields.Char(string='Host', default='127.0.0.1', required=True)
@@ -18,5 +22,5 @@ class PrintEngineSocket(models.Model):
     path = fields.Char(string='Recurso', default='/')
     last_connection = fields.Datetime(string='Última conexión', readonly=True)
     active = fields.Boolean(string='Activo', default=True)
-    user_id = fields.Many2one(comodel_name='res.users')
+    user_id = fields.Many2one(comodel_name='res.users', default=_default_user)
     printer_ids = fields.One2many(comodel_name='print.engine.printer', inverse_name='socket_id')        

+ 8 - 0
security/printers_group.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="0">
+        <record id="print_engine.printers_group" model="res.groups">
+            <field name="name">Administrar preferencias de impresión</field>
+        </record>
+    </data>
+</openerp>

+ 4 - 3
views/print_engine_sockets.xml

@@ -25,7 +25,7 @@
                 <form string="Socket">
                     <header>
                         <button type="action" name="print_engine.ping_action" string="Probar conexión" />
-                        <button type="action" name="print_engine.discovery_printers_action" string="Detectar impresoras" />
+                        <button type="action" name="print_engine.discovery_printers_action" string="Actualizar impresoras" />
                     </header>
                     <sheet>
                         <h1>
@@ -36,11 +36,12 @@
                             <field name="host" />
                             <field name="port" />
                             <field name="path" />
+                            <field name="user_id" string="Usuario" groups="print_engine.printers_group" />
                         </group>
                     </sheet>
                     <notebook>
-                        <page string="Impresoras disponibles">
-
+                        <page string="Impresoras">
+                            <field name="printer_ids" />
                         </page>
                     </notebook>
                 </form>