Ejemplo n.º 1
0
  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""),
Ejemplo n.º 3
0
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),