def download_all_files(username,password,redmine_url,issues,savepath): """username->(String) redmine username password->(String) redmine password redmine_url->(String) server address for redmine issues->(list (redmine.issue)) list of redmine issues to download files from savepath->(String) path to save the files to downloads all of the files in each issue provided to the given path""" redmine = Redmine(redmine_url,username=username,password=password) # connect to redmine for issue in issues: for f in issue.attachments: redmine.download(f['content_url'],savepath=savepath)
def save_from_redmine_to_redmine(self, issue, project): redmine_main_tasks_manager = Redmine(self.main_task_manager.url, key=self.main_task_manager.api_key) user = redmine_main_tasks_manager.user.get(issue.author.id) logger.info("Issue {} is processed".format(issue.id)) new_issue = Redmine(self.sync_task_manager.url, key=self.sync_task_manager.api_key, impersonate=self.mapping("username", user.login)).issue.new() new_issue.project_id = project new_issue.subject = issue.subject new_issue.tracker_id = self.mapping("tracker_id", issue.tracker.id) new_issue.description = issue.description new_issue.status_id = self.mapping("status_id", issue.status.id) new_issue.priority_id = self.mapping("priority_id", issue.priority.id) if hasattr(issue, "assigned_to"): new_issue.assigned_to_id = self.mapping("user_id", issue.assigned_to.id) if hasattr(issue, "watchers"): # It's not working! watcher_user_ids = [] for watcher in issue.watchers: watcher_user_ids.append(self.mapping("user_id", watcher.id)) new_issue.watcher_user_ids = watcher_user_ids if hasattr(issue, "start_date"): new_issue.start_date = issue.start_date if hasattr(issue, "due_date"): new_issue.due_date = issue.due_date if hasattr(issue, "estimated_hours"): new_issue.estimated_hours = issue.estimated_hours new_issue.done_ratio = issue.done_ratio if issue.attachments: upload_list = [] for attachment in issue.attachments: redmine_main_tasks_manager.download(attachment.content_url, savepath='/tmp/', filename=attachment.filename) upload_list.append({'path': '/tmp/' + attachment.filename, 'filename': attachment.filename, 'description': attachment.description}) new_issue.uploads = upload_list new_issue.save() self.mapping_dict_issue_id[str(issue.id)] = new_issue.id self.save() time_entries = redmine_main_tasks_manager.time_entry.filter(issue_id=issue.id) if time_entries: for time_entry in time_entries: user = redmine_main_tasks_manager.user.get(time_entry.user.id) new_time_entry = Redmine(self.sync_task_manager.url, key=self.sync_task_manager.api_key, impersonate=self.mapping("username", user.login)).time_entry.new() new_time_entry.user_id = self.mapping("user_id", time_entry.user.id) if issue.id == time_entry.issue.id: # if we have related tasks then time entries are doubled and we need to check it new_time_entry.issue_id = new_issue.id new_time_entry.spent_on = time_entry.spent_on new_time_entry.hours = time_entry.hours new_time_entry.activity_id = time_entry.activity.id new_time_entry.comments = time_entry.comments new_time_entry.save() # adding notes to the task if issue.journals: for arg in issue.journals: if arg.notes: user = redmine_main_tasks_manager.user.get(arg.user.id) update_issue = Redmine(self.sync_task_manager.url, key=self.sync_task_manager.api_key, impersonate=self.mapping("username", user.login)).issue.get(new_issue.id) update_issue.notes = arg.notes update_issue.save()