waldur-api-client 7.8.1__py3-none-any.whl → 7.8.3__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.

Potentially problematic release.


This version of waldur-api-client might be problematic. Click here for more details.

Files changed (234) hide show
  1. waldur_api_client/api/booking_resources/booking_resources_count.py +10 -13
  2. waldur_api_client/api/booking_resources/booking_resources_list.py +10 -13
  3. waldur_api_client/api/call_managing_organisations/call_managing_organisations_create.py +44 -7
  4. waldur_api_client/api/call_managing_organisations/call_managing_organisations_partial_update.py +46 -7
  5. waldur_api_client/api/call_managing_organisations/call_managing_organisations_update.py +44 -7
  6. waldur_api_client/api/checklists_admin/checklists_admin_checklist_questions.py +49 -0
  7. waldur_api_client/api/checklists_admin/checklists_admin_count.py +43 -0
  8. waldur_api_client/api/checklists_admin/checklists_admin_list.py +43 -0
  9. waldur_api_client/api/checklists_admin_categories/checklists_admin_categories_create.py +44 -7
  10. waldur_api_client/api/checklists_admin_categories/checklists_admin_categories_partial_update.py +44 -7
  11. waldur_api_client/api/checklists_admin_categories/checklists_admin_categories_update.py +44 -7
  12. waldur_api_client/api/customers/customers_create.py +44 -7
  13. waldur_api_client/api/customers/customers_partial_update.py +44 -7
  14. waldur_api_client/api/customers/customers_update.py +44 -7
  15. waldur_api_client/api/external_links/external_links_create.py +44 -7
  16. waldur_api_client/api/external_links/external_links_partial_update.py +44 -7
  17. waldur_api_client/api/external_links/external_links_update.py +44 -7
  18. waldur_api_client/api/invoices/invoices_paid.py +44 -7
  19. waldur_api_client/api/marketplace_categories/marketplace_categories_create.py +44 -7
  20. waldur_api_client/api/marketplace_categories/marketplace_categories_partial_update.py +44 -7
  21. waldur_api_client/api/marketplace_categories/marketplace_categories_update.py +44 -7
  22. waldur_api_client/api/marketplace_category_groups/marketplace_category_groups_create.py +44 -7
  23. waldur_api_client/api/marketplace_category_groups/marketplace_category_groups_partial_update.py +44 -7
  24. waldur_api_client/api/marketplace_category_groups/marketplace_category_groups_update.py +44 -7
  25. waldur_api_client/api/marketplace_offering_files/marketplace_offering_files_create.py +44 -7
  26. waldur_api_client/api/marketplace_orders/marketplace_orders_update_attachment.py +44 -7
  27. waldur_api_client/api/marketplace_project_update_requests/marketplace_project_update_requests_count.py +18 -18
  28. waldur_api_client/api/marketplace_project_update_requests/marketplace_project_update_requests_list.py +18 -18
  29. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_create.py +44 -7
  30. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_image.py +44 -7
  31. waldur_api_client/api/marketplace_provider_offerings/marketplace_provider_offerings_update_thumbnail.py +30 -5
  32. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_count.py +10 -13
  33. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_list.py +10 -13
  34. waldur_api_client/api/marketplace_provider_resources/marketplace_provider_resources_move_resource.py +22 -0
  35. waldur_api_client/api/marketplace_resources/marketplace_resources_count.py +10 -13
  36. waldur_api_client/api/marketplace_resources/marketplace_resources_list.py +10 -13
  37. waldur_api_client/api/marketplace_resources/marketplace_resources_move_resource.py +22 -0
  38. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_create.py +44 -7
  39. waldur_api_client/api/marketplace_screenshots/marketplace_screenshots_update.py +44 -7
  40. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_create.py +44 -7
  41. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_partial_update.py +44 -7
  42. waldur_api_client/api/marketplace_service_providers/marketplace_service_providers_update.py +44 -7
  43. waldur_api_client/api/openstack_backups/openstack_backups_restore.py +10 -10
  44. waldur_api_client/api/override_settings/override_settings.py +30 -5
  45. waldur_api_client/api/payments/payments_create.py +44 -7
  46. waldur_api_client/api/payments/payments_partial_update.py +44 -7
  47. waldur_api_client/api/payments/payments_update.py +44 -7
  48. waldur_api_client/api/projects/projects_create.py +44 -7
  49. waldur_api_client/api/projects/projects_partial_update.py +44 -7
  50. waldur_api_client/api/projects/projects_update.py +44 -7
  51. waldur_api_client/api/proposal_proposals/proposal_proposals_attach_document.py +30 -5
  52. waldur_api_client/api/rancher_services/rancher_services_create.py +22 -22
  53. waldur_api_client/api/slurm_jobs/slurm_jobs_create.py +44 -7
  54. waldur_api_client/api/slurm_jobs/slurm_jobs_update.py +44 -7
  55. waldur_api_client/api/support_attachments/support_attachments_create.py +44 -7
  56. waldur_api_client/api/user_group_invitations/user_group_invitations_count.py +15 -0
  57. waldur_api_client/api/user_group_invitations/user_group_invitations_list.py +15 -0
  58. waldur_api_client/api/users/users_create.py +44 -7
  59. waldur_api_client/api/users/users_partial_update.py +44 -7
  60. waldur_api_client/api/users/users_update.py +44 -7
  61. waldur_api_client/models/__init__.py +172 -8
  62. waldur_api_client/models/agent_type_enum.py +13 -0
  63. waldur_api_client/models/attachment_request_form.py +70 -0
  64. waldur_api_client/models/attachment_request_multipart.py +83 -0
  65. waldur_api_client/models/azure_sql_server_create_order_attributes.py +5 -10
  66. waldur_api_client/models/azure_virtual_machine_create_order_attributes.py +7 -12
  67. waldur_api_client/models/booking_offerings_list_field_item.py +1 -0
  68. waldur_api_client/models/booking_offerings_retrieve_field_item.py +1 -0
  69. waldur_api_client/models/booking_resource.py +16 -34
  70. waldur_api_client/models/booking_resources_list_field_item.py +1 -3
  71. waldur_api_client/models/booking_resources_retrieve_field_item.py +1 -3
  72. waldur_api_client/models/call_managing_organisation_request_form.py +103 -0
  73. waldur_api_client/models/call_managing_organisation_request_multipart.py +122 -0
  74. waldur_api_client/models/call_round.py +11 -1
  75. waldur_api_client/models/category_group_request_form.py +103 -0
  76. waldur_api_client/models/category_group_request_multipart.py +122 -0
  77. waldur_api_client/models/checklist_category_request_form.py +103 -0
  78. waldur_api_client/models/checklist_category_request_multipart.py +122 -0
  79. waldur_api_client/models/checklists_admin_checklist_questions_checklist_type.py +11 -0
  80. waldur_api_client/models/checklists_admin_checklist_questions_checklist_type_in_item.py +11 -0
  81. waldur_api_client/models/checklists_admin_count_checklist_type.py +11 -0
  82. waldur_api_client/models/checklists_admin_count_checklist_type_in_item.py +11 -0
  83. waldur_api_client/models/checklists_admin_list_checklist_type.py +11 -0
  84. waldur_api_client/models/checklists_admin_list_checklist_type_in_item.py +11 -0
  85. waldur_api_client/models/constance_settings.py +18 -0
  86. waldur_api_client/models/constance_settings_request.py +18 -0
  87. waldur_api_client/models/constance_settings_request_form.py +1556 -0
  88. waldur_api_client/models/constance_settings_request_multipart.py +2187 -0
  89. waldur_api_client/models/customer.py +9 -0
  90. waldur_api_client/models/customer_request.py +9 -0
  91. waldur_api_client/models/customer_request_form.py +312 -0
  92. waldur_api_client/models/customer_request_multipart.py +394 -0
  93. waldur_api_client/models/customers_list_field_item.py +1 -0
  94. waldur_api_client/models/customers_retrieve_field_item.py +1 -0
  95. waldur_api_client/models/event_groups_enum.py +1 -0
  96. waldur_api_client/models/event_types_enum.py +2 -0
  97. waldur_api_client/models/external_link_request_form.py +111 -0
  98. waldur_api_client/models/external_link_request_multipart.py +132 -0
  99. waldur_api_client/models/firecrest_job_request_form.py +104 -0
  100. waldur_api_client/models/firecrest_job_request_multipart.py +127 -0
  101. waldur_api_client/models/generic_order_attributes.py +1 -2
  102. waldur_api_client/models/integration_status.py +21 -4
  103. waldur_api_client/models/managed_rancher_cluster_resources_list_field_item.py +1 -3
  104. waldur_api_client/models/managed_rancher_cluster_resources_retrieve_field_item.py +1 -3
  105. waldur_api_client/models/marketplace_category_request_form.py +153 -0
  106. waldur_api_client/models/marketplace_category_request_multipart.py +187 -0
  107. waldur_api_client/models/marketplace_orders_list_field_item.py +1 -3
  108. waldur_api_client/models/marketplace_orders_retrieve_field_item.py +1 -3
  109. waldur_api_client/models/marketplace_provider_offerings_list_course_accounts_retrieve_field_item.py +1 -0
  110. waldur_api_client/models/marketplace_provider_offerings_list_customer_service_accounts_retrieve_field_item.py +1 -0
  111. waldur_api_client/models/marketplace_provider_offerings_list_field_item.py +1 -0
  112. waldur_api_client/models/marketplace_provider_offerings_list_project_service_accounts_retrieve_field_item.py +1 -0
  113. waldur_api_client/models/marketplace_provider_offerings_retrieve_field_item.py +1 -0
  114. waldur_api_client/models/marketplace_provider_offerings_stats_retrieve_field_item.py +1 -0
  115. waldur_api_client/models/marketplace_provider_offerings_user_has_resource_access_retrieve_field_item.py +1 -0
  116. waldur_api_client/models/marketplace_provider_resources_details_retrieve_field_item.py +1 -3
  117. waldur_api_client/models/marketplace_provider_resources_list_field_item.py +1 -3
  118. waldur_api_client/models/marketplace_provider_resources_retrieve_field_item.py +1 -3
  119. waldur_api_client/models/marketplace_public_offerings_list_field_item.py +1 -0
  120. waldur_api_client/models/marketplace_public_offerings_retrieve_field_item.py +1 -0
  121. waldur_api_client/models/marketplace_resources_details_retrieve_field_item.py +1 -3
  122. waldur_api_client/models/marketplace_resources_list_field_item.py +1 -3
  123. waldur_api_client/models/marketplace_resources_retrieve_field_item.py +1 -3
  124. waldur_api_client/models/marketplace_robot_accounts_list_field_item.py +2 -1
  125. waldur_api_client/models/marketplace_robot_accounts_retrieve_field_item.py +2 -1
  126. waldur_api_client/models/marketplace_service_providers_offerings_list_field_item.py +1 -0
  127. waldur_api_client/models/merged_plugin_options.py +9 -0
  128. waldur_api_client/models/merged_plugin_options_request.py +9 -0
  129. waldur_api_client/models/move_resource_request.py +65 -0
  130. waldur_api_client/models/nested_round.py +9 -0
  131. waldur_api_client/models/nested_round_request.py +9 -0
  132. waldur_api_client/models/offering.py +20 -0
  133. waldur_api_client/models/offering_create.py +20 -0
  134. waldur_api_client/models/offering_create_request.py +20 -0
  135. waldur_api_client/models/offering_create_request_form.py +479 -0
  136. waldur_api_client/models/offering_create_request_form_limits.py +57 -0
  137. waldur_api_client/models/offering_create_request_multipart.py +599 -0
  138. waldur_api_client/models/offering_create_request_multipart_limits.py +57 -0
  139. waldur_api_client/models/offering_file_request_form.py +78 -0
  140. waldur_api_client/models/offering_file_request_multipart.py +93 -0
  141. waldur_api_client/models/offering_image_request_form.py +62 -0
  142. waldur_api_client/models/offering_image_request_multipart.py +73 -0
  143. waldur_api_client/models/offering_thumbnail_request_form.py +62 -0
  144. waldur_api_client/models/offering_thumbnail_request_multipart.py +73 -0
  145. waldur_api_client/models/offering_user.py +5 -5
  146. waldur_api_client/models/{offering_user_state_enum.py → offering_user_state.py} +1 -1
  147. waldur_api_client/models/open_stack_backup_restoration.py +3 -5
  148. waldur_api_client/models/open_stack_backup_restoration_create_request.py +141 -0
  149. waldur_api_client/models/open_stack_backup_restoration_request.py +22 -30
  150. waldur_api_client/models/{open_stack_nested_security_group_request.py → open_stack_create_floating_ip_request.py} +17 -6
  151. waldur_api_client/models/open_stack_create_port_request.py +104 -0
  152. waldur_api_client/models/open_stack_instance.py +13 -29
  153. waldur_api_client/models/open_stack_instance_create_order_attributes.py +67 -54
  154. waldur_api_client/models/open_stack_instance_floating_i_ps_update_request.py +5 -5
  155. waldur_api_client/models/open_stack_instance_ports_update_request.py +5 -5
  156. waldur_api_client/models/open_stack_instance_request.py +1 -67
  157. waldur_api_client/models/open_stack_nested_port_request.py +0 -9
  158. waldur_api_client/models/open_stack_security_group_hyperlink_request.py +59 -0
  159. waldur_api_client/models/open_stack_server_group_hyperlink_request.py +59 -0
  160. waldur_api_client/models/open_stack_tenant_create_order_attributes.py +9 -14
  161. waldur_api_client/models/open_stack_volume_create_order_attributes.py +8 -13
  162. waldur_api_client/models/openstack_instances_list_field_item.py +0 -7
  163. waldur_api_client/models/openstack_instances_retrieve_field_item.py +0 -7
  164. waldur_api_client/models/order_attachment_request_form.py +84 -0
  165. waldur_api_client/models/order_attachment_request_multipart.py +98 -0
  166. waldur_api_client/models/order_create.py +8 -0
  167. waldur_api_client/models/order_details.py +16 -34
  168. waldur_api_client/models/paid_request_form.py +81 -0
  169. waldur_api_client/models/paid_request_multipart.py +94 -0
  170. waldur_api_client/models/patched_call_managing_organisation_request_form.py +92 -0
  171. waldur_api_client/models/patched_call_managing_organisation_request_multipart.py +109 -0
  172. waldur_api_client/models/patched_category_group_request_form.py +101 -0
  173. waldur_api_client/models/patched_category_group_request_multipart.py +121 -0
  174. waldur_api_client/models/patched_checklist_category_request_form.py +102 -0
  175. waldur_api_client/models/patched_checklist_category_request_multipart.py +122 -0
  176. waldur_api_client/models/patched_customer_request.py +9 -0
  177. waldur_api_client/models/patched_customer_request_form.py +310 -0
  178. waldur_api_client/models/patched_customer_request_multipart.py +393 -0
  179. waldur_api_client/models/patched_external_link_request_form.py +110 -0
  180. waldur_api_client/models/patched_external_link_request_multipart.py +133 -0
  181. waldur_api_client/models/patched_marketplace_category_request_form.py +151 -0
  182. waldur_api_client/models/patched_marketplace_category_request_multipart.py +186 -0
  183. waldur_api_client/models/patched_open_stack_instance_request.py +1 -67
  184. waldur_api_client/models/patched_payment_request_form.py +119 -0
  185. waldur_api_client/models/patched_payment_request_multipart.py +142 -0
  186. waldur_api_client/models/patched_project_request_form.py +279 -0
  187. waldur_api_client/models/patched_project_request_multipart.py +342 -0
  188. waldur_api_client/models/patched_service_provider_request_form.py +101 -0
  189. waldur_api_client/models/patched_service_provider_request_multipart.py +121 -0
  190. waldur_api_client/models/patched_user_request_form.py +241 -0
  191. waldur_api_client/models/patched_user_request_multipart.py +306 -0
  192. waldur_api_client/models/payment_request_form.py +113 -0
  193. waldur_api_client/models/payment_request_multipart.py +134 -0
  194. waldur_api_client/models/{rancher_nested_security_group.py → project_hyperlink_request.py} +5 -5
  195. waldur_api_client/models/project_request_form.py +280 -0
  196. waldur_api_client/models/project_request_multipart.py +341 -0
  197. waldur_api_client/models/project_user.py +9 -0
  198. waldur_api_client/models/proposal.py +8 -0
  199. waldur_api_client/models/proposal_documentation_request_form.py +84 -0
  200. waldur_api_client/models/proposal_documentation_request_multipart.py +98 -0
  201. waldur_api_client/models/proposal_proposals_count_o_item.py +3 -1
  202. waldur_api_client/models/proposal_proposals_list_o_item.py +3 -1
  203. waldur_api_client/models/proposal_review.py +40 -0
  204. waldur_api_client/models/protected_proposal_list.py +8 -0
  205. waldur_api_client/models/protected_proposal_list_request.py +8 -0
  206. waldur_api_client/models/protected_round.py +8 -0
  207. waldur_api_client/models/provider_offering.py +21 -1
  208. waldur_api_client/models/provider_offering_details.py +20 -0
  209. waldur_api_client/models/public_offering_details.py +20 -0
  210. waldur_api_client/models/rancher_clusters_list_field_item.py +0 -1
  211. waldur_api_client/models/rancher_clusters_retrieve_field_item.py +0 -1
  212. waldur_api_client/models/rancher_service_create.py +508 -0
  213. waldur_api_client/models/rancher_service_create_marketplace_offering_plugin_options_type_0.py +44 -0
  214. waldur_api_client/models/rancher_service_create_request.py +185 -0
  215. waldur_api_client/models/rancher_service_request.py +16 -19
  216. waldur_api_client/models/rancher_workload_create.py +59 -0
  217. waldur_api_client/models/rancher_workload_create_request.py +59 -0
  218. waldur_api_client/models/resource.py +16 -34
  219. waldur_api_client/models/robot_account_details.py +22 -13
  220. waldur_api_client/models/screenshot_request_form.py +87 -0
  221. waldur_api_client/models/screenshot_request_multipart.py +105 -0
  222. waldur_api_client/models/service_provider_request_form.py +112 -0
  223. waldur_api_client/models/service_provider_request_multipart.py +134 -0
  224. waldur_api_client/models/slurm_invoices_slurm_package_create_order_attributes.py +4 -9
  225. waldur_api_client/models/user_request_form.py +250 -0
  226. waldur_api_client/models/user_request_multipart.py +316 -0
  227. waldur_api_client/models/v_mware_virtual_machine_create_order_attributes.py +11 -16
  228. waldur_api_client/models/vmware_nested_network.py +0 -25
  229. waldur_api_client/models/vmware_nested_network_request.py +6 -14
  230. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.3.dist-info}/METADATA +1 -1
  231. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.3.dist-info}/RECORD +233 -153
  232. waldur_api_client/models/open_stack_data_volume.py +0 -81
  233. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.3.dist-info}/WHEEL +0 -0
  234. {waldur_api_client-7.8.1.dist-info → waldur_api_client-7.8.3.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,341 @@
1
+ import datetime
2
+ from collections.abc import Mapping
3
+ from io import BytesIO
4
+ from typing import Any, TypeVar, Union, cast
5
+
6
+ from attrs import define as _attrs_define
7
+ from attrs import field as _attrs_field
8
+ from dateutil.parser import isoparse
9
+
10
+ from .. import types
11
+ from ..models.blank_enum import BlankEnum
12
+ from ..models.kind_enum import KindEnum
13
+ from ..models.oecd_fos_2007_code_enum import OecdFos2007CodeEnum
14
+ from ..types import UNSET, File, Unset
15
+
16
+ T = TypeVar("T", bound="ProjectRequestMultipart")
17
+
18
+
19
+ @_attrs_define
20
+ class ProjectRequestMultipart:
21
+ """
22
+ Attributes:
23
+ name (str):
24
+ customer (str):
25
+ slug (Union[Unset, str]):
26
+ description (Union[Unset, str]):
27
+ type_ (Union[None, Unset, str]):
28
+ backend_id (Union[Unset, str]):
29
+ start_date (Union[None, Unset, datetime.date]):
30
+ end_date (Union[None, Unset, datetime.date]): The date is inclusive. Once reached, all project resource will be
31
+ scheduled for termination.
32
+ oecd_fos_2007_code (Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]):
33
+ is_industry (Union[Unset, bool]):
34
+ image (Union[File, None, Unset]):
35
+ kind (Union[Unset, KindEnum]):
36
+ """
37
+
38
+ name: str
39
+ customer: str
40
+ slug: Union[Unset, str] = UNSET
41
+ description: Union[Unset, str] = UNSET
42
+ type_: Union[None, Unset, str] = UNSET
43
+ backend_id: Union[Unset, str] = UNSET
44
+ start_date: Union[None, Unset, datetime.date] = UNSET
45
+ end_date: Union[None, Unset, datetime.date] = UNSET
46
+ oecd_fos_2007_code: Union[BlankEnum, None, OecdFos2007CodeEnum, Unset] = UNSET
47
+ is_industry: Union[Unset, bool] = UNSET
48
+ image: Union[File, None, Unset] = UNSET
49
+ kind: Union[Unset, KindEnum] = UNSET
50
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
51
+
52
+ def to_dict(self) -> dict[str, Any]:
53
+ name = self.name
54
+
55
+ customer = self.customer
56
+
57
+ slug = self.slug
58
+
59
+ description = self.description
60
+
61
+ type_: Union[None, Unset, str]
62
+ if isinstance(self.type_, Unset):
63
+ type_ = UNSET
64
+ else:
65
+ type_ = self.type_
66
+
67
+ backend_id = self.backend_id
68
+
69
+ start_date: Union[None, Unset, str]
70
+ if isinstance(self.start_date, Unset):
71
+ start_date = UNSET
72
+ elif isinstance(self.start_date, datetime.date):
73
+ start_date = self.start_date.isoformat()
74
+ else:
75
+ start_date = self.start_date
76
+
77
+ end_date: Union[None, Unset, str]
78
+ if isinstance(self.end_date, Unset):
79
+ end_date = UNSET
80
+ elif isinstance(self.end_date, datetime.date):
81
+ end_date = self.end_date.isoformat()
82
+ else:
83
+ end_date = self.end_date
84
+
85
+ oecd_fos_2007_code: Union[None, Unset, str]
86
+ if isinstance(self.oecd_fos_2007_code, Unset):
87
+ oecd_fos_2007_code = UNSET
88
+ elif isinstance(self.oecd_fos_2007_code, OecdFos2007CodeEnum):
89
+ oecd_fos_2007_code = self.oecd_fos_2007_code.value
90
+ elif isinstance(self.oecd_fos_2007_code, BlankEnum):
91
+ oecd_fos_2007_code = self.oecd_fos_2007_code.value
92
+ else:
93
+ oecd_fos_2007_code = self.oecd_fos_2007_code
94
+
95
+ is_industry = self.is_industry
96
+
97
+ image: Union[None, Unset, types.FileTypes]
98
+ if isinstance(self.image, Unset):
99
+ image = UNSET
100
+ elif isinstance(self.image, File):
101
+ image = self.image.to_tuple()
102
+
103
+ else:
104
+ image = self.image
105
+
106
+ kind: Union[Unset, str] = UNSET
107
+ if not isinstance(self.kind, Unset):
108
+ kind = self.kind.value
109
+
110
+ field_dict: dict[str, Any] = {}
111
+ field_dict.update(self.additional_properties)
112
+ field_dict.update(
113
+ {
114
+ "name": name,
115
+ "customer": customer,
116
+ }
117
+ )
118
+ if slug is not UNSET:
119
+ field_dict["slug"] = slug
120
+ if description is not UNSET:
121
+ field_dict["description"] = description
122
+ if type_ is not UNSET:
123
+ field_dict["type"] = type_
124
+ if backend_id is not UNSET:
125
+ field_dict["backend_id"] = backend_id
126
+ if start_date is not UNSET:
127
+ field_dict["start_date"] = start_date
128
+ if end_date is not UNSET:
129
+ field_dict["end_date"] = end_date
130
+ if oecd_fos_2007_code is not UNSET:
131
+ field_dict["oecd_fos_2007_code"] = oecd_fos_2007_code
132
+ if is_industry is not UNSET:
133
+ field_dict["is_industry"] = is_industry
134
+ if image is not UNSET:
135
+ field_dict["image"] = image
136
+ if kind is not UNSET:
137
+ field_dict["kind"] = kind
138
+
139
+ return field_dict
140
+
141
+ def to_multipart(self) -> types.RequestFiles:
142
+ files: types.RequestFiles = []
143
+
144
+ files.append(("name", (None, str(self.name).encode(), "text/plain")))
145
+
146
+ files.append(("customer", (None, str(self.customer).encode(), "text/plain")))
147
+
148
+ if not isinstance(self.slug, Unset):
149
+ files.append(("slug", (None, str(self.slug).encode(), "text/plain")))
150
+
151
+ if not isinstance(self.description, Unset):
152
+ files.append(("description", (None, str(self.description).encode(), "text/plain")))
153
+
154
+ if not isinstance(self.type_, Unset):
155
+ if isinstance(self.type_, str):
156
+ files.append(("type", (None, str(self.type_).encode(), "text/plain")))
157
+ else:
158
+ files.append(("type", (None, str(self.type_).encode(), "text/plain")))
159
+
160
+ if not isinstance(self.backend_id, Unset):
161
+ files.append(("backend_id", (None, str(self.backend_id).encode(), "text/plain")))
162
+
163
+ if not isinstance(self.start_date, Unset):
164
+ if isinstance(self.start_date, datetime.date):
165
+ files.append(("start_date", (None, self.start_date.isoformat().encode(), "text/plain")))
166
+ else:
167
+ files.append(("start_date", (None, str(self.start_date).encode(), "text/plain")))
168
+
169
+ if not isinstance(self.end_date, Unset):
170
+ if isinstance(self.end_date, datetime.date):
171
+ files.append(("end_date", (None, self.end_date.isoformat().encode(), "text/plain")))
172
+ else:
173
+ files.append(("end_date", (None, str(self.end_date).encode(), "text/plain")))
174
+
175
+ if not isinstance(self.oecd_fos_2007_code, Unset):
176
+ if isinstance(self.oecd_fos_2007_code, OecdFos2007CodeEnum):
177
+ files.append(("oecd_fos_2007_code", (None, str(self.oecd_fos_2007_code.value).encode(), "text/plain")))
178
+ elif isinstance(self.oecd_fos_2007_code, BlankEnum):
179
+ files.append(("oecd_fos_2007_code", (None, str(self.oecd_fos_2007_code.value).encode(), "text/plain")))
180
+ elif self.oecd_fos_2007_code is None:
181
+ files.append(("oecd_fos_2007_code", (None, str(self.oecd_fos_2007_code).encode(), "text/plain")))
182
+ else:
183
+ files.append(("oecd_fos_2007_code", (None, str(self.oecd_fos_2007_code).encode(), "text/plain")))
184
+
185
+ if not isinstance(self.is_industry, Unset):
186
+ files.append(("is_industry", (None, str(self.is_industry).encode(), "text/plain")))
187
+
188
+ if not isinstance(self.image, Unset):
189
+ if isinstance(self.image, File):
190
+ files.append(("image", self.image.to_tuple()))
191
+ else:
192
+ files.append(("image", (None, str(self.image).encode(), "text/plain")))
193
+
194
+ if not isinstance(self.kind, Unset):
195
+ files.append(("kind", (None, str(self.kind.value).encode(), "text/plain")))
196
+
197
+ for prop_name, prop in self.additional_properties.items():
198
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
199
+
200
+ return files
201
+
202
+ @classmethod
203
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
204
+ d = dict(src_dict)
205
+ name = d.pop("name")
206
+
207
+ customer = d.pop("customer")
208
+
209
+ slug = d.pop("slug", UNSET)
210
+
211
+ description = d.pop("description", UNSET)
212
+
213
+ def _parse_type_(data: object) -> Union[None, Unset, str]:
214
+ if data is None:
215
+ return data
216
+ if isinstance(data, Unset):
217
+ return data
218
+ return cast(Union[None, Unset, str], data)
219
+
220
+ type_ = _parse_type_(d.pop("type", UNSET))
221
+
222
+ backend_id = d.pop("backend_id", UNSET)
223
+
224
+ def _parse_start_date(data: object) -> Union[None, Unset, datetime.date]:
225
+ if data is None:
226
+ return data
227
+ if isinstance(data, Unset):
228
+ return data
229
+ try:
230
+ if not isinstance(data, str):
231
+ raise TypeError()
232
+ start_date_type_0 = isoparse(data).date()
233
+
234
+ return start_date_type_0
235
+ except: # noqa: E722
236
+ pass
237
+ return cast(Union[None, Unset, datetime.date], data)
238
+
239
+ start_date = _parse_start_date(d.pop("start_date", UNSET))
240
+
241
+ def _parse_end_date(data: object) -> Union[None, Unset, datetime.date]:
242
+ if data is None:
243
+ return data
244
+ if isinstance(data, Unset):
245
+ return data
246
+ try:
247
+ if not isinstance(data, str):
248
+ raise TypeError()
249
+ end_date_type_0 = isoparse(data).date()
250
+
251
+ return end_date_type_0
252
+ except: # noqa: E722
253
+ pass
254
+ return cast(Union[None, Unset, datetime.date], data)
255
+
256
+ end_date = _parse_end_date(d.pop("end_date", UNSET))
257
+
258
+ def _parse_oecd_fos_2007_code(data: object) -> Union[BlankEnum, None, OecdFos2007CodeEnum, Unset]:
259
+ if data is None:
260
+ return data
261
+ if isinstance(data, Unset):
262
+ return data
263
+ try:
264
+ if not isinstance(data, str):
265
+ raise TypeError()
266
+ oecd_fos_2007_code_type_0 = OecdFos2007CodeEnum(data)
267
+
268
+ return oecd_fos_2007_code_type_0
269
+ except: # noqa: E722
270
+ pass
271
+ try:
272
+ if not isinstance(data, str):
273
+ raise TypeError()
274
+ oecd_fos_2007_code_type_1 = BlankEnum(data)
275
+
276
+ return oecd_fos_2007_code_type_1
277
+ except: # noqa: E722
278
+ pass
279
+ return cast(Union[BlankEnum, None, OecdFos2007CodeEnum, Unset], data)
280
+
281
+ oecd_fos_2007_code = _parse_oecd_fos_2007_code(d.pop("oecd_fos_2007_code", UNSET))
282
+
283
+ is_industry = d.pop("is_industry", UNSET)
284
+
285
+ def _parse_image(data: object) -> Union[File, None, Unset]:
286
+ if data is None:
287
+ return data
288
+ if isinstance(data, Unset):
289
+ return data
290
+ try:
291
+ if not isinstance(data, bytes):
292
+ raise TypeError()
293
+ image_type_0 = File(payload=BytesIO(data))
294
+
295
+ return image_type_0
296
+ except: # noqa: E722
297
+ pass
298
+ return cast(Union[File, None, Unset], data)
299
+
300
+ image = _parse_image(d.pop("image", UNSET))
301
+
302
+ _kind = d.pop("kind", UNSET)
303
+ kind: Union[Unset, KindEnum]
304
+ if isinstance(_kind, Unset):
305
+ kind = UNSET
306
+ else:
307
+ kind = KindEnum(_kind)
308
+
309
+ project_request_multipart = cls(
310
+ name=name,
311
+ customer=customer,
312
+ slug=slug,
313
+ description=description,
314
+ type_=type_,
315
+ backend_id=backend_id,
316
+ start_date=start_date,
317
+ end_date=end_date,
318
+ oecd_fos_2007_code=oecd_fos_2007_code,
319
+ is_industry=is_industry,
320
+ image=image,
321
+ kind=kind,
322
+ )
323
+
324
+ project_request_multipart.additional_properties = d
325
+ return project_request_multipart
326
+
327
+ @property
328
+ def additional_keys(self) -> list[str]:
329
+ return list(self.additional_properties.keys())
330
+
331
+ def __getitem__(self, key: str) -> Any:
332
+ return self.additional_properties[key]
333
+
334
+ def __setitem__(self, key: str, value: Any) -> None:
335
+ self.additional_properties[key] = value
336
+
337
+ def __delitem__(self, key: str) -> None:
338
+ del self.additional_properties[key]
339
+
340
+ def __contains__(self, key: str) -> bool:
341
+ return key in self.additional_properties
@@ -7,6 +7,7 @@ from attrs import define as _attrs_define
7
7
  from attrs import field as _attrs_field
8
8
  from dateutil.parser import isoparse
9
9
 
10
+ from ..models.offering_user_state import OfferingUserState
10
11
  from ..types import UNSET, Unset
11
12
 
12
13
  T = TypeVar("T", bound="ProjectUser")
@@ -23,6 +24,7 @@ class ProjectUser:
23
24
  role (str):
24
25
  expiration_time (Union[None, datetime.datetime]):
25
26
  offering_user_username (Union[None, str]):
27
+ offering_user_state (OfferingUserState):
26
28
  email (Union[Unset, str]):
27
29
  """
28
30
 
@@ -33,6 +35,7 @@ class ProjectUser:
33
35
  role: str
34
36
  expiration_time: Union[None, datetime.datetime]
35
37
  offering_user_username: Union[None, str]
38
+ offering_user_state: OfferingUserState
36
39
  email: Union[Unset, str] = UNSET
37
40
  additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
38
41
 
@@ -56,6 +59,8 @@ class ProjectUser:
56
59
  offering_user_username: Union[None, str]
57
60
  offering_user_username = self.offering_user_username
58
61
 
62
+ offering_user_state = self.offering_user_state.value
63
+
59
64
  email = self.email
60
65
 
61
66
  field_dict: dict[str, Any] = {}
@@ -69,6 +74,7 @@ class ProjectUser:
69
74
  "role": role,
70
75
  "expiration_time": expiration_time,
71
76
  "offering_user_username": offering_user_username,
77
+ "offering_user_state": offering_user_state,
72
78
  }
73
79
  )
74
80
  if email is not UNSET:
@@ -111,6 +117,8 @@ class ProjectUser:
111
117
 
112
118
  offering_user_username = _parse_offering_user_username(d.pop("offering_user_username"))
113
119
 
120
+ offering_user_state = OfferingUserState(d.pop("offering_user_state"))
121
+
114
122
  email = d.pop("email", UNSET)
115
123
 
116
124
  project_user = cls(
@@ -121,6 +129,7 @@ class ProjectUser:
121
129
  role=role,
122
130
  expiration_time=expiration_time,
123
131
  offering_user_username=offering_user_username,
132
+ offering_user_state=offering_user_state,
124
133
  email=email,
125
134
  )
126
135
 
@@ -28,6 +28,7 @@ class Proposal:
28
28
  Attributes:
29
29
  uuid (UUID):
30
30
  url (str):
31
+ slug (str):
31
32
  name (str):
32
33
  project_name (str):
33
34
  supporting_documentation (list['ProposalDocumentation']):
@@ -56,6 +57,7 @@ class Proposal:
56
57
 
57
58
  uuid: UUID
58
59
  url: str
60
+ slug: str
59
61
  name: str
60
62
  project_name: str
61
63
  supporting_documentation: list["ProposalDocumentation"]
@@ -89,6 +91,8 @@ class Proposal:
89
91
 
90
92
  url = self.url
91
93
 
94
+ slug = self.slug
95
+
92
96
  name = self.name
93
97
 
94
98
  project_name = self.project_name
@@ -166,6 +170,7 @@ class Proposal:
166
170
  {
167
171
  "uuid": uuid,
168
172
  "url": url,
173
+ "slug": slug,
169
174
  "name": name,
170
175
  "project_name": project_name,
171
176
  "supporting_documentation": supporting_documentation,
@@ -213,6 +218,8 @@ class Proposal:
213
218
 
214
219
  url = d.pop("url")
215
220
 
221
+ slug = d.pop("slug")
222
+
216
223
  name = d.pop("name")
217
224
 
218
225
  project_name = d.pop("project_name")
@@ -332,6 +339,7 @@ class Proposal:
332
339
  proposal = cls(
333
340
  uuid=uuid,
334
341
  url=url,
342
+ slug=slug,
335
343
  name=name,
336
344
  project_name=project_name,
337
345
  supporting_documentation=supporting_documentation,
@@ -0,0 +1,84 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="ProposalDocumentationRequestForm")
12
+
13
+
14
+ @_attrs_define
15
+ class ProposalDocumentationRequestForm:
16
+ """
17
+ Attributes:
18
+ file (Union[File, None, Unset]): Upload supporting documentation in PDF format.
19
+ """
20
+
21
+ file: Union[File, None, Unset] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ file: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.file, Unset):
27
+ file = UNSET
28
+ elif isinstance(self.file, File):
29
+ file = self.file.to_tuple()
30
+
31
+ else:
32
+ file = self.file
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if file is not UNSET:
38
+ field_dict["file"] = file
39
+
40
+ return field_dict
41
+
42
+ @classmethod
43
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
44
+ d = dict(src_dict)
45
+
46
+ def _parse_file(data: object) -> Union[File, None, Unset]:
47
+ if data is None:
48
+ return data
49
+ if isinstance(data, Unset):
50
+ return data
51
+ try:
52
+ if not isinstance(data, bytes):
53
+ raise TypeError()
54
+ file_type_0 = File(payload=BytesIO(data))
55
+
56
+ return file_type_0
57
+ except: # noqa: E722
58
+ pass
59
+ return cast(Union[File, None, Unset], data)
60
+
61
+ file = _parse_file(d.pop("file", UNSET))
62
+
63
+ proposal_documentation_request_form = cls(
64
+ file=file,
65
+ )
66
+
67
+ proposal_documentation_request_form.additional_properties = d
68
+ return proposal_documentation_request_form
69
+
70
+ @property
71
+ def additional_keys(self) -> list[str]:
72
+ return list(self.additional_properties.keys())
73
+
74
+ def __getitem__(self, key: str) -> Any:
75
+ return self.additional_properties[key]
76
+
77
+ def __setitem__(self, key: str, value: Any) -> None:
78
+ self.additional_properties[key] = value
79
+
80
+ def __delitem__(self, key: str) -> None:
81
+ del self.additional_properties[key]
82
+
83
+ def __contains__(self, key: str) -> bool:
84
+ return key in self.additional_properties
@@ -0,0 +1,98 @@
1
+ from collections.abc import Mapping
2
+ from io import BytesIO
3
+ from typing import Any, TypeVar, Union, cast
4
+
5
+ from attrs import define as _attrs_define
6
+ from attrs import field as _attrs_field
7
+
8
+ from .. import types
9
+ from ..types import UNSET, File, Unset
10
+
11
+ T = TypeVar("T", bound="ProposalDocumentationRequestMultipart")
12
+
13
+
14
+ @_attrs_define
15
+ class ProposalDocumentationRequestMultipart:
16
+ """
17
+ Attributes:
18
+ file (Union[File, None, Unset]): Upload supporting documentation in PDF format.
19
+ """
20
+
21
+ file: Union[File, None, Unset] = UNSET
22
+ additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict)
23
+
24
+ def to_dict(self) -> dict[str, Any]:
25
+ file: Union[None, Unset, types.FileTypes]
26
+ if isinstance(self.file, Unset):
27
+ file = UNSET
28
+ elif isinstance(self.file, File):
29
+ file = self.file.to_tuple()
30
+
31
+ else:
32
+ file = self.file
33
+
34
+ field_dict: dict[str, Any] = {}
35
+ field_dict.update(self.additional_properties)
36
+ field_dict.update({})
37
+ if file is not UNSET:
38
+ field_dict["file"] = file
39
+
40
+ return field_dict
41
+
42
+ def to_multipart(self) -> types.RequestFiles:
43
+ files: types.RequestFiles = []
44
+
45
+ if not isinstance(self.file, Unset):
46
+ if isinstance(self.file, File):
47
+ files.append(("file", self.file.to_tuple()))
48
+ else:
49
+ files.append(("file", (None, str(self.file).encode(), "text/plain")))
50
+
51
+ for prop_name, prop in self.additional_properties.items():
52
+ files.append((prop_name, (None, str(prop).encode(), "text/plain")))
53
+
54
+ return files
55
+
56
+ @classmethod
57
+ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T:
58
+ d = dict(src_dict)
59
+
60
+ def _parse_file(data: object) -> Union[File, None, Unset]:
61
+ if data is None:
62
+ return data
63
+ if isinstance(data, Unset):
64
+ return data
65
+ try:
66
+ if not isinstance(data, bytes):
67
+ raise TypeError()
68
+ file_type_0 = File(payload=BytesIO(data))
69
+
70
+ return file_type_0
71
+ except: # noqa: E722
72
+ pass
73
+ return cast(Union[File, None, Unset], data)
74
+
75
+ file = _parse_file(d.pop("file", UNSET))
76
+
77
+ proposal_documentation_request_multipart = cls(
78
+ file=file,
79
+ )
80
+
81
+ proposal_documentation_request_multipart.additional_properties = d
82
+ return proposal_documentation_request_multipart
83
+
84
+ @property
85
+ def additional_keys(self) -> list[str]:
86
+ return list(self.additional_properties.keys())
87
+
88
+ def __getitem__(self, key: str) -> Any:
89
+ return self.additional_properties[key]
90
+
91
+ def __setitem__(self, key: str, value: Any) -> None:
92
+ self.additional_properties[key] = value
93
+
94
+ def __delitem__(self, key: str) -> None:
95
+ del self.additional_properties[key]
96
+
97
+ def __contains__(self, key: str) -> bool:
98
+ return key in self.additional_properties
@@ -6,12 +6,14 @@ class ProposalProposalsCountOItem(str, Enum):
6
6
  ROUND_CALL_NAME = "round__call__name"
7
7
  ROUND_CUTOFF_TIME = "round__cutoff_time"
8
8
  ROUND_START_TIME = "round__start_time"
9
+ SLUG = "slug"
9
10
  STATE = "state"
10
11
  VALUE_0 = "-created"
11
12
  VALUE_1 = "-round__call__name"
12
13
  VALUE_2 = "-round__cutoff_time"
13
14
  VALUE_3 = "-round__start_time"
14
- VALUE_4 = "-state"
15
+ VALUE_4 = "-slug"
16
+ VALUE_5 = "-state"
15
17
 
16
18
  def __str__(self) -> str:
17
19
  return str(self.value)
@@ -6,12 +6,14 @@ class ProposalProposalsListOItem(str, Enum):
6
6
  ROUND_CALL_NAME = "round__call__name"
7
7
  ROUND_CUTOFF_TIME = "round__cutoff_time"
8
8
  ROUND_START_TIME = "round__start_time"
9
+ SLUG = "slug"
9
10
  STATE = "state"
10
11
  VALUE_0 = "-created"
11
12
  VALUE_1 = "-round__call__name"
12
13
  VALUE_2 = "-round__cutoff_time"
13
14
  VALUE_3 = "-round__start_time"
14
- VALUE_4 = "-state"
15
+ VALUE_4 = "-slug"
16
+ VALUE_5 = "-state"
15
17
 
16
18
  def __str__(self) -> str:
17
19
  return str(self.value)