clear-skies 1.19.1__py3-none-any.whl → 1.19.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 clear-skies might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: clear-skies
3
- Version: 1.19.1
3
+ Version: 1.19.3
4
4
  Summary: A framework for building backends in the cloud
5
5
  Home-page: https://github.com/cmancone/clearskies
6
6
  License: MIT
@@ -56,7 +56,7 @@ clearskies/backends/secrets_backend.py,sha256=4lzrgdL_O_pgCT5HknV2gotFgp9GzjQ5_2
56
56
  clearskies/binding_config.py,sha256=bF8LBNEgJacwKCqToAtDqN9hv5omzU7zt_4qB9KPtE0,457
57
57
  clearskies/column_types/__init__.py,sha256=QHEFFd3wRXvaOR7uZk-bpVLlLoTiN3D4S8sBU9rFwCE,4330
58
58
  clearskies/column_types/audit.py,sha256=meDFV0s4u9i6UojN5f6EQk_kh-nGP8xPscCRa2Nd-yw,8102
59
- clearskies/column_types/belongs_to.py,sha256=a64yQ1kWRiljOfHToGsyKbAqdgNLvbRKBYEzrp1IWXo,10714
59
+ clearskies/column_types/belongs_to.py,sha256=tH1tbTOfjifSNuVjO-KbMF7GiUIoLfcDItrrS3TGGM8,11044
60
60
  clearskies/column_types/boolean.py,sha256=1yyM1CUfgD84pPE65c1OP1Qjf_J0Z45hjPrDR51AUkQ,1878
61
61
  clearskies/column_types/category_tree.py,sha256=PgNmzZPyqYS5NADH_QTCxLvDXZFxzv5ESKTkvPrrLXo,9140
62
62
  clearskies/column_types/column.py,sha256=PUrFyA2KmSyAZTAiJPfHy5Dlc1YPEb62c7r0BOTkF1s,13541
@@ -148,17 +148,17 @@ clearskies/handlers/restful_api.py,sha256=1rJ2REX1sTAdbqaRuCclP375agrho4zNNQx6hX
148
148
  clearskies/handlers/routing.py,sha256=uWKWcEaiHVqfDebPkQVuG9AS8pOixW31wW0yIQ-25Aw,3079
149
149
  clearskies/handlers/schema_helper.py,sha256=62644USvFlZu_6tT7rb-k6t_5J3Q0uZsJwP5KREk_WM,4961
150
150
  clearskies/handlers/simple_routing.py,sha256=KpOSQK2_tTwrPblDmxAUpX-Fqts_Or_MLWGKOOkJnoo,9403
151
- clearskies/handlers/simple_routing_route.py,sha256=kDoplYQW54WvROgHOAq5yLqloIMHnIIWZHCnkmzT_G0,8924
151
+ clearskies/handlers/simple_routing_route.py,sha256=3U3dixEKuf-Xo88RQGH_grm1x79-px6idt1-xaLUSiY,8953
152
152
  clearskies/handlers/simple_search.py,sha256=bSfq8rzdqkBj-dTGUBSZ1EkfjzUWHID7mKD2xEf8VzQ,6165
153
153
  clearskies/handlers/update.py,sha256=VCZkoID7i5VHq78fkIpjbRdXQ4Z3IuXEE5dfC8z4RZI,4088
154
154
  clearskies/handlers/write.py,sha256=VduGtjnFMQOvo3l0t-tUP4PExPJ9JEpuziHsquF08rE,9344
155
155
  clearskies/input_outputs/__init__.py,sha256=mQWL-u41FRTrPGuHe8FhLmcHjAEaUxjFwUf7RgDcbAs,182
156
- clearskies/input_outputs/cli.py,sha256=snIfLFakIqDXm-AXVN6qes0tZsg2IM7T1riFzDdHlMM,6254
156
+ clearskies/input_outputs/cli.py,sha256=F54wues9cNESE8FhQP3mDWrgrZyFouDIN-ZZ3-KJjks,6258
157
157
  clearskies/input_outputs/exceptions/__init__.py,sha256=bc5Tc1XBZnqA1fKbk7pk5hyx102vqx3sDE19E03xGk4,82
158
158
  clearskies/input_outputs/exceptions/cli_input_error.py,sha256=kOFU8aLTLmeTL_AKDshxMu8_ufildg6p8ndhE1xHfb0,41
159
159
  clearskies/input_outputs/exceptions/cli_not_found.py,sha256=JBBuZA9ZwdkPhd3a0qaGgEPQrxh1fehy4R3ZaV2gWXU,39
160
160
  clearskies/input_outputs/input_output.py,sha256=vYKn9SE5erS4LuOhhAsXqaOEsGXwZ1NJ4v85KN1Xg6A,4501
161
- clearskies/input_outputs/wsgi.py,sha256=bqRzzJLifAVXgXw1Lsg0lQ0uwZ8SLSn-NSbD5dKrSw4,3138
161
+ clearskies/input_outputs/wsgi.py,sha256=9p82eJP5FUAI6jbIojvydG3_9gncX7vcUACQMyRN9x4,3142
162
162
  clearskies/input_requirements/__init__.py,sha256=MpR-oEn1aLHdWHI60Y0QN2q6FyqqySCxcEaHR51aKpk,602
163
163
  clearskies/input_requirements/maximum_length.py,sha256=7hdGVq914BtZQwiGOLOU-t5QTDNQtCPT4TOnYTUo3Wo,689
164
164
  clearskies/input_requirements/minimum_length.py,sha256=qSpLjNBu6AKRoBZi3jvCMYKsHwsknbkUk86C8CMIOEU,987
@@ -192,7 +192,7 @@ clearskies/tests/simple_api/models/__init__.py,sha256=nUA0W6fgXw_Bxa9CudkaDkC80t
192
192
  clearskies/tests/simple_api/models/status.py,sha256=PEhPbaQh5qdUNHp8O0gz91LOLENAEBtqSaHxUPXchaM,699
193
193
  clearskies/tests/simple_api/models/user.py,sha256=5_P4Tp1tTdX7PkMJ__epPM5MA7JAeVYGas69vcWloLc,819
194
194
  clearskies/tests/simple_api/users_api.py,sha256=KYXCgEofDxHeRdQK67txN5oYUPvxxmB8JTku7L-apk4,2344
195
- clear_skies-1.19.1.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
196
- clear_skies-1.19.1.dist-info/METADATA,sha256=DX_73NV_YKj9ZGgLCWUMttObuA9R60kC4_EQXfTVgqs,1366
197
- clear_skies-1.19.1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
198
- clear_skies-1.19.1.dist-info/RECORD,,
195
+ clear_skies-1.19.3.dist-info/LICENSE,sha256=3Ehd0g3YOpCj8sqj0Xjq5qbOtjjgk9qzhhD9YjRQgOA,1053
196
+ clear_skies-1.19.3.dist-info/METADATA,sha256=9dz5yLEfSIw3_-cJQu8KsIzD4qHdZk8zCPxXUucAQH8,1366
197
+ clear_skies-1.19.3.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
198
+ clear_skies-1.19.3.dist-info/RECORD,,
@@ -98,7 +98,15 @@ class BelongsTo(String):
98
98
  return integer_check
99
99
  parent_models = self.parent_models
100
100
  id_column_name = parent_models.get_id_column_name()
101
- if not len(parent_models.where(f"{id_column_name}={value}")):
101
+ matching_parents = parent_models.where(f"{id_column_name}={value}")
102
+ input_output = self.di.build("input_output", cache=True)
103
+ matching_parents = matching_parents.where_for_request(
104
+ matching_parents,
105
+ input_output.routing_data(),
106
+ input_output.get_authorization_data(),
107
+ input_output,
108
+ )
109
+ if not len(matching_parents):
102
110
  return f"Invalid selection for {self.name}: record does not exist"
103
111
  return ""
104
112
 
@@ -98,7 +98,7 @@ class SimpleRoutingRoute:
98
98
  to understand if there was no route match at all.
99
99
  """
100
100
  # if we're routing to a simple router then defer to it
101
- incoming = f"Incoming request: [{request_method}] {full_path}. Check against route with url '{self._path}' "
101
+ incoming = f"Incoming request: [{request_method}] {full_path}. Check against route with url '{self._path}'. Results: "
102
102
  if not self._methods:
103
103
  incoming += " configured for any method except OPTIONS"
104
104
  elif isinstance(self._methods, str):
@@ -136,7 +136,7 @@ class SimpleRoutingRoute:
136
136
  return None
137
137
  # make sure we don't get confused by partial matches. `user` should match `user/` and `user/5`,
138
138
  # but it shouldn't match `users/`
139
- if full_path_length > my_path_length and full_path[my_path_length] != "/":
139
+ if full_path_length > my_path_length and full_path[my_path_length] != "/" and my_path != "":
140
140
  logger.debug(f"{incoming} Not a match. I only partially matched the URL but not as a sub-directory.")
141
141
  return None
142
142
  logger.debug(f"{incoming} Match!")
@@ -21,7 +21,7 @@ class CLI:
21
21
  self._request_method = None
22
22
  self._parse_args(self._sys.argv)
23
23
 
24
- def respond(self, response, status_code):
24
+ def respond(self, response, status_code=200):
25
25
  if status_code == 404:
26
26
  raise exceptions.CLINotFound()
27
27
  if status_code != 200:
@@ -21,7 +21,7 @@ class WSGI(InputOutput):
21
21
  def _from_environment(self, key):
22
22
  return self._environment[key] if key in self._environment else ""
23
23
 
24
- def respond(self, body, status_code):
24
+ def respond(self, body, status_code=200):
25
25
  if not self.has_header("content-type"):
26
26
  self.set_header("content-type", "application/json; charset=UTF-8")
27
27