# -*- coding: utf-8 -*- # make target project # copy versions and categories from redmineorg from redminelib import Redmine from redminelib.exceptions import ResourceNotFoundError from redminelib.exceptions import ServerError import datetime import time # 認証情報と共通定義は別ファイルから読み込む import authinfo redmine_org_url=authinfo.redmine_org_url redmine_copy_url=authinfo.redmine_copy_url # redmine_tokyo_url=authinfo.redmine_tokyo_url redmine_org_id =authinfo.redmine_org_id redmine_org_pass=authinfo.redmine_org_pass redmine_copy_key=authinfo.redmine_copy_key #redmine_tokyo_key=authinfo.redmine_tokyo_key redmine_org_pjname=authinfo.redmine_org_pjname redmine_copy_pjname=authinfo.redmine_copy_pjname vote_tracker_id=authinfo.vote_tracker_id # connect redmine site redmine_copy = Redmine(redmine_copy_url , key=redmine_copy_key) # redmine_tokyo = Redmine(redmine_tokyo_url, key=redmine_tokyo_key) redmine_org = Redmine(redmine_org_url, username=redmine_org_id, password=redmine_org_pass) # make target project project_copyto = redmine_copy.project.new() project_copyto.name = redmine_copy_pjname project_copyto.identifier = redmine_copy_pjname project_copyto.description = redmine_copy_pjname project_copyto.tracker_id=[vote_tracker_id] project_copyto.save() # get copyto project id project_copyto = redmine_copy.project.get(redmine_copy_pjname) project_copyto_id=project_copyto.id print "made copyto project ", ",ID=",project_copyto_id,",identifier=",redmine_copy_pjname # copy version definition print "copy versions" redmine_org_versions = redmine_org.version.filter(project_id=redmine_org_pjname) redmine_org_last_versions = redmine_org.version.filter(project_id=redmine_org_pjname,limit=1,offset=len(redmine_org_versions)-1) # get last version ID last_version_id=redmine_org_last_versions[0].id # create version definition . # loop until last version ID # because of deleted version definition. for i in range(1,last_version_id+1): version=redmine_copy.version.create(project_id=project_copyto_id,name=str(i)) # copy version definition from redmine-org to redmine-copy # due_date and wiki_page_title for old_version in redmine_org_versions: redmine_copy.version.update( old_version.id, name=old_version.name, status='open', sharing=old_version.sharing, # due_date=old_version.due_date, description=old_version.description # wiki_page_title=old_version.wiki_page_title ) # copy issue_categories definition from redmine-org to redmine-copy print "copy issue_categories" redmine_org_pj = redmine_org.project.get(redmine_org_pjname,include=['issue_categories']) redmine_org_issue_categories=redmine_org_pj.issue_categories # get max(category_id) max_category_id=0 for category in redmine_org_issue_categories: # print category.id , category.name if category.id>max_category_id: max_category_id=category.id # print max_category_id # create version definition . # loop until last version ID # because of deleted version definition. for i in range(1,max_category_id+1): category=redmine_copy.issue_category.create(project_id=redmine_copy_pjname,name=str(i)) # copy category definition from redmine-org to redmine-copy for old_issue_category in redmine_org_issue_categories: redmine_copy.issue_category.update( old_issue_category.id, name=old_issue_category.name # sharing=old_category.sharing, # assigned_to_id=old_issue_category.assigned_to_id ) # print old_issue_category.id,old_issue_category.name