Пример #1
0
    def run(self, csv_path):
        with open(csv_path) as input_file:
            reader = DictReader(input_file)
            for data in reader:
                try:
                    query = Arquero.query
                    query = query.filter(Arquero.email == data['E-Mail'])
                    existente = query.first()
                    if not existente:
                        arquero = Arquero(nombre=data['Nombres'],
                                          apellido=data['Apellido'],
                                          email=data['E-Mail'],
                                          codigo=random_text(10))
                        db.session.add(arquero)
                        db.session.commit()
                    else:
                        arquero = existente

                    usuario = Usuario(id_arquero=arquero.id,
                                      password=random_text(10),
                                      es_administrador=False,
                                      fecha_ingreso=date.today(),
                                      fecha_abandono=None,
                                      telefono=data['Tel\xc3\xa9fono'],
                                      celular=data['Celular'],
                                      direccion=data['Direcci\xc3\xb3n'],
                                      id_dominancia_ojo=1,
                                      id_dominancia_mano=1)

                    db.session.add(usuario)
                    db.session.commit()
                except Exception, e:
                    import ipdb
                    ipdb.set_trace()
Пример #2
0
    def post(self):
        form = self.form_class(self.model_class)
        if form.validate_on_submit():
            # le tengo que poner un codigo al usuario para poder identificarlo
            # sin tener que usar el id en la base de datos
            codigo = None
            while True:
                codigo = random_text(10)
                query = self.model_class.query
                query = query.filter(self.model_class.codigo == codigo)
                arquero_existente = query.first()
                if not arquero_existente:
                    break

            form.instance.codigo = codigo
            self.db.session.add(form.instance)
            self.db.session.commit()


            if 'mandar_invitacion' in request.form:
                invitacion = Invitacion(id_arquero=form.instance.id,
                                        codigo=random_text(10),
                                        usada=False)
                url = '%s/crear/usuario/invitacion/%s/%s/' % (self.running_host,
                                                            form.instance.codigo,
                                                            invitacion.codigo)


                self.mail_sender.send_mail([form.instance.email],
                                        'Invitacion al sistema de la EDA',
                                        url)

                self.db.session.add(invitacion)
                self.db.session.commit()


            return jsonify(id=form.instance.id)
        else:
            return jsonify(form.errors), 400
Пример #3
0
    def post(self):
        ''' Se encarga de crear el usuario siempre y cuando el hash de la envitacion
        siga siendo valido..
        '''
        # primero me fijo que la invitacion exista y que la misma sea valida
        form_arquero = ArqueroForm(Arquero)
        if form_arquero.validate_on_submit():
            logged_user = get_logged_user_data()

            # el usuario tiene que estar relacionado al arquero en cuestion
            arquero = Arquero.query.filter(
                Arquero.id == logged_user.id_arquero).first()
            arquero.nombre = form_arquero.nombre.data
            arquero.apellido = form_arquero.apellido.data
            arquero.email = form_arquero.email.data
            arquero.fecha_ingreso = form_arquero.fecha_ingreso.data
            arquero.fecha_nacimiento = form_arquero.fecha_nacimiento.data
            arquero.dni = form_arquero.dni.data
            arquero.telefono = form_arquero.telefono.data
            arquero.celular = form_arquero.celular.data
            arquero.direccion = form_arquero.direccion.data
            arquero.localidad = form_arquero.localidad.data
            arquero.codigo_postal = form_arquero.codigo_postal.data
            arquero.apodo_eda = form_arquero.apodo_eda.data
            arquero.latitud = form_arquero.latitud.data
            arquero.longitud = form_arquero.longitud.data

            if form_arquero.dominancia_ojo.data:
                arquero.id_dominancia_ojo = form_arquero.dominancia_ojo.data.id
            if form_arquero.dominancia_mano.data:
                arquero.id_dominancia_mano = form_arquero.dominancia_mano.data.id

            if 'foto_archivo' in request.files:
                filename = None
                foto_stream = request.files['foto_archivo']
                extension = foto_stream.filename.rsplit('.', 1)[1]
                extension = extension.lower()

                while True:
                    filename = '%s.%s' % (random_text(), extension)
                    if not os.path.exists(
                            os.path.join(self.upload_folder, filename)):
                        break
                foto_stream.save(os.path.join(self.upload_folder, filename))
                arquero.foto = filename

            self.db.session.add(arquero)
            self.db.session.commit()
            return redirect(url_for('auth.logout'))
        else:
            return render_template('change_my_data.html', form=form_arquero)
    def post(self):
        ''' Se encarga de crear el usuario siempre y cuando el hash de la envitacion
        siga siendo valido..
        '''
        # primero me fijo que la invitacion exista y que la misma sea valida
        form_arquero = ArqueroForm(Arquero)
        if form_arquero.validate_on_submit():
            logged_user = get_logged_user_data()

            # el usuario tiene que estar relacionado al arquero en cuestion
            arquero = Arquero.query.filter(Arquero.id == logged_user.id_arquero).first()
            arquero.nombre = form_arquero.nombre.data
            arquero.apellido = form_arquero.apellido.data
            arquero.email = form_arquero.email.data
            arquero.fecha_ingreso = form_arquero.fecha_ingreso.data
            arquero.fecha_nacimiento = form_arquero.fecha_nacimiento.data
            arquero.dni = form_arquero.dni.data
            arquero.telefono = form_arquero.telefono.data
            arquero.celular = form_arquero.celular.data
            arquero.direccion = form_arquero.direccion.data
            arquero.localidad = form_arquero.localidad.data
            arquero.codigo_postal = form_arquero.codigo_postal.data
            arquero.apodo_eda = form_arquero.apodo_eda.data
            arquero.latitud = form_arquero.latitud.data
            arquero.longitud = form_arquero.longitud.data

            if form_arquero.dominancia_ojo.data:
                arquero.id_dominancia_ojo = form_arquero.dominancia_ojo.data.id
            if form_arquero.dominancia_mano.data:
                arquero.id_dominancia_mano = form_arquero.dominancia_mano.data.id

            if 'foto_archivo' in request.files:
                filename = None
                foto_stream = request.files['foto_archivo']
                extension = foto_stream.filename.rsplit('.', 1)[1]
                extension = extension.lower()

                while True:
                    filename = '%s.%s' % (random_text(), extension)
                    if not os.path.exists(os.path.join(self.upload_folder, filename)):
                        break
                foto_stream.save(os.path.join(self.upload_folder, filename))
                arquero.foto = filename

            self.db.session.add(arquero)
            self.db.session.commit()
            return redirect(url_for('auth.logout'))
        else:
            return render_template('change_my_data.html',
                                   form=form_arquero)
Пример #5
0
    def post(self, path):
        ''' Se encarga de guardar el archivo que subio el usuario.

        Al nombre del archivo lo va a guardar con un nombre random, y no con
        el nombre que el usuario le haya puesto. Esto es para evitar problemas
        despues con el tema de espacios en los archivos y otros cosas.

        :param str path: indica en que subcarpeta se tiene que guardar el archivo.
                         Basicamente es el nombre del modelo.
        '''
        file = request.files['file']
        if file and '.' in file.filename:
            extension = file.filename.rsplit('.', 1)[1]
            extension = extension.lower()
            if not extension in self.file_extensions:
                return jsonify(message='Invalid file extension',
                               status='error')

            # me fijo si existe la carpeta en donde se tiene que guardar la imagen
            if not os.path.exists(os.path.join(self.upload_folder, path)):
                os.makedirs(os.path.join(self.upload_folder, path))

            complete_path = None
            filename = None
            while True:
                filename = secure_filename(random_text(20) + '.' + extension)
                complete_path = os.path.join(self.upload_folder, path,
                                             filename)
                if not os.path.exists(complete_path):
                    break

            file.save(complete_path)
            # ahora me encargo de crear un thumb de la imagen si lo que el usuario
            # subio es una imagen y no un PDF
            if not extension in ('pdf'):
                img = Image.open(complete_path)
                img.thumbnail((120, 120), Image.ANTIALIAS)
                img.save(
                    os.path.join(self.upload_folder, path,
                                 "thumb_%s" % filename))

            return jsonify(filename=os.path.join(path, filename),
                           thumb_filename=os.path.join(path,
                                                       'thumb_%s' % filename),
                           status='ok')
        else:
            abort(401)
Пример #6
0
    def post(self):
        form = self.form_class(self.model_class)
        if form.validate_on_submit():
            form.instance.codigo = random_text(10)
            form.instance.usada = False

            arquero = Arquero.query.filter(
                Arquero.id == form.instance.id_arquero).first()
            url = '%s/crear/usuario/invitacion/%s/%s/' % (
                self.running_host, arquero.codigo, form.instance.codigo)

            self.mail_sender.send_mail([arquero.email],
                                       'Invitacion al sistema de la EDA', url)

            self.db.session.add(form.instance)
            self.db.session.commit()
            return jsonify(id=form.instance.id)
        else:
            return jsonify(form.errors), 400
Пример #7
0
    def post(self, path):
        ''' Se encarga de guardar el archivo que subio el usuario.

        Al nombre del archivo lo va a guardar con un nombre random, y no con
        el nombre que el usuario le haya puesto. Esto es para evitar problemas
        despues con el tema de espacios en los archivos y otros cosas.

        :param str path: indica en que subcarpeta se tiene que guardar el archivo.
                         Basicamente es el nombre del modelo.
        '''
        file = request.files['file']
        if file and '.' in file.filename:
            extension = file.filename.rsplit('.', 1)[1]
            extension = extension.lower()
            if not extension in self.file_extensions:
                return jsonify(message='Invalid file extension',status='error')

            # me fijo si existe la carpeta en donde se tiene que guardar la imagen
            if not os.path.exists(os.path.join(self.upload_folder, path)):
                os.makedirs(os.path.join(self.upload_folder, path))

            complete_path = None
            filename = None
            while True:
                filename = secure_filename(random_text(20) + '.' + extension)
                complete_path = os.path.join(self.upload_folder, path, filename)
                if not os.path.exists(complete_path):
                    break

            file.save(complete_path)
            # ahora me encargo de crear un thumb de la imagen si lo que el usuario
            # subio es una imagen y no un PDF
            if not extension in ('pdf'):
                img = Image.open(complete_path)
                img.thumbnail((120, 120), Image.ANTIALIAS)
                img.save(os.path.join(self.upload_folder, path, "thumb_%s" % filename))

            return jsonify(filename=os.path.join(path, filename),
                           thumb_filename=os.path.join(path, 'thumb_%s' % filename),
                           status='ok')
        else:
            abort(401)
    def post(self):
        email = request.form.get('email')

        query = Usuario.query
        query = query.join(Arquero)
        query = query.filter(Arquero.email == email)
        user = query.first()
        if user:
            password = random_text()
            encripted_password = bcrypt.generate_password_hash(password)
            user.password = encripted_password
            self.mail_sender.send_mail([user.arquero.email],
                                       'Nuevo password Sistema EDA',
                                       'El nuevo password para poder loguearte al sistema es: %s' % password)
            self.db.session.add(user)
            self.db.session.commit()
            return render_template('password_reset.html',
                                   cambiado=True,
                                   no_existe=False)
        else:
            return render_template('password_reset.html',
                                   cambiado=False,
                                   no_existe=True)
    def post(self, codigo_arquero, codigo_invitacion):
        ''' Se encarga de crear el usuario siempre y cuando el hash de la envitacion
        siga siendo valido..
        '''
        # primero me fijo que la invitacion exista y que la misma sea valida
        query_invitacion = Invitacion.query.filter(
            Invitacion.codigo == codigo_invitacion)
        invitacion = query_invitacion.first()
        form_usuario = UserForm(Usuario)
        if form_usuario.validate_on_submit(
        ) and invitacion and not invitacion.usada:
            invitacion.usada = True

            # el usuario tiene que estar relacionado al arquero en cuestion
            arquero = Arquero.query.filter(
                Arquero.codigo == codigo_arquero).first()
            arquero.nombre = form_usuario.nombre.data
            arquero.apellido = form_usuario.apellido.data
            arquero.email = form_usuario.email.data
            arquero.fecha_ingreso = form_usuario.fecha_ingreso.data
            arquero.fecha_nacimiento = form_usuario.fecha_nacimiento.data
            arquero.dni = form_usuario.dni.data
            arquero.telefono = form_usuario.telefono.data
            arquero.celular = form_usuario.celular.data
            arquero.direccion = form_usuario.direccion.data
            arquero.localidad = form_usuario.localidad.data
            arquero.codigo_postal = form_usuario.codigo_postal.data
            arquero.apodo_eda = form_usuario.apodo_eda.data
            arquero.latitud = form_usuario.latitud.data
            arquero.longitud = form_usuario.longitud.data

            if form_usuario.dominancia_ojo.data:
                arquero.id_dominancia_ojo = form_usuario.dominancia_ojo.data.id
            if form_usuario.dominancia_mano.data:
                arquero.id_dominancia_mano = form_usuario.dominancia_mano.data.id

            if 'foto_archivo' in request.files:
                filename = None
                foto_stream = request.files['foto_archivo']
                extension = foto_stream.filename.rsplit('.', 1)[1]
                extension = extension.lower()

                while True:
                    filename = '%s.%s' % (random_text(), extension)
                    if not os.path.exists(
                            os.path.join(self.upload_folder, filename)):
                        break
                foto_stream.save(os.path.join(self.upload_folder, filename))
                arquero.foto = filename

            #form_usuario.instance.id = arquero.id
            form_usuario.instance.id_arquero = arquero.id

            self.db.session.add(invitacion)
            self.db.session.add(arquero)
            self.db.session.add(form_usuario.instance)
            self.db.session.commit()
            return redirect(url_for('index'))
        else:
            return render_template('create_user_from_invitation.html',
                                   codigo_invitacion=codigo_invitacion,
                                   codigo_arquero=codigo_arquero,
                                   form=form_usuario,
                                   error_invitacion=(not invitacion
                                                     or invitacion.usada))