예제 #1
0
    def execute(self, input_dto: UpdateVolunteerProfileInputDto) -> None:
        # TODO: Move this logic to an Imagen repository.
        avatar_id = None
        if input_dto.avatar_url:
            new_avatar = Imagen.objects.filter(url=input_dto.avatar_url)
            if new_avatar.exists():
                avatar_id = new_avatar[0].id
            else:
                new_image = Imagen(url=input_dto.avatar_url, isExternal=False)
                new_image.save()
                avatar_id = new_image.id

        # TODO: Move this logic to an User repository.
        input_user = User.objects.get(pk=input_dto.user_id)
        input_user.nombre = input_dto.first_name
        input_user.save()

        input_profile = VolunteerProfile(
            input_dto.user_id, avatar_id, input_dto.gender,
            input_dto.last_name,
            None if input_dto.birth_date == "" else input_dto.birth_date,
            input_dto.phone, input_dto.profession, input_dto.experience,
            input_dto.educational_level, input_dto.availability,
            None if input_dto.state_id == -1 else input_dto.state_id,
            input_dto.city,
            None if input_dto.modality_id == -1 else input_dto.modality_id,
            [self.interests_repo.get(i) for i in input_dto.interests],
            [self.skills_repo.get(s) for s in input_dto.skills])
        self.profiles_repo.save(input_profile)
        output_dto = UpdateProfileOutputDto(input_profile)

        self.presenter.present(output_dto)
예제 #2
0
    def execute(self, input_dto: UpdateOrganizationProfileInputDto) -> None:
        # TODO: Move this logic to an Imagen repository.
        avatar_id = None
        if input_dto.avatar_url:
            new_avatar = Imagen.objects.filter(url=input_dto.avatar_url)
            if new_avatar.exists():
                avatar_id = new_avatar[0].id
            else:
                new_image = Imagen(url=input_dto.avatar_url, isExternal=False)
                new_image.save()
                avatar_id = new_image.id

        location = None
        if input_dto.ubicacion:
            location = Ubicacion(**input_dto.ubicacion)
            location.save()

        input_profile = OrganizationProfile(
            input_dto.user_id, avatar_id, input_dto.descripcion,
            input_dto.cuit, input_dto.telefono,
            location.id if location else None,
            [self.rubros_repo.get(i) for i in input_dto.rubros])
        self.profiles_repo.save(input_profile)
        output_dto = UpdateProfileOutputDto(input_profile)

        self.presenter.present(output_dto)
예제 #3
0
    def update(self, instance, validated_data):
        avatar_data = None

        try:
            avatar_data = validated_data.pop('avatar')
        except KeyError:
            avatar_data = None

        instance.telefono = validated_data.get('telefono', instance.telefono)
        instance.apellido = validated_data.get('apellido', instance.apellido)
        instance.dni = validated_data.get('dni', instance.dni)
        instance.sexo = validated_data.get('sexo', instance.sexo)
        instance.gustos = validated_data.get('gustos', instance.gustos)
        instance.habilidades = validated_data.get('habilidades',
                                                  instance.habilidades)

        #TODO: Ver si hay que cambiar cuando se haga mejor manejo de imagenes
        if avatar_data != None:
            try:
                nuevaImagen = Imagen.objects.get(url=avatar_data["url"])
                instance.avatar = nuevaImagen
            except Exception:  # Imagen.DoesNotExist
                ## TODO: Sacar isExternal hardcodeado
                nuevaImagen = Imagen(**avatar_data, isExternal=False)
                nuevaImagen.save()
                instance.avatar = nuevaImagen
        instance.save()
        return instance
예제 #4
0
    def update(self, instance, validated_data):
        rubro_data = None
        avatar_data = None
        ubicacion_data = None

        try:
            rubro_data = validated_data.pop('rubro')
        except KeyError:
            # Repito asginar None porque python me hace poner algo en la excepcion
            rubro_data = None

        try:
            avatar_data = validated_data.pop('avatar')
        except KeyError:
            avatar_data = None

        try:
            ubicacion_data = validated_data.pop('ubicacion')
        except KeyError:
            ubicacion_data = None

        instance.telefono = validated_data.get('telefono', instance.telefono)
        instance.cuit = validated_data.get('cuit', instance.cuit)
        instance.descripcion = validated_data.get('descripcion',
                                                  instance.descripcion)

        if rubro_data != None:
            nuevoRubro = RubroOrganizacion.objects.get(
                nombre=rubro_data["nombre"])
            instance.rubro = nuevoRubro

        if ubicacion_data != None:
            nuevaUbicacion = Ubicacion(**ubicacion_data)
            nuevaUbicacion.save()
            instance.ubicacion = nuevaUbicacion

        #TODO: Ver si hay que cambiar cuando se haga mejor manejo de imagenes
        if avatar_data != None:
            try:
                nuevaImagen = Imagen.objects.get(url=avatar_data["url"])
                instance.avatar = nuevaImagen
            except Exception:  # Imagen.DoesNotExist
                ## TODO: Sacar isExternal hardcodeado
                nuevaImagen = Imagen(**avatar_data, isExternal=False)
                nuevaImagen.save()
                instance.avatar = nuevaImagen
        instance.save()
        return instance