示例#1
0
 def un_trabajo(self, cliente, fecha_ingreso, fecha_entrega_propuesta, fecha_entrega_real, descripcion, retirado):
     t = Trabajo(cliente, fecha_ingreso, fecha_entrega_propuesta, fecha_entrega_real, descripcion, retirado)
     t.id_contacto = self.rt.get_one(t)
     if t.id_trabajo == 0:
         return None
     else:
         return t
示例#2
0
 def nuevo_trabajo(self, cliente, fecha_ingreso, fecha_entrega_propuesta, fecha_entrega_real, descripcion, retirado):
     t = Trabajo(cliente, fecha_ingreso, fecha_entrega_propuesta, fecha_entrega_real, descripcion, retirado)
     t.id_contacto = self.rt.store(t)
     if t.id_trabajo == 0:
         return None
     else:
         self.listatrabajo.append(t)
         return t
示例#3
0
	def nuevo_trabajo(self, cliente, fecha_ingreso, fecha_entrega_propuesta, descripcion):
		#Recibe los datos de un trabajo, crea un nuevo trabajo y lo agrega a la lista Trabajos.
		T = Trabajo(cliente, fecha_ingreso, fecha_entrega_propuesta, None, descripcion,False)
		T.id_trabajo = self.RT.store(T)
		if T.id_trabajo == 0:
			print(T)
			return None
		else:
			self.TrabajoL.append(T)
			return T
示例#4
0
def crear_trabajo():
    post_values = request.values.to_dict()
    mi_trabajo = Trabajo(**post_values)
    try:
        mi_trabajo.save()
        db.commit()
        return 'Ok'
    except Exception as e:
        import ipdb
        ipdb.set_trace()
        return e, 500
示例#5
0
 def nuevo_trabajo(self, cliente, fecha_ingreso, fecha_entrega_propuesta,
                   descripcion):
     "Recibe los datos de una trabajo, crea uno nuevo y lo agrega a la lista"
     t = Trabajo(cliente, fecha_ingreso, fecha_entrega_propuesta, None,
                 descripcion, False)
     t.id_trabajo = self.rt.store(t)
     if t.id_trabajo == 0:
         return None
     else:
         self.listaTrabajo.append(t)
         return t
    def _obtener_trabajo_de_result(self, result, id_trabajo=None):
        '''Retorna un objeto Trabajo a partir del resultado de un SELECT'''
        # A partir del id_cliente, obtenemos el cliente correspondiente:
        rc = RepositorioClientes()
        cliente = rc.get_one(result[0])
        if cliente == None:
            return None

        # A partir de la fecha en formato "2020-31-12", creamos un datetime:
        fecha_ingreso = datetime.date.fromisoformat(result[1])

        #Hacemos lo mismo con las otras fechas, siempre que no sean nulas:
        if result[2] == None:
            fecha_entrega_propuesta = None
        else:
            fecha_entrega_propuesta = datetime.date.fromisoformat(result[2])

        if result[3] == None:
            fecha_entrega_real = None
        else:
            fecha_entrega_real = datetime.date.fromisoformat(result[3])

        # Guardamos la descripcion:
        descripcion = result[4]

        # Guardamos el valor booleano retirado: 0->False, 1->True
        retirado = result[5] == 1

        if id_trabajo == None:
            id_trabajo = result[6]

        return Trabajo(cliente, fecha_ingreso, fecha_entrega_propuesta,
                       fecha_entrega_real, descripcion, retirado, id_trabajo)
示例#7
0
    def edit_works_desc(self, id_cliente, new_entry_date, new_proposal_date,
                        real_delivery_date, new_description, withdrawn,
                        id_trabajo):
        '''Editar descripcion y fecha de ingreso'''
        nueva_fecha = datetime.strptime(new_entry_date, '%d-%m-%Y')
        nueva_fecha.strftime('%Y-%m-%d')
        fecha_ent_pro = datetime.strptime(new_proposal_date, '%d-%m-%Y')
        fecha_ent_pro.strftime('%Y-%m-%d')

        if real_delivery_date == 'None':
            real_delivery_date = '01-01-1981'
            fecha_ent_re = datetime.strptime(real_delivery_date, '%Y-%m-%d')
            fecha_ent_re.strftime('%Y-%m-%d')
        else:
            fecha_ent_re = datetime.strptime(real_delivery_date, '%Y-%m-%d')
            fecha_ent_re.strftime('%Y-%m-%d')

        parameters = Trabajo(id_cliente, nueva_fecha, fecha_ent_pro,
                             fecha_ent_re, new_description, withdrawn,
                             id_trabajo)

        a = self.rt.update(parameters)
        if a:
            self.edit_work_window.destroy()
            self.message['text'] = 'El trabajo sido editado correctamente'
        else:
            self.message['text'] = 'El trabajo no ha sido editado'
        self.get_works()
示例#8
0
    def nuevo_trabajo(self):
        obj_cliente = None
        while True:
            cliente = input("Ingrese el id del cliente: ")
            obj_cliente = self.rc.get_one(cliente)
            if obj_cliente != None:
                print(obj_cliente)
                break

        fecha_ingreso = datetime.date.today()
        while True:
            try:
                f = input("Ingrese la fecha propuesta (aaaa,mm,dd): ")
                fecha_propuesta = datetime.datetime.strptime(f, "%Y,%m,%d")
            except ValueError:
                print("Fecha no valida")
                continue
            break
        fecha_entrega_real = None
        descripcion = input("Ingrese la descripcion del trabajo: ")
        retirado = False

        nt = Trabajo(obj_cliente, fecha_ingreso, fecha_propuesta,
                     fecha_entrega_real, descripcion, retirado, None)
        resultado = self.rt.store(nt)
        self.lista_Trabajo = self.rt.get_all()

        print("Trabajo guardado exitosamente. Con el id ", resultado)
示例#9
0
    def eliminar_trabajo(self):
        '''Eliminar un trabajo de la BD'''

        # Obtengo los datos actuales del objeto en cuestión
        description = self.tree3.item(self.tree3.selection())['values'][4]
        entry_date = self.tree3.item(self.tree3.selection())['values'][1]
        id_cliente = self.tree3.item(self.tree3.selection())['values'][0]
        proposal_delivery_date = self.tree3.item(
            self.tree3.selection())['values'][2]
        real_delivery_date = self.tree3.item(
            self.tree3.selection())['values'][3]
        withdrawn = self.tree3.item(self.tree3.selection())['values'][5]
        id_trabajo = self.tree3.item(self.tree3.selection())['text']

        # Paso parametros al obj Trabajo
        parameters = Trabajo(id_cliente, entry_date, proposal_delivery_date,
                             real_delivery_date, description, withdrawn,
                             id_trabajo)
        a = self.rt.delete(parameters)

        # Códigos de éxito o error y retorno la lista de trabajos actualizados
        if a:
            self.message[
                'text'] = 'El trabajo {0} sido eliminado correctamente'.format(
                    id_trabajo)
        else:
            self.message['text'] = 'El trabajo no ha sido eliminado'
        self.get_works()
示例#10
0
def create_db_example():
    nombre_alumnos = ['javier', 'gabriel', 'rodrigo']
    nombre_trabajo = ['quimica', 'fisica', 'matematicas']
    trabajo_dict = copy.deepcopy(consts.TRABAJO_DICT)
    trabajo_dict['id_alumno'] = random.randint(200, 500)
    trabajo_dict['nombre_alumno'] = random.choice(nombre_alumnos)
    trabajo_dict['nombre_trabajo'] = random.choice(nombre_trabajo)
    trabajo_dict['paginas_trabajo'] = 2
    trabajo_dict['fecha'] = '2016-01-01'
    trabajo_dict['hora'] = 12
    mi_trabajo = Trabajo(**trabajo_dict)
    try:
        mi_trabajo.save()
        db.commit()
        return 'Ok'
    except Exception as e:
        return e
示例#11
0
 def nuevo_trabajo(self,
                   cliente,
                   fecha_ingreso,
                   fecha_entrega_propuesta,
                   fecha_entrega_real,
                   descripcion,
                   retirado,
                   id_trabajo=None):
     trabajo = Trabajo(cliente, fecha_ingreso, fecha_entrega_propuesta,
                       fecha_entrega_real, descripcion, retirado,
                       id_trabajo)
     trabajo.id_trabajo = self.repostrabajos.store(trabajo)
     if trabajo.id_trabajo == 0:
         return None
     else:
         self.lista.append(trabajo)
         return trabajo
示例#12
0
 def nuevo_trabajo(
     self,
     cliente,
     fecha_entrega_propuesta,
     descripcion,
     fecha_ingreso,
 ):
     t = Trabajo(
         cliente,
         fecha_entrega_propuesta,
         descripcion,
         fecha_ingreso,
     )
     t.id_trabajo = self.rt.store(t)
     if t.id_trabajo == 0:
         return None
     else:
         self.lista.append(t)
         return t
示例#13
0
 def get_one(self, id_trabajo):
     rm = RepositorioMateria()
     trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
             fecha_entrega, archivo, id_materia, es_url FROM material \
             WHERE id = ?;"
     self.cursor.execute(trabajos_sql, [id_trabajo])
     f = self.cursor.fetchone()
     materia = rm.get_one(f[6])
     trabajo = Trabajo(f[0], f[1],f[2],f[3], f[4], f[5], materia, f[7])
     return trabajo
示例#14
0
    def get_trabajos_materia(self, materia):
        trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
                fecha_entrega, archivo \
                FROM material WHERE id_materia = ?;"

        self.cursor.execute(trabajos_sql, [materia])
        trabajos = []

        for f in self.cursor.fetchall():
            trabajos.append(Trabajo(f[0], f[1], f[2], f[3], f[4], f[5]))

        return trabajos
示例#15
0
    def get_all(self):
        rm = RepositorioMateria()
        trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
            fecha_entrega, archivo, id_materia, es_url FROM material \
            order by id_materia, fecha_publicada;"
        self.cursor.execute(trabajos_sql)
        
        trabajos = []
        for f in self.cursor.fetchall():
            materia = rm.get_one(f[6])
            trabajos.append(Trabajo(f[0], f[1],f[2],f[3], f[4], f[5], materia, 
                                    f[7]))

        return trabajos
    def get_trabajos_materia(self, materia):
        trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
                fecha_entrega, archivo, es_url \
                FROM material WHERE id_materia = ? \
                ORDER BY fecha_publicada desc;"

        self.cursor.execute(trabajos_sql, [materia])
        trabajos = []

        for f in self.cursor.fetchall():
            url = (int(f[6]) == 1)
            trabajos.append(
                Trabajo(f[0], f[1], f[2], f[3], f[4], f[5], None, url))

        return trabajos
示例#17
0
 def get_all_materia(self, materia):
     # Si me pasan un id_materia
     rm = RepositorioMateria()
     if type(materia) is not Materia:
         materia = rm.get_one(int(materia))
     
     trabajos_sql = "SELECT id, titulo, descripcion, fecha_publicada, \
         fecha_entrega, archivo, id_materia, es_url FROM material \
         WHERE id_materia = ? order by fecha_publicada;"
     self.cursor.execute(trabajos_sql, [ materia.id ])
     
     trabajos = []
     for f in self.cursor.fetchall():
         trabajos.append(Trabajo(f[0], f[1],f[2],f[3], f[4], f[5], materia, 
                                 f[7]))
     return trabajos
示例#18
0
    def trabajo_finalizado(self):
        '''Cambiar el estado a finalizado, modificando su fecha de entrega real a hoy'''
        try:
            self.tree3.item(self.tree3.selection())['values'][0]
        except IndexError:
            self.message['text'] = 'Por favor, seleccione un registro'
            return
        # Obtengo la fecha de hoy
        hoy = date.today()
        hoy.strftime('%d, %m, %Y')

        # Obtengo los datos actuales del objeto en cuestión
        description = self.tree3.item(self.tree3.selection())['values'][4]
        entry_date = self.tree3.item(self.tree3.selection())['values'][1]
        id_cliente = self.tree3.item(self.tree3.selection())['values'][0]
        proposal_delivery_date = self.tree3.item(
            self.tree3.selection())['values'][2]
        #old_real_delivery_date = self.tree3.item(self.tree3.selection())['values'][3]
        withdrawn = self.tree3.item(self.tree3.selection())['values'][5]
        id_trabajo = self.tree3.item(self.tree3.selection())['text']

        # Formateo las fechas
        nueva_fecha = datetime.strptime(entry_date, '%Y-%m-%d')
        nueva_fecha.strftime('%Y-%m-%d')

        if proposal_delivery_date == 'None':
            proposal_delivery_date = '2000-01-01'
        else:
            proposal_delivery_date = proposal_delivery_date

        fecha_ent_pro = datetime.strptime(proposal_delivery_date, '%Y-%m-%d')
        fecha_ent_pro.strftime('%Y-%m-%d')
        fecha_ent_pro = datetime.strptime(proposal_delivery_date, '%Y-%m-%d')
        fecha_ent_pro.strftime('%Y-%m-%d')

        # Paso parametros al obj Trabajo
        parameters = Trabajo(id_cliente, nueva_fecha, fecha_ent_pro, hoy,
                             description, withdrawn, id_trabajo)

        a = self.rt.update(parameters)
        if a:
            self.message['text'] = 'El trabajo sido editado correctamente'
        else:
            self.message['text'] = 'El trabajo no ha sido editado'
        self.get_works()
示例#19
0
    def trabajo_entregado(self):
        '''Cambiar el estado a entregado'''
        try:
            self.tree3.item(self.tree3.selection())['values'][0]
        except IndexError:
            self.message['text'] = 'Por favor, seleccione un registro'
            return

        # Obtengo los datos actuales del objeto en cuestión
        description = self.tree3.item(self.tree3.selection())['values'][4]
        entry_date = self.tree3.item(self.tree3.selection())['values'][1]
        id_cliente = self.tree3.item(self.tree3.selection())['values'][0]
        proposal_delivery_date = self.tree3.item(
            self.tree3.selection())['values'][2]
        real_delivery_date = self.tree3.item(
            self.tree3.selection())['values'][3]
        #withdrawn = self.tree3.item(self.tree3.selection())['values'][5]
        id_trabajo = self.tree3.item(self.tree3.selection())['text']

        # Formateo las fechas
        nueva_fecha = datetime.strptime(entry_date, '%Y-%m-%d')
        nueva_fecha.strftime('%Y-%m-%d')
        fecha_ent_pro = datetime.strptime(proposal_delivery_date, '%Y-%m-%d')
        fecha_ent_pro.strftime('%Y-%m-%d')
        fecha_ent_real = datetime.strptime(real_delivery_date, '%Y-%m-%d')
        fecha_ent_real.strftime('%Y-%m-%d')

        withdrawn = True

        # Paso parametros al obj Trabajo
        parameters = Trabajo(id_cliente, nueva_fecha, fecha_ent_pro,
                             fecha_ent_real, description, withdrawn,
                             id_trabajo)

        a = self.rt.update(parameters)
        if a:
            self.message[
                'text'] = 'El trabajo {0} sido entregado correctamente'.format(
                    id_trabajo)
        else:
            self.message['text'] = 'El trabajo no ha sido editado'
        self.get_works()
示例#20
0
    def add_work(self):
        #si las validaciones son correctass
        if self.validations_work():
            self.message['text'] = ''
            obj_cliente = None
            obj_cliente = self.rc.get_one(self.id_cliente_entry.get())
            fe_entrada = datetime.strptime(self.entry_date.get(), '%d-%m-%Y')
            fe_entrada.strftime('%Y-%m-%d')
            fecha_ent_pro = ''

            # En caso de que la fecha propuesta esté en blanco, asignar None
            if fecha_ent_pro != '':
                fecha_ent_pro = datetime.strptime(
                    self.proposal_delivery_date.get(), '%d-%m-%Y')
                fecha_ent_pro.strftime('%Y-%m-%d')
            else:
                fecha_ent_pro = None

            parameters = Trabajo(obj_cliente, fe_entrada, fecha_ent_pro, None,
                                 self.description.get(), False, None)
            a = self.rt.store(parameters)
            print(parameters, a)
            if a:
                self.message[
                    'text'] = 'El trabajo del cliente {0} ha sido añadido correctamente'.format(
                        self.id_cliente_entry.get())
                self.get_works()
                self.id_cliente_entry.delete(0, END)
                self.entry_date.delete(0, END)
                self.proposal_delivery_date.delete(0, END)
                self.description.delete(0, END)
            else:
                self.message[
                    'text'] = 'El trabajo del cliente no se ha sido añadido. Código de error: 0'
                print(fecha_ent_pro)

        else:
            self.message['text'] = 'Todos los campos son requeridos'
示例#21
0
def create_trabajos(materia=None):
    rm = RepositorioMateria()
    if request.method == "GET":
        hoy = datetime.date.today()
        form = FlaskForm()
        materias = rm.get_all()
        return render_template("nuevo_trabajo.html",
                               form=form,
                               mensaje=None,
                               trabajo=None,
                               materias=materias,
                               materia=materia,
                               hoy=hoy,
                               tipos=", ".join(ALLOWED_EXTENSIONS))
    else:
        # Capturar los datos del request
        titulo = request.form["titulo"]
        descripcion = request.form["descripcion"]
        id_materia = request.form["materia"]
        # TODO: Las fechas tienen que ser "2020-04-30", revisar eso
        fecha_publicada = request.form["publicado"]
        if request.form.get("se_entrega"):
            fecha_entrega = request.form["entrega"]
        else:
            fecha_entrega = None
        es_url = request.form["opcion_archivo"] == "url"
        materia = rm.get_one(id_materia)

        # Manejo de archivos:
        # print("################### ARCHIVOS ##########################")
        # print(request.files.get("archivo_real").filename)
        if 'archivo_real' in request.files:
            archivo_real = request.files['archivo_real']

            # FIXME: ¿Habría que advertir si eligen archivo pero no suben nada?
            # (ya está hecho por js)
            # if archivo_real.filename == '':
            if archivo_real and allowed_file(archivo_real.filename):
                filename = secure_filename(archivo_real.filename)
                archivo = filename
                try:
                    archivo_real.save(
                        os.path.join(app.config['UPLOAD_FOLDER'], filename))
                except:
                    #FIXME: Manejar esta excepción. TODO
                    raise
            else:
                # FIXME: Manejar esta excepción
                raise
        else:
            archivo = request.form["archivo"]

        trabajo = Trabajo(None, titulo, descripcion, fecha_publicada,
                          fecha_entrega, archivo, materia, es_url)

        #GUARDAR EL NUEVO TRABAJO
        rt = RepositorioTrabajo()
        id_trabajo = rt.create(trabajo)
        if id_trabajo:
            mensaje = "Trabajo/Material/Actividad creada correctamente"
        else:
            mensaje = "Error al crear el trabajo"

        #Redirigir a trabajos:
        return redirect(url_for('trabajos', mensaje=mensaje))
示例#22
0
def update_trabajos(id_trabajo):
    rm = RepositorioMateria()
    rt = RepositorioTrabajo()
    trabajo_actual = rt.get_one(int(id_trabajo))

    if request.method == "GET":
        if not trabajo_actual:
            return "Error: trabajo no encontrada. id_trabajo: " + str(
                id_trabajo)
        hoy = datetime.date.today()
        form = FlaskForm()
        materias = rm.get_all()
        return render_template("nuevo_trabajo.html",
                               form=form,
                               mensaje=None,
                               trabajo=trabajo_actual,
                               materias=materias,
                               hoy=hoy)
    else:
        # Capturar los datos del request
        idt = request.form["id_trabajo"]
        titulo = request.form["titulo"]
        descripcion = request.form["descripcion"]
        id_materia = request.form["materia"]
        fecha_publicada = request.form["publicado"]
        if request.form.get("se_entrega"):
            fecha_entrega = request.form["entrega"]
        else:
            fecha_entrega = None
        es_url = request.form["opcion_archivo"] == "url"
        materia = rm.get_one(id_materia)

        # Manejo de archivos:
        if 'archivo_real' in request.files and \
                request.form["archivo"] != trabajo_actual.archivo:
            archivo_real = request.files['archivo_real']

            # FIXME: ¿Habría que advertir si eligen archivo pero no suben nada?
            # (ya está hecho por js)
            # if archivo_real.filename == '':
            if archivo_real and allowed_file(archivo_real.filename):
                filename = secure_filename(archivo_real.filename)
                archivo = filename
                try:
                    archivo_real.save(
                        os.path.join(app.config['UPLOAD_FOLDER'], filename))
                except:
                    #FIXME: Manejar esta excepción. TODO
                    raise
            else:
                # FIXME: Manejar esta excepción
                raise
        else:
            archivo = request.form["archivo"]

        trabajo = Trabajo(idt, titulo, descripcion, fecha_publicada,
                          fecha_entrega, archivo, materia, es_url)

        #HACER EL UPDATE
        resultado = rt.update(trabajo)
        if resultado:
            mensaje = "Datos del trabajo/actividad/material modificados"
        else:
            mensaje = "Error al modificar los datos del trabajo/material"
        #Redirigir a cursos:
        return redirect(url_for('trabajos', mensaje=mensaje))
示例#23
0
def index():
    trabajos = list(Trabajo.manager(db).all())
    return render_template('listado.html', trabajos=trabajos)