def get_assigned(ticket_number): validate_existence(ticket_number) parsed_data = sp.parseTicket(ticket_number, 'testsnot') try: owner = parsed_data['assigned_to'] except KeyError: return None return owner
def handleSNOTLogLine(line): print line, regex = r"^(?P<date>.+?) CMD: (?P<cmd>\w+?) TKT: (?P<tkt>\d+?) BY: (?P<by>.+?)($| TO: (?P<to>.+))?$" match = re.match(regex, line) if match: try: mdict = match.groupdict() message = str(mdict) ticketDict = sp.parseTicket(int(mdict['tkt'])) formattedTicket = sp.formatTicketDictSmart(ticketDict, config['snot']['formatString']) # "Case" statement for various ticket commands cmd = mdict["cmd"].lower() if cmd == "flags": message = "#{tkt} (\"" + ticketDict['subject'] + "\") flagged as {to} by {by}" message = message.format(**mdict) if mdict['to'] in config['snot']['alerts']['flag']: for target in config['snot']['alerts']['flag'][mdict['to']]: client.notice(target, "Flagged as %s: %s" % (mdict['to'], formattedTicket)) client.logger.write("SNOTMagic: Message '%s' sent to %s" % (formattedTicket, string.join(config['snot']['alerts']['flag'][mdict['to']], ", ")) ) reactor.wakeUp() elif cmd == "recv": client.msg(config['snot']['snot_channel'], "Received ticket #{tkt} from {by}".format(**mdict)) client.msg(config['snot']['snot_channel'], formattedTicket) return elif cmd == "resp": message = "{by} assigned #{tkt} to {to}".format(**mdict) elif cmd == "complete": message = "#{tkt} completed by {by}".format(**mdict) elif cmd == "delete": message = "#{tkt} deleted by {by}".format(**mdict) elif cmd == "update": message = "#{tkt} (\"" + ticketDict['subject'] + "\") updated by {by}" message = message.format(**mdict) elif cmd == "append": message = "#{tkt} appended to #{to} by {by}".format(**mdict) elif cmd == "autoresolve": message = "#{tkt} autoresolved - ({by})".format(**mdict) elif cmd == "priority" or cmd == "autopriority": message = "#{tkt} priority set to {to} by {by}".format(**mdict) else: message = line #client.logger.write("SNOTMagic: Message '%s' sent to %s" % (message, config['snot']['snot_channel'])) client.msg(config['snot']['snot_channel'], message) except KeyError as ke: client.logger.write(str(ke)) client.msg(config['snot']['snot_channel'], str(ke)) except TypeError as te: client.logger.write(str(te)) client.msg(config['snot']['snot_channel'], str(te)) else: client.msg("#snot", "Could not match '%s'" % line) reactor.wakeUp()
def authCallback(nick,account): if account in validUsers: for ticket in tickets: if ticket.isdigit(): ticketDict = sp.parseTicket(int(ticket), client.config['snot']['defaultCommand']) if (ticketDict): client.msg(channel, "Flagging %s (%s) as %s" % (ticket, ticketDict['subject'], flags)) message = "(Ticket flagged as %s by %s in %s)" % (flags,user,channel) SNOTMagic.flagTicket(int(ticket), "*****@*****.**" % validUsers[account], client.config, flagsArg, message) else: client.msg(channel, "%s does not appear to be a valid ticket" % (ticket,)) else: client.msg(channel, "Sorry, you are not authorized to perform that action")
def get_emails_involved(ticket_number): validate_existence(ticket_number) parsed_data = sp.parseTicket(ticket_number, 'testsnot') cc = parsed_data.get('cc_line') if cc is None: cc_line = [] else: cc_line = cc.split(',') to_line = parsed_data['to_line'].split(',') from_line = parsed_data['from_line'].split(',') inv = list(set(cc_line + to_line + from_line)) involved = [i.lstrip().strip() for i in inv ] return involved
def get_emails_involved(ticket_number): validate_existence(ticket_number) parsed_data = sp.parseTicket(ticket_number, 'testsnot') cc = parsed_data.get('cc_line') if cc is None: cc_line = [] else: cc_line = cc.split(',') to_line = parsed_data['to_line'].split(',') from_line = parsed_data['from_line'].split(',') inv = list(set(cc_line + to_line + from_line)) involved = [i.lstrip().strip() for i in inv] return involved
def import_ticket(ticket, es_index): t = int(ticket) parsed_data = sp.parseTicket(t, 'testsnot') ticket_content = snot.get_ticket(t) ticket_content_raw = snot.get_ticket_raw(t) es.index(index=es_index, doc_type="snot-ticket-content", id=("{0}-content".format(ticket)), body={"content": ticket_content}) es.index(index=es_index, doc_type="snot-ticket-content-raw", id=("{0}-content-raw".format(ticket)), body={"content": ticket_content_raw}) b = es.index(index=es_index, doc_type="snot-ticket", id=ticket, body=parsed_data)
def authCallback(nick,account): if account in validUsers: for ticket in tickets: if ticket.isdigit(): ticketDict = sp.parseTicket(int(ticket), client.config['snot']['defaultCommand']) if (ticketDict): client.msg(channel, "Completing %s (%s)" % (ticket, ticketDict['subject'])) message = "(Ticket comped by %s in %s)" if userMessage: message = userMessage + "\n\n" + message SNOTMagic.completeTicket(int(ticket), "*****@*****.**" % validUsers[account], client.config, message % (user,channel)) else: client.msg(channel, "%s does not appear to be a valid ticket" % (ticket,)) else: client.msg(channel, "Sorry, you are not authorized to perform that action")
def get_flags(ticket_number): validate_existence(ticket_number) parsed_data = sp.parseTicket(ticket_number, 'testsnot') flags = parsed_data['flags'].split(',') return flags
def get_to(ticket_number): validate_existence(ticket_number) parsed_data = sp.parseTicket(ticket_number, 'testsnot') to_line = parsed_data['to_line'] return to_line
def get_metadata(ticket_number): validate_existence(ticket_number) parsed_data = sp.parseTicket(ticket_number, 'testsnot') return parsed_data
def get_cc(ticket_number): validate_existence(ticket_number) parsed_data = sp.parseTicket(ticket_number, 'testsnot') cc_line = parsed_data['cc_line'] return cc_line