Example #1
0
File: views.py Project: alklyn/cfm
def create_ticket():
    """ page for creating new tickets

    """
    if not is_logged_in():
        return redirect(url_for('login'))

    if request.method == "POST":
        form, province_set, district_set, ward_set = \
        update_selectors()
    else:
        form = TicketForm()
        province_set = False
        district_set = False
        ward_set = False

    userid = session["id"]
    user_details = \
        get_user_details(where_clause="id = %s", params=(userid, ))[0]

    # if 'message' in locals():
    #     flash(message, "error")
    country_code = "+263"
    return render_template('create_ticket.html',
                           title='Create Ticket',
                           user_details=user_details,
                           form=form,
                           province_set=province_set,
                           district_set=district_set,
                           ward_set=ward_set,
                           country_code=country_code)
Example #2
0
File: views.py Project: alklyn/cfm
def save_ticket():
    """Save new tickets

    """
    if not is_logged_in():
        return redirect(url_for('login'))

    try:
        country_code = "+263"
        phone_number = country_code + request.form["phone_number"]

        add_ticket(request.form["caller_firstname"],
                   request.form["caller_lastname"], phone_number,
                   request.form["gender"], request.form["ward"],
                   request.form["village"], request.form["topic"],
                   request.form["priority"], request.form["partner"],
                   request.form["programme"], request.form["details"],
                   session["id"], request.form["agent"])

    except (AttributeError, NameError, HTTPException, KeyError) as error:
        message = "Error proceccing request."
    else:
        userid = session["id"]
        message = "Ticket successfully saved."
        data = get_user_details(where_clause="id = %s", params=(userid, ))
        user_details = data[0]

    flash(message)
    return redirect(url_for('index'))
Example #3
0
File: views.py Project: alklyn/cfm
def create_ticket():
    """ page for creating new tickets

    """
    if not is_logged_in():
        return redirect(url_for('login'))

    if request.method == "POST":
        form, province_set, district_set, ward_set = \
        update_selectors()
    else:
        form = TicketForm()
        province_set = False
        district_set = False
        ward_set = False

    userid = session["id"]
    user_details = \
        get_user_details(where_clause="id = %s", params=(userid, ))[0]

    # if 'message' in locals():
    #     flash(message, "error")
    country_code = "+263"
    return render_template('create_ticket.html',
                           title='Create Ticket',
                           user_details=user_details,
                           form=form,
                           province_set=province_set,
                           district_set=district_set,
                           ward_set=ward_set,
                           country_code=country_code)
Example #4
0
File: views.py Project: alklyn/cfm
def tickets(status='open'):
    """ Home page

    input
    =====
    status:
        open: Display only open tickets.
        closed: Display only closed tickets.
        all: Display all tickets.
    Output
        display_all: boolean
            Determines whether all the columns are shown or not
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    #CSS class for each of the links (open, closed, all)
    classes = {"open": "", "closed": "", "all": ""}
    where_clause="status_id = %s"
    if status == "open":
        title='Open Tickets'
        t_status = 1
        classes["open"] = "class=active"
    elif status == "closed":
        title='Closed Tickets'
        t_status = 2
        classes["closed"] = "class=active"
    else:
        classes["all"] = "class=active"
        title='All Tickets'
        t_status = 1
        where_clause="%s"

    params = (t_status, )

    tickets = get_tickets(where_clause=where_clause ,params=params)
    userid = session["id"]
    user_details = get_user_details(
        where_clause="id = %s",
        params=(userid, ),
        log_query=True)

    if user_details:
        user_data=user_details[0]
    else:
        message = "Error! Please contact IT."
        flash(message)
        return redirect(url_for('index'))


    return render_template('tickets.html',
                           title=title,
                           user_details=user_data,
                           tickets=tickets,
                           display_all=False,
                           classes=classes)
Example #5
0
File: views.py Project: alklyn/cfm
def tickets(status='open'):
    """ Home page

    input
    =====
    status:
        open: Display only open tickets.
        closed: Display only closed tickets.
        all: Display all tickets.
    Output
        display_all: boolean
            Determines whether all the columns are shown or not
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    #CSS class for each of the links (open, closed, all)
    classes = {"open": "", "closed": "", "all": ""}
    where_clause = "status_id = %s"
    if status == "open":
        title = 'Open Tickets'
        t_status = 1
        classes["open"] = "class=active"
    elif status == "closed":
        title = 'Closed Tickets'
        t_status = 2
        classes["closed"] = "class=active"
    else:
        classes["all"] = "class=active"
        title = 'All Tickets'
        t_status = 1
        where_clause = "%s"

    params = (t_status, )

    tickets = get_tickets(where_clause=where_clause, params=params)
    userid = session["id"]
    user_details = get_user_details(where_clause="id = %s",
                                    params=(userid, ),
                                    log_query=True)

    if user_details:
        user_data = user_details[0]
    else:
        message = "Error! Please contact IT."
        flash(message)
        return redirect(url_for('index'))

    return render_template('tickets.html',
                           title=title,
                           user_details=user_data,
                           tickets=tickets,
                           display_all=False,
                           classes=classes)
Example #6
0
File: views.py Project: alklyn/cfm
def index():
    """Another test view.
    To be removed in production system
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    userid = session["id"]
    data = get_user_details(where_clause="id = %s", params=(userid, ))
    user_details = data[0]
    return render_template('index.html',
                           title='Home',
                           user_details=user_details)
Example #7
0
File: views.py Project: alklyn/cfm
def index():
    """Another test view.
    To be removed in production system
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    userid = session["id"]
    data = get_user_details(where_clause="id = %s", params=(userid, ))
    user_details = data[0]
    return render_template('index.html',
                           title='Home',
                           user_details=user_details)
Example #8
0
File: views.py Project: alklyn/cfm
def test():
    """Another test view.
    To be removed in production system
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    userid = session["id"]
    data = get_user_details(where_clause="id = %s", params=(userid, ))
    user_details = data[0]
    return render_template('test.html',
                           title='Test Page',
                           name=user_details["firstname"],
                           lastname=user_details["lastname"],
                           username=user_details["username"])
Example #9
0
File: views.py Project: alklyn/cfm
def test():
    """Another test view.
    To be removed in production system
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    userid = session["id"]
    data = get_user_details(where_clause="id = %s", params=(userid, ))
    user_details = data[0]
    return render_template('test.html',
                           title='Test Page',
                           name=user_details["firstname"],
                           lastname=user_details["lastname"],
                           username=user_details["username"])
Example #10
0
File: views.py Project: alklyn/cfm
def users(username='******'):
    """Test view.
    To be removed in production system
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    if username == 'all':
        where_clause = "%s"
        params = (1, )
    else:
        where_clause = "username = %s"
        params = (username, )
    user_details = get_user_details(where_clause=where_clause, params=params)
    return render_template('users.html',
                           title='Users',
                           user_details=user_details)
Example #11
0
File: views.py Project: alklyn/cfm
def users(username='******'):
    """Test view.
    To be removed in production system
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    if username == 'all':
        where_clause = "%s"
        params = (1, )
    else:
        where_clause = "username = %s"
        params = (username, )
    user_details = get_user_details(where_clause=where_clause,
                                        params=params)
    return render_template('users.html',
                           title='Users',
                           user_details=user_details)
Example #12
0
File: views.py Project: alklyn/cfm
def save_ticket():
    """Save new tickets

    """
    if not is_logged_in():
        return redirect(url_for('login'))

    try:
        country_code = "+263"
        phone_number = country_code + request.form["phone_number"]

        add_ticket(
            request.form["caller_firstname"],
            request.form["caller_lastname"],
            phone_number,
            request.form["gender"],
            request.form["ward"],
            request.form["village"],
            request.form["topic"],
            request.form["priority"],
            request.form["partner"],
            request.form["programme"],
            request.form["details"],
            session["id"],
            request.form["agent"])

    except (AttributeError, NameError, HTTPException, KeyError) as error:
        message = "Error proceccing request."
    else:
        userid = session["id"]
        message = "Ticket successfully saved."
        data = get_user_details(where_clause="id = %s", params=(userid, ))
        user_details = data[0]

    flash(message)
    return redirect(url_for('index'))
Example #13
0
File: views.py Project: alklyn/cfm
def save_ticket_update():
    """Save update to a ticket.
    Will need to refactor this function. It's too big
    There are 3 possible update types.
        1. Normal update to a ticket.
        2. Close ticket.
        3. Reassign ticket to a different agent.
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    try:
        update_type = request.form["update_type"]
        if update_type == "3":
            #Re-assign Ticket
            new_agent_id = int(request.form["reassign_ticket"])
        else:
            details = request.form["update_details"]

    except (AttributeError, NameError, HTTPException, KeyError) as error:
        message = str(error)
        #message = "Error. Please contact IT."
        flash(message)
        return redirect(url_for('index'))

    userid = session["id"]
    message = "Update successfully posted."
    data = get_user_details(where_clause="id = %s", params=(userid, ))
    user_details = data[0]

    if update_type == "1":
        pass  #Nothig to do here yet!
    elif update_type == "2":
        #Close the ticket
        #update_table(table="", set_string="", data=(), where_string="")
        set_string = "status_id = %s"  #Corresponds to ticket closed
        data = (2, session["ticket_id"])
        where_string = "id = %s"
        update_table(table="ticket",
                     set_string=set_string,
                     where_string=where_string,
                     data=data)
        message = "Ticket successfully closed."

    elif update_type == "3":
        #Re-assign the ticket
        #get_tickets(where_clause="status_id = %s", params=(1, ))
        where_clause = "a.id = %s"
        params = (session["ticket_id"], )
        ticket = tickets = get_tickets(where_clause=where_clause,
                                       params=params)[0]

        agents = fetch_from_table(required_columns="firstname, lastname",
                                  where_clause="id = %s",
                                  params=(new_agent_id, ),
                                  table="agent")

        if agents:
            new_agent = agents[0]
        else:
            message = "Failed to re-assign ticket. Please contact IT."
            flash(message)
            return redirect(url_for('index'))

        details = "Ticket reassigned from {} to {} {}".format(
            ticket["rep"], new_agent["firstname"], new_agent["lastname"])

        #Now changed the agent in the ticket table
        set_string = "assigned_to = %s"
        data = (new_agent_id, session["ticket_id"])
        where_string = "id = %s"
        update_table(table="ticket",
                     set_string=set_string,
                     where_string=where_string,
                     data=data)
    else:
        #Invalid option chosen. Somehow?
        message = "Invalid option chosen. Somehow?"
        flash(message)
        return redirect(url_for('index'))

    add_update(update_type, session["ticket_id"], details, session["id"])

    flash(message)

    if update_type == "2":
        return redirect(url_for('index'))
    else:
        url = 'update_ticket/{}'.format(session["ticket_id"])
        return redirect(url)
Example #14
0
File: views.py Project: alklyn/cfm
def save_ticket_update():
    """Save update to a ticket.
    Will need to refactor this function. It's too big
    There are 3 possible update types.
        1. Normal update to a ticket.
        2. Close ticket.
        3. Reassign ticket to a different agent.
    """
    if not is_logged_in():
        return redirect(url_for('login'))

    try:
        update_type = request.form["update_type"]
        if update_type == "3" :
            #Re-assign Ticket
            new_agent_id = int(request.form["reassign_ticket"])
        else:
            details = request.form["update_details"]

    except (AttributeError, NameError, HTTPException, KeyError) as error:
        message = str(error)
        #message = "Error. Please contact IT."
        flash(message)
        return redirect(url_for('index'))

    userid = session["id"]
    message = "Update successfully posted."
    data = get_user_details(where_clause="id = %s", params=(userid, ))
    user_details = data[0]

    if update_type == "1":
        pass  #Nothig to do here yet!
    elif update_type == "2":
        #Close the ticket
        #update_table(table="", set_string="", data=(), where_string="")
        set_string = "status_id = %s"  #Corresponds to ticket closed
        data = (2, session["ticket_id"])
        where_string = "id = %s"
        update_table(
            table="ticket",
            set_string=set_string,
            where_string=where_string,
            data=data
            )
        message = "Ticket successfully closed."

    elif update_type == "3":
        #Re-assign the ticket
        #get_tickets(where_clause="status_id = %s", params=(1, ))
        where_clause="a.id = %s"
        params = (session["ticket_id"], )
        ticket = tickets = get_tickets(
            where_clause=where_clause,
            params=params)[0]

        agents = fetch_from_table(
                required_columns="firstname, lastname",
                where_clause="id = %s",
                params=(new_agent_id, ),
                table="agent")

        if agents:
            new_agent = agents[0]
        else:
            message = "Failed to re-assign ticket. Please contact IT."
            flash(message)
            return redirect(url_for('index'))

        details = "Ticket reassigned from {} to {} {}".format(
            ticket["rep"],
            new_agent["firstname"],
            new_agent["lastname"])

        #Now changed the agent in the ticket table
        set_string = "assigned_to = %s"
        data = (new_agent_id, session["ticket_id"])
        where_string = "id = %s"
        update_table(
            table="ticket",
            set_string=set_string,
            where_string=where_string,
            data=data
            )
    else:
        #Invalid option chosen. Somehow?
        message = "Invalid option chosen. Somehow?"
        flash(message)
        return redirect(url_for('index'))

    add_update(
        update_type,
        session["ticket_id"],
        details,
        session["id"])

    flash(message)

    if update_type == "2":
        return redirect(url_for('index'))
    else:
        url = 'update_ticket/{}'.format(session["ticket_id"])
        return redirect(url)