def update(self, username, xml_data):
     from . import Cargo, Cuerpo
 
     log('Actualizando datos de usuario: %s' % (unicode(self.user)))
     
     self.user.first_name = get_xml_node_contents(
         xml_data, 'nombre')
     self.user.last_name = get_xml_node_contents(
         xml_data, 'apellidoPaterno')
     self.username = username
         
     self.user.save()
     log("Updated user full name: '%s'" % self.user.get_full_name())
         
     self.webservice_id = int(get_xml_node_contents(
         xml_data, 'id'))
         
     cuerpo_id = get_xml_node_attribute(xml_data, 'cuerpo', 'id')
     self.cuerpo = Cuerpo.objects.get(webservice_id=cuerpo_id)
     
     self.save()        
     
     url = '/services/usuario/%d/cargos/' % self.webservice_id
     xml_data = request_webservice(url)
     
     self.cargos.clear()
     
     for cargo_element in get_xml_node_children(xml_data, 'cargo'):
         webservice_id = int(get_xml_node_contents(cargo_element, 'id'))
         nombre = get_xml_node_contents(cargo_element, 'nombre')
         
         try:    
             cargo = Cargo.objects.get(webservice_id=webservice_id)
         except Cargo.DoesNotExist:
             cargo = Cargo()
             cargo.webservice_id = webservice_id
             
         cargo.nombre = nombre
         cargo.save()
         
         self.cargos.add(cargo)
         
     self.save()
Ejemplo n.º 2
0
 def update_from_webservice(self):
     log('Actualizando regiones desde Webservice')
     regions_raw_data = request_webservice('/services/region/')
     raw_regions_list = regions_raw_data.childNodes
     
     for raw_region in raw_regions_list:
         region_ws_id = int(get_xml_node_contents(raw_region, 'id'))
         region_numero = int(get_xml_node_contents(raw_region, 'numero'))
         region_nombre = get_xml_node_contents(raw_region, 'nombre')
         log('%d %d %s' % (region_ws_id, region_numero, region_nombre))
         
         try:
             region = Region.objects.get(webservice_id=region_ws_id)
         except Region.DoesNotExist:
             region = Region()
             region.webservice_id = region_ws_id
         region.numero = region_numero
         region.nombre = region_nombre
         region.save()
         log('Region guardada')
Ejemplo n.º 3
0
    def update_from_webservice(cls):
        from . import Cuerpo

        companias_raw_data = request_webservice('/services/compania/')
        raw_companias_list = companias_raw_data.childNodes
        
        for raw_compania in raw_companias_list:
            compania_webservice_id = int(get_xml_node_contents(raw_compania, 'id'))
            compania_cuerpo_id = int(get_xml_node_attribute(raw_compania, 'cuerpo', 'id'))
            compania_numero = int(get_xml_node_contents(raw_compania, 'numero'))
            
            try:
                compania = Compania.objects.get(webservice_id=compania_webservice_id)
            except Compania.DoesNotExist:
                compania = Compania()
                compania.webservice_id = compania_webservice_id

            compania.cuerpo = Cuerpo.objects.get(webservice_id=compania_cuerpo_id)
            compania.numero = compania_numero

            compania.save()
Ejemplo n.º 4
0
    def update_from_webservice(self):
        from . import Comuna

        cuerpos_raw_data = request_webservice('/services/cuerpo/')
        raw_cuerpos_list = cuerpos_raw_data.childNodes
        
        for raw_cuerpo in raw_cuerpos_list:
            cuerpo_webservice_id = int(get_xml_node_contents(raw_cuerpo, 'id'))
            cuerpo_comuna_id = int(get_xml_node_attribute(raw_cuerpo, 'comuna', 'id'))
            cuerpo_nombre = get_xml_node_contents(raw_cuerpo, 'nombre')
            
            try:
                cuerpo = Cuerpo.objects.get(webservice_id=cuerpo_webservice_id)
            except Cuerpo.DoesNotExist:
                cuerpo = Cuerpo()
                cuerpo.webservice_id = cuerpo_webservice_id

            cuerpo.comuna = Comuna.objects.get(webservice_id=cuerpo_comuna_id)
            cuerpo.nombre = cuerpo_nombre

            cuerpo.save()
Ejemplo n.º 5
0
    def update_from_webservice(self):
        log('Actualizando comunas desde Webservice')
        from . import Provincia

        comunas_raw_data = request_webservice('/services/comuna/')
        raw_comunas_list = comunas_raw_data.childNodes
        
        for raw_comuna in raw_comunas_list:
            comuna_webservice_id = int(get_xml_node_contents(raw_comuna, 'id'))
            comuna_provincia_id = int(get_xml_node_attribute(raw_comuna, 'provincia', 'id'))
            comuna_nombre = get_xml_node_contents(raw_comuna, 'nombre')
            log('%d %d %s' % (comuna_webservice_id, comuna_provincia_id, comuna_nombre))
            
            try:
                comuna = Comuna.objects.get(webservice_id=comuna_webservice_id)
            except Comuna.DoesNotExist:
                comuna = Comuna()
                comuna.webservice_id = comuna_webservice_id

            comuna.provincia = Provincia.objects.get(webservice_id=comuna_provincia_id)
            comuna.nombre = comuna_nombre

            comuna.save()
            log('Comuna guardada')
Ejemplo n.º 6
0
    def update_from_webservice(self):
        log('Actualizando provincias desde Webservice')
        from . import Region

        provincias_raw_data = request_webservice('/services/provincia/')
        raw_provincias_list = provincias_raw_data.childNodes
        
        for raw_provincia in raw_provincias_list:
            provincia_webservice_id = int(get_xml_node_contents(raw_provincia, 'id'))
            provincia_region_id = int(get_xml_node_attribute(raw_provincia, 'region', 'id'))
            provincia_nombre = get_xml_node_contents(raw_provincia, 'nombre')
            log('%d %d %s' % (provincia_webservice_id, provincia_region_id, provincia_nombre))
            
            try:
                provincia = Provincia.objects.get(webservice_id=provincia_webservice_id)
            except Provincia.DoesNotExist:
                provincia = Provincia()
                provincia.webservice_id = provincia_webservice_id

            provincia.region = Region.objects.get(webservice_id=provincia_region_id)
            provincia.nombre = provincia_nombre

            provincia.save()
            log('Provincia guardada')
    def authenticate(self, username=None, password=None):
        
        log("Login in user '%s' with password '%s'" % 
            (username, password))

        request_body = u'username=%s&password=%s' % (username, password)

        xml_data = request_webservice('/services/login/', request_body)
        user_id = int(get_xml_node_contents(xml_data, 
            'id'))
        if not user_id:
            log("Username / password of the user do not match")
            return None

        # Maximum username length in django is 30
        # We assume these are enough characters to identify a user

        if len(username) > 30:
            log("Username haas more than 30 characters, triming \
                for Django auth system support")
        django_username = username[:30]

        try:
            log("Checking if the user has logged in before")
            user = UserProfile.objects.get(webservice_id=user_id).user
            log("The user has logged in before, using existing entry")
        except UserProfile.DoesNotExist:

            # The username is an email
            # password as None means that the default auth system will never
            # authenticate this user and will rely on ours (which is what we want)
            
            log("The user has never logged in before, creating \
                proxy user inside the system")
            user = User.objects.create_user(django_username, 
                email=username)
        
        user.get_profile().update(django_username, xml_data)
        
        return user