Ubuntu 14.04 Redmine

环境

Redmine version:3.X
Ruby version : 1.9.3
MySql version : 5.5.43

Redmine下载地址

安装方法

需要注意的是使用的ruby是1.9以上,所以必须为mysql2

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: my_password

邮箱配置方法:(要注意缩进)

  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: false
      address: 'mail.**.**.**'
      port: 25
      domain: 'mail.**.**.**' # 'your.domain.com' for GoogleApps
      authentication: :login
      user_name: 'xuqi'
      password: '******'

备忘:

查看当前进程ID:

cat tmp/pids/server.pid

后台启动redmine:

nohup bundle exec rails server -b 172.26.14.92 webrick -e production &

使用Rest API 批量生成Task

需求:从Excel读取所有的task信息,并使用这些信息生成Task。
关键代码:

class CreateRedmine():
    def __init__(self, redmineExportXls):
        self.RMDataXls = redmineExportXls
        self.RMDataList = []
        self.LoadRMDataOK = False
        self.redmine = Redmine('http://172.26.14.92:3000/', key='1cb880c401e940a589768f96a6ba6528bda87959')
        self.project = 'XXXX'
        #data load
        self.loadRedmineData()
        pass

    def loadRedmineData(self):
        try:
            XlsFile = xlsRWLib(self.RMDataXls)
            XlsFile.openReadExcel()
            strSheetName = excelFormatDef.RM_DATA_SHEET_NAME
            taskid = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_TASK_ID, 1 )
            taskfollow = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_TASK_FOLLOW, 1 )
            taskName = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_TASK, 1 )
            endSchedule = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_FINISH_DAILY, 1 )
            startDate = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_START_DAILY, 1 )
            taskProgress = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_PROGRESS, 1 )
            taskTimer = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_TIMER, 1 )
            taskComment = XlsFile.getColVal(strSheetName, excelFormatDef.RM_COL_COMMENT, 1 )

            self.LoadRMDataOK = True
        except:
            self.LoadRMDataOK = False
            print('>>>>>ERROR: open %s excel file failed,please input the address is ok?!' % (self.RMDataXls))
            return
        for i in range(0, len(taskName)):
            task= {'taskName':taskName[i],'endSchedule':endSchedule[i],'taskProgress':taskProgress[i],'taskTimer':taskTimer[i],'taskComment':taskComment[i],'taskid':taskid[i],'taskFollow':taskfollow[i],'startDate':startDate[i]}
            if task['taskName'].find('MM') > 0:
                self.RMDataList += [task]
                startIndex = task['taskName'].find('MM')
                endIndex = task['taskName'].find(' ')
                screenid =  str(task['taskName'][startIndex:endIndex])
                taskname = task['taskName'][0:startIndex-1]
                if excelFormatDef.SCREEN.has_key(screenid):
                    self.createRedmineIssue(task,screenid,taskname)
        pass

    def createRedmineIssue(self,task,screen,taskname):
        print screen
        issue = self.redmine.issue.new()
        issue.project_id = self.project
        issue.subject = task['taskName']
        issue.tracker_id = 5
        issue.description = ''
        issue.status_id = 3
        issue.done_ratio = task['taskProgress']
        issue.assigned_to_id = excelFormatDef.SCREEN[screen]
        issue.watcher_user_ids = self.getWatcher(excelFormatDef.SCREEN[screen])
        issue.custom_fields = [{'id': 1, 'value': task['taskid']},{'id': 2, 'value': screen},{'id': 3, 'value': taskname}]
        issue.due_date = datetime.datetime.strptime(str(task['endSchedule']), "%Y-%m-%d").date() - 7
        issue.start_date = datetime.datetime.strptime(str(task['startDate']), "%Y-%m-%d").date() -7
        issue.save()
        pass

    def getWatcher(self,user):
        watcher = []
        if user == excelFormatDef.USER_CC:
            watcher = [excelFormatDef.USER_SGX]
        elif user == excelFormatDef.USER_CP:
            watcher = [excelFormatDef.USER_WL]
        else:
            pass
        watcher += [excelFormatDef.USER_XQ]
        return watcher

    def reportSchedule(self):
        # check data load success?
        if not self.LoadRMDataOK:
            print '#####>>>>>>>##### Have Error! RUN STOP!!!!!!'
            return
        pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值