Ejemplo n.º 1
0
 def _get_login(self):
     sql = "SELECT * FROM cor_seg_users"
     if self.login and self.pswd:
         sql += " WHERE "
         sql = self.cursor.mogrify(sql + " login = %s and pswd = %s", (
             self.login,
             self.pswd,
         ))
     print sql
     self.cursor.execute(sql)
     res = copyListDicts(self.cursor.fetchall())
     ret = {}
     """
     siempre es conveniente retornar la respuesta como un elemento del diccionario,
     esto es en caso de que se auiera agregar informacion adicional como un paginador
     informacion de sesion, paginadores, etc
     """
     if res:
         ret.update({'login': res, 'status': {'id': 'OK', 'message': ''}})
     else:
         ret.update({
             'login': [],
             'status': {
                 'id': 'ERROR',
                 'message': 'Nombre de usuario y/o clave incorrecto'
             }
         })
     return ret
Ejemplo n.º 2
0
 def _get_products(self, product_ids = None):
     """
     Este metodo retorna una lista de productos segun el valor de product_ids
     no es necesartio hacerlo siempre de esta manera, pero la idea es ilustrar 
     que se pueden ejecutar metodos externos al get o a cualquier otro
     de los metodos rest
     """
     if product_ids:
         self.cursor.execute("SELECT * FROM products WHERE id IN (%s)", (product_ids, ))
     else:
         self.cursor.execute("SELECT * FROM products")
     res = copyListDicts( self.cursor.fetchall())
     ret = {}
     
     """
     Como lo indica la convencion REST las referencias a otros objetos debe ser enviada
     como una propiedad, aunque en este caso es una referencia al mismo objeto, sin embargo
     es lo recomendado para no verse en la oblicacion de construirlo del lado del cliente.
     La propiedad self.request.host se usa para obtener la url a la que se realizo la peticion
     en caso de que exista un proxy o cualquier intermedio
     """
     for r in res:
         r.update({'ref' : 'http://%s/products/%s'%(self.request.host, r.get('id'))})
     ret.update({'products' : res,
                 'status' : {'id' : 'OK', 'message' : ''}
                 })
     return  ret
Ejemplo n.º 3
0
 def _get_products(self, product_ids=None):
     """
     Este metodo retorna una lista de productos segun el valor de product_ids
     no es necesartio hacerlo siempre de esta manera, pero la idea es ilustrar 
     que se pueden ejecutar metodos externos al get o a cualquier otro
     de los metodos rest
     """
     if product_ids:
         self.cursor.execute(
             "SELECT cor_modulo_sec, cor_modulo_id, cor_modulo_desc FROM cor_seg_modulo WHERE cor_modulo_id IN ('SEGURIDAD')",
             (product_ids, ))
     else:
         self.cursor.execute(
             "SELECT cor_modulo_sec, cor_modulo_id, cor_modulo_desc FROM cor_seg_modulo"
         )
     res = copyListDicts(self.cursor.fetchall())
     ret = {}
     """
     Como lo indica la convencion REST las referencias a otros objetos debe ser enviada
     como una propiedad, aunque en este caso es una referencia al mismo objeto, sin embargo
     es lo recomendado para no verse en la oblicacion de construirlo del lado del cliente.
     La propiedad self.request.host se usa para obtener la url a la que se realizo la peticion
     en caso de que exista un proxy o cualquier intermedio
     """
     for r in res:
         r.update({
             'ref':
             'http://%s/products/%s' % (self.request.host, r.get('id'))
         })
     ret.update({'products': res})
     return ret
Ejemplo n.º 4
0
 def _get_clients(self, client_ids = None):
     if client_ids:
         self.cursor.execute("SELECT * FROM clients WHERE id IN (%s) LIMIT 5", (client_ids, ))
     else:
         self.cursor.execute("SELECT * FROM clients LIMIT 5")
     res = copyListDicts( self.cursor.fetchall())
     ret = {}
     for r in res:
         r.update({'ref' : 'http://%s/clients/%s'%(self.request.host, r.get('id'))})
     ret.update({'clients':res, 'status' : {'id' : 'OK', 'message' : ''}})
     return  ret
Ejemplo n.º 5
0
 def _detail_sales(self, sale_id):
     self.cursor.execute("""SELECT sales_lines.*, products.name product_name, products.price price 
                             FROM sales_lines JOIN products 
                             ON sales_lines.product_id = products.id 
                             WHERE sale_id = %s""", (sale_id, ))
     res = copyListDicts( self.cursor.fetchall())
     ret = {}
     for r in res:
         r.update({'product_id_ref' : 'http://%s/products/%s'%(self.request.host, r.get('product_id'))})
     ret.update({'detail':res, 'status' : {'id' : 'OK', 'message' : ''}})
     return  ret
Ejemplo n.º 6
0
 def query(self, table, ids = None, limit=None, offset=None):
     conn = self.generate_conn()
     cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) 
     sql = "SELECT * FROM %s "%(table)
     if ids:
         sql = sql + "WHERE id IN ("+", ".join(["%s"]*len(ids))+")"
         cur.execute(sql, ids)
     else:
         cur.execute(sql)
     res = copyListDicts(cur.fetchall())
     return res
Ejemplo n.º 7
0
 def list_databases(self):
     sql = '''SELECT d.datname as "name",
                 u.usename as "owner",
                 pg_catalog.pg_encoding_to_char(d.encoding) as "encoding"
                 FROM pg_catalog.pg_database d
                 LEFT JOIN pg_catalog.pg_user u ON d.datdba = u.usesysid
                 ORDER BY 1;'''
     conn = self.generate_conn({'database':'postgres'})
     cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
     cur.execute(sql)
     res = copyListDicts(cur)
     conn.close()
     return res
Ejemplo n.º 8
0
 def _get_sales(self):
     self._build_query()
     self.cursor.execute(self.sql)
     res = copyListDicts(self.cursor.fetchall())
     ret = {}
     for r in res:
         r.update({'client_id_ref' : 'http://%s/clients/%s'%(self.request.host, r.get('client_id'))})
         r.update({'detail_ref' : 'http://%s/detail/%s'%(self.request.host, r.get('id'))})
     """
     siempre es conveniente retornar la respuesta como un elemento del diccionario,
     esto es en caso de que se auiera agregar informacion adicional como un paginador
     informacion de sesion, paginadores, etc
     """
     ret.update({'sales':res, 'status' : {'id' : 'OK', 'message' : ''}})
     return  ret
Ejemplo n.º 9
0
 def _get_callback(self):
     field_id = self.get_argument('id', False)
     try:
         if field_id:
             self.cursor.execute("SELECT code, id, name, price, quantity FROM products WHERE id = %s", (field_id, ))
         else:
             self.cursor.execute("SELECT code, id, name, price, quantity FROM products")
         res = copyListDicts( self.cursor.fetchall() )
         for r in res:
             r.update({'ref' : 'http://%s/products?id=%s'%(self.request.host, r.get('id'))})
         res = {'products':res, 'status':{'id' : 'OK', 'message' : ''}}
     except Exception as e:
         res = {'status':{'id' : 'ERROR', 'message' : 'Hubo un error, no se pudo realizar la consulta'}}
         gen_log.error("Error consultando", exc_info=True)
     self._send_response(res)
Ejemplo n.º 10
0
 def _get_clients(self, client_ids=None):
     if client_ids:
         self.cursor.execute("SELECT * FROM clients WHERE id IN (%s)",
                             (client_ids, ))
     else:
         self.cursor.execute("SELECT * FROM clients")
     res = copyListDicts(self.cursor.fetchall())
     ret = {}
     for r in res:
         r.update({
             'ref':
             'http://%s/clients/%s' % (self.request.host, r.get('id'))
         })
     ret.update({'clients': res})
     return ret
Ejemplo n.º 11
0
 def _detail_sales(self, sale_id):
     self.cursor.execute(
         """SELECT sales_lines.*, products.name product_name, products.price price 
                             FROM sales_lines JOIN products 
                             ON sales_lines.product_id = products.id 
                             WHERE sale_id = %s""", (sale_id, ))
     res = copyListDicts(self.cursor.fetchall())
     ret = {}
     for r in res:
         r.update({
             'product_id_ref':
             'http://%s/products/%s' %
             (self.request.host, r.get('product_id'))
         })
     ret.update({'detail': res})
     return ret
Ejemplo n.º 12
0
 def _get_login(self):
     sql = "SELECT login, name, priv_admin, active FROM cor_seg_users"
     if self.login and self.pswd:
         sql += " WHERE "
         sql = self.cursor.mogrify(sql + " login = %s and pswd = %s", (self.login, self.pswd,))
     print sql
     self.cursor.execute(sql)
     res = copyListDicts( self.cursor.fetchall())
     ret = {}
     """
     siempre es conveniente retornar la respuesta como un elemento del diccionario,
     esto es en caso de que se auiera agregar informacion adicional como un paginador
     informacion de sesion, paginadores, etc
     """
     if res:	
         ret.update({'login':res, 'status':{'id':'OK', 'message':''}})
     else:
         ret.update({'login':[], 'status':{'id':'ERROR', 'message':'Nombre de usuario y/o clave incorrecto'}})
     return  ret
Ejemplo n.º 13
0
 def get(self, param):
     res = {}
     if param:
         self.cursor.execute("SELECT * FROM products WHERE id = %s", (param,))
         res = copyListDicts(self.cursor.fetchall())
     self.render("form.html", res=res and res[0] or {})
Ejemplo n.º 14
0
 def query_sync(self, table, limit=None, offset=None):
     conn = self.generate_conn()
     cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor) 
     sql = """SELECT id, write_date FROM %s """%(table)
     cur.execute(sql)
     return copyListDicts(cur.fetchall())