def getReport(self, reportDate = None, beginDate = None, endDate = None, users = None): fab = self.fab if reportDate == None: today = date.today() reportDate = today else: today = reportDate if users == None: users = getUsers(fab) if beginDate == None: yestoday = today - timedelta(days = 1) else: yestoday = beginDate targetDate = yestoday while targetDate.weekday() > 4: targetDate = targetDate - timedelta(days = 1) Banner()\ .addLine(u"Phabricator Daily Report")\ .addLine("")\ .addLine(targetDate.strftime("Target Date: %Y-%m-%d").decode('utf-8'))\ .addLine(reportDate.strftime("Report Date: %Y-%m-%d").decode('utf-8'))\ .output() #TODO ioc loader and descriptor? transactionLoader = ObjectTransactionsGetterBuilder() transFormatter = TransactionFormatter() taskInfoProvider = TaskInfoFactory(fab = fab) for user in users: print u"===============" print ' ', user['realName'] print u"===============" with CacheUsers(users): try: activities = getUserActivitiesBetweenDays(today, targetDate, fab, user) for activity in activities: print activity['text'] continue objectId = activity['data'][u'objectPHID'] transactionKeys = activity['data'][u'transactionPHIDs'] try: transactions = transactionLoader.getObjectTransactions(fab, objectId) except Exception, e: print "transcation on unknow object: %s" % (objectId, ) transactions = [] transactions = filter(lambda x: x['transactionPHID'] in transactionKeys, transactions) for tran in transactions: print u"Transaction({tranid}) on \"{task}\":".format(tranid = tran['transactionID'], task = taskInfoProvider.longTitle(int(tran['taskID']))) print transFormatter.format(fab, tran) except Exception, e: print e
u"周日", ] lastWorkday = getLastWorkday(lastValidDay) updateAfter = datetime( lastWorkday.year, lastWorkday.month, lastWorkday.day, 9, 00) tsp = int(mktime(updateAfter.timetuple())) fab = getFab() users = getUsers(fab) tf = TaskInfoFactory(fab = fab) resp = fab.maniphest.search(queryKey = None, constraints = {'modifiedStart': tsp}).response tasks = resp['data'] filters = [ (partial(isCreateAfter, updateAfter), u"新建的项目"), (None, u"待验证的项目"), (None, u""), (None, u""), (None, u""), (None, u""), (None, u""),
from transaction import ObjectTransactionsGetterBuilder, TransactionFormatter from pprint import pprint as ppr from user import CacheUsers, UserInfo from printers import Banner from task import TaskInfoFactory import sys, argparse import xlsxwriter as xw argsParser = argparse.ArgumentParser() argsParser.add_argument("-o", help = u"output xlsx filename", default = "assigned.xlsx") args = argsParser.parse_args() fab = getFab() users = getUsers(fab) tf = TaskInfoFactory(fab = fab) reportDate = datetime.now() def getRemainsTime(tid): return tf.remainsTimeDesription(tid, datetime.now()) columns = [ (u'标题', tf.longTitle), (u'负责人', tf.owner), (u'截止时间', tf.deadline), (u'剩余时间', getRemainsTime), (u'状态', tf.status), (u'优先级', tf.priority), (u'预估工时', tf.points), (u"发起人", tf.author),