review.py #1

  • //
  • guest/
  • matthew_janulewicz/
  • p4spam-1.1/
  • pylib/
  • p4spam/
  • perforce/
  • commands/
  • review.py
  • View
  • Commits
  • Open Download .zip Download (2 KB)
##
## Copyright (c) 2006 Jason Dillon
##
## Licensed under the Apache License, Version 2.0 (the "License");
## you may not use this file except in compliance with the License.
## You may obtain a copy of the License at
##
##     http://www.apache.org/licenses/LICENSE-2.0
##
## Unless required by applicable law or agreed to in writing, software
## distributed under the License is distributed on an "AS IS" BASIS,
## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
## See the License for the specific language governing permissions and
## limitations under the License.
##

##
## $Id: review.py 27 2006-04-15 06:54:37Z user57 $
##

import re

from p4spam.perforce import P4Field, P4Code, P4Exception
from p4spam.perforce.commands import ResultSupport, StreamedResultCommand

COMMAND_NAME = "review"

##
## ReviewCommand
##

class ReviewCommand(StreamedResultCommand):
    
    def __init__(this, p4):
        StreamedResultCommand.__init__(this, COMMAND_NAME, p4)
    
    def createResult(this, entry):
        return ReviewInfo(entry)

class ReviewInfo(ResultSupport):
    
    # Change 25080 jdillon <[email protected]> (Jason Dillon)
    DATA_RE = re.compile(r'^Change (\S+) (\S+) <(\S+)> \((.+)\)$')
    
    def __init__(this, entry):
        if entry[P4Field.CODE] == P4Code.INFO:
            (changenumber, this.user, this.email, this.fullname) = this.DATA_RE.match(entry[P4Field.DATA]).groups()
            this.changenumber = int(changenumber)
            
        elif entry[P4Field.CODE] == P4Code.STAT:
            this.changenumber = int(entry['change'])
            this.user = entry['user']
            this.fullname = entry['name']
            this.email = entry['email']
        
        else:
            assert "Unexpected data: %s" % str(entry)
    
    def toString(this):
        return "@%s %s <%s> (%s)" % (this.changenumber, this.user, this.email, this.fullname)
    
    def __str__(this):
        return this.toString()
    
    def __repr__(this):
        return this.toString()

##
## perforce.commands factory interface
##

def create(p4):
    return ReviewCommand(p4)

# Change User Description Committed
#1 7731 Matthew Janulewicz Adding P4Spam 1.1 code from http://p4spam.sourceforge.net/wiki/Main_Page

"P4Spam is a Perforce change review daemon which spits out sexy HTML-styled notification emails."