ccs-digitalmarketplace-frameworks 2.3.5 → 3.0.0

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -0
  3. package/frameworks/digital-outcomes-6/manifests/agreement.yml +10 -0
  4. package/frameworks/digital-outcomes-6/questions/agreements/legalText.yml +52 -0
  5. package/frameworks/digital-outcomes-6/questions/agreements/signerName.yml +15 -0
  6. package/frameworks/digital-outcomes-6/questions/agreements/signerRole.yml +15 -0
  7. package/frameworks/digital-outcomes-6/questions/agreements/signerTermsAndConditions.yml +15 -0
  8. package/frameworks/digital-outcomes-and-specialists-7/manifests/edit_service.yml +181 -1
  9. package/frameworks/digital-outcomes-and-specialists-7/manifests/edit_service_as_admin.yml +204 -0
  10. package/frameworks/digital-outcomes-and-specialists-7/manifests/edit_submission.yml +8 -0
  11. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicDayRate.yml +1 -1
  12. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicDayRateSpecialist.yml +1 -1
  13. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicLocations.yml +2 -2
  14. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystBasicUkDayRate.yml +1 -1
  15. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadDayRate.yml +1 -1
  16. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadDayRateSpecialist.yml +1 -1
  17. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadLocations.yml +2 -2
  18. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystLeadUkDayRate.yml +1 -1
  19. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystRoles.yml +1 -1
  20. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorDayRate.yml +1 -1
  21. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorDayRateSpecialist.yml +1 -1
  22. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorLocations.yml +2 -2
  23. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorUkDayRate.yml +1 -1
  24. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterDayRate.yml +1 -1
  25. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterDayRateSpecialist.yml +1 -1
  26. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterLocations.yml +2 -2
  27. package/frameworks/digital-outcomes-and-specialists-7/questions/services/qualityAssuranceTestingQualityAssuranceTestingAnalystTesterUkDayRate.yml +1 -1
  28. package/frameworks/g-cloud-13/manifests/agreement.yml +10 -0
  29. package/frameworks/g-cloud-13/questions/agreements/legalText.yml +142 -0
  30. package/frameworks/g-cloud-13/questions/agreements/signerName.yml +15 -0
  31. package/frameworks/g-cloud-13/questions/agreements/signerRole.yml +15 -0
  32. package/frameworks/g-cloud-13/questions/agreements/signerTermsAndConditions.yml +15 -0
  33. package/package.json +1 -1
  34. package/requirements-dev.txt +2 -2
  35. package/requirements.in +1 -1
  36. package/requirements.txt +1 -1
  37. package/schema_generator/validation.py +99 -22
  38. package/schemas/manifests.json +3 -0
  39. package/scripts/generate-validation-schemas.py +9 -1
  40. package/tests/test_content.py +3 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  Records breaking changes from major version bumps
4
4
 
5
+ ## 3.0.0
6
+
7
+ Add the agreements questions for the framework award form
8
+
5
9
  ## 2.0.0
6
10
 
7
11
  Rename evaluations to additional lot questions
package/README.md CHANGED
@@ -103,6 +103,7 @@ Each section contains:
103
103
  * `slug` can be used to manually override the slug used for this section.
104
104
  * `editable` controls whether section allows updates for the questions, boolean value
105
105
  * `edit_questions` controls whether individual questions can be edited separately (only supported by `multiquestion` questions)
106
+ * `removable` controls whether individual questions can be removed separately (only supported by `multiquestion` questions and is the same as `edit_questions` by default)
106
107
  * `description` text to display after the section name. This field is a [TemplateField](https://github.com/alphagov/digitalmarketplace-content-loader/blob/474d9adce0f422700cbf2dfc8815a7503ab368bc/dmcontent/utils.py#L8).
107
108
  * `summary_page_description` text to display between the summary table heading and the table body
108
109
  * `step` decides how sections are grouped on (brief) overview pages
@@ -0,0 +1,10 @@
1
+ - name: Legal text
2
+ questions:
3
+ - legalText
4
+
5
+
6
+ - name: Framework agreement
7
+ questions:
8
+ - signerName
9
+ - signerRole
10
+ - signerTermsAndConditions
@@ -0,0 +1,52 @@
1
+ type: text
2
+ optional: true
3
+ question: |
4
+ <ol class="govuk-list govuk-list--number">
5
+ <li>
6
+ <strong>CCS</strong>:
7
+ The Minister for the Cabinet Office represented by its executive agency the Crown Commercial Service (CCS). Its offices are on: 9th Floor, The Capital, Old Hall Street, Liverpool L3 9PP.
8
+ </li>
9
+ <li>
10
+ <strong>Supplier</strong>: [[registered_name]]<br>
11
+ address: [[registered_address]]<br>
12
+ registration number: [[registration_number]]<br>
13
+ SID4GOV ID: [[sid4_goc_id]]<br>
14
+ </li>
15
+ <li>
16
+ <strong>Framework Contract</strong>: This framework contract between CCS and the Supplier allows the Supplier to be considered for Call-Off Contracts to supply the Deliverables in [[completed_lots_sentence]].
17
+ You cannot deliver in any other Lot under this Contract. Any references made to other Lots in this Contract do not apply. This opportunity is advertised in the Contract Notice in the Find a Tender Service reference (2022/S 000-001105).
18
+ </li>
19
+ <li>
20
+ <strong>Deliverables</strong>: See Framework Schedule 1 (Specification) for further details.
21
+ </li>
22
+ <li>
23
+ <strong>Framework Start Date</strong>: 28 June 2022
24
+ </li>
25
+ <li>
26
+ <strong>Framework Expiry Date</strong>: 23:59 on 27 June 2024
27
+ </li>
28
+ <li>
29
+ <strong>Framework Initial Period</strong>: From Framework Start Date to Framework Expiry Date, inclusive.
30
+ </li>
31
+ <li>
32
+ <strong>Framework Optional Extension Period</strong>: Up to twelve (12) months, by CCS giving written notice to Suppliers.
33
+ </li>
34
+ <li value="18">
35
+ <strong>Supplier Authorised Representative</strong>: [[primary_contact]], [[contacts_role]], [[contact_email_contract_notice]]
36
+ </li>
37
+ </ol>
38
+
39
+ <p>
40
+ The finalised Framework Award Form includes an electronically signed Framework Award Form. It is electronically signed by the Supplier when they make the legal declaration confirming their agreement to the Digital Outcomes 6 Framework Contract, and countersigned by the Crown Commercial Service.
41
+ </p>
42
+
43
+ <p class="govuk-body">
44
+ <a href="[[framework_govuk_url]]">
45
+ Read the [[framework_name]] contract terms and conditions
46
+ </a>
47
+ </p>
48
+
49
+ depends:
50
+ - "on": agreementVersion
51
+ being:
52
+ - standard
@@ -0,0 +1,15 @@
1
+ question: Your full name
2
+ type: text
3
+
4
+ depends:
5
+ - "on": agreementVersion
6
+ being:
7
+ - standard
8
+
9
+ max_length_in_characters: 256
10
+
11
+ validations:
12
+ - name: answer_required
13
+ message: Enter your full name.
14
+ - name: under_character_limit
15
+ message: Name must be under 256 characters.
@@ -0,0 +1,15 @@
1
+ question: Your role in the company
2
+ type: text
3
+
4
+ depends:
5
+ - "on": agreementVersion
6
+ being:
7
+ - standard
8
+
9
+ max_length_in_characters: 256
10
+
11
+ validations:
12
+ - name: answer_required
13
+ message: Enter your role in the company.
14
+ - name: under_character_limit
15
+ message: Name must be under 256 characters.
@@ -0,0 +1,15 @@
1
+ question: <span class="govuk-visually-hidden">Do you accept the terms and conditions of the [[contract_title]]?</span>
2
+ type: checkboxes
3
+
4
+ depends:
5
+ - "on": agreementVersion
6
+ being:
7
+ - standard
8
+
9
+ options:
10
+ - label: I accept the terms and conditions of the [[contract_title]]
11
+ value: "yes"
12
+
13
+ validations:
14
+ - name: answer_required
15
+ message: Accept the terms and conditions of the [[contract_title]]
@@ -1,6 +1,6 @@
1
1
  -
2
2
  name: Research studio name
3
- editable: False
3
+ editable: True
4
4
  questions:
5
5
  - serviceName
6
6
 
@@ -14,6 +14,9 @@
14
14
  - accessibleApplicationsOutcomes
15
15
  - technicalDebtAndFutureLegacy
16
16
  - governmentCyberSecurityStandard
17
+ - provideTeamCapabilities
18
+ - provideDigitalRoles
19
+ - workAcrossAllLocations
17
20
 
18
21
  - name: Team capabilities
19
22
  editable: False
@@ -26,3 +29,180 @@
26
29
  - testingAndAuditing
27
30
  - userExperienceAndDesign
28
31
  - userResearch
32
+
33
+ - name: Team capabilities
34
+ editable: False
35
+ questions:
36
+ - performanceAnalysisAll
37
+ - securityAll
38
+ - deliveryAll
39
+ - softwareDevelopmentAll
40
+ - supportAndOperationsAll
41
+ - testingAndAuditingAll
42
+ - userExperienceAndDesignAll
43
+ - userResearchAll
44
+
45
+ - name: Architecture roles
46
+ editable: False
47
+ questions:
48
+ - multiqArchitectureRolesBusinessArchitect
49
+ - multiqArchitectureRolesDataArchitect
50
+ - multiqArchitectureRolesEnterpriseArchitect
51
+ - multiqArchitectureRolesNetworkArchitect
52
+ - multiqArchitectureRolesSecurityArchitect
53
+ - multiqArchitectureRolesSolutionArchitect
54
+ - multiqArchitectureRolesTechnicalArchitect
55
+
56
+ - name: Cyber security roles
57
+ editable: False
58
+ questions:
59
+ - multiqCyberSecurityRolesCyberSecurity
60
+
61
+ - name: Data roles
62
+ editable: False
63
+ questions:
64
+ - multiqDataRolesAnalyticsEngineer
65
+ - multiqDataRolesDataAnalyst
66
+ - multiqDataRolesDataEngineer
67
+ - multiqDataRolesDataEthicist
68
+ - multiqDataRolesDataGovernanceManager
69
+ - multiqDataRolesDataScientist
70
+ - multiqDataRolesMachineLearningEngineer
71
+ - multiqDataRolesPerformanceAnalyst
72
+
73
+ - name: IT Operations Roles
74
+ editable: False
75
+ questions:
76
+ - multiqItOperationsRolesApplicationOperationsEngineer
77
+ - multiqItOperationsRolesBusinessRelationshipManager
78
+ - multiqItOperationsRolesChangeAndReleaseManager
79
+ - multiqItOperationsRolesCommandAndControlCentreManager
80
+ - multiqItOperationsRolesEndUserComputingEngineer
81
+ - multiqItOperationsRolesItServiceManager
82
+ - multiqItOperationsRolesIncidentManager
83
+ - multiqItOperationsRolesInfrastructureEngineer
84
+ - multiqItOperationsRolesInfrastructureOperationsEngineer
85
+ - multiqItOperationsRolesProblemManager
86
+ - multiqItOperationsRolesServiceDeskManager
87
+ - multiqItOperationsRolesServiceTransitionManager
88
+
89
+ - name: Product and delivery roles
90
+ editable: False
91
+ questions:
92
+ - multiqProductAndDeliveryBusinessAnalyst
93
+ - multiqProductAndDeliveryDeliveryManager
94
+ - multiqProductAndDeliveryDigitalPortfolioManager
95
+ - multiqProductAndDeliveryProductManager
96
+ - multiqProductAndDeliveryProgrammeDeliveryManager
97
+ - multiqProductAndDeliveryServiceOwner
98
+
99
+ - name: Quality assurance testing (QAT) roles
100
+ editable: False
101
+ questions:
102
+ - multiqQualityAssuranceTestingQualityAssuranceTestingAnalyst
103
+ - multiqQualityAssuranceTestingTestEngineer
104
+ - multiqQualityAssuranceTestingTestManager
105
+
106
+ - name: Software development roles
107
+ editable: False
108
+ questions:
109
+ - multiqSoftwareDevelopmentDevelopmentOperationsEngineer
110
+ - multiqSoftwareDevelopmentFrontendDeveloper
111
+ - multiqSoftwareDevelopmentSoftwareDeveloper
112
+
113
+ - name: User-centred design roles
114
+ editable: False
115
+ questions:
116
+ - multiqUserCentredDesignAccessibilitySpecialist
117
+ - multiqUserCentredDesignContentDesigner
118
+ - multiqUserCentredDesignContentStrategist
119
+ - multiqUserCentredDesignGraphicDesigner
120
+ - multiqUserCentredDesignInteractionDesigner
121
+ - multiqUserCentredDesignServiceDesigner
122
+ - multiqUserCentredDesignTechnicalWriter
123
+ - multiqUserCentredDesignUserResearcher
124
+
125
+ - name: Architecture roles
126
+ editable: False
127
+ questions:
128
+ - multiqArchitectureRolesBusinessArchitectDCDP
129
+ - multiqArchitectureRolesDataArchitectDCDP
130
+ - multiqArchitectureRolesEnterpriseArchitectDCDP
131
+ - multiqArchitectureRolesNetworkArchitectDCDP
132
+ - multiqArchitectureRolesSecurityArchitectDCDP
133
+ - multiqArchitectureRolesSolutionArchitectDCDP
134
+ - multiqArchitectureRolesTechnicalArchitectDCDP
135
+
136
+ - name: Cyber security roles
137
+ editable: False
138
+ questions:
139
+ - multiqCyberSecurityRolesCyberSecurityDCDP
140
+
141
+ - name: Data roles
142
+ editable: False
143
+ questions:
144
+ - multiqDataRolesAnalyticsEngineerDCDP
145
+ - multiqDataRolesDataAnalystDCDP
146
+ - multiqDataRolesDataEngineerDCDP
147
+ - multiqDataRolesDataEthicistDCDP
148
+ - multiqDataRolesDataGovernanceManagerDCDP
149
+ - multiqDataRolesDataScientistDCDP
150
+ - multiqDataRolesMachineLearningEngineerDCDP
151
+ - multiqDataRolesPerformanceAnalystDCDP
152
+
153
+ - name: IT Operations Roles
154
+ editable: False
155
+ questions:
156
+ - multiqItOperationsRolesApplicationOperationsEngineerDCDP
157
+ - multiqItOperationsRolesBusinessRelationshipManagerDCDP
158
+ - multiqItOperationsRolesChangeAndReleaseManagerDCDP
159
+ - multiqItOperationsRolesCommandAndControlCentreManagerDCDP
160
+ - multiqItOperationsRolesEndUserComputingEngineerDCDP
161
+ - multiqItOperationsRolesItServiceManagerDCDP
162
+ - multiqItOperationsRolesIncidentManagerDCDP
163
+ - multiqItOperationsRolesInfrastructureEngineerDCDP
164
+ - multiqItOperationsRolesInfrastructureOperationsEngineerDCDP
165
+ - multiqItOperationsRolesProblemManagerDCDP
166
+ - multiqItOperationsRolesServiceDeskManagerDCDP
167
+ - multiqItOperationsRolesServiceTransitionManagerDCDP
168
+
169
+ - name: Product and delivery roles
170
+ editable: False
171
+ questions:
172
+ - multiqProductAndDeliveryBusinessAnalystDCDP
173
+ - multiqProductAndDeliveryDeliveryManagerDCDP
174
+ - multiqProductAndDeliveryDigitalPortfolioManagerDCDP
175
+ - multiqProductAndDeliveryProductManagerDCDP
176
+ - multiqProductAndDeliveryProgrammeDeliveryManagerDCDP
177
+ - multiqProductAndDeliveryServiceOwnerDCDP
178
+
179
+ - name: Quality assurance testing (QAT) roles
180
+ editable: False
181
+ questions:
182
+ - multiqQualityAssuranceTestingQualityAssuranceTestingAnalystDCDP
183
+ - multiqQualityAssuranceTestingTestEngineerDCDP
184
+ - multiqQualityAssuranceTestingTestManagerDCDP
185
+
186
+ - name: Software development roles
187
+ editable: False
188
+ questions:
189
+ - multiqSoftwareDevelopmentDevelopmentOperationsEngineerDCDP
190
+ - multiqSoftwareDevelopmentFrontendDeveloperDCDP
191
+ - multiqSoftwareDevelopmentSoftwareDeveloperDCDP
192
+
193
+ - name: User-centred design roles
194
+ editable: False
195
+ questions:
196
+ - multiqUserCentredDesignAccessibilitySpecialistDCDP
197
+ - multiqUserCentredDesignContentDesignerDCDP
198
+ - multiqUserCentredDesignContentStrategistDCDP
199
+ - multiqUserCentredDesignGraphicDesignerDCDP
200
+ - multiqUserCentredDesignInteractionDesignerDCDP
201
+ - multiqUserCentredDesignServiceDesignerDCDP
202
+ - multiqUserCentredDesignTechnicalWriterDCDP
203
+ - multiqUserCentredDesignUserResearcherDCDP
204
+
205
+ - name: Outcomes locations
206
+ editable: False
207
+ questions:
208
+ - outcomesLocations
@@ -14,6 +14,9 @@
14
14
  - accessibleApplicationsOutcomes
15
15
  - technicalDebtAndFutureLegacy
16
16
  - governmentCyberSecurityStandard
17
+ - provideTeamCapabilities
18
+ - provideDigitalRoles
19
+ - workAcrossAllLocations
17
20
 
18
21
  - name: Team capabilities
19
22
  editable: False
@@ -27,3 +30,204 @@
27
30
  - testingAndAuditing
28
31
  - userExperienceAndDesign
29
32
  - userResearch
33
+
34
+ - name: Team capabilities
35
+ editable: False
36
+ questions:
37
+ - performanceAnalysisAll
38
+ - securityAll
39
+ - deliveryAll
40
+ - softwareDevelopmentAll
41
+ - supportAndOperationsAll
42
+ - testingAndAuditingAll
43
+ - userExperienceAndDesignAll
44
+ - userResearchAll
45
+
46
+ - name: Architecture roles
47
+ editable: False
48
+ edit_questions: True
49
+ questions:
50
+ - multiqArchitectureRolesBusinessArchitect
51
+ - multiqArchitectureRolesDataArchitect
52
+ - multiqArchitectureRolesEnterpriseArchitect
53
+ - multiqArchitectureRolesNetworkArchitect
54
+ - multiqArchitectureRolesSecurityArchitect
55
+ - multiqArchitectureRolesSolutionArchitect
56
+ - multiqArchitectureRolesTechnicalArchitect
57
+
58
+ - name: Cyber security roles
59
+ editable: False
60
+ edit_questions: True
61
+ questions:
62
+ - multiqCyberSecurityRolesCyberSecurity
63
+
64
+ - name: Data roles
65
+ editable: False
66
+ edit_questions: True
67
+ questions:
68
+ - multiqDataRolesAnalyticsEngineer
69
+ - multiqDataRolesDataAnalyst
70
+ - multiqDataRolesDataEngineer
71
+ - multiqDataRolesDataEthicist
72
+ - multiqDataRolesDataGovernanceManager
73
+ - multiqDataRolesDataScientist
74
+ - multiqDataRolesMachineLearningEngineer
75
+ - multiqDataRolesPerformanceAnalyst
76
+
77
+ - name: IT Operations Roles
78
+ editable: False
79
+ edit_questions: True
80
+ questions:
81
+ - multiqItOperationsRolesApplicationOperationsEngineer
82
+ - multiqItOperationsRolesBusinessRelationshipManager
83
+ - multiqItOperationsRolesChangeAndReleaseManager
84
+ - multiqItOperationsRolesCommandAndControlCentreManager
85
+ - multiqItOperationsRolesEndUserComputingEngineer
86
+ - multiqItOperationsRolesItServiceManager
87
+ - multiqItOperationsRolesIncidentManager
88
+ - multiqItOperationsRolesInfrastructureEngineer
89
+ - multiqItOperationsRolesInfrastructureOperationsEngineer
90
+ - multiqItOperationsRolesProblemManager
91
+ - multiqItOperationsRolesServiceDeskManager
92
+ - multiqItOperationsRolesServiceTransitionManager
93
+
94
+ - name: Product and delivery roles
95
+ editable: False
96
+ edit_questions: True
97
+ questions:
98
+ - multiqProductAndDeliveryBusinessAnalyst
99
+ - multiqProductAndDeliveryDeliveryManager
100
+ - multiqProductAndDeliveryDigitalPortfolioManager
101
+ - multiqProductAndDeliveryProductManager
102
+ - multiqProductAndDeliveryProgrammeDeliveryManager
103
+ - multiqProductAndDeliveryServiceOwner
104
+
105
+ - name: Quality assurance testing (QAT) roles
106
+ editable: False
107
+ edit_questions: True
108
+ questions:
109
+ - multiqQualityAssuranceTestingQualityAssuranceTestingAnalyst
110
+ - multiqQualityAssuranceTestingTestEngineer
111
+ - multiqQualityAssuranceTestingTestManager
112
+
113
+ - name: Software development roles
114
+ editable: False
115
+ edit_questions: True
116
+ questions:
117
+ - multiqSoftwareDevelopmentDevelopmentOperationsEngineer
118
+ - multiqSoftwareDevelopmentFrontendDeveloper
119
+ - multiqSoftwareDevelopmentSoftwareDeveloper
120
+
121
+ - name: User-centred design roles
122
+ editable: False
123
+ edit_questions: True
124
+ questions:
125
+ - multiqUserCentredDesignAccessibilitySpecialist
126
+ - multiqUserCentredDesignContentDesigner
127
+ - multiqUserCentredDesignContentStrategist
128
+ - multiqUserCentredDesignGraphicDesigner
129
+ - multiqUserCentredDesignInteractionDesigner
130
+ - multiqUserCentredDesignServiceDesigner
131
+ - multiqUserCentredDesignTechnicalWriter
132
+ - multiqUserCentredDesignUserResearcher
133
+
134
+ - name: Architecture roles
135
+ editable: False
136
+ edit_questions: True
137
+ removable: False
138
+ questions:
139
+ - multiqArchitectureRolesBusinessArchitectDCDP
140
+ - multiqArchitectureRolesDataArchitectDCDP
141
+ - multiqArchitectureRolesEnterpriseArchitectDCDP
142
+ - multiqArchitectureRolesNetworkArchitectDCDP
143
+ - multiqArchitectureRolesSecurityArchitectDCDP
144
+ - multiqArchitectureRolesSolutionArchitectDCDP
145
+ - multiqArchitectureRolesTechnicalArchitectDCDP
146
+
147
+ - name: Cyber security roles
148
+ editable: False
149
+ edit_questions: True
150
+ removable: False
151
+ questions:
152
+ - multiqCyberSecurityRolesCyberSecurityDCDP
153
+
154
+ - name: Data roles
155
+ editable: False
156
+ edit_questions: True
157
+ removable: False
158
+ questions:
159
+ - multiqDataRolesAnalyticsEngineerDCDP
160
+ - multiqDataRolesDataAnalystDCDP
161
+ - multiqDataRolesDataEngineerDCDP
162
+ - multiqDataRolesDataEthicistDCDP
163
+ - multiqDataRolesDataGovernanceManagerDCDP
164
+ - multiqDataRolesDataScientistDCDP
165
+ - multiqDataRolesMachineLearningEngineerDCDP
166
+ - multiqDataRolesPerformanceAnalystDCDP
167
+
168
+ - name: IT Operations Roles
169
+ editable: False
170
+ edit_questions: True
171
+ removable: False
172
+ questions:
173
+ - multiqItOperationsRolesApplicationOperationsEngineerDCDP
174
+ - multiqItOperationsRolesBusinessRelationshipManagerDCDP
175
+ - multiqItOperationsRolesChangeAndReleaseManagerDCDP
176
+ - multiqItOperationsRolesCommandAndControlCentreManagerDCDP
177
+ - multiqItOperationsRolesEndUserComputingEngineerDCDP
178
+ - multiqItOperationsRolesItServiceManagerDCDP
179
+ - multiqItOperationsRolesIncidentManagerDCDP
180
+ - multiqItOperationsRolesInfrastructureEngineerDCDP
181
+ - multiqItOperationsRolesInfrastructureOperationsEngineerDCDP
182
+ - multiqItOperationsRolesProblemManagerDCDP
183
+ - multiqItOperationsRolesServiceDeskManagerDCDP
184
+ - multiqItOperationsRolesServiceTransitionManagerDCDP
185
+
186
+ - name: Product and delivery roles
187
+ editable: False
188
+ edit_questions: True
189
+ removable: False
190
+ questions:
191
+ - multiqProductAndDeliveryBusinessAnalystDCDP
192
+ - multiqProductAndDeliveryDeliveryManagerDCDP
193
+ - multiqProductAndDeliveryDigitalPortfolioManagerDCDP
194
+ - multiqProductAndDeliveryProductManagerDCDP
195
+ - multiqProductAndDeliveryProgrammeDeliveryManagerDCDP
196
+ - multiqProductAndDeliveryServiceOwnerDCDP
197
+
198
+ - name: Quality assurance testing (QAT) roles
199
+ editable: False
200
+ edit_questions: True
201
+ removable: False
202
+ questions:
203
+ - multiqQualityAssuranceTestingQualityAssuranceTestingAnalystDCDP
204
+ - multiqQualityAssuranceTestingTestEngineerDCDP
205
+ - multiqQualityAssuranceTestingTestManagerDCDP
206
+
207
+ - name: Software development roles
208
+ editable: False
209
+ edit_questions: True
210
+ removable: False
211
+ questions:
212
+ - multiqSoftwareDevelopmentDevelopmentOperationsEngineerDCDP
213
+ - multiqSoftwareDevelopmentFrontendDeveloperDCDP
214
+ - multiqSoftwareDevelopmentSoftwareDeveloperDCDP
215
+
216
+ - name: User-centred design roles
217
+ editable: False
218
+ edit_questions: True
219
+ removable: False
220
+ questions:
221
+ - multiqUserCentredDesignAccessibilitySpecialistDCDP
222
+ - multiqUserCentredDesignContentDesignerDCDP
223
+ - multiqUserCentredDesignContentStrategistDCDP
224
+ - multiqUserCentredDesignGraphicDesignerDCDP
225
+ - multiqUserCentredDesignInteractionDesignerDCDP
226
+ - multiqUserCentredDesignServiceDesignerDCDP
227
+ - multiqUserCentredDesignTechnicalWriterDCDP
228
+ - multiqUserCentredDesignUserResearcherDCDP
229
+
230
+ - name: Outcomes locations
231
+ editable: True
232
+ questions:
233
+ - outcomesLocations
@@ -160,6 +160,7 @@
160
160
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
161
161
  editable: False
162
162
  edit_questions: True
163
+ removable: False
163
164
  questions:
164
165
  - multiqArchitectureRolesBusinessArchitectDCDP
165
166
  - multiqArchitectureRolesDataArchitectDCDP
@@ -174,6 +175,7 @@
174
175
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
175
176
  editable: False
176
177
  edit_questions: True
178
+ removable: False
177
179
  questions:
178
180
  - multiqCyberSecurityRolesCyberSecurityDCDP
179
181
 
@@ -182,6 +184,7 @@
182
184
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
183
185
  editable: False
184
186
  edit_questions: True
187
+ removable: False
185
188
  questions:
186
189
  - multiqDataRolesAnalyticsEngineerDCDP
187
190
  - multiqDataRolesDataAnalystDCDP
@@ -197,6 +200,7 @@
197
200
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
198
201
  editable: False
199
202
  edit_questions: True
203
+ removable: False
200
204
  questions:
201
205
  - multiqItOperationsRolesApplicationOperationsEngineerDCDP
202
206
  - multiqItOperationsRolesBusinessRelationshipManagerDCDP
@@ -216,6 +220,7 @@
216
220
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
217
221
  editable: False
218
222
  edit_questions: True
223
+ removable: False
219
224
  questions:
220
225
  - multiqProductAndDeliveryBusinessAnalystDCDP
221
226
  - multiqProductAndDeliveryDeliveryManagerDCDP
@@ -229,6 +234,7 @@
229
234
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
230
235
  editable: False
231
236
  edit_questions: True
237
+ removable: False
232
238
  questions:
233
239
  - multiqQualityAssuranceTestingQualityAssuranceTestingAnalystDCDP
234
240
  - multiqQualityAssuranceTestingTestEngineerDCDP
@@ -239,6 +245,7 @@
239
245
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
240
246
  editable: False
241
247
  edit_questions: True
248
+ removable: False
242
249
  questions:
243
250
  - multiqSoftwareDevelopmentDevelopmentOperationsEngineerDCDP
244
251
  - multiqSoftwareDevelopmentFrontendDeveloperDCDP
@@ -249,6 +256,7 @@
249
256
  You must be able to provide all roles to be eligible to supply digital capabilities and delivery partners.
250
257
  editable: False
251
258
  edit_questions: True
259
+ removable: False
252
260
  questions:
253
261
  - multiqUserCentredDesignAccessibilitySpecialistDCDP
254
262
  - multiqUserCentredDesignContentDesignerDCDP
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
23
- message: Enter the amount you will charge for a qat analyst
23
+ message: Enter the amount you will charge for a QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
23
- message: Enter the amount you will charge for a qat analyst
23
+ message: Enter the amount you will charge for a QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -1,6 +1,6 @@
1
- name: Where will your qat analyst work?
1
+ name: Where will your QAT analyst work?
2
2
  question: |
3
- <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your qat analyst work?</span></p>
3
+ <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your QAT analyst work?</span></p>
4
4
  <p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
5
5
  hint: |
6
6
  ‘Offsite’ means the supplier will not be working at the buyer’s own sites.
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicUkPriceMax
23
- message: Enter the amount you will charge for a qat analyst
23
+ message: Enter the amount you will charge for a QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystBasicUkPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
23
- message: Enter the amount you will charge for a lead qat analyst
23
+ message: Enter the amount you will charge for a lead QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
23
- message: Enter the amount you will charge for a lead qat analyst
23
+ message: Enter the amount you will charge for a lead QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -1,6 +1,6 @@
1
- name: Where will your lead qat analyst work?
1
+ name: Where will your lead QAT analyst work?
2
2
  question: |
3
- <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your lead qat analyst work?</span></p>
3
+ <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your lead QAT analyst work?</span></p>
4
4
  <p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
5
5
  hint: |
6
6
  ‘Offsite’ means the supplier will not be working at the buyer’s own sites.
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadUkPriceMax
23
- message: Enter the amount you will charge for a lead qat analyst
23
+ message: Enter the amount you will charge for a lead QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystLeadUkPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -1,5 +1,5 @@
1
1
  name: Quality assurance testing (QAT) analyst roles
2
- question: What role levels can you provide for a quality assurance testing (qat) analyst?
2
+ question: What role levels can you provide for a quality assurance testing (QAT) analyst?
3
3
 
4
4
  depends:
5
5
  - "on": lot
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
23
- message: Enter the amount you will charge for a senior qat analyst
23
+ message: Enter the amount you will charge for a senior QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
23
- message: Enter the amount you will charge for a senior qat analyst
23
+ message: Enter the amount you will charge for a senior QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -1,6 +1,6 @@
1
- name: Where will your senior qat analyst work?
1
+ name: Where will your senior QAT analyst work?
2
2
  question: |
3
- <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your senior qat analyst work?</span></p>
3
+ <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your senior QAT analyst work?</span></p>
4
4
  <p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
5
5
  hint: |
6
6
  ‘Offsite’ means the supplier will not be working at the buyer’s own sites.
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorUkPriceMax
23
- message: Enter the amount you will charge for a senior qat analyst
23
+ message: Enter the amount you will charge for a senior QAT analyst
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystSeniorUkPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
23
- message: Enter the amount you will charge for a tester (qat)
23
+ message: Enter the amount you will charge for a tester (QAT)
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
23
- message: Enter the amount you will charge for a tester (qat)
23
+ message: Enter the amount you will charge for a tester (QAT)
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -1,6 +1,6 @@
1
- name: Where will your tester (qat) work?
1
+ name: Where will your tester (QAT) work?
2
2
  question: |
3
- <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your tester (qat) work?</span></p>
3
+ <p class="govuk-!-margin-bottom-2"><span class="govuk-fieldset__legend--s">Where will your tester (QAT) work?</span></p>
4
4
  <p class="govuk-!-margin-bottom-0"><span class="govuk-fieldset__legend--s">Choose all the locations where the specialist can work at buyer’s sites, and whether they can work offsite.</span></p>
5
5
  hint: |
6
6
  ‘Offsite’ means the supplier will not be working at the buyer’s own sites.
@@ -20,7 +20,7 @@ digit_limits:
20
20
  validations:
21
21
  - name: answer_required
22
22
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterUkPriceMax
23
- message: Enter the amount you will charge for a tester (qat)
23
+ message: Enter the amount you will charge for a tester (QAT)
24
24
  - name: not_money_format
25
25
  field: qualityAssuranceTestingQualityAssuranceTestingAnalystTesterUkPriceMax
26
26
  message: Maximum price must be a number less than 10,000, without units, like 99.95
@@ -0,0 +1,10 @@
1
+ - name: Legal text
2
+ questions:
3
+ - legalText
4
+
5
+
6
+ - name: Framework agreement
7
+ questions:
8
+ - signerName
9
+ - signerRole
10
+ - signerTermsAndConditions
@@ -0,0 +1,142 @@
1
+ type: text
2
+ optional: true
3
+ question: |
4
+ <h2 class="govuk-heading-m">
5
+ 1. The Appointment
6
+ </h2>
7
+ <p>
8
+ This section includes terms about the Supplier appointment.
9
+ </p>
10
+
11
+ <p>
12
+ 1.1 <strong>Appointment</strong>
13
+ <p>
14
+ <p>
15
+ Under the terms of this Framework Agreement (RM1557.13) and the Supplier’s Application, the Minister for the Cabinet Office, represented by the Crown Commercial Service (CCS), 9th Floor, The Capital, Old Hall Street, Liverpool, L3 9PP, appoints:
16
+ </p>
17
+
18
+ <p>
19
+ <strong>Company:</strong>
20
+ [[registered_name]]
21
+ </p>
22
+
23
+ <p>
24
+ <strong>Registered address:</strong>
25
+ [[registered_address]]
26
+ </p>
27
+
28
+ <p>
29
+ <strong>Company number:</strong>
30
+ [[registration_number]]
31
+ </p>
32
+
33
+ <p>
34
+ (the ‘Supplier’), as a Framework Agreement Supplier of G-Cloud Services who can be considered for Call-Off Contracts as outlined in the Contract Notice in the Find a Tender Service reference (2022/S 000-006385).
35
+ </p>
36
+
37
+ <p>
38
+ <span>
39
+ 1.2
40
+ </span>
41
+ <span>
42
+ <strong>Appointment is to:</strong>
43
+ [[completed_lots]]
44
+ </span>
45
+ </p>
46
+
47
+ <p>
48
+ <span>
49
+ 1.3
50
+ </span>
51
+ <span>
52
+ <strong>Appointment starts at:</strong>
53
+ 9 November 2022
54
+ </span>
55
+ </p>
56
+
57
+ <p>
58
+ <span>
59
+ 1.4
60
+ </span>
61
+ <span>
62
+ <strong>Appointment ends at:</strong>
63
+ 23:59 on 8 November 2023 (unless this Framework Agreement is extended by CCS or Ends early).
64
+ </span>
65
+ </p>
66
+
67
+ <p>
68
+ <span>
69
+ 1.5
70
+ </span>
71
+ <span>
72
+ <strong>Framework Agreement extension:</strong>
73
+ Up to 12 months, by CCS giving written notice to Suppliers.
74
+ </span>
75
+ </p>
76
+
77
+ <p>
78
+ <span>
79
+ 1.6
80
+ </span>
81
+ <span>
82
+ <strong>Framework Agreement term:</strong>
83
+ From and including the date at 1.3 above (Appointment starts at) to and including the date at 1.4 above (Appointment ends at).
84
+ </span>
85
+ </p>
86
+
87
+ <p>
88
+ <span>
89
+ 1.7
90
+ </span>
91
+ <span>
92
+ <strong>Call-Off Contract length:</strong>
93
+ Up to 36 months plus an optional extension period of up to 12 months.
94
+ </span>
95
+ </p>
96
+
97
+ <p>
98
+ <span>
99
+ 1.8
100
+ </span>
101
+ <span>
102
+ The Parties agree that they have read this Framework Agreement and by signing below agree to be bound by its terms.
103
+ </span>
104
+ </p>
105
+
106
+ <p>
107
+ <span>
108
+ 1.9
109
+ </span>
110
+ <span>
111
+ All sections, including the Invitation to Tender and Schedules to this Framework Agreement are expressly part of this Framework Agreement.
112
+ </span>
113
+ </p>
114
+
115
+ <p>
116
+ <span>
117
+ 1.10
118
+ </span>
119
+ <span>
120
+ CCS will pay £1 to the Supplier to perform its obligations under this Framework Agreement, receipt of which is acknowledged by the Supplier signing this Framework Agreement.
121
+ </span>
122
+ </p>
123
+
124
+ <p>
125
+ <span>
126
+ 1.11
127
+ </span>
128
+ <span>
129
+ The finalised Framework Agreement includes an electronically signed Framework Agreement. It is electronically signed by the Supplier when they make the legal declaration confirming their agreement to the G-Cloud 13 Framework Agreement, and countersigned by the Crown Commercial Service.
130
+ </span>
131
+ </p>
132
+
133
+ <p class="govuk-body">
134
+ <a href="[[framework_govuk_url]]">
135
+ Read the [[framework_name]] contract terms and conditions
136
+ </a>
137
+ </p>
138
+
139
+ depends:
140
+ - "on": agreementVersion
141
+ being:
142
+ - standard
@@ -0,0 +1,15 @@
1
+ question: Your full name
2
+ type: text
3
+
4
+ depends:
5
+ - "on": agreementVersion
6
+ being:
7
+ - standard
8
+
9
+ max_length_in_characters: 256
10
+
11
+ validations:
12
+ - name: answer_required
13
+ message: Enter your full name.
14
+ - name: under_character_limit
15
+ message: Name must be under 256 characters.
@@ -0,0 +1,15 @@
1
+ question: Your role in the company
2
+ type: text
3
+
4
+ depends:
5
+ - "on": agreementVersion
6
+ being:
7
+ - standard
8
+
9
+ max_length_in_characters: 256
10
+
11
+ validations:
12
+ - name: answer_required
13
+ message: Enter your role in the company.
14
+ - name: under_character_limit
15
+ message: Name must be under 256 characters.
@@ -0,0 +1,15 @@
1
+ question: <span class="govuk-visually-hidden">Do you accept the terms and conditions of the [[contract_title]]?</span>
2
+ type: checkboxes
3
+
4
+ depends:
5
+ - "on": agreementVersion
6
+ being:
7
+ - standard
8
+
9
+ options:
10
+ - label: I accept the terms and conditions of the [[contract_title]]
11
+ value: "yes"
12
+
13
+ validations:
14
+ - name: answer_required
15
+ message: Accept the terms and conditions of the [[contract_title]]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccs-digitalmarketplace-frameworks",
3
- "version": "2.3.5",
3
+ "version": "3.0.0",
4
4
  "description": "Data files for Digital Marketplace’s procurement frameworks",
5
5
  "repository": "git@github.com:Crown-Commercial-Service/ccs-digitalmarketplace-frameworks",
6
6
  "author": "enquiries@digitalmarketplace.service.gov.uk"
@@ -34,7 +34,7 @@ ccs-digitalmarketplace-apiclient==25.11.0
34
34
  # via
35
35
  # -r requirements.txt
36
36
  # ccs-digitalmarketplace-utils
37
- ccs-digitalmarketplace-content-loader==11.5.0
37
+ ccs-digitalmarketplace-content-loader==11.6.0
38
38
  # via -r requirements.txt
39
39
  ccs-digitalmarketplace-utils==68.0.0
40
40
  # via
@@ -115,7 +115,7 @@ govuk-country-register==0.5.0
115
115
  # via
116
116
  # -r requirements.txt
117
117
  # ccs-digitalmarketplace-utils
118
- hypothesis==6.112.1
118
+ hypothesis==6.112.2
119
119
  # via -r requirements-dev.in
120
120
  idna==3.7
121
121
  # via
package/requirements.in CHANGED
@@ -1,5 +1,5 @@
1
1
  docopt==0.6.2
2
2
  deepmerge==2.0
3
3
  python-json-logger==2.0.7
4
- ccs-digitalmarketplace-content-loader==11.5.0
4
+ ccs-digitalmarketplace-content-loader==11.6.0
5
5
  ccs-digitalmarketplace-utils==68.0.0
package/requirements.txt CHANGED
@@ -18,7 +18,7 @@ cachelib==0.13.0
18
18
  # via flask-session
19
19
  ccs-digitalmarketplace-apiclient==25.11.0
20
20
  # via ccs-digitalmarketplace-utils
21
- ccs-digitalmarketplace-content-loader==11.5.0
21
+ ccs-digitalmarketplace-content-loader==11.6.0
22
22
  # via -r requirements.in
23
23
  ccs-digitalmarketplace-utils==68.0.0
24
24
  # via
@@ -28,6 +28,10 @@ MANIFESTS = {
28
28
  'evaluations': {
29
29
  'question_set': 'additional-lot-questions',
30
30
  'manifest': 'evaluations'
31
+ },
32
+ 'agreements': {
33
+ 'question_set': 'agreements',
34
+ 'manifest': 'agreement'
31
35
  }
32
36
  }
33
37
 
@@ -61,17 +65,53 @@ DOS7_LOTS = [
61
65
  ('digital-specialists', 'Digital specialists'),
62
66
  ('user-research-studios-and-participants', 'User research studios and participants'),
63
67
  ]
68
+ STANDARD_AGREEMENT_VERSIONS = [
69
+ ('standard', 'Standard agreement')
70
+ ]
64
71
 
65
72
  FRAMEWORKS_AND_LOTS = {
66
73
  "g-cloud": [
67
- {'framework_slug': 'g-cloud-7', 'framework_name': "G-Cloud 7", 'lots': LEGACY_GCLOUD_LOTS},
68
- {'framework_slug': 'g-cloud-8', 'framework_name': "G-Cloud 8", 'lots': LEGACY_GCLOUD_LOTS},
69
- {'framework_slug': 'g-cloud-9', 'framework_name': "G-Cloud 9", 'lots': G_CLOUD_LOTS},
70
- {'framework_slug': 'g-cloud-10', 'framework_name': "G-Cloud 10", 'lots': G_CLOUD_LOTS},
71
- {'framework_slug': 'g-cloud-11', 'framework_name': "G-Cloud 11", 'lots': G_CLOUD_LOTS},
72
- {'framework_slug': 'g-cloud-12', 'framework_name': "G-Cloud 12", 'lots': G_CLOUD_LOTS},
73
- {'framework_slug': 'g-cloud-13', 'framework_name': "G-Cloud 13", 'lots': G_CLOUD13_LOTS},
74
- {'framework_slug': 'g-cloud-14', 'framework_name': "G-Cloud 14", 'lots': G_CLOUD13_LOTS},
74
+ {
75
+ 'framework_slug': 'g-cloud-7',
76
+ 'framework_name': "G-Cloud 7",
77
+ 'lots': LEGACY_GCLOUD_LOTS
78
+ },
79
+ {
80
+ 'framework_slug': 'g-cloud-8',
81
+ 'framework_name': "G-Cloud 8",
82
+ 'lots': LEGACY_GCLOUD_LOTS
83
+ },
84
+ {
85
+ 'framework_slug': 'g-cloud-9',
86
+ 'framework_name': "G-Cloud 9",
87
+ 'lots': G_CLOUD_LOTS
88
+ },
89
+ {
90
+ 'framework_slug': 'g-cloud-10',
91
+ 'framework_name': "G-Cloud 10",
92
+ 'lots': G_CLOUD_LOTS
93
+ },
94
+ {
95
+ 'framework_slug': 'g-cloud-11',
96
+ 'framework_name': "G-Cloud 11",
97
+ 'lots': G_CLOUD_LOTS
98
+ },
99
+ {
100
+ 'framework_slug': 'g-cloud-12',
101
+ 'framework_name': "G-Cloud 12",
102
+ 'lots': G_CLOUD_LOTS
103
+ },
104
+ {
105
+ 'framework_slug': 'g-cloud-13',
106
+ 'framework_name': "G-Cloud 13",
107
+ 'lots': G_CLOUD13_LOTS,
108
+ 'agreement_versions': STANDARD_AGREEMENT_VERSIONS
109
+ },
110
+ {
111
+ 'framework_slug': 'g-cloud-14',
112
+ 'framework_name': "G-Cloud 14",
113
+ 'lots': G_CLOUD13_LOTS
114
+ },
75
115
  ],
76
116
  "digital-outcomes-and-specialists": [
77
117
  {
@@ -102,7 +142,8 @@ FRAMEWORKS_AND_LOTS = {
102
142
  {
103
143
  'framework_slug': 'digital-outcomes-6',
104
144
  'framework_name': "Digital Outcomes 6",
105
- 'lots': DOS6_LOTS
145
+ 'lots': DOS6_LOTS,
146
+ 'agreement_versions': STANDARD_AGREEMENT_VERSIONS
106
147
  },
107
148
  {
108
149
  'framework_slug': 'digital-outcomes-and-specialists-7',
@@ -129,17 +170,29 @@ def _get_schema_title_and_slugs(schema_type, framework_family=None, exclude_lots
129
170
  for framework in framework_list:
130
171
  if framework['framework_slug'] in exclude_frameworks:
131
172
  continue
132
- for lot_slug, lot_name in framework['lots']:
133
- if lot_slug in exclude_lots:
134
- continue
135
-
136
- titles_and_slugs.append(
137
- (
138
- "{} {} {}".format(framework['framework_name'], lot_name, schema_type),
139
- framework['framework_slug'],
140
- lot_slug
173
+
174
+ if schema_type == 'Agreement questions':
175
+ if 'agreement_versions' in framework:
176
+ for agreement_version, agreement_version_name in framework['agreement_versions']:
177
+ titles_and_slugs.append(
178
+ (
179
+ "{} {} {}".format(framework['framework_name'], agreement_version_name, schema_type),
180
+ framework['framework_slug'],
181
+ agreement_version
182
+ )
183
+ )
184
+ else:
185
+ for lot_slug, lot_name in framework['lots']:
186
+ if lot_slug in exclude_lots:
187
+ continue
188
+
189
+ titles_and_slugs.append(
190
+ (
191
+ "{} {} {}".format(framework['framework_name'], lot_name, schema_type),
192
+ framework['framework_slug'],
193
+ lot_slug
194
+ )
141
195
  )
142
- )
143
196
  return titles_and_slugs
144
197
 
145
198
 
@@ -184,14 +237,32 @@ SCHEMAS = {
184
237
  "user-research-participants",
185
238
  "user-research-studios-and-participants",
186
239
  ],
240
+ ),
241
+ 'agreements': _get_schema_title_and_slugs(
242
+ "Agreement questions",
243
+ exclude_frameworks=[
244
+ 'g-cloud-7',
245
+ 'g-cloud-8',
246
+ 'g-cloud-9',
247
+ 'g-cloud-10',
248
+ 'g-cloud-11',
249
+ 'g-cloud-12',
250
+ 'g-cloud-14',
251
+ 'digital-outcomes-and-specialists',
252
+ 'digital-outcomes-and-specialist-2',
253
+ 'digital-outcomes-and-specialist-3',
254
+ 'digital-outcomes-and-specialist-4',
255
+ 'digital-outcomes-and-specialist-5',
256
+ 'digital-outcomes-and-specialist-7',
257
+ ],
187
258
  )
188
259
  }
189
260
 
190
261
 
191
- def load_questions(schema_type, framework_slug, lot_slug):
262
+ def load_questions(schema_type, framework_slug, lot_slug_or_agreement_version):
192
263
  loader = ContentLoader('./')
193
264
  print(
194
- f'{framework_slug}/{lot_slug} '
265
+ f'{framework_slug}/{lot_slug_or_agreement_version} '
195
266
  f'question_set: {MANIFESTS[schema_type]["question_set"]}, '
196
267
  f'schema_type: {MANIFESTS[schema_type]["manifest"]}'
197
268
  )
@@ -202,10 +273,16 @@ def load_questions(schema_type, framework_slug, lot_slug):
202
273
  MANIFESTS[schema_type]['manifest']
203
274
  )
204
275
 
276
+ if schema_type == 'agreements':
277
+ filter_key = 'agreementVersion'
278
+ else:
279
+ filter_key = 'lot'
280
+
205
281
  manifest = loader.get_manifest(framework_slug, MANIFESTS[schema_type]['manifest']).filter(
206
- {'lot': lot_slug},
282
+ {filter_key: lot_slug_or_agreement_version},
207
283
  dynamic=False
208
284
  )
285
+
209
286
  return {q['id']: q for q in sum((s.questions for s in manifest.sections), [])}
210
287
 
211
288
 
@@ -20,6 +20,9 @@
20
20
  "edit_questions": {
21
21
  "type": "boolean"
22
22
  },
23
+ "removable": {
24
+ "type": "boolean"
25
+ },
23
26
  "questions": {
24
27
  "type": "array",
25
28
  "items": {
@@ -2,7 +2,7 @@
2
2
  """Generate validation JSON schemas from the frameworks questions content.
3
3
 
4
4
  Usage:
5
- generate-validation-schemas.py --output-path=<output_path>
5
+ generate-validation-schemas.py --output-path=<output_path> [--framework=<framework_slug>] [--lot=<lot_slug>]
6
6
 
7
7
  """
8
8
  import os
@@ -20,12 +20,20 @@ from schema_generator.validation import generate_schema_todir, SCHEMAS
20
20
  if __name__ == '__main__':
21
21
  arguments = docopt(__doc__)
22
22
  OUTPUT_DIR = arguments['--output-path']
23
+ FRAMEWORK_SLUG = arguments.get('--framework')
24
+ LOT_SLUG = arguments.get('--lot')
23
25
  if not os.path.exists(OUTPUT_DIR):
24
26
  print("Creating {} directory".format(OUTPUT_DIR))
25
27
  os.makedirs(OUTPUT_DIR)
26
28
 
27
29
  schemas = [(schema_type, *schema) for schema_type in SCHEMAS for schema in SCHEMAS[schema_type]]
28
30
 
31
+ if FRAMEWORK_SLUG:
32
+ schemas = [schema for schema in schemas if schema[2] == FRAMEWORK_SLUG]
33
+
34
+ if LOT_SLUG:
35
+ schemas = [schema for schema in schemas if schema[3] == LOT_SLUG]
36
+
29
37
  with Pool(processes=5) as pool:
30
38
  results = pool.starmap(
31
39
  partial(
@@ -34,7 +34,9 @@ MANIFEST_QUESTION_SET = {
34
34
  "download_results": "services",
35
35
 
36
36
  "evaluations": "additional-lot-questions",
37
- "edit_additional_lot_questions": "additional-lot-questions"
37
+ "edit_additional_lot_questions": "additional-lot-questions",
38
+
39
+ "agreement": "agreements",
38
40
  }
39
41
 
40
42
  # `item` property wouldn't usually be part of a brief response but is included here as the dynamic list child question