# -*- encoding: utf-8 -*- from rest_framework import serializers from proveedores.models import * from django.contrib.auth.models import User from django.conf import settings import requests class CamarasSerializers(serializers.ModelSerializer): nombre = serializers.SerializerMethodField('get_data_grupo') def get_data_grupo(self, obj): if obj.nombre: valor = obj.nombre else: valor = str("No cuenta con una camara") return valor class Meta: model = Camaras fields = ('id','nombre','descripcion','clave') class EstatusSerializers(serializers.ModelSerializer): class Meta: model = Estatus class TelefonoSerializer(serializers.ModelSerializer): class Meta: model = Telefonos class RubrosSerializers(serializers.ModelSerializer): class Meta: model = Rubros fields = ('id','nombre','descripcion','clave') class SociosSerializers(serializers.ModelSerializer): class Meta: model = Socios class ProveedoresSerializerdata(serializers.ModelSerializer): status = serializers.SerializerMethodField('get_estatus') status_color = serializers.SerializerMethodField('get_estatus_color') status_descripcion = serializers.SerializerMethodField('get_descripcion') def get_estatus(self,obj): return obj.status.id def get_descripcion(self,obj): return obj.status.descripcion def get_estatus_color(self,obj): return obj.status.color class Meta: model = Proveedores exclude = ('tipo_persona','tipo_representante','tipo_domicilio','secretario_rm','rubros','representante_legal','pul_direccion_id','numero_protocolo','numero_imms','numero_finanzas','nombre_camara','correo','fecha_inicio') class ProveedoresSerializer(serializers.ModelSerializer): """ Serializados para el detallado del proveedor para la pagina de internet """ pul_direccion_id = serializers.SerializerMethodField('get_data_direccion') sucursales = serializers.SerializerMethodField('get_data_sucursales') socios = serializers.SerializerMethodField('get_data_socios') telefonos = serializers.SerializerMethodField('get_data_telefonos') status = serializers.SerializerMethodField('get_data_status') rubros = RubrosSerializers(many=True) tipo_domicilio = serializers.SerializerMethodField('get_data_tipo_domicilio') tipo_persona = serializers.SerializerMethodField('get_data_tipo_persona') nombre_camara = CamarasSerializers() def get_data_status(self,obj): est = obj.status.descripcion return est def get_data_telefonos(self,obj): url = '%sapi/telefonos/?proveedor_id=%d' %(settings.PUD,obj.id) r = requests.get(url) return r.json() if not r.status_code == 404 else "Error 404: Telefonos no encontrados" def get_data_sucursales(self,obj): url = '%sapi/sucursales/?id_proveedor=%d' %(settings.PUD,obj.id) r = requests.get(url) return r.json() if not r.status_code == 404 else "Error 404: sucursale no encontrada" def get_data_direccion(self, obj): headers = {'Authorization': settings.PUL_TOKEN} url = '%sapi/direccion/%d' % (settings.PUL, obj.pul_direccion_id) r = requests.get(url, headers=headers) return r.json() if not r.status_code == 404 else "Error 404: Direccion no encontrada" def get_data_socios(self,obj): url = '%sapi/socios/?proveedor_id=%d' %(settings.PUD,obj.id) r = requests.get(url) return r.json() if not r.status_code == 404 else "Error 404: Socios no encontrados" def get_data_tipo_domicilio(self, obj): texto = obj.tipo_domicilio valor = None if texto == 1: valor = "Local" else: valor = "Foraneo" return valor def get_data_tipo_persona(self, obj): texto = obj.tipo_persona valor = None if texto == 1: valor = "Fisica" else: valor = "Moral" return valor class Meta: model = Proveedores exclude = ('fecha_actualizacion','secretario_rm','tipo_representante','fecha_inicia_recepcion','fecha_termina_recepcion') class ProveedoresrapidosSerializer(serializers.ModelSerializer): class Meta: model = Proveedores fields = ('id','razon_social','rfc') class ProveedoresWSOSerializer(serializers.ModelSerializer): class Meta: model = Proveedores fields = ('id','razon_social','razon_comercial','rfc') class UserSerializers(serializers.ModelSerializer): tipo_usuario = serializers.SerializerMethodField('get_tipo_usuario2') def get_tipo_usuario2(self, obj): texto = None try: texto = str(obj.get_tipo_usuario_display()) except Exception as ex: texto = texto return texto class Meta: model = User fields = ['id','nombre','apepat','apemat','email','username','tipo_usuario'] class SociosSerializer(serializers.ModelSerializer): proveedor = ProveedoresSerializer() proveedor_completo = serializers.SerializerMethodField('get_proveedor_completo') def get_proveedor_completo(self,obj): p =obj.proveedor return u'%d - %s' %(p.id,p.razon_social) class Meta: model = Socios class SucursalesSerializers(serializers.ModelSerializer): pul_direccion_id = serializers.SerializerMethodField('get_data_direccion') def get_data_direccion(self, obj): headers = {'Authorization': settings.PUL_TOKEN} url = '%sapi/direccion/%d' % (settings.PUL, obj.pul_direccion_id) r = requests.get(url, headers=headers) return r.json() if not r.status_code == 404 else "Error 404: Direccion no encontrada" class Meta: model = Sucursal