dbml-sharepoint 0.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dbml_sharepoint/__init__.py +43 -0
- dbml_sharepoint/analysis/__init__.py +1 -0
- dbml_sharepoint/analysis/checks/__init__.py +44 -0
- dbml_sharepoint/analysis/checks/_demo.py +292 -0
- dbml_sharepoint/analysis/checks/_formatting.py +515 -0
- dbml_sharepoint/analysis/checks/_naming.py +216 -0
- dbml_sharepoint/analysis/checks/_permissions.py +498 -0
- dbml_sharepoint/analysis/checks/_provenance.py +188 -0
- dbml_sharepoint/analysis/checks/_renames.py +70 -0
- dbml_sharepoint/analysis/checks/_retirement.py +358 -0
- dbml_sharepoint/analysis/checks/_sources.py +82 -0
- dbml_sharepoint/analysis/checks/_structure.py +1297 -0
- dbml_sharepoint/analysis/checks/_views.py +1098 -0
- dbml_sharepoint/analysis/checks/context.py +164 -0
- dbml_sharepoint/analysis/clock_cells.py +243 -0
- dbml_sharepoint/analysis/clock_usage.py +105 -0
- dbml_sharepoint/analysis/column_projection.py +64 -0
- dbml_sharepoint/analysis/column_refs.py +79 -0
- dbml_sharepoint/analysis/condition_description.py +57 -0
- dbml_sharepoint/analysis/condition_rendering.py +1606 -0
- dbml_sharepoint/analysis/conditions.py +669 -0
- dbml_sharepoint/analysis/demo_marker.py +42 -0
- dbml_sharepoint/analysis/exports.py +39 -0
- dbml_sharepoint/analysis/finding_help.py +1282 -0
- dbml_sharepoint/analysis/findings.py +554 -0
- dbml_sharepoint/analysis/forms.py +156 -0
- dbml_sharepoint/analysis/group_description.py +146 -0
- dbml_sharepoint/analysis/icons.py +86 -0
- dbml_sharepoint/analysis/immutable_shape.py +32 -0
- dbml_sharepoint/analysis/joins.py +215 -0
- dbml_sharepoint/analysis/limits.py +317 -0
- dbml_sharepoint/analysis/list_description.py +241 -0
- dbml_sharepoint/analysis/lookups.py +128 -0
- dbml_sharepoint/analysis/ordering.py +159 -0
- dbml_sharepoint/analysis/permissions.py +219 -0
- dbml_sharepoint/analysis/phases.py +101 -0
- dbml_sharepoint/analysis/provenance.py +59 -0
- dbml_sharepoint/analysis/rendered_columns.py +86 -0
- dbml_sharepoint/analysis/report_columns.py +100 -0
- dbml_sharepoint/analysis/role_definition_description.py +119 -0
- dbml_sharepoint/analysis/save_rules.py +147 -0
- dbml_sharepoint/analysis/styles.py +432 -0
- dbml_sharepoint/analysis/typemap.py +692 -0
- dbml_sharepoint/analysis/validator.py +409 -0
- dbml_sharepoint/bundle.py +450 -0
- dbml_sharepoint/catalogue.py +315 -0
- dbml_sharepoint/cli.py +1510 -0
- dbml_sharepoint/extension.py +133 -0
- dbml_sharepoint/extract/__init__.py +15 -0
- dbml_sharepoint/extract/decode.py +543 -0
- dbml_sharepoint/extract/emit.py +253 -0
- dbml_sharepoint/extract/field_xml.py +267 -0
- dbml_sharepoint/extract/folder.py +167 -0
- dbml_sharepoint/extract/inverse.py +456 -0
- dbml_sharepoint/extract/list_url.py +76 -0
- dbml_sharepoint/extract/notes.py +276 -0
- dbml_sharepoint/extract/run.py +191 -0
- dbml_sharepoint/extract/sources.py +148 -0
- dbml_sharepoint/extract/wizard.py +252 -0
- dbml_sharepoint/generators/__init__.py +1 -0
- dbml_sharepoint/generators/_indexes.py +15 -0
- dbml_sharepoint/generators/assessgen.py +283 -0
- dbml_sharepoint/generators/demogen.py +155 -0
- dbml_sharepoint/generators/extractgen.py +84 -0
- dbml_sharepoint/generators/jsgen.py +1067 -0
- dbml_sharepoint/generators/maintaingen.py +51 -0
- dbml_sharepoint/generators/manifestgen.py +314 -0
- dbml_sharepoint/generators/reportgen.py +2076 -0
- dbml_sharepoint/generators/rollbackgen.py +49 -0
- dbml_sharepoint/generators/verifygen.py +300 -0
- dbml_sharepoint/model/__init__.py +1 -0
- dbml_sharepoint/model/_keys.py +88 -0
- dbml_sharepoint/model/_retirement.py +279 -0
- dbml_sharepoint/model/conditions.py +129 -0
- dbml_sharepoint/model/env_file.py +191 -0
- dbml_sharepoint/model/mapping_loader.py +1262 -0
- dbml_sharepoint/model/mapping_types.py +756 -0
- dbml_sharepoint/model/parser.py +230 -0
- dbml_sharepoint/model/release.py +68 -0
- dbml_sharepoint/py.typed +0 -0
- dbml_sharepoint/solutions/README.md +420 -0
- dbml_sharepoint/solutions/asset-register/10-design/schema.dbml +59 -0
- dbml_sharepoint/solutions/asset-register/20-configure/formatting/asset-form-body.json +20 -0
- dbml_sharepoint/solutions/asset-register/20-configure/formatting/asset-form-header.json +46 -0
- dbml_sharepoint/solutions/asset-register/20-configure/formatting/location-form-body.json +8 -0
- dbml_sharepoint/solutions/asset-register/20-configure/formatting/location-form-header.json +46 -0
- dbml_sharepoint/solutions/asset-register/20-configure/mapping.yaml +372 -0
- dbml_sharepoint/solutions/asset-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/asset-register/30-deploy/deploy.md +145 -0
- dbml_sharepoint/solutions/asset-register/40-adopt/staff-guide.md +61 -0
- dbml_sharepoint/solutions/asset-register/50-govern/governance.md +70 -0
- dbml_sharepoint/solutions/asset-register/README.md +37 -0
- dbml_sharepoint/solutions/audit-actions/10-design/schema.dbml +77 -0
- dbml_sharepoint/solutions/audit-actions/20-configure/formatting/audit-form-body.json +12 -0
- dbml_sharepoint/solutions/audit-actions/20-configure/formatting/audit-form-header.json +46 -0
- dbml_sharepoint/solutions/audit-actions/20-configure/formatting/recommendation-form-body.json +20 -0
- dbml_sharepoint/solutions/audit-actions/20-configure/formatting/recommendation-form-header.json +46 -0
- dbml_sharepoint/solutions/audit-actions/20-configure/mapping.yaml +583 -0
- dbml_sharepoint/solutions/audit-actions/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/audit-actions/30-deploy/deploy.md +221 -0
- dbml_sharepoint/solutions/audit-actions/40-adopt/staff-guide.md +73 -0
- dbml_sharepoint/solutions/audit-actions/50-govern/governance.md +145 -0
- dbml_sharepoint/solutions/audit-actions/README.md +35 -0
- dbml_sharepoint/solutions/change-register/10-design/schema.dbml +63 -0
- dbml_sharepoint/solutions/change-register/20-configure/formatting/changerequest-form-body.json +20 -0
- dbml_sharepoint/solutions/change-register/20-configure/formatting/changerequest-form-header.json +46 -0
- dbml_sharepoint/solutions/change-register/20-configure/mapping.yaml +448 -0
- dbml_sharepoint/solutions/change-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/change-register/30-deploy/deploy.md +158 -0
- dbml_sharepoint/solutions/change-register/40-adopt/staff-guide.md +58 -0
- dbml_sharepoint/solutions/change-register/50-govern/governance.md +93 -0
- dbml_sharepoint/solutions/change-register/README.md +46 -0
- dbml_sharepoint/solutions/complaints-feedback/10-design/schema.dbml +66 -0
- dbml_sharepoint/solutions/complaints-feedback/20-configure/formatting/feedback-form-body.json +24 -0
- dbml_sharepoint/solutions/complaints-feedback/20-configure/formatting/feedback-form-header.json +46 -0
- dbml_sharepoint/solutions/complaints-feedback/20-configure/mapping.yaml +454 -0
- dbml_sharepoint/solutions/complaints-feedback/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/complaints-feedback/30-deploy/deploy.md +171 -0
- dbml_sharepoint/solutions/complaints-feedback/40-adopt/staff-guide.md +66 -0
- dbml_sharepoint/solutions/complaints-feedback/50-govern/governance.md +118 -0
- dbml_sharepoint/solutions/complaints-feedback/README.md +42 -0
- dbml_sharepoint/solutions/compliance-obligations/10-design/schema.dbml +46 -0
- dbml_sharepoint/solutions/compliance-obligations/20-configure/formatting/obligation-form-body.json +20 -0
- dbml_sharepoint/solutions/compliance-obligations/20-configure/formatting/obligation-form-header.json +46 -0
- dbml_sharepoint/solutions/compliance-obligations/20-configure/mapping.yaml +371 -0
- dbml_sharepoint/solutions/compliance-obligations/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/compliance-obligations/30-deploy/deploy.md +173 -0
- dbml_sharepoint/solutions/compliance-obligations/40-adopt/staff-guide.md +81 -0
- dbml_sharepoint/solutions/compliance-obligations/50-govern/governance.md +113 -0
- dbml_sharepoint/solutions/compliance-obligations/README.md +39 -0
- dbml_sharepoint/solutions/contract-register/10-design/schema.dbml +57 -0
- dbml_sharepoint/solutions/contract-register/20-configure/formatting/contract-form-body.json +20 -0
- dbml_sharepoint/solutions/contract-register/20-configure/formatting/contract-form-header.json +46 -0
- dbml_sharepoint/solutions/contract-register/20-configure/mapping.yaml +381 -0
- dbml_sharepoint/solutions/contract-register/20-configure/release.yaml +8 -0
- dbml_sharepoint/solutions/contract-register/30-deploy/deploy.md +173 -0
- dbml_sharepoint/solutions/contract-register/40-adopt/staff-guide.md +62 -0
- dbml_sharepoint/solutions/contract-register/50-govern/governance.md +88 -0
- dbml_sharepoint/solutions/contract-register/README.md +29 -0
- dbml_sharepoint/solutions/credentialing-register/10-design/schema.dbml +87 -0
- dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/credential-form-body.json +20 -0
- dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/credential-form-header.json +46 -0
- dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/practitioner-form-body.json +20 -0
- dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/practitioner-form-header.json +46 -0
- dbml_sharepoint/solutions/credentialing-register/20-configure/formatting/row-expired.json +4 -0
- dbml_sharepoint/solutions/credentialing-register/20-configure/mapping.yaml +538 -0
- dbml_sharepoint/solutions/credentialing-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/credentialing-register/30-deploy/deploy.md +216 -0
- dbml_sharepoint/solutions/credentialing-register/40-adopt/staff-guide.md +63 -0
- dbml_sharepoint/solutions/credentialing-register/50-govern/governance.md +84 -0
- dbml_sharepoint/solutions/credentialing-register/README.md +45 -0
- dbml_sharepoint/solutions/declarations-register/10-design/schema.dbml +79 -0
- dbml_sharepoint/solutions/declarations-register/20-configure/formatting/giftbenefit-form-body.json +16 -0
- dbml_sharepoint/solutions/declarations-register/20-configure/formatting/giftbenefit-form-header.json +46 -0
- dbml_sharepoint/solutions/declarations-register/20-configure/formatting/interest-form-body.json +16 -0
- dbml_sharepoint/solutions/declarations-register/20-configure/formatting/interest-form-header.json +46 -0
- dbml_sharepoint/solutions/declarations-register/20-configure/mapping.yaml +560 -0
- dbml_sharepoint/solutions/declarations-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/declarations-register/30-deploy/deploy.md +184 -0
- dbml_sharepoint/solutions/declarations-register/40-adopt/staff-guide.md +74 -0
- dbml_sharepoint/solutions/declarations-register/50-govern/governance.md +125 -0
- dbml_sharepoint/solutions/declarations-register/README.md +36 -0
- dbml_sharepoint/solutions/delegations-register/10-design/schema.dbml +44 -0
- dbml_sharepoint/solutions/delegations-register/20-configure/formatting/delegation-form-body.json +16 -0
- dbml_sharepoint/solutions/delegations-register/20-configure/formatting/delegation-form-header.json +57 -0
- dbml_sharepoint/solutions/delegations-register/20-configure/mapping.yaml +323 -0
- dbml_sharepoint/solutions/delegations-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/delegations-register/30-deploy/deploy.md +177 -0
- dbml_sharepoint/solutions/delegations-register/40-adopt/staff-guide.md +53 -0
- dbml_sharepoint/solutions/delegations-register/50-govern/governance.md +107 -0
- dbml_sharepoint/solutions/delegations-register/README.md +40 -0
- dbml_sharepoint/solutions/equipment-maintenance/10-design/schema.dbml +80 -0
- dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/equipment-form-body.json +16 -0
- dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/equipment-form-header.json +46 -0
- dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/event-form-body.json +16 -0
- dbml_sharepoint/solutions/equipment-maintenance/20-configure/formatting/event-form-header.json +46 -0
- dbml_sharepoint/solutions/equipment-maintenance/20-configure/mapping.yaml +460 -0
- dbml_sharepoint/solutions/equipment-maintenance/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/equipment-maintenance/30-deploy/deploy.md +172 -0
- dbml_sharepoint/solutions/equipment-maintenance/40-adopt/staff-guide.md +73 -0
- dbml_sharepoint/solutions/equipment-maintenance/50-govern/governance.md +97 -0
- dbml_sharepoint/solutions/equipment-maintenance/README.md +47 -0
- dbml_sharepoint/solutions/grants-register/10-design/schema.dbml +67 -0
- dbml_sharepoint/solutions/grants-register/20-configure/formatting/acquittal-form-body.json +16 -0
- dbml_sharepoint/solutions/grants-register/20-configure/formatting/acquittal-form-header.json +46 -0
- dbml_sharepoint/solutions/grants-register/20-configure/formatting/row-overdue.json +4 -0
- dbml_sharepoint/solutions/grants-register/20-configure/formatting/submission-form-body.json +16 -0
- dbml_sharepoint/solutions/grants-register/20-configure/formatting/submission-form-header.json +46 -0
- dbml_sharepoint/solutions/grants-register/20-configure/mapping.yaml +551 -0
- dbml_sharepoint/solutions/grants-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/grants-register/30-deploy/deploy.md +179 -0
- dbml_sharepoint/solutions/grants-register/40-adopt/staff-guide.md +78 -0
- dbml_sharepoint/solutions/grants-register/50-govern/governance.md +100 -0
- dbml_sharepoint/solutions/grants-register/README.md +39 -0
- dbml_sharepoint/solutions/healthcare.md +93 -0
- dbml_sharepoint/solutions/improvement-register/10-design/schema.dbml +61 -0
- dbml_sharepoint/solutions/improvement-register/20-configure/formatting/improvement-form-body.json +20 -0
- dbml_sharepoint/solutions/improvement-register/20-configure/formatting/improvement-form-header.json +46 -0
- dbml_sharepoint/solutions/improvement-register/20-configure/mapping.yaml +415 -0
- dbml_sharepoint/solutions/improvement-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/improvement-register/30-deploy/deploy.md +165 -0
- dbml_sharepoint/solutions/improvement-register/40-adopt/staff-guide.md +63 -0
- dbml_sharepoint/solutions/improvement-register/50-govern/governance.md +103 -0
- dbml_sharepoint/solutions/improvement-register/README.md +55 -0
- dbml_sharepoint/solutions/incident-management/10-design/schema.dbml +82 -0
- dbml_sharepoint/solutions/incident-management/20-configure/formatting/action-form-body.json +16 -0
- dbml_sharepoint/solutions/incident-management/20-configure/formatting/action-form-header.json +46 -0
- dbml_sharepoint/solutions/incident-management/20-configure/formatting/incident-form-body.json +24 -0
- dbml_sharepoint/solutions/incident-management/20-configure/formatting/incident-form-header.json +46 -0
- dbml_sharepoint/solutions/incident-management/20-configure/formatting/row-critical.json +4 -0
- dbml_sharepoint/solutions/incident-management/20-configure/mapping.yaml +515 -0
- dbml_sharepoint/solutions/incident-management/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/incident-management/30-deploy/deploy.md +163 -0
- dbml_sharepoint/solutions/incident-management/40-adopt/staff-guide.md +63 -0
- dbml_sharepoint/solutions/incident-management/50-govern/governance.md +107 -0
- dbml_sharepoint/solutions/incident-management/README.md +39 -0
- dbml_sharepoint/solutions/m365-adoption-program/10-design/schema.dbml +489 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/action-form-body.json +7 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/action-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/activity-form-body.json +9 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/activity-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/decision-form-body.json +7 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/decision-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/involvement-form-body.json +6 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/involvement-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/issue-form-body.json +8 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/issue-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/risk-form-body.json +9 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/risk-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/row-critical.json +4 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/row-extreme.json +4 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/row-needs-review.json +4 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/servicerequest-form-body.json +9 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/servicerequest-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/stakeholder-form-body.json +7 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/stakeholder-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/workstream-form-body.json +7 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/formatting/workstream-form-header.json +46 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/mapping.yaml +2258 -0
- dbml_sharepoint/solutions/m365-adoption-program/20-configure/release.yaml +61 -0
- dbml_sharepoint/solutions/m365-adoption-program/30-deploy/deploy.md +697 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/staff-guide.md +495 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/README.md +36 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/complete-an-action.md +76 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/confirm-your-accountability.md +73 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/manage-a-risk.md +66 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/raise-a-service-request.md +105 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/raise-an-issue.md +59 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/record-a-decision.md +153 -0
- dbml_sharepoint/solutions/m365-adoption-program/40-adopt/workflows/triage-incoming-work.md +55 -0
- dbml_sharepoint/solutions/m365-adoption-program/50-govern/governance.md +764 -0
- dbml_sharepoint/solutions/m365-adoption-program/50-govern/reporting-joins.md +107 -0
- dbml_sharepoint/solutions/m365-adoption-program/README.md +154 -0
- dbml_sharepoint/solutions/measures-register/10-design/schema.dbml +50 -0
- dbml_sharepoint/solutions/measures-register/20-configure/formatting/measure-form-body.json +20 -0
- dbml_sharepoint/solutions/measures-register/20-configure/formatting/measure-form-header.json +46 -0
- dbml_sharepoint/solutions/measures-register/20-configure/mapping.yaml +347 -0
- dbml_sharepoint/solutions/measures-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/measures-register/30-deploy/deploy.md +149 -0
- dbml_sharepoint/solutions/measures-register/40-adopt/staff-guide.md +73 -0
- dbml_sharepoint/solutions/measures-register/50-govern/governance.md +85 -0
- dbml_sharepoint/solutions/measures-register/README.md +49 -0
- dbml_sharepoint/solutions/meeting-actions/10-design/schema.dbml +73 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/actionitem-form-body.json +16 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/actionitem-form-header.json +46 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/decision-form-body.json +12 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/decision-form-header.json +46 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/meeting-form-body.json +12 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/formatting/meeting-form-header.json +46 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/mapping.yaml +427 -0
- dbml_sharepoint/solutions/meeting-actions/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/meeting-actions/30-deploy/deploy.md +168 -0
- dbml_sharepoint/solutions/meeting-actions/40-adopt/staff-guide.md +49 -0
- dbml_sharepoint/solutions/meeting-actions/50-govern/governance.md +58 -0
- dbml_sharepoint/solutions/meeting-actions/README.md +33 -0
- dbml_sharepoint/solutions/onboarding-tracker/10-design/schema.dbml +68 -0
- dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/onboardingtask-form-body.json +16 -0
- dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/onboardingtask-form-header.json +46 -0
- dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/starter-form-body.json +16 -0
- dbml_sharepoint/solutions/onboarding-tracker/20-configure/formatting/starter-form-header.json +46 -0
- dbml_sharepoint/solutions/onboarding-tracker/20-configure/mapping.yaml +418 -0
- dbml_sharepoint/solutions/onboarding-tracker/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/onboarding-tracker/30-deploy/deploy.md +157 -0
- dbml_sharepoint/solutions/onboarding-tracker/40-adopt/staff-guide.md +57 -0
- dbml_sharepoint/solutions/onboarding-tracker/50-govern/governance.md +71 -0
- dbml_sharepoint/solutions/onboarding-tracker/README.md +35 -0
- dbml_sharepoint/solutions/opportunities-register/10-design/schema.dbml +196 -0
- dbml_sharepoint/solutions/opportunities-register/20-configure/formatting/opportunity-form-body.json +77 -0
- dbml_sharepoint/solutions/opportunities-register/20-configure/formatting/opportunity-form-header.json +93 -0
- dbml_sharepoint/solutions/opportunities-register/20-configure/formatting/row-decision-attention.json +4 -0
- dbml_sharepoint/solutions/opportunities-register/20-configure/mapping.yaml +632 -0
- dbml_sharepoint/solutions/opportunities-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/opportunities-register/30-deploy/deploy.md +229 -0
- dbml_sharepoint/solutions/opportunities-register/40-adopt/staff-guide.md +135 -0
- dbml_sharepoint/solutions/opportunities-register/50-govern/governance.md +261 -0
- dbml_sharepoint/solutions/opportunities-register/README.md +209 -0
- dbml_sharepoint/solutions/process-register/10-design/schema.dbml +61 -0
- dbml_sharepoint/solutions/process-register/20-configure/formatting/businessprocess-form-body.json +24 -0
- dbml_sharepoint/solutions/process-register/20-configure/formatting/businessprocess-form-header.json +46 -0
- dbml_sharepoint/solutions/process-register/20-configure/mapping.yaml +405 -0
- dbml_sharepoint/solutions/process-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/process-register/30-deploy/deploy.md +168 -0
- dbml_sharepoint/solutions/process-register/40-adopt/staff-guide.md +66 -0
- dbml_sharepoint/solutions/process-register/50-govern/governance.md +107 -0
- dbml_sharepoint/solutions/process-register/README.md +53 -0
- dbml_sharepoint/solutions/project-pipeline/10-design/schema.dbml +62 -0
- dbml_sharepoint/solutions/project-pipeline/20-configure/formatting/proposal-form-body.json +20 -0
- dbml_sharepoint/solutions/project-pipeline/20-configure/formatting/proposal-form-header.json +46 -0
- dbml_sharepoint/solutions/project-pipeline/20-configure/mapping.yaml +452 -0
- dbml_sharepoint/solutions/project-pipeline/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/project-pipeline/30-deploy/deploy.md +170 -0
- dbml_sharepoint/solutions/project-pipeline/40-adopt/staff-guide.md +68 -0
- dbml_sharepoint/solutions/project-pipeline/50-govern/governance.md +96 -0
- dbml_sharepoint/solutions/project-pipeline/README.md +51 -0
- dbml_sharepoint/solutions/raci-matrix/10-design/schema.dbml +121 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/activity-form-body.json +24 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/activity-form-header.json +46 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/involvement-form-body.json +12 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/involvement-form-header.json +46 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/party-form-body.json +12 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/party-form-header.json +46 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/formatting/row-needs-review.json +4 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/mapping.yaml +563 -0
- dbml_sharepoint/solutions/raci-matrix/20-configure/release.yaml +8 -0
- dbml_sharepoint/solutions/raci-matrix/30-deploy/deploy.md +286 -0
- dbml_sharepoint/solutions/raci-matrix/40-adopt/staff-guide.md +272 -0
- dbml_sharepoint/solutions/raci-matrix/50-govern/governance.md +364 -0
- dbml_sharepoint/solutions/raci-matrix/README.md +118 -0
- dbml_sharepoint/solutions/raid-log/10-design/schema.dbml +168 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectaction-form-body.json +16 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectaction-form-header.json +46 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectdecision-form-body.json +12 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectdecision-form-header.json +46 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectissue-form-body.json +20 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectissue-form-header.json +46 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectrisk-form-body.json +24 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/projectrisk-form-header.json +46 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/row-critical.json +4 -0
- dbml_sharepoint/solutions/raid-log/20-configure/formatting/row-extreme.json +4 -0
- dbml_sharepoint/solutions/raid-log/20-configure/mapping.yaml +671 -0
- dbml_sharepoint/solutions/raid-log/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/raid-log/30-deploy/deploy.md +247 -0
- dbml_sharepoint/solutions/raid-log/40-adopt/staff-guide.md +124 -0
- dbml_sharepoint/solutions/raid-log/50-govern/governance.md +216 -0
- dbml_sharepoint/solutions/raid-log/README.md +78 -0
- dbml_sharepoint/solutions/records-digitisation/10-design/schema.dbml +195 -0
- dbml_sharepoint/solutions/records-digitisation/20-configure/formatting/platform-form-body.json +24 -0
- dbml_sharepoint/solutions/records-digitisation/20-configure/formatting/platform-form-header.json +46 -0
- dbml_sharepoint/solutions/records-digitisation/20-configure/formatting/row-not-a-destination.json +4 -0
- dbml_sharepoint/solutions/records-digitisation/20-configure/mapping.yaml +636 -0
- dbml_sharepoint/solutions/records-digitisation/20-configure/release.yaml +8 -0
- dbml_sharepoint/solutions/records-digitisation/30-deploy/deploy.md +231 -0
- dbml_sharepoint/solutions/records-digitisation/40-adopt/staff-guide.md +168 -0
- dbml_sharepoint/solutions/records-digitisation/50-govern/governance.md +230 -0
- dbml_sharepoint/solutions/records-digitisation/README.md +126 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/10-design/schema.dbml +273 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/formatting/project-form-body.json +28 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/formatting/project-form-header.json +46 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/formatting/row-underway-unauthorised.json +4 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/mapping.yaml +785 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/20-configure/release.yaml +8 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/30-deploy/deploy.md +219 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/40-adopt/staff-guide.md +150 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/50-govern/governance.md +270 -0
- dbml_sharepoint/solutions/research-ethics-register-simple/README.md +103 -0
- dbml_sharepoint/solutions/risk-register/10-design/schema.dbml +143 -0
- dbml_sharepoint/solutions/risk-register/20-configure/formatting/levels-above-target.json +21 -0
- dbml_sharepoint/solutions/risk-register/20-configure/formatting/risk-form-body.json +24 -0
- dbml_sharepoint/solutions/risk-register/20-configure/formatting/risk-form-header.json +46 -0
- dbml_sharepoint/solutions/risk-register/20-configure/formatting/row-extreme.json +4 -0
- dbml_sharepoint/solutions/risk-register/20-configure/mapping.yaml +523 -0
- dbml_sharepoint/solutions/risk-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/risk-register/30-deploy/deploy.md +166 -0
- dbml_sharepoint/solutions/risk-register/40-adopt/staff-guide.md +128 -0
- dbml_sharepoint/solutions/risk-register/50-govern/governance.md +177 -0
- dbml_sharepoint/solutions/risk-register/README.md +68 -0
- dbml_sharepoint/solutions/routine-checks/10-design/schema.dbml +69 -0
- dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkentry-form-body.json +20 -0
- dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkentry-form-header.json +46 -0
- dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkpoint-form-body.json +16 -0
- dbml_sharepoint/solutions/routine-checks/20-configure/formatting/checkpoint-form-header.json +46 -0
- dbml_sharepoint/solutions/routine-checks/20-configure/mapping.yaml +422 -0
- dbml_sharepoint/solutions/routine-checks/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/routine-checks/30-deploy/deploy.md +163 -0
- dbml_sharepoint/solutions/routine-checks/40-adopt/staff-guide.md +59 -0
- dbml_sharepoint/solutions/routine-checks/50-govern/governance.md +93 -0
- dbml_sharepoint/solutions/routine-checks/README.md +49 -0
- dbml_sharepoint/solutions/service-evidence-register/10-design/schema.dbml +307 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/follow-up-form-body.json +20 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/follow-up-form-header.json +69 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/row-issue-critical.json +4 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-event-form-body.json +28 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-event-form-header.json +69 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-issue-form-body.json +28 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/formatting/service-issue-form-header.json +69 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/mapping.yaml +1169 -0
- dbml_sharepoint/solutions/service-evidence-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/service-evidence-register/30-deploy/deploy.md +260 -0
- dbml_sharepoint/solutions/service-evidence-register/40-adopt/staff-guide.md +157 -0
- dbml_sharepoint/solutions/service-evidence-register/50-govern/governance.md +227 -0
- dbml_sharepoint/solutions/service-evidence-register/README.md +114 -0
- dbml_sharepoint/solutions/service-requests/10-design/schema.dbml +55 -0
- dbml_sharepoint/solutions/service-requests/20-configure/formatting/request-form-body.json +24 -0
- dbml_sharepoint/solutions/service-requests/20-configure/formatting/request-form-header.json +46 -0
- dbml_sharepoint/solutions/service-requests/20-configure/mapping.yaml +426 -0
- dbml_sharepoint/solutions/service-requests/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/service-requests/30-deploy/deploy.md +156 -0
- dbml_sharepoint/solutions/service-requests/40-adopt/staff-guide.md +50 -0
- dbml_sharepoint/solutions/service-requests/50-govern/governance.md +99 -0
- dbml_sharepoint/solutions/service-requests/README.md +39 -0
- dbml_sharepoint/solutions/stakeholder-contacts/10-design/schema.dbml +78 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/contact-active.json +15 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/contact-form-body.json +16 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/contact-form-header.json +46 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/interaction-form-body.json +16 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/interaction-form-header.json +46 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/organisation-form-body.json +12 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/formatting/organisation-form-header.json +46 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/mapping.yaml +388 -0
- dbml_sharepoint/solutions/stakeholder-contacts/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/stakeholder-contacts/30-deploy/deploy.md +182 -0
- dbml_sharepoint/solutions/stakeholder-contacts/40-adopt/staff-guide.md +54 -0
- dbml_sharepoint/solutions/stakeholder-contacts/50-govern/governance.md +65 -0
- dbml_sharepoint/solutions/stakeholder-contacts/README.md +35 -0
- dbml_sharepoint/solutions/switchboard-log/10-design/schema.dbml +120 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/all-clear-at.json +20 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/codeevent-form-body.json +24 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/codeevent-form-header.json +46 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/key-form-body.json +12 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/key-form-header.json +46 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/keymovement-form-body.json +16 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/keymovement-form-header.json +46 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/messagelog-form-body.json +24 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/messagelog-form-header.json +46 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/formatting/row-emergency.json +4 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/mapping.yaml +754 -0
- dbml_sharepoint/solutions/switchboard-log/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/switchboard-log/30-deploy/deploy.md +184 -0
- dbml_sharepoint/solutions/switchboard-log/40-adopt/staff-guide.md +73 -0
- dbml_sharepoint/solutions/switchboard-log/50-govern/governance.md +124 -0
- dbml_sharepoint/solutions/switchboard-log/README.md +53 -0
- dbml_sharepoint/solutions/tiered-huddle/10-design/schema.dbml +251 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/escalation-form-body.json +16 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/escalation-form-header.json +46 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier1-form-body.json +23 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier1-form-header.json +46 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier2-form-body.json +25 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier2-form-header.json +46 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier3-form-body.json +27 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/formatting/tier3-form-header.json +46 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/mapping.yaml +848 -0
- dbml_sharepoint/solutions/tiered-huddle/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/tiered-huddle/30-deploy/deploy.md +236 -0
- dbml_sharepoint/solutions/tiered-huddle/40-adopt/staff-guide.md +85 -0
- dbml_sharepoint/solutions/tiered-huddle/50-govern/governance.md +121 -0
- dbml_sharepoint/solutions/tiered-huddle/README.md +64 -0
- dbml_sharepoint/solutions/training-register/10-design/schema.dbml +61 -0
- dbml_sharepoint/solutions/training-register/20-configure/formatting/course-form-body.json +16 -0
- dbml_sharepoint/solutions/training-register/20-configure/formatting/course-form-header.json +46 -0
- dbml_sharepoint/solutions/training-register/20-configure/formatting/trainingrecord-form-body.json +20 -0
- dbml_sharepoint/solutions/training-register/20-configure/formatting/trainingrecord-form-header.json +46 -0
- dbml_sharepoint/solutions/training-register/20-configure/mapping.yaml +422 -0
- dbml_sharepoint/solutions/training-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/training-register/30-deploy/deploy.md +158 -0
- dbml_sharepoint/solutions/training-register/40-adopt/staff-guide.md +60 -0
- dbml_sharepoint/solutions/training-register/50-govern/governance.md +69 -0
- dbml_sharepoint/solutions/training-register/README.md +32 -0
- dbml_sharepoint/solutions/vehicle-log/10-design/schema.dbml +59 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/returned-at.json +20 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/row-negative-km.json +4 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/trip-form-body.json +16 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/trip-form-header.json +46 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/vehicle-form-body.json +12 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/formatting/vehicle-form-header.json +46 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/mapping.yaml +440 -0
- dbml_sharepoint/solutions/vehicle-log/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/vehicle-log/30-deploy/deploy.md +160 -0
- dbml_sharepoint/solutions/vehicle-log/40-adopt/staff-guide.md +58 -0
- dbml_sharepoint/solutions/vehicle-log/50-govern/governance.md +107 -0
- dbml_sharepoint/solutions/vehicle-log/README.md +49 -0
- dbml_sharepoint/solutions/visitor-log/10-design/schema.dbml +39 -0
- dbml_sharepoint/solutions/visitor-log/20-configure/formatting/signed-out-at.json +20 -0
- dbml_sharepoint/solutions/visitor-log/20-configure/formatting/visit-form-body.json +16 -0
- dbml_sharepoint/solutions/visitor-log/20-configure/formatting/visit-form-header.json +46 -0
- dbml_sharepoint/solutions/visitor-log/20-configure/mapping.yaml +324 -0
- dbml_sharepoint/solutions/visitor-log/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/visitor-log/30-deploy/deploy.md +151 -0
- dbml_sharepoint/solutions/visitor-log/40-adopt/staff-guide.md +55 -0
- dbml_sharepoint/solutions/visitor-log/50-govern/governance.md +95 -0
- dbml_sharepoint/solutions/visitor-log/README.md +38 -0
- dbml_sharepoint/solutions/volunteer-register/10-design/schema.dbml +41 -0
- dbml_sharepoint/solutions/volunteer-register/20-configure/formatting/volunteer-form-body.json +20 -0
- dbml_sharepoint/solutions/volunteer-register/20-configure/formatting/volunteer-form-header.json +46 -0
- dbml_sharepoint/solutions/volunteer-register/20-configure/mapping.yaml +375 -0
- dbml_sharepoint/solutions/volunteer-register/20-configure/release.yaml +7 -0
- dbml_sharepoint/solutions/volunteer-register/30-deploy/deploy.md +160 -0
- dbml_sharepoint/solutions/volunteer-register/40-adopt/staff-guide.md +62 -0
- dbml_sharepoint/solutions/volunteer-register/50-govern/governance.md +81 -0
- dbml_sharepoint/solutions/volunteer-register/README.md +40 -0
- dbml_sharepoint/templates/_assess_body.js.j2 +541 -0
- dbml_sharepoint/templates/_digest_cached.js.j2 +57 -0
- dbml_sharepoint/templates/_formula_canonical.js.j2 +30 -0
- dbml_sharepoint/templates/_http.js.j2 +44 -0
- dbml_sharepoint/templates/_http_write.js.j2 +12 -0
- dbml_sharepoint/templates/_maintain_list.js.j2 +115 -0
- dbml_sharepoint/templates/_provenance.js.j2 +13 -0
- dbml_sharepoint/templates/_site_guard.js.j2 +28 -0
- dbml_sharepoint/templates/_verify_body.js.j2 +346 -0
- dbml_sharepoint/templates/assess-manifest.md.j2 +47 -0
- dbml_sharepoint/templates/assess.js.j2 +45 -0
- dbml_sharepoint/templates/columns.js.j2 +184 -0
- dbml_sharepoint/templates/demo.js.j2 +157 -0
- dbml_sharepoint/templates/deploy/_acls.js.j2 +374 -0
- dbml_sharepoint/templates/deploy/_assess_gate.js.j2 +48 -0
- dbml_sharepoint/templates/deploy/_field_defaults.js.j2 +63 -0
- dbml_sharepoint/templates/deploy/_field_reconcile.js.j2 +897 -0
- dbml_sharepoint/templates/deploy/_forms.js.j2 +94 -0
- dbml_sharepoint/templates/deploy/_helpers.js.j2 +122 -0
- dbml_sharepoint/templates/deploy/_indexes.js.j2 +47 -0
- dbml_sharepoint/templates/deploy/_lists.js.j2 +319 -0
- dbml_sharepoint/templates/deploy/_lookups.js.j2 +97 -0
- dbml_sharepoint/templates/deploy/_maintenance_unseal.js.j2 +107 -0
- dbml_sharepoint/templates/deploy/_operator_enrolment.js.j2 +57 -0
- dbml_sharepoint/templates/deploy/_preflight.js.j2 +160 -0
- dbml_sharepoint/templates/deploy/_reader_enrolment.js.j2 +366 -0
- dbml_sharepoint/templates/deploy/_renames.js.j2 +52 -0
- dbml_sharepoint/templates/deploy/_seal.js.j2 +114 -0
- dbml_sharepoint/templates/deploy/_security_principals.js.j2 +917 -0
- dbml_sharepoint/templates/deploy/_seeds.js.j2 +207 -0
- dbml_sharepoint/templates/deploy/_shape_probes.js.j2 +277 -0
- dbml_sharepoint/templates/deploy/_views.js.j2 +640 -0
- dbml_sharepoint/templates/deploy.js.j2 +181 -0
- dbml_sharepoint/templates/extract.js.j2 +194 -0
- dbml_sharepoint/templates/manifest.md.j2 +494 -0
- dbml_sharepoint/templates/protection.js.j2 +93 -0
- dbml_sharepoint/templates/rollback.js.j2 +256 -0
- dbml_sharepoint/templates/verify.js.j2 +44 -0
- dbml_sharepoint/templating.py +53 -0
- dbml_sharepoint/wizard.py +1321 -0
- dbml_sharepoint-0.4.0.dist-info/METADATA +292 -0
- dbml_sharepoint-0.4.0.dist-info/RECORD +544 -0
- dbml_sharepoint-0.4.0.dist-info/WHEEL +4 -0
- dbml_sharepoint-0.4.0.dist-info/entry_points.txt +2 -0
- dbml_sharepoint-0.4.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"""DBML -> SharePoint Online list provisioning via browser-console deploy.js.
|
|
2
|
+
|
|
3
|
+
Every name an extension author needs is imported from the module that defines
|
|
4
|
+
it, and no module here declares another module's name as its own. An
|
|
5
|
+
aggregator would need an export list, or a redundant `import X as X`, to
|
|
6
|
+
survive `mypy --strict`, and either gives a name a second home to be kept in
|
|
7
|
+
step with the first.
|
|
8
|
+
|
|
9
|
+
An old path such as `dbml_sharepoint.analysis.validator.Finding` does still
|
|
10
|
+
resolve at RUNTIME: a normal `from x import Y` binds `Y` in the importing
|
|
11
|
+
module and Python offers no way to unbind it. `mypy --strict` refuses it
|
|
12
|
+
("does not explicitly export attribute", checked 2026-08-17), which is what
|
|
13
|
+
makes the paths below the supported ones rather than merely the preferred
|
|
14
|
+
ones.
|
|
15
|
+
|
|
16
|
+
The paths below are the canonical ones. `test/test_public_api.py` imports each
|
|
17
|
+
of them, so a name that moves fails there rather than in a reader's editor.
|
|
18
|
+
|
|
19
|
+
The extension protocol, in `dbml_sharepoint.extension`:
|
|
20
|
+
|
|
21
|
+
- `dbml_sharepoint.extension.DeploymentExtension` is the protocol: hook names,
|
|
22
|
+
parameter order, return types.
|
|
23
|
+
- `dbml_sharepoint.extension.BaseExtension` is the no-op base to subclass.
|
|
24
|
+
- `dbml_sharepoint.extension.SiteContext` is the per-build input `seed_lists`
|
|
25
|
+
receives.
|
|
26
|
+
- `dbml_sharepoint.extension.ManifestExtras` is what `manifest_extras` returns.
|
|
27
|
+
|
|
28
|
+
What a hook reports, in `dbml_sharepoint.analysis.findings`:
|
|
29
|
+
|
|
30
|
+
- `dbml_sharepoint.analysis.findings.Finding` is one reported problem.
|
|
31
|
+
- `dbml_sharepoint.analysis.findings.FindingCode` is its stable code.
|
|
32
|
+
- `dbml_sharepoint.analysis.findings.Severity` is "error" or "warning"; an
|
|
33
|
+
error aborts the build.
|
|
34
|
+
- `dbml_sharepoint.analysis.findings.Location` is where the finding was found.
|
|
35
|
+
|
|
36
|
+
What a hook is given, from the parsed inputs:
|
|
37
|
+
|
|
38
|
+
- `dbml_sharepoint.model.mapping_types.MappingBundle` is the loaded mapping.
|
|
39
|
+
- `dbml_sharepoint.model.parser.Schema`, `dbml_sharepoint.model.parser.Table`
|
|
40
|
+
and `dbml_sharepoint.model.parser.Column` are the parsed DBML.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
__version__ = "0.4.0" # x-release-please-version
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""Analysis layer: fail-closed build-time rules, ordering, and SP projections."""
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# src/dbml_sharepoint/analysis/checks/__init__.py
|
|
2
|
+
"""Mapping checks, one module per family.
|
|
3
|
+
|
|
4
|
+
``validate_against_mapping`` was a single function of about 1,200 lines
|
|
5
|
+
covering eighteen unrelated concerns. Each family now lives in its own
|
|
6
|
+
module behind the same ``check(vc) -> list[Finding]`` signature, so a
|
|
7
|
+
reader looking for one rule opens one file.
|
|
8
|
+
|
|
9
|
+
CHECK_FAMILIES is ordered, and the order is part of the contract: findings
|
|
10
|
+
are reported in it, and tests assert on the sequence. Later families also
|
|
11
|
+
rely on earlier ones having reported structural problems. The formatting
|
|
12
|
+
checks skip an unknown entity rather than re-report it, because _structure
|
|
13
|
+
has already errored on it. Append rather than reorder.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from collections.abc import Callable
|
|
17
|
+
|
|
18
|
+
from dbml_sharepoint.analysis.checks import (
|
|
19
|
+
_demo,
|
|
20
|
+
_formatting,
|
|
21
|
+
_naming,
|
|
22
|
+
_permissions,
|
|
23
|
+
_provenance,
|
|
24
|
+
_renames,
|
|
25
|
+
_retirement,
|
|
26
|
+
_sources,
|
|
27
|
+
_structure,
|
|
28
|
+
_views,
|
|
29
|
+
)
|
|
30
|
+
from dbml_sharepoint.analysis.checks.context import ValidationContext
|
|
31
|
+
from dbml_sharepoint.analysis.findings import Finding
|
|
32
|
+
|
|
33
|
+
CHECK_FAMILIES: tuple[Callable[[ValidationContext], list["Finding"]], ...] = (
|
|
34
|
+
_structure.check,
|
|
35
|
+
_views.check,
|
|
36
|
+
_demo.check,
|
|
37
|
+
_formatting.check,
|
|
38
|
+
_retirement.check,
|
|
39
|
+
_naming.check,
|
|
40
|
+
_sources.check,
|
|
41
|
+
_permissions.check,
|
|
42
|
+
_provenance.check,
|
|
43
|
+
_renames.check,
|
|
44
|
+
)
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
# src/dbml_sharepoint/analysis/checks/_demo.py
|
|
2
|
+
"""Demo rows seeded by ``--seed``."""
|
|
3
|
+
|
|
4
|
+
import datetime as dt
|
|
5
|
+
import re
|
|
6
|
+
|
|
7
|
+
from dbml_sharepoint.analysis.checks.context import ValidationContext
|
|
8
|
+
from dbml_sharepoint.analysis.demo_marker import DEMO_TITLE_PREFIX
|
|
9
|
+
from dbml_sharepoint.analysis.findings import Finding, FindingCode, Location, Section
|
|
10
|
+
from dbml_sharepoint.analysis.rendered_columns import rendered_columns
|
|
11
|
+
from dbml_sharepoint.analysis.typemap import (
|
|
12
|
+
DATE_TYPES,
|
|
13
|
+
TODAY_SENTINEL,
|
|
14
|
+
choice_enum_for,
|
|
15
|
+
element_type,
|
|
16
|
+
is_hyperlink,
|
|
17
|
+
is_multi_value,
|
|
18
|
+
is_person,
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
_DEMO_ISO_DATE = re.compile(r"^\d{4}-\d{2}-\d{2}$")
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def check(vc: ValidationContext) -> list[Finding]:
|
|
25
|
+
bundle = vc.bundle
|
|
26
|
+
tables_by_name = vc.tables_by_name
|
|
27
|
+
enum_by_name = vc.enum_by_name
|
|
28
|
+
cross_site_by_entity = vc.cross_site_by_entity
|
|
29
|
+
findings: list[Finding] = []
|
|
30
|
+
# Demo rows (--seed): everything checkable at build time IS checked.
|
|
31
|
+
# A demo paste failing live in front of an audience is exactly the
|
|
32
|
+
# failure class this tool exists to prevent.
|
|
33
|
+
demo_keys: dict[str, str] = {}
|
|
34
|
+
for entity_name, demo_rows in bundle.mapping.demo_items.items():
|
|
35
|
+
if entity_name not in tables_by_name or entity_name not in bundle.mapping.entities:
|
|
36
|
+
findings.append(Finding(
|
|
37
|
+
FindingCode.UNKNOWN_ENTITY, f"demo_items[{entity_name}]: unknown entity.",
|
|
38
|
+
location=Location(Section.DEMO_ITEMS, entity=entity_name),
|
|
39
|
+
))
|
|
40
|
+
continue
|
|
41
|
+
# A document library's items ARE files. demo-data.js POSTs to
|
|
42
|
+
# /items, and SharePoint refuses that on a library outright:
|
|
43
|
+
# HTTP 500, "To add an item to a document library, use
|
|
44
|
+
# SPFileCollection.Add()" (probed 2026-07-29,
|
|
45
|
+
# test/manual/document-library-probe.js,
|
|
46
|
+
# `library.file-vs-item.fileless-item-post`, L2 in that run).
|
|
47
|
+
#
|
|
48
|
+
# So the paste fails, loudly, in front of whoever was being shown
|
|
49
|
+
# the demo. Refusing at build turns that into a failed build.
|
|
50
|
+
# Seeding a library would mean uploading real files, which is a
|
|
51
|
+
# different feature from writing list rows and is not one this tool
|
|
52
|
+
# has.
|
|
53
|
+
if bundle.mapping.entities[entity_name].kind == "DocumentLibrary":
|
|
54
|
+
findings.append(Finding(
|
|
55
|
+
FindingCode.DEMO_ROWS_ON_DOCUMENT_LIBRARY,
|
|
56
|
+
f"demo_items[{entity_name}]: {entity_name} is a DocumentLibrary, and a "
|
|
57
|
+
f"library's items are files. Seeding posts to /items, which SharePoint "
|
|
58
|
+
f"refuses outright -- HTTP 500, \"To add an item to a document library, "
|
|
59
|
+
f"use SPFileCollection.Add()\" -- so the paste fails in front of whoever "
|
|
60
|
+
f"was being shown the demo. Seed the register list that accompanies the "
|
|
61
|
+
f"library, and upload sample documents by hand.",
|
|
62
|
+
location=Location(Section.DEMO_ITEMS, entity=entity_name),
|
|
63
|
+
))
|
|
64
|
+
continue
|
|
65
|
+
for row in demo_rows:
|
|
66
|
+
if row.key in demo_keys:
|
|
67
|
+
findings.append(Finding(
|
|
68
|
+
FindingCode.DUPLICATE_DEMO_KEY,
|
|
69
|
+
f"demo_items[{entity_name}].{row.key}: duplicate demo "
|
|
70
|
+
f"key (also declared under {demo_keys[row.key]}).",
|
|
71
|
+
location=Location(
|
|
72
|
+
Section.DEMO_ITEMS, entity=entity_name, sub=row.key,
|
|
73
|
+
),
|
|
74
|
+
))
|
|
75
|
+
else:
|
|
76
|
+
demo_keys[row.key] = entity_name
|
|
77
|
+
for entity_name, demo_rows in bundle.mapping.demo_items.items():
|
|
78
|
+
demo_table = tables_by_name.get(entity_name)
|
|
79
|
+
if demo_table is None or entity_name not in bundle.mapping.entities:
|
|
80
|
+
continue
|
|
81
|
+
xcols = cross_site_by_entity.get(entity_name, set())
|
|
82
|
+
demo_writable = rendered_columns(demo_table, xcols) | {"Title"}
|
|
83
|
+
demo_types = {c.name: c.type for c in demo_table.columns}
|
|
84
|
+
columns = {c.name: c for c in demo_table.columns}
|
|
85
|
+
row_positions = {row.key: position for position, row in enumerate(demo_rows)}
|
|
86
|
+
for position, row in enumerate(demo_rows):
|
|
87
|
+
ctx = f"demo_items[{entity_name}].{row.key}"
|
|
88
|
+
at = Location(Section.DEMO_ITEMS, entity=entity_name, sub=row.key)
|
|
89
|
+
demo_title = row.values.get("Title")
|
|
90
|
+
if not isinstance(demo_title, str) or not demo_title.startswith(
|
|
91
|
+
DEMO_TITLE_PREFIX,
|
|
92
|
+
):
|
|
93
|
+
findings.append(Finding(
|
|
94
|
+
FindingCode.DEMO_TITLE_MISSING_MARKER,
|
|
95
|
+
f"{ctx}: Title must start with '{DEMO_TITLE_PREFIX}' -- the "
|
|
96
|
+
f"visible notice that identifies this declared row as sample "
|
|
97
|
+
f"data. Rollback requires per-list confirmation before every delete.",
|
|
98
|
+
location=at,
|
|
99
|
+
))
|
|
100
|
+
for col_name, value in row.values.items():
|
|
101
|
+
col_type = demo_types.get(col_name)
|
|
102
|
+
if col_name not in demo_writable or col_name == "Id":
|
|
103
|
+
findings.append(Finding(
|
|
104
|
+
FindingCode.DEMO_COLUMN_NOT_WRITABLE,
|
|
105
|
+
f"{ctx}: values references {col_name!r}, which is "
|
|
106
|
+
f"not a writable column of {entity_name}.",
|
|
107
|
+
location=at,
|
|
108
|
+
))
|
|
109
|
+
continue
|
|
110
|
+
if isinstance(col_type, str) and col_type.startswith("calculated"):
|
|
111
|
+
findings.append(Finding(
|
|
112
|
+
FindingCode.DEMO_VALUE_ON_CALCULATED_COLUMN,
|
|
113
|
+
f"{ctx}: {col_name} is a calculated column; demo "
|
|
114
|
+
f"rows cannot write it (set its inputs instead).",
|
|
115
|
+
location=at,
|
|
116
|
+
))
|
|
117
|
+
continue
|
|
118
|
+
# ARITY IS ANSWERED FIRST, because every rule below reads one
|
|
119
|
+
# scalar and a rule handed a list reports the wrong fault.
|
|
120
|
+
if is_multi_value(col_type or ""):
|
|
121
|
+
if not isinstance(value, list):
|
|
122
|
+
findings.append(Finding(
|
|
123
|
+
FindingCode.DEMO_MULTI_VALUE_NOT_A_LIST,
|
|
124
|
+
f"{ctx}: {col_name} is a multi-value column "
|
|
125
|
+
f"({col_type}), so its demo value must be a list of "
|
|
126
|
+
f"members, got {value!r}. An empty list is accepted "
|
|
127
|
+
f"and leaves the column unset.",
|
|
128
|
+
location=at,
|
|
129
|
+
))
|
|
130
|
+
continue
|
|
131
|
+
# Compared by list rather than by set: a demo value can
|
|
132
|
+
# hold an unhashable member, and these lists are tiny.
|
|
133
|
+
seen: list[object] = []
|
|
134
|
+
repeated: list[object] = []
|
|
135
|
+
for member in value:
|
|
136
|
+
if member not in seen:
|
|
137
|
+
seen.append(member)
|
|
138
|
+
elif member not in repeated:
|
|
139
|
+
repeated.append(member)
|
|
140
|
+
for member in repeated:
|
|
141
|
+
findings.append(Finding(
|
|
142
|
+
FindingCode.DEMO_MULTI_VALUE_DUPLICATE_MEMBER,
|
|
143
|
+
f"{ctx}: {col_name} repeats {member!r}. The write "
|
|
144
|
+
f"shape measured as M3 on 2026-08-17 is a collection "
|
|
145
|
+
f"of choices and nothing "
|
|
146
|
+
f"has measured what a repeat reads back as, so declare "
|
|
147
|
+
f"each member once.",
|
|
148
|
+
location=at,
|
|
149
|
+
))
|
|
150
|
+
# Hyperlinks are checked before the object-value rule below,
|
|
151
|
+
# and in BOTH authored shapes:
|
|
152
|
+
# a URL column takes a bare address or a {url, description}
|
|
153
|
+
# record. Gating this on `isinstance(value, dict)` left the
|
|
154
|
+
# scalar form unchecked, and the generator DOES refuse a
|
|
155
|
+
# non-string there, so an invalid mapping surfaced as a build
|
|
156
|
+
# traceback rather than a finding. A validator must refuse
|
|
157
|
+
# everything its generator refuses, and refuse it first.
|
|
158
|
+
if is_hyperlink(col_type):
|
|
159
|
+
if isinstance(value, dict):
|
|
160
|
+
unknown = set(value) - {"url", "description"}
|
|
161
|
+
if unknown or "url" not in value:
|
|
162
|
+
findings.append(Finding(
|
|
163
|
+
FindingCode.DEMO_HYPERLINK_OBJECT_INVALID,
|
|
164
|
+
f"{ctx}: {col_name} is a hyperlink; an object value "
|
|
165
|
+
f"must be {{url: <address>, description: <label>}} "
|
|
166
|
+
f"with 'description' optional. Got keys "
|
|
167
|
+
f"{sorted(value)}.",
|
|
168
|
+
location=at,
|
|
169
|
+
))
|
|
170
|
+
continue
|
|
171
|
+
address = value["url"]
|
|
172
|
+
else:
|
|
173
|
+
address = value
|
|
174
|
+
# Checked as a STRING, not stringified: str(None) is
|
|
175
|
+
# "None", which is non-empty, so a coerced emptiness test
|
|
176
|
+
# passes a null through to become a link pointing at the
|
|
177
|
+
# word None.
|
|
178
|
+
if not (isinstance(address, str) and address.strip()):
|
|
179
|
+
findings.append(Finding(
|
|
180
|
+
FindingCode.DEMO_HYPERLINK_ADDRESS_INVALID,
|
|
181
|
+
f"{ctx}: {col_name} is a hyperlink; its address must be "
|
|
182
|
+
f"a non-empty string, got {address!r}.",
|
|
183
|
+
location=at,
|
|
184
|
+
))
|
|
185
|
+
continue
|
|
186
|
+
if isinstance(value, dict):
|
|
187
|
+
if set(value) != {"demo_ref"}:
|
|
188
|
+
findings.append(Finding(
|
|
189
|
+
FindingCode.DEMO_OBJECT_VALUE_INVALID,
|
|
190
|
+
f"{ctx}: {col_name} object value must be exactly "
|
|
191
|
+
f"{{demo_ref: <key>}}.",
|
|
192
|
+
location=at,
|
|
193
|
+
))
|
|
194
|
+
elif value["demo_ref"] not in demo_keys:
|
|
195
|
+
findings.append(Finding(
|
|
196
|
+
FindingCode.DEMO_REF_UNKNOWN_KEY,
|
|
197
|
+
f"{ctx}: {col_name} demo_ref "
|
|
198
|
+
f"{value['demo_ref']!r} is not a declared demo "
|
|
199
|
+
f"key.",
|
|
200
|
+
location=at,
|
|
201
|
+
))
|
|
202
|
+
else:
|
|
203
|
+
column = columns.get(col_name)
|
|
204
|
+
target_entity = demo_keys[value["demo_ref"]]
|
|
205
|
+
if column is None or column.ref is None:
|
|
206
|
+
findings.append(Finding(
|
|
207
|
+
FindingCode.DEMO_REF_ON_NON_LOOKUP,
|
|
208
|
+
f"{ctx}: {col_name} uses demo_ref but is not a lookup column.",
|
|
209
|
+
location=at,
|
|
210
|
+
))
|
|
211
|
+
elif column.ref.target_table != target_entity:
|
|
212
|
+
findings.append(Finding(
|
|
213
|
+
FindingCode.DEMO_REF_TARGET_MISMATCH,
|
|
214
|
+
f"{ctx}: {col_name} targets {column.ref.target_table}, but "
|
|
215
|
+
f"demo_ref {value['demo_ref']!r} belongs to {target_entity}.",
|
|
216
|
+
location=at,
|
|
217
|
+
))
|
|
218
|
+
elif (
|
|
219
|
+
target_entity == entity_name
|
|
220
|
+
and row_positions.get(value["demo_ref"], position) >= position
|
|
221
|
+
):
|
|
222
|
+
findings.append(Finding(
|
|
223
|
+
FindingCode.DEMO_REF_FORWARD_REFERENCE,
|
|
224
|
+
f"{ctx}: {col_name} demo_ref {value['demo_ref']!r} must be "
|
|
225
|
+
f"declared before the row that uses it.",
|
|
226
|
+
location=at,
|
|
227
|
+
))
|
|
228
|
+
continue
|
|
229
|
+
if is_person(col_type):
|
|
230
|
+
if value != "@me":
|
|
231
|
+
findings.append(Finding(
|
|
232
|
+
FindingCode.DEMO_PERSON_VALUE_UNSUPPORTED,
|
|
233
|
+
f"{ctx}: person column {col_name} accepts only "
|
|
234
|
+
f"\"@me\" (the deploying operator).",
|
|
235
|
+
location=at,
|
|
236
|
+
))
|
|
237
|
+
continue
|
|
238
|
+
# The enum question first: `_resolve_column` resolves an enum
|
|
239
|
+
# before a scalar, so an enum named `date` is a Choice column
|
|
240
|
+
# there and has to be one here too.
|
|
241
|
+
enum_name = choice_enum_for(col_type or "", enum_by_name)
|
|
242
|
+
# Through `element_type`, because `date[]` is not a key in
|
|
243
|
+
# DATE_TYPES and the rule read as though it covered the column.
|
|
244
|
+
if enum_name is None and element_type(col_type or "") in DATE_TYPES:
|
|
245
|
+
valid_date = False
|
|
246
|
+
if isinstance(value, str) and TODAY_SENTINEL.match(value):
|
|
247
|
+
valid_date = True
|
|
248
|
+
elif isinstance(value, str) and _DEMO_ISO_DATE.match(value):
|
|
249
|
+
try:
|
|
250
|
+
dt.date.fromisoformat(value)
|
|
251
|
+
valid_date = True
|
|
252
|
+
except ValueError:
|
|
253
|
+
pass
|
|
254
|
+
if not valid_date:
|
|
255
|
+
findings.append(Finding(
|
|
256
|
+
FindingCode.DEMO_DATE_VALUE_INVALID,
|
|
257
|
+
f"{ctx}: date column {col_name} accepts "
|
|
258
|
+
f"'today+N'/'today-N' or a real ISO calendar date "
|
|
259
|
+
f"(got {value!r}).",
|
|
260
|
+
location=at,
|
|
261
|
+
))
|
|
262
|
+
continue
|
|
263
|
+
# The resolver answers with the name; this rule needs the
|
|
264
|
+
# members behind it.
|
|
265
|
+
if enum_name is None:
|
|
266
|
+
continue
|
|
267
|
+
demo_enum = enum_by_name[enum_name]
|
|
268
|
+
# Membership is the same rule per member on a multi-value
|
|
269
|
+
# column, so it keeps the same code rather than gaining a twin.
|
|
270
|
+
# The arity test stays here: on a SCALAR enum column a list is
|
|
271
|
+
# simply not a member, which is what already fires today.
|
|
272
|
+
declared = (
|
|
273
|
+
value
|
|
274
|
+
if is_multi_value(col_type or "") and isinstance(value, list)
|
|
275
|
+
else [value]
|
|
276
|
+
)
|
|
277
|
+
# Distinct, so a member repeated twice is one mistake and one
|
|
278
|
+
# finding. The duplicate rule above is what reports the repeat.
|
|
279
|
+
distinct: list[object] = []
|
|
280
|
+
for member in declared:
|
|
281
|
+
if member not in distinct:
|
|
282
|
+
distinct.append(member)
|
|
283
|
+
for member in distinct:
|
|
284
|
+
if member not in demo_enum.members:
|
|
285
|
+
findings.append(Finding(
|
|
286
|
+
FindingCode.DEMO_ENUM_VALUE_UNKNOWN,
|
|
287
|
+
f"{ctx}: {col_name} value {member!r} is not a member "
|
|
288
|
+
f"of enum {enum_name}.",
|
|
289
|
+
location=at,
|
|
290
|
+
))
|
|
291
|
+
|
|
292
|
+
return findings
|