Esempio n. 1
0
def buildGhiEditMsg(issueID):
	indexIssue = Issue(issueID)
	headIssue = Issue(issueID,"HEAD")
	
	issueDisp = IssueDisplayBuilder(indexIssue)

	if indexIssue.getStatus() != headIssue.getStatus():
		headIssueDisp = IssueDisplayBuilder(headIssue)
		msg = ("ghi-edit "
				+ "(" + headIssueDisp.getStatusStr() + "->" + issueDisp.getStatusStr() + ") " 
				+ "Issue #" + issueDisp.getShortIdStr() + ": " + issueDisp.getTitle())
	else:
		msg = "ghi-edit Issue #" + issueDisp.getShortIdStr() + ": " + issueDisp.getTitle() 
	
	return msg
Esempio n. 2
0
 def __init__(self, issue):
     if issue and type(issue) is str:
         self._issue = Issue(issue)
     else:
         self._issue = issue
Esempio n. 3
0
class IssueDisplayBuilder:
    def __init__(self, issue):
        if issue and type(issue) is str:
            self._issue = Issue(issue)
        else:
            self._issue = issue
    
    def getFullIssueDisplay(self):
        from groups.group import getGroupsForIssueId
        lines = []
        lines.extend([str(Color('yellow')) + 
                    "Issue ID: " + self.getIdStr() + '\n'])
        
        lines.extend([str(Color('none')) + "Created: "
                        + str(Color('green')) + self.getCreatedDateStr() + '\t' 
                        + str(Color('none')) + "Author: " + self.getCreatedAuthorStr() + '\n'])
                
        lines.extend([str(Color('none')) + "Modified: " 
                        + str(Color('green')) + self.getModifiedDateStr() + '\t' 
                        + str(Color('none')) + "Author: " + self.getModifiedAuthorStr() + '\n'])
                
        lines.extend([str(Color('none')) + "Status: " 
                        # The tab formatting here is horribly wrong, but works for now... need to fix it later :(
                        + self.getStatusStr() + ('\t\t\t' if len(self.getStatusStr()) < 7 else '\t\t')
                        + str(Color('none')) + "Groups: "
                        + str(Color('blue')) + ', '.join(getGroupsForIssueId(self.getIdStr()))
                        + '\n'])
        
        lines.extend(['\n'])
        lines.extend([str(Color('none')) + 
                    "Title: " + self.getTitle() + '\n'])
        lines.extend(['-' * 80])
        
        lines.extend(['\n'])
        lines.extend(str(Color('none')) +
                    self.getDescription())
        
        line = ""
        for l in lines: 
            line += l
        
        return line
    
    def getOneLineStr(self, columns):
        from groups.group import getGroupsForIssueId
        line = ""
        for column in columns:
            color = str(column.color)
            field = "" 
            if column.name == 'id':
                field = self.getShortIdStr()
            elif column.name == 'status':
                field = self.getStatusStr()
            elif column.name == 'title':
                field = self.getTitle()
            elif column.name == 'cdate':
                field = self.getCreatedDateStr()
            elif column.name == 'mdate':
                field = self.getModifiedDateStr()
            elif column.name == 'groups':
                field = ', '.join(getGroupsForIssueId(self.getIdStr()))
            
            line += color + truncateOrPadStrToWidth(field, column.length) + '  '
                
        return line
    
    def getIdStr(self):
        return self._issue.getId()
    
    def getShortIdStr(self):
        return self._issue.getId()[:7]
    
    def getTitle(self):
        return self._issue.getTitle(False)
    
    def getStatusStr(self):
        if not hasattr(self,'_issue'):
            self._loadFullIssue()
        return config.STATUS_OPTS[int(self._issue.getStatus())]

    def getDescription(self):
        return self._issue.getDescription()
                
    def getCreatedDateStr(self):
        if self._issue.getCreatedDate() == 0:
            return "Not yet committed"
        return self._formatDateFromTimestamp(self._issue.getCreatedDate())
    
    def getModifiedDateStr(self):
        if self._issue.getModifiedDate() == 0:
            return "Not yet committed"
        return self._formatDateFromTimestamp(self._issue.getModifiedDate())
    
    def getCreatedAuthorStr(self):
        return (self._issue.getCreatedAuthorName()
            + "<" + self._issue.getCreatedAuthorEmail() + ">")
    
    def getModifiedAuthorStr(self):
        return (self._issue.getModifiedAuthorName()
            + "<" + self._issue.getModifiedAuthorEmail() + ">")
    
    def _formatDateFromTimestamp(self, timestamp):
        import datetime
        return datetime.datetime.fromtimestamp(int(timestamp)).strftime('%Y-%m-%d %H:%M:%S')