log_line.py
author Tero Marttila <terom@fixme.fi>
Mon, 16 Feb 2009 03:25:00 +0200
changeset 137 a25d1bf758e6
parent 97 6165f1ba458d
permissions -rw-r--r--
moar pimping of the error page... at this point, error messages are becoming more of a feature than a bug
41
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
     2
    An IRC logfile consists of a series of lines/events
41
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
     5
class LogTypes :
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
     6
    """
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
     7
        Definitions of the various LogLines types:
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
     8
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
     9
            LogTypes.RAW
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    10
            LogTypes.LOG_OPEN
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    11
            LogTypes.LOG_CLOSE
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    12
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    13
            LogTypes.MSG
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    14
            LogTypes.NOTICE
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    15
            LogTypes.ACTION
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    16
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    17
            LogTypes.JOIN
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    18
            LogTypes.PART
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    19
            LogTypes.KICK
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    20
            LogTypes.MODE
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    21
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    22
            LogTypes.NICK
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    23
            LogTypes.QUIT
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    24
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    25
            LogTypes.TOPIC
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    26
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    27
            LogTypes.SELF_NOTICE
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    28
            LogTypes.SELF_NICK
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    29
    """
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    30
 
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    31
    # list of LogType values by name
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    32
    LIST = [
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    33
        ## special
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    34
        # unknown type, may or may not have a timestamp, no source, only data
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    35
        ('RAW',         0x01),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    36
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    37
        # log opened
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    38
        ('LOG_OPEN',    0x02),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    39
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    40
        # log closed
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    41
        ('LOG_CLOSE',   0x03),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    42
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    43
        ## messages
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    44
        # <source> sent message <data> to <channel>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    45
        ('MSG',         0x10),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    46
        
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    47
        # <source> sent notice with message <data> to <channel>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    48
        ('NOTICE',      0x11),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    49
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    50
        # <source> sent CTCP action with message <data> to <channel>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    51
        ('ACTION',      0x12),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    52
        
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    53
        ## user-channel stats
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    54
        # <source> joined <channel>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    55
        ('JOIN',        0x21),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    56
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    57
        # <source> left <channel> with message <data>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    58
        ('PART',        0x22),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    59
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    60
        # <source> kicked <target> from <channel> with message <data>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    61
        ('KICK',        0x25),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    62
     
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    63
        # <source> changed modes on <channel> with modestring <data>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    64
        ('MODE',        0x26),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    65
        
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    66
        ## user status
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    67
        # <source> changed nickname to <target>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    68
        ('NICK',        0x31),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    69
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    70
        # <source> quit the network with quit-message <data>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    71
        ('QUIT',        0x32),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    72
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    73
        ## general channel status
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    74
        # <source> changed the topic of <channel> to <data>
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    75
        # data may be None if the topic was unset
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    76
        ('TOPIC',       0x41),
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    77
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    78
        ## our own actions
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    79
        # we (<source>) sent a notice with message <data> to <channel>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    80
        ('SELF_NOTICE', 0x51),
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    81
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
    82
        # we (<source>) changed nickname to <target>
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    83
        ('SELF_NICK',   0x52),
97
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    84
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    85
        ## slightly weirder bits
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    86
        # netsplit between <source_hostname> and <target_hostname>, <data> is a space-separated list of <chanflags><nickname>s affected
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    87
        # the last item in the list of nicknames may also be of the form "+<count>", where count is the number of additional, but hidden, nicknames affected
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    88
        ('NETSPLIT_START',  0x61),
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    89
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    90
        # netsplit over, <data> is a list of users affected, see NETSPLIT_START
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
    91
        ('NETSPLIT_END',    0x062),
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    92
    ]
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
    93
    
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    94
    @classmethod
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    95
    def name_from_code (cls, code) :
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    96
        """
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    97
            Looks up a LogType name by code
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    98
        """
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
    99
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   100
        return dict((type, name) for name, type in cls.LIST)[code]
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   101
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   102
# apply as attributes
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   103
for name, code in LogTypes.LIST :
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   104
    setattr(LogTypes, name, code)
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   105
97
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
   106
# masks
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
   107
LogTypes._NETSPLIT_MASK = 0x60
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
   108
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   109
class LogLine (object) :
41
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
    """
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
        An event on some specific channel
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
    """
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   114
    # the LogChannel
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   115
    channel = None
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   116
64
cdb6403c2498 beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   117
    # the offset, only garunteed to be unique for a specific channel and date
cdb6403c2498 beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   118
    offset = None
cdb6403c2498 beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   119
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   120
    # the event type, as defiend in LogTypes
41
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
    type = None
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
    # the UTC timestamp of the event
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
    timestamp = None
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   126
    # the source, this should be a (nickname, username, hostname, chanflags) tuple
41
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
    source = None
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   129
    # possible target nickname for certain types (kick, nick)
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   130
    target = None
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   131
41
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
    # associated data (message, etc)
9585441a4bfb working basic logs stuff
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
    data = None
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   134
    
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   135
    def __init__ (self, channel, offset, type, timestamp, source, target, data) :
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   136
        """
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   137
            Initialize with given values
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   138
        """
64
cdb6403c2498 beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   139
        
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   140
        self.channel = channel
64
cdb6403c2498 beginnings of a LogSearchIndex class
Tero Marttila <terom@fixme.fi>
parents: 50
diff changeset
   141
        self.offset = offset
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   142
        self.type = type
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   143
        self.timestamp = timestamp
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   144
        self.source = source
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   145
        self.target = target
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   146
        self.data = data
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   147
    
90
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   148
    def format_type (self) :
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   149
        """
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   150
            Formats type as a string code
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   151
        """
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   152
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   153
        return LogTypes.name_from_code(self.type)
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   154
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   155
    def format_source (self) :
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   156
        """
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   157
            Formats source as [<chanflags>][<nickname>][!<username>][@<hostname>], omitting those parts that are missing.
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   158
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   159
            If all parts are None, this returns the empty string
90
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   160
        """
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   161
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   162
        nick, user, host, flags = self.source
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   163
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   164
        return "%s%s%s%s" % (
91
df2a6780cdf9 make LogLine.format_source slightly less misleading
Tero Marttila <terom@fixme.fi>
parents: 90
diff changeset
   165
            flags if flags and flags != ' ' else '',
90
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   166
            nick if nick else '',
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   167
            '!' + user if user else '',
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   168
            '@' + host if host else ''
86
645cf9c4441e implement full parser+formatter for irssi
Tero Marttila <terom@fixme.fi>
parents: 64
diff changeset
   169
        )
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   170
   
97
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
   171
    def __unicode__ (self) :
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   172
        return '\t'.join((
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   173
            self.channel.name,
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   174
            str(self.offset),
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   175
            self.format_type(),
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   176
            str(self.timestamp),
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   177
            self.format_source(),
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   178
            str(self.target),
97
6165f1ba458d implement parser/formatter netsplits and day-change
Tero Marttila <terom@fixme.fi>
parents: 92
diff changeset
   179
            unicode(self.data)
92
74f6a0b01ddf change debug formatter to to use str(LogLine) for TSV, and fix handling of topic-unset
Tero Marttila <terom@fixme.fi>
parents: 91
diff changeset
   180
        ))
50
f13cf27a360b implement more LogSource features (logs for date, cleanup last_logs), implement irssi parser, formatter, other misc. stuff
Tero Marttila <terom@fixme.fi>
parents: 46
diff changeset
   181
90
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   182
    def __repr__ (self) :
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   183
        return "LogLine(%r, %s, %-12s, %s, %-35s, %-10s, %r)" % (
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   184
            self.channel, self.offset, self.format_type(), self.timestamp, self.format_source(), self.target, self.data
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   185
        )
275a675712f1 clean up repr(LogLine) output
Tero Marttila <terom@fixme.fi>
parents: 86
diff changeset
   186