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()
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
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)
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): 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
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))