def cmd_projects(settings): """ List projects, with id and parent id. """ sa = get_session(settings.dbref) l = 'Projects' v = sa.query(rdm.Project).count() # TODO: filter project; age, public log.info('{green}%s{default}: {bwhite}%s{default}', l, v) print('# ID PARENT NAME') for p in sa.query(rdm.Project).all(): print(p.id, p.parent_id or '-', p.name)
def cmd_run_indexer(settings): "TODO: Update subjects for projects with index mode set" sa = get_session(settings.dbref) index_cf = get_custom_field('Index Method', sa) index_offset_cf = get_custom_field('Index Offset', sa) for project, idx_cf_v in sa.query(rdm.Project, rdm.CustomValue).join( rdm.CustomValue, rdm.CustomValue.customized_id == rdm.Project.id ).filter( rdm.CustomValue.custom_field_id == index_cf.id ).all(): index_mode = idx_cf_v.value if index_mode: print('# TODO index project, index_mode')
def cmd_home_doc(settings, opts): sa = get_session(settings.dbref) home_doc_cf = get_custom_field('Home Doc', sa) proj_id_cf = get_custom_field('ID Slug', sa) assert home_doc_cf.field_format == 'link', home_doc_cf.field_format # yaml assert home_doc_cf.format_store.startswith('---') format = home_doc_cf.format_store.split('\n')[1:] assert format[0].startswith('url_pattern: '),\ format url_pattern = format[0][len('url_pattern: '):] if opts.args.ISSUE: iid = int(opts.args.ISSUE) issue, home_doc_cf_v = sa.query(rdm.Issue, rdm.CustomValue).join( rdm.CustomValue, rdm.CustomValue.customized_id == rdm.Issue.id ).filter( rdm.CustomValue.custom_field_id == home_doc_cf.id, rdm.Issue.id == iid ).one() project, proj_id_cf_v = sa.query(rdm.Project, rdm.CustomValue).join( rdm.CustomValue, rdm.CustomValue.customized_id == rdm.Project.id ).filter( rdm.CustomValue.custom_field_id == proj_id_cf.id, rdm.Project.id == issue.project_id ).one() if not home_doc_cf_v.value: log.warn("No Home Doc") return 1 if proj_id_cf_v.value: id_slug = proj_id_cf_v.value else: id_slug = '' url = url_pattern.replace('%project_identifier%', id_slug) url = url.replace('%project_id%', str(issue.project_id)) url = url.replace('%value%', home_doc_cf_v.value) url = url.replace('%id%', str(issue.id)) print(url, issue.subject) else: print(url_pattern)
def cmd_issues(settings): """ List issues """ sa = get_session(settings.dbref) l = 'Issues' # TODO: filter issues; where not closed, where due, started, etc. v = sa.query(rdm.Issue).count() log.info('{green}%s{default}: {bwhite}%s{default}', l, v) print('# ID PARENT_ID ROOT_ID SUBJECT ') #print('# ID PARENT_ID ROOT_ID PRIO SUBJECT ') for i in sa.query(rdm.Issue).all(): print(i.id,) for k in i.parent_id, i.root_id: print(k or '-',) #print i.priority_id or '-', i.subject print(i.subject)
def cmd_custom_fields(settings): """ List custom-fields """ sa = get_session(settings.dbref) l = 'Custom Fields' # TODO: filter custom_fields; v = sa.query(rdm.CustomField).count() log.info('{green}%s{default}: {bwhite}%s{default}', l, v) for rs in sa.query(rdm.CustomField).all(): print(rs.id, rs.type) print(" Name:", rs.name) if rs.possible_values: # yaml value print(" Possible values: ") for x in rs.possible_values.split('\n'): if x == '---': continue print(" ",x) if rs.description: print(" Description:") print(" ", rs.description.replace('\n', '\n '))