Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
 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()
Beispiel #4
0
 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")
Beispiel #5
0
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
Beispiel #6
0
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)
Beispiel #8
0
            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 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)
Beispiel #10
0
def get_flags(ticket_number):
    validate_existence(ticket_number)
    parsed_data = sp.parseTicket(ticket_number, 'testsnot')
    flags = parsed_data['flags'].split(',')
    return flags
Beispiel #11
0
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
Beispiel #12
0
def get_flags(ticket_number):
    validate_existence(ticket_number)
    parsed_data = sp.parseTicket(ticket_number, 'testsnot')
    flags = parsed_data['flags'].split(',')
    return flags
Beispiel #13
0
def get_metadata(ticket_number):
    validate_existence(ticket_number)
    parsed_data = sp.parseTicket(ticket_number, 'testsnot')
    return parsed_data
Beispiel #14
0
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
Beispiel #15
0
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
Beispiel #16
0
def get_metadata(ticket_number):
    validate_existence(ticket_number)
    parsed_data = sp.parseTicket(ticket_number, 'testsnot')
    return parsed_data
Beispiel #17
0
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