====================== openpyxl-redmine admin ====================== .. note:: Below *etest-admin* is used in the examples. To perform real work replace *etest* by the acronym of the Redmine project procedure to be worked with (e.g. pmo, erd, crd...). .. warning:: Good practice is to start each session with your working Redmine project by using the workflow_in_redmine command to certify that it's the right Redmine project. Overview -------- The admin module provides additional Redmine management features including creating and maintaining Redmine username-id and project_id identification files required by other modules in the package. Authorization and execution is identical to that described in the workflow chapter and not repeated here. Admin commands -------------- Use the -h request to view module help text. Currently it shows: :: $ ptc-admin -h usage: ptc-admin [-h] [--username USERNAME] password {create_userid_file,update_userid_file, which_user,get_redmine_project_containers, create_redmine_project_container,move_issue_to_container} positional arguments: password if --username then password, else user's API key {create_userid_file,update_userid_file,which_user, get_redmine_project_containers,create_redmine_project_container, move_issue_to_container} create_userid_file creates a username:id file update_userid_file updates a username:id file which_user prints fuzzy matches to username get_redmine_project_containers get redmine project container names and ids create_redmine_project_container get usernames in id range, slow 1-by-1 hence printout move_issue_to_container moves issue to project container optional arguments: -h, --help show this help message and exit --username USERNAME account with access rights to EuXFEL Redmine Admin command parameters ------------------------ Use the sub-command -h to view sub-command help text, e.g. :: $ ptc-admin $API_key create_userid_file -h usage: ptc-admin password create_userid_file [-h] filename positional arguments: filename filename to store results, type optional arguments: -h, --help show this help message and exit A cut-and-paste from source code listing for all sub-commands shows: :: sub_commands = { 'create_userid_file': { 'help': 'creates a username:id file', 'params': [('filename', str, 'filename to store results')]}, 'update_userid_file': { 'help': 'updates a username:id file', 'params': [('filename', str, 'filename of results to extend')]}, 'which_user': { 'help': 'prints fuzzy matches to username ', 'params': [('filename', str, 'filename of Redmine users & ids'), ('username', str, 'name to match')]}, 'get_redmine_project_containers': { 'help': 'get redmine project container names and ids', 'params': [('filename', str, 'filename to store results')]}, 'create_redmine_project_container': { 'help': 'get usernames in id range, slow 1-by-1 hence printout', 'params': [('parent_project_id', int, 'parent container id'), ('target_project_name', str, 'container name')]}, 'move_issue_to_container': { 'help': 'moves issue to project container', 'params': [('issue id', int, 'issue_id'), ('project id', int, 'project_id')]} } create_userid_file ------------------ Creates a userid json file containing a Redmine user name keyed dictionary of Redmine ids. The dictionary is used during task Assignee name validation and id allocation. :: $ ptc-admin $API_key create_userid_file playground/tmp.json keep 1 Bartosz Poljancewicz (redmine) miss 2 ... keep 244 Djelloul Boukhelef ^C KeyboardInterrupt $ cat playground/tmp.json { "user_ids": { "Bartosz Poljancewicz (redmine)": 1, ... "Djelloul Boukhelef": 244 } } update_userid_file ------------------ Updates the userid json file by scanning the next 100 ids following the last in the file dictionary. :: $ ptc-admin $API_key update_userid_file playground/tmp.json last user id stored was: 244 keep 244 Djelloul Boukhelef keep 245 Janusz Szuba ... keep 255 Mikhail Yakopov ^Cadding 11 user ids (base) youngman@cypc2:~/ptc/openpyxl-redmine$ !cat cat playground/tmp.json { "user_ids": { "Bartosz Poljancewicz (redmine)": 1, ... "Mikhail Yakopov": 255 } } which_user ---------- Dumps the best 3 userid name matches (and probabilities) in the dict to the name specified followed by the candidate's Redmine ids. There are ~2k users registered and inspite of the mistype the fuzzywuzzy package gets it right, but clearly there has to be a limit and specifying first and lastnames is recommended (there may be two Yungmans) :: $ ptc-admin $API_key which_user src/config/everybodies_ids.json yungman best 3 matches to: yungman were: [('Christopher Youngman', 77), ('Ulf Brueggmann', 64), ('Oleg Engelmann', 64)] redmine user ids: [('Christopher Youngman', 241), ('Ulf Brueggmann', 604), ('Oleg Engelmann', 652)] $ ptc-admin $API_key which_user src/config/everybodies_ids.json 'christ yungman' best 3 matches to: christ yungman were: [('Christopher Youngman', 82), ('Eike-Christian Martens', 58), ('Christian Holz', 57)] redmine user ids: [('Christopher Youngman', 241), ('Eike-Christian Martens', 754), ('Christian Holz', 693)] get_redmine_project_containers ------------------------------ Project container (aka folder) names are not unique, but the project_id is. :: $ ptc-admin $API_key get_redmine_project_containers playground/tmp.json this will take some time - wait! could see 529 projects {'name': 'XFEL', 'created_on': '2014-10-01T15:03:50', 'updated_on': '2014-10-01T15:03:50'} ... {'name': 'XO Ticket ', 'created_on': '2019-10-02T13:44:04', 'updated_on': '2019-10-07T09:42:50'} $ cat playground/tmp.json { "containers": { "317": { "name": "XFEL", "created_on": "2014-10-01T15:03:50", "updated_on": "2014-10-01T15:03:50" }, "1121": { "name": "XO Ticket ", "created_on": "2019-10-02T13:44:04", "updated_on": "2019-10-07T09:42:50" }, } } create_redmine_project_container -------------------------------- .. warning:: Not recommended - use with care move_issue_to_container ----------------------- .. warning:: Not recommended - use with care