Ejemplo n.º 1
0
def create_comment():
    """
    статус “закрыт” финальный (нельзя) изменить статус или добавить комментарий)
    :return:
    """
    data = json.loads(request.data)
    ticket_id = data.get('ticket_id')
    text = data.get('text')
    email = data.get('email')
    if not data or ticket_id is None or email is None or text is None:
        abort(400)
    try:
        ticket = Ticket.query.filter_by(id=ticket_id).first()
        if ticket is None:
            abort(400)
        if ticket.status.name == 'closed':
            abort(403)
        comment = Comment(text=text, email=email, ticket_id=ticket_id)
        db.session.add(comment)
        db.session.commit()
        return app.response_class(response=comment.json(),
                                  status=200,
                                  mimetype='application/json')

    except exc.SQLAlchemyError:
        print(f'''Error: \n {traceback.format_exc()}''')
        db.session.rollback()
        abort(501)
    finally:
        db.session.close()
Ejemplo n.º 2
0
def handle_cierre_supervisor():
    incidence_id = request.form['incidence_id']
    comentario_incidencia = request.form['comentario_incidencia']
    resolucion = 'resolve' in request.form
    if resolucion:
        resolucion = 0
    else:
        resolucion = 1
    status = Status(incidence_id, get_technician(incidence_id),
                    5)  #user=tecnico
    update_status(status, 6, session.get('username'))
    if comentario_incidencia != '':
        comentario = Comment(incidence_id, session.get('username'), 6,
                             comentario_incidencia)
        insert_comment(comentario)
    update_resolve(incidence_id, resolucion)

    incidencias = select_incidences_notify_for_closed()
    empty_notif = 0
    notificaciones = get_notification(session.get('username'))
    if len(notificaciones) == 0:
        empty_notif = 1

    return render_template('incidencias_notificadas_resolucion.html',
                           username=session.get('username'),
                           role=session.get('role'),
                           notificaciones=notificaciones,
                           empty_notif=empty_notif,
                           incidencias=incidencias)
Ejemplo n.º 3
0
def handle_cierre_cliente_todas():
    logger.info("Cierre cliente tratado")
    username_stat = get_supervisor()
    logger.info(username_stat)
    idcli = request.form['idcli']
    comentario_incidencia = request.form['comentario_incidencia']
    status = Status(idcli, username_stat, 4)
    username = session.get('username')
    if comentario_incidencia != '':
        comentario = Comment(idcli, session.get('username'), 4,
                             comentario_incidencia)
        insert_comment(comentario)
    # update_status(status,5,username)
    # cuestion del cambio a estado 5, lo hace cliente? ELIMINADO UPDATE CLIENTE
    role = session.get('role')
    notify_close(status, role)
    incidencias = select_open_incidences(session.get('username'))

    empty_notif = 0
    notificaciones = get_notification(username)
    if len(notificaciones) == 0:
        empty_notif = 1

    # devices=get_devices()
    return render_template('incidencias.html',
                           username=session.get('username'),
                           role=session.get('role'),
                           notificaciones=notificaciones,
                           empty_notif=empty_notif,
                           incidencias=incidencias)
Ejemplo n.º 4
0
def handle_cierre_cliente():
    logger.info("Cierre cliente tratado")
    id_incidence = request.form['id_incidence']
    comentario_incidencia = request.form['comentario_incidencia']
    sender = session.get('username')
    receiver = get_technician(id_incidence)

    create_notification(id_incidence, sender, receiver)
    if comentario_incidencia != '':
        comentario = Comment(id_incidence, session.get('username'), 4,
                             comentario_incidencia)
        insert_comment(comentario)
    incidencias = select_open_incidences(session.get('username'))

    empty_notif = 0
    notificaciones = get_notification(session.get('username'))
    if len(notificaciones) == 0:
        empty_notif = 1

    return render_template('incidencias_abiertas.html',
                           username=session.get('username'),
                           role=session.get('role'),
                           notificaciones=notificaciones,
                           empty_notif=empty_notif,
                           incidencias=incidencias)
Ejemplo n.º 5
0
def handle_cierre_tecnico():
    logger.info("Cierre tecnico tratado")
    username_stat = get_supervisor()
    logger.info(username_stat)
    idtec = request.form['idtec']
    comentario_incidencia = request.form['comentario_incidencia']
    status = Status(idtec, username_stat, 4)
    username = session.get('username')
    update_status(status, 5, username)
    role = session.get('role')
    notify_close(status, role)
    if comentario_incidencia != '':
        comentario = Comment(idtec, session.get('username'), 5,
                             comentario_incidencia)
        insert_comment(comentario)
    else:
        logger.info("Sin comentario")
    incidencias = select_open_assigned_incidences_tech(session.get('username'))

    empty_notif = 0
    notificaciones = get_notification(username)
    if len(notificaciones) == 0:
        empty_notif = 1

    return render_template('incidencias_asignadas.html',
                           username=session.get('username'),
                           role=session.get('role'),
                           notificaciones=notificaciones,
                           empty_notif=empty_notif,
                           incidencias=incidencias)
Ejemplo n.º 6
0
    def add_layer_comment(self, user: User, comment: Comment,
                          parent_comment: Comment):
        try:
            self._update_comment_step(parent_comment)

            # add comment
            comment.user_id = user.id
            comment.step = parent_comment.step + 1
            comment.depth = parent_comment.depth + 1

            self.post.increase_comment_count()

            self.comments.append(comment)

            db.session.commit()
        except Exception as e:
            db.session.rollback()
            raise e
        else:
            return comment
Ejemplo n.º 7
0
def comment():
    form = CommentForm(request.values)
    if form.validate():
        email = form.email.data
        guest = Guest.query.filter_by(guest_email=email).first()
        if guest:
            if guest.state and not guest.black:  # 检验成功,未被拉黑
                c = Comment()
                res = c.add_comment(form, guest.nickname, yes=True)
                if res is not None:
                    return jsonify(trueReturn(msg="留言成功!", data=res))
                if res is None:
                    return jsonify(falseReturn(msg='网络错误'))
            if guest.black:
                return jsonify(falseReturn(msg='此邮箱在小黑屋反省中...'))
        if not guest or not guest.state:
            c = Comment()
            res = c.add_comment(form)
            token = Guest.generate_token({"email": email, "id": c.id})
            send_mail(to=email,
                      subject="Dlog留言",
                      template='email/confirm_comment',
                      token=token)
            return jsonify(
                trueReturn(msg='此邮箱为第一次留言,为确认是否有效,请登录邮箱查看并确认,后续不再检验.'),
                data="")
    if not form.validate():
        msg = get_errors_msg(form.errors)
        return jsonify(falseReturn(msg=msg))
Ejemplo n.º 8
0
def handle_comment_todas():
    logger.info('Estoy en handle comment')
    comentario_incidencia = request.form['comentario_incidencia']
    logger.info(comentario_incidencia)
    idinc = request.form['idcom']
    logger.info(idinc)
    estadocom = request.form['estadocom']
    logger.info(estadocom)
    usuario = session.get('username')

    if estadocom == 'Solicitada':
        estadocom = 1
    elif estadocom == 'Aceptada':
        estadocom = 2
    elif estadocom == 'Rechazada':
        estadocom = 3
    elif estadocom == 'Asignada':
        estadocom = 4
    elif estadocom == 'Notificada_resolucion':
        estadocom = 5
    elif estadocom == 'Cerrada':
        estadocom = 6

    comentario = Comment(idinc, usuario, estadocom, comentario_incidencia)

    insert_comment(comentario)
    incidencias = select_incidences_user(session.get('username'))

    empty_notif = 0
    notificaciones = get_notification(session.get('username'))
    if len(notificaciones) == 0:
        empty_notif = 1

    return render_template('incidencias.html',
                           username=session.get('username'),
                           role=session.get('role'),
                           notificaciones=notificaciones,
                           empty_notif=empty_notif,
                           incidencias=incidencias)
Ejemplo n.º 9
0
def handle_dashboard_tecnico():
    logger.info("Cierre tecnico tratado")
    username_stat = get_supervisor()
    logger.info(username_stat)
    idtec = request.form['idtec']
    comentario_incidencia = request.form['comentario_incidencia']
    status = Status(idtec, username_stat, 4)
    username = session.get('username')
    update_status(status, 5, username)
    role = session.get('role')
    notify_close(status, role)
    if comentario_incidencia != '':
        comentario = Comment(idtec, session.get('username'), 5,
                             comentario_incidencia)
        insert_comment(comentario)
    incidencias = select_open_assigned_incidences_tech(session.get('username'))

    empty_notif = 0
    notificaciones = get_notification(username)
    if len(notificaciones) == 0:
        empty_notif = 1
    total_incidences = client_total_open(session.get('username'))
    total_assigned = count_total_assigned_incidences(session.get('username'))
    total_notify_closed = count_total_notify_closed_assigned_incidences(
        session.get('username'))
    total_closed = count_total_closed_assigned_incidences(
        session.get('username'))

    return render_template('dashboard_technician.html',
                           username=session.get('username'),
                           role=session.get('role'),
                           notificaciones=notificaciones,
                           empty_notif=empty_notif,
                           incidencias=incidencias,
                           total_incidences=total_incidences,
                           total_assigned=total_assigned,
                           total_closed=total_closed,
                           total_notify_closed=total_notify_closed)
Ejemplo n.º 10
0
def delete(target_comment: Comment):
    try:
        target_comment.delete()
    except Exception as e:
        raise e