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)
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'))
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)
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)
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)
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"])
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)
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'))
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)
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)