Beispiel #1
0
import collections

from django import template
from django.template import Node
from django.conf import settings
from django.utils.translation import to_locale, get_language
from django.utils.safestring import SafeText

from YBWEB.ctxJSON import DICTJSON, templateCTX
from YBUTILS import mylogging as log
from YBUTILS.viewREST import viewsets

register = template.Library()
milog = log.getLogger("templatetag.YBtools")


# -------------------------------------GETLOCALE---------------------------------
@register.simple_tag(takes_context=False)
def locale():
    return to_locale(get_language())


# ------------------------------------- UTILIDADES ------------------------------
def _c2Ctx(context, scadena):
    """
    Obtiene objeto de contexto a partir de cadena XXX.DDD.DDDDD
    """
    # Realmente se ha pasado ya objeto de contexto
    if isinstance(scadena, dict):
        return scadena
    value = context
Beispiel #2
0
from django import template
from django.template import Node
from YBWEB.ctxJSON import DICTJSON, templateCTX
from YBUTILS import mylogging as log
from django.conf import settings
from YBUTILS.viewREST import viewsets

from django.utils.safestring import SafeText
import collections

register = template.Library()
milog = log.getLogger("templatetag.YBtools")
# -------------------------------------GETLOCALE---------------------------------
from django.utils.translation import to_locale, get_language


@register.simple_tag(takes_context=False)
def locale():
    return to_locale(get_language())


# ------------------------------------- UTILIDADES ------------------------------
def _c2Ctx(context, scadena):
    """
    Obtiene objeto de contexto a partir de cadena XXX.DDD.DDDDD
    """
    # Realmente se ha pasado ya objeto de contexto
    if isinstance(scadena, dict):
        return scadena
    value = context
    if scadena == "":
Beispiel #3
0
"""
   Template tags para el tratamiento de JSX y JS dentro de los templates
   Se hace inyeccion de modulos comunes
"""
from django import template
from YBUTILS import mylogging as log
from YBUTILS import tools

register = template.Library()

milog = log.getLogger("templatetag.includeDB")


# ------------------PRIVADAS------------------------------------------
def _dameLista(aplic, modelname, cod, desc, order=None, filter=None):
    # Obtenemos modelo
    mimodel = tools.damemodelo(aplic, modelname)
    # Obtenemosquery
    if filter:
        miquery = mimodel.objects.all().extra(where=filter)
    else:
        miquery = mimodel.objects.all()

    if order:
        miquery = miquery.order_by(order)
    return miquery


# ------------------TEMPLATE TAGS-------------------------------------
@register.simple_tag
def listaJSON(aplic, modelname, cod, desc, order=None, filter=None):
Beispiel #4
0
""" Funciones base para utilizar objetos JSON
    y Ordered dict
    Estos seran los objetos por defecto para el tratamiento de layouts...

"""
import collections
import json
import django.utils.functional
from django.conf import settings
from YBUTILS import  mylogging as log
from rest_framework.utils import encoders

milog=log.getLogger("")


def fromJSON(sJSON):
    return json.loads(sJSON, object_pairs_hook=collections.OrderedDict)

#COnvierte a JSON y resuelve callables para que no se vuelvan a ejecutar(sobretodo para traduccion , URLs...)
def toJSON(obj,optimizar=True):
    try:
        if optimizar:            
            return json.dumps(obj,cls=miEncoder,indent=(4 if settings.DEBUG else 0))
        else:
            return json.dumps(obj)
    except Exception as e:
        log.error("Error al pasar a JSON")
        raise

            
        
Beispiel #5
0
"""
   Template tags para el tratamiento de JSX y JS dentro de los templates
   Se hace inyeccion de modulos comunes
"""
from django import template
from react import jsx
from YBUTILS import  mylogging as log
from YBUTILS import tools

register = template.Library()

milog=log.getLogger("templatetag.includeDB")

#------------------PRIVADAS------------------------------------------
def _dameLista(aplic,modelname,cod,desc,order=None,filter=None):
    #Obtenemos modelo
    mimodel=tools.damemodelo(aplic,modelname)
    #Obtenemosquery
    if filter:
        miquery=mimodel.objects.all().extra(where=filter)
    else:
        miquery=mimodel.objects.all()

    if order:
        miquery=miquery.order_by(order)
    return miquery
    
#------------------TEMPLATE TAGS-------------------------------------

@register.simple_tag
def listaJSON(aplic,modelname,cod,desc,order=None,filter=None):
Beispiel #6
0
# -*- coding: utf-8 -*-
""" Funciones base para utilizar objetos JSON
    y Ordered dict
    Estos seran los objetos por defecto para el tratamiento de layouts...

"""
import collections
import json

import django.utils.functional
from django.conf import settings
from rest_framework.utils import encoders

from YBUTILS import mylogging as log

milog = log.getLogger("")


def fromJSON(sJSON):
    return json.loads(sJSON, object_pairs_hook=collections.OrderedDict)


# Convierte a JSON y resuelve callables para que no se vuelvan a ejecutar(sobretodo para traduccion , URLs...)
def toJSON(obj, optimizar=True):
    try:
        if optimizar:
            return json.dumps(obj,
                              cls=miEncoder,
                              indent=(4 if settings.DEBUG else 0))
        else:
            return json.dumps(obj)
Beispiel #7
0
"""Libreria de funciones para el tratamiento especial en la carga de templates
 y el uso del contexto
"""

from django import shortcuts
from . import DICTJSON 
from YBUTILS import  mylogging as log
from django.template import loader, RequestContext
from django.conf import settings


milog=log.getLogger("YBWEB.templateCTX")

#--------------------CONSTANTES------------------------------------
#YB_DIR_DEFECTO_TEMPLATES='YBWEB'
#YB_DIR_COMPONENTS='componentes'
directorio_base=settings.YB_DIR_DEFECTO_TEMPLATES +"/"+"basechain"
directorio_componentes=settings.YB_DIR_COMPONENTS
directorio_base_componentes=settings.YB_DIR_DEFECTO_TEMPLATES +"/"+directorio_componentes
posfijoctx="_context"


#--------------------GENERALES------------------------------------
def dametipo(nombretemplate):
    try:
        return nombretemplate.split('_')[0]
    except:
        return 'otro'

def controlTerminahtml(nombre):
    if nombre.endswith(".html"):
Beispiel #8
0
"""

from rest_framework.views import exception_handler
from rest_framework.exceptions import APIException,ValidationError
from rest_framework import status
from django.utils.translation import ugettext_lazy as _
from django.conf import  settings
from . import viewsets 
from rest_framework.compat import set_rollback
from rest_framework.response import Response
from YBUTILS import  mylogging as log
from django.utils import six
from django.utils.encoding import force_text


milog=log.getLogger("VIEWREST.error")



def YB_exception_handler(exc, context):
    """ Funcion de tratamiento de error en peticiones por defecto 
        El contecto incluye los siguientes:
             'view': self,
            'args': getattr(self, 'args', ()),
            'kwargs': getattr(self, 'kwargs', {}),
            'request': getattr(self, 'request', None)            
    """
    try:
        milog.info("Excepcion capturada de alto nivel: %s",exc.__str__())
        if settings.DEBUG:
            milog.exception(exc)
Beispiel #9
0
from .FLAux import FLtransaccional,FLAux
from copy import deepcopy
from django.forms.models import model_to_dict
from YBUTILS import  mylogging as log
from .FLSqlQuery import FLSqlQuery

milog=log.getLogger("LEGACY.FLSqlCursor")


class FLSqlCursor(FLtransaccional):
	"""
	Clase Legacy que implementa cursor Similar al usable dentro de QT
	"""
	Browse = 1
	Edit = 2
	Del = 3
	Insert = 4  

	#Metodos para la gestion de modelos (Incluye el registro de funciones de evento
	
	@classmethod
	def _obtenermodelo(cls,stabla):
		return FLAux._obtenermodelo(stabla)

	@classmethod
	def registrarmodelo(cls,stabla,model,bufferChanged=None,beforeCommit=None,afterCommit=None):
		FLAux.registrarmodelo(stabla,model,bufferChanged,beforeCommit,afterCommit)

	#Inicializacion
	def __init__(self,stabla=None):                
		self._modo = 1 #Browse
Beispiel #10
0
from .clasesBase import BaseModulos,BaseObjetos,miDatetime
from .UtilMIMIX import MCinheritanceUnderscore
from .FLSqlQuery import FLSqlQuery
from .FLSqlcursor import FLSqlCursor
from .ManagerDB import FLManager
from .AQSql import AQSql
from .FLUtil import FLUtil
from . import Factorias
from YBUTILS import ObjDictJSON
from YBUTILS import mylogging
import datetime

MC=MCinheritanceUnderscore
milog=mylogging.getLogger("LEGACY")
#LISTAS
AQSql=AQSql
AQSqlQuery=FLSqlQuery
Array=ObjDictJSON.milista
FormDBWidget=BaseModulos
FLSqlCursor=FLSqlCursor
FLSqlQuery=FLSqlQuery
FLManager=FLManager
FLUtil=FLUtil    
Date=miDatetime.today
Object=ObjDictJSON.ObjDictJSON
QDialog=object 
QVBoxLayout=object 
QLabel=object
FactoriaModulos=Factorias.FactoriaModulos
objetoBase=BaseObjetos
Beispiel #11
0
""" 
    Utilidades para el enrutamiento de acceso a multiples BBDD 
"""
from django.db import connection,connections
from django.conf import settings
from . import globalValues
from YBUTILS import  mylogging as log


milog=log.getLogger("YBUTILS.DbRouter")

#----------------------------- VARIABLES GLOBALES

_CABECERA_YB_DB='HTTP_X_YB_DB'


#-----------------------------MIDDLEWARE 
class headerDbRouter(object):
    """ 
        Permite establecer la BBDD a utilizar mediante la cabecera X-YB-DB
        Si no existe sigue nornmal
    """

    def process_request(self, request):
        globalValues.setValue(_CABECERA_YB_DB,'default')
        try:
            condef=request.META[_CABECERA_YB_DB]
            if condef:
                milog.debug("Cabecera de BBDD detectada %s",condef )
                #Si no existe no se establece para que no falle
                if condef in settings.DATABASES:
Beispiel #12
0
from time import strptime
from datetime import date
from .FLSqlcursor import FLSqlCursor
from .FLAux import FLAux
from .FLSqlQuery import FLSqlQuery
from YBUTILS import  mylogging as log
from YBUTILS.DbRouter import  dameConexionDef


milog=log.getLogger("LEGACY.FLUtil")

class FLUtil:
#-------PROTECTED -----------------------------------------------
#Metodos para la gestion de modelos (Incluye el registro de funciones de evento
    
#-------PUBLIC -----------------------------------------------

    @classmethod
    def roundFieldValue(cls,numero, stabla, campo):
        posiciones=200
        decimales=100
        try:
            model=FLAux._obtenermodeloSimple(stabla)
            micampo=getattr(model,campo)
            posiciones=micampo.max_digits()
            decimales=micampo.decimal_places
        except:
            pass
        #A revisar para ver exactamente que tipo hay que devolver, esto devuelve float
        return round(numero,decimales)
            
Beispiel #13
0
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from django.db import connections
from django.conf import settings

from YBUTILS import mylogging as log

try:
    from threading import local
except ImportError:
    from django.utils._threading_local import local
from django.utils.deprecation import MiddlewareMixin

milog = log.getLogger("YBUTILS.DbRouter")

# ----------------------------- VARIABLES GLOBALES
_CABECERA_YB_DB = "HTTP_X_YB_DB"

# -----------------------------MIDDLEWARE
_thread_locals = local()


class ThreadLocalMiddleware(MiddlewareMixin):
    """ Simple middleware that adds the request object in thread local storage. """

    def process_request(self, request):
        _thread_locals.request = request
        settings.SESSION_COOKIE_NAME = "sessionid" + request.META["SERVER_PORT"]
Beispiel #14
0
"""
    Definicion de excepciones y tratamiento de errores comunes
"""
"""
Se capturaran todas y se devolvera un mensaje 400 si no mas especifico
El mensaje de vuelta tendra la estructura:
 tipo:
    1-Error Arquitectura/API REST
    2-Error de aplicacion
    3-Validacion
    4-Error excepcion capturada
 msg: Mensaje por defecto
 data:Otros datos relevantes
"""

milog = log.getLogger("VIEWREST.error")


def YB_error_handler(cherror, exc):
    print("_________________YBERRORHANDLER_________________")
    print(cherror)
    return "Error inesperado"


def YB_exception_handler(exc, context):
    # print("________________YBEXCEPTIONHANDLER________________")
    errorMsg = exc.__str__() or None
    try:
        milog.info("Excepcion capturada de alto nivel: %s", errorMsg)
        # if settings.DEBUG:
        #     milog.exception(exc)
Beispiel #15
0
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Libreria de funciones para el tratamiento especial en la carga de templates
 y el uso del contexto
"""
from django.template import loader
from django.template import RequestContext

from YBUTILS import mylogging as log
from YBWEB.ctxJSON import DICTJSON

milog = log.getLogger("YBWEB.templateCTX")

# --------------------CONSTANTES------------------------------------
# YB_DIR_DEFECTO_TEMPLATES='YBWEB'
# YB_DIR_COMPONENTS='componentes'
# directorio_base=settings.YB_DIR_DEFECTO_TEMPLATES +"/"+"basechain"
# directorio_componentes=settings.YB_DIR_COMPONENTS
# directorio_base_componentes=settings.YB_DIR_DEFECTO_TEMPLATES +"/"+directorio_componentes
# posfijoctx="_context"


# --------------------GENERALES------------------------------------
def dametipo(nombretemplate):
    try:
        return nombretemplate.split('_')[0]
    except Exception:
        return 'otro'


def controlTerminahtml(nombre):