horsemeat 2.24.0__tar.gz → 2.25.0__tar.gz

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 (33) hide show
  1. horsemeat-2.25.0/PKG-INFO +8 -0
  2. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/version.py +1 -1
  3. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/dispatcher.py +1 -0
  4. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/handler.py +48 -2
  5. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/request.py +0 -2
  6. horsemeat-2.25.0/horsemeat.egg-info/PKG-INFO +8 -0
  7. horsemeat-2.24.0/PKG-INFO +0 -20
  8. horsemeat-2.24.0/horsemeat.egg-info/PKG-INFO +0 -20
  9. {horsemeat-2.24.0 → horsemeat-2.25.0}/MANIFEST.in +0 -0
  10. {horsemeat-2.24.0 → horsemeat-2.25.0}/README +0 -0
  11. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/__init__.py +0 -0
  12. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/configwrapper.py +0 -0
  13. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/model/__init__.py +0 -0
  14. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/model/newsmessage.py +0 -0
  15. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/model/session.py +0 -0
  16. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/model/user.py +0 -0
  17. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/pg.py +0 -0
  18. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/scripts/make-frippery-project +0 -0
  19. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/tests/__init__.py +0 -0
  20. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/tests/test_configwrapper.py +0 -0
  21. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/__init__.py +0 -0
  22. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/bogusrequest.py +0 -0
  23. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/framework_templates/__init__.py +0 -0
  24. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/frameworkhandlers.py +0 -0
  25. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/response.py +0 -0
  26. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat/webapp/scrubber.py +0 -0
  27. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat.egg-info/SOURCES.txt +0 -0
  28. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat.egg-info/dependency_links.txt +0 -0
  29. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat.egg-info/requires.txt +1 -1
  30. {horsemeat-2.24.0 → horsemeat-2.25.0}/horsemeat.egg-info/top_level.txt +0 -0
  31. {horsemeat-2.24.0 → horsemeat-2.25.0}/requirements.txt +0 -0
  32. {horsemeat-2.24.0 → horsemeat-2.25.0}/setup.cfg +0 -0
  33. {horsemeat-2.24.0 → horsemeat-2.25.0}/setup.py +0 -0
@@ -0,0 +1,8 @@
1
+ Metadata-Version: 2.1
2
+ Name: horsemeat
3
+ Version: 2.25.0
4
+ Summary: Web framework for the damned. The mad.
5
+ Home-page: https://github.com/216software/horsemeat
6
+ Author: 216 Software, LLC
7
+ Author-email: info@216software.com
8
+ Classifier: Programming Language :: Python :: 3
@@ -22,4 +22,4 @@ hasn't been installed yet.
22
22
 
23
23
  """
24
24
 
25
- __version__ = '2.24.0'
25
+ __version__ = '2.25.0'
@@ -152,6 +152,7 @@ class Dispatcher(object):
152
152
  log.critical('post body: {0}'.format(req.wz_req.form))
153
153
 
154
154
  log.critical(environ)
155
+ log.critical(ex, exc_info=1)
155
156
 
156
157
  if req.is_JSON:
157
158
 
@@ -236,7 +236,7 @@ class Handler(object):
236
236
  """
237
237
 
238
238
  if not self.route_patterns:
239
- raise Exception("You need some route patterns!")
239
+ raise Exception(f"You need some route patterns in {self!r}!")
240
240
 
241
241
  for rp in self.route_patterns:
242
242
 
@@ -261,7 +261,7 @@ class Handler(object):
261
261
  def check_route_strings(self, req):
262
262
 
263
263
  if not self.route_strings:
264
- raise Exception("You need to define some route strings!")
264
+ raise Exception(f"You need to define some route strings in handler {self!r}")
265
265
 
266
266
  if req.line_one in self.route_strings:
267
267
  return self.handle
@@ -317,6 +317,52 @@ class Handler(object):
317
317
  def four_zero_four_template(self):
318
318
  return 'framework_templates/404.html'
319
319
 
320
+ @staticmethod
321
+ @decorator.decorator
322
+ def require_is_superuser(handler_method, self, req):
323
+
324
+ """
325
+ Add this to a handle method like this::
326
+
327
+ @Handler.require_is_superuser
328
+ def handle(self, req):
329
+ ...
330
+
331
+ And then, if the request isn't from a signed-in user that's got
332
+
333
+ is_superuser = true
334
+
335
+ they'll get a JSON reply that says nope.
336
+
337
+ If the request is from a signed-in user, then your handle
338
+ method is normal.
339
+ """
340
+
341
+ if not req.user:
342
+
343
+ resp = self.Response.json(dict(
344
+ reply_timestamp=datetime.datetime.now(),
345
+ message="Sorry, you need to log in first!",
346
+ needs_to_log_in=True,
347
+ success=False))
348
+
349
+ resp.status = '401 UNAUTHORIZED'
350
+
351
+ elif not req.user.is_superuser:
352
+
353
+ resp = self.Response.json(dict(
354
+ reply_timestamp=datetime.datetime.now(),
355
+ message=f"Sorry, {req.user.display_name}, this is for is_superuser == true accounts only",
356
+ needs_to_log_in=False,
357
+ success=False))
358
+
359
+ resp.status = '401 UNAUTHORIZED'
360
+
361
+ return resp
362
+
363
+ else:
364
+ return handler_method(self, req)
365
+
320
366
  @staticmethod
321
367
  @decorator.decorator
322
368
  def require_login(handler_method, self, req):
@@ -479,13 +479,11 @@ class Request(collections.abc.MutableMapping):
479
479
  def user(self):
480
480
 
481
481
  """
482
-
483
482
  Is either None or is a bunch of data extracted from the
484
483
  database.
485
484
 
486
485
  When request.user is None, it means this is a user we don't
487
486
  know.
488
-
489
487
  """
490
488
 
491
489
  # First check if we already made one.
@@ -0,0 +1,8 @@
1
+ Metadata-Version: 2.1
2
+ Name: horsemeat
3
+ Version: 2.25.0
4
+ Summary: Web framework for the damned. The mad.
5
+ Home-page: https://github.com/216software/horsemeat
6
+ Author: 216 Software, LLC
7
+ Author-email: info@216software.com
8
+ Classifier: Programming Language :: Python :: 3
horsemeat-2.24.0/PKG-INFO DELETED
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.2
2
- Name: horsemeat
3
- Version: 2.24.0
4
- Summary: Web framework for the damned. The mad.
5
- Home-page: https://github.com/216software/horsemeat
6
- Author: 216 Software, LLC
7
- Author-email: info@216software.com
8
- Classifier: Programming Language :: Python :: 3
9
- Requires-Dist: Jinja2>=2.6
10
- Requires-Dist: PyYAML>=3.10
11
- Requires-Dist: Werkzeug>=0.10.1
12
- Requires-Dist: decorator>=3.4.0
13
- Requires-Dist: psycopg2>=2.7
14
- Requires-Dist: gunicorn
15
- Dynamic: author
16
- Dynamic: author-email
17
- Dynamic: classifier
18
- Dynamic: home-page
19
- Dynamic: requires-dist
20
- Dynamic: summary
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.2
2
- Name: horsemeat
3
- Version: 2.24.0
4
- Summary: Web framework for the damned. The mad.
5
- Home-page: https://github.com/216software/horsemeat
6
- Author: 216 Software, LLC
7
- Author-email: info@216software.com
8
- Classifier: Programming Language :: Python :: 3
9
- Requires-Dist: Jinja2>=2.6
10
- Requires-Dist: PyYAML>=3.10
11
- Requires-Dist: Werkzeug>=0.10.1
12
- Requires-Dist: decorator>=3.4.0
13
- Requires-Dist: psycopg2>=2.7
14
- Requires-Dist: gunicorn
15
- Dynamic: author
16
- Dynamic: author-email
17
- Dynamic: classifier
18
- Dynamic: home-page
19
- Dynamic: requires-dist
20
- Dynamic: summary
File without changes
File without changes
File without changes
@@ -2,5 +2,5 @@ Jinja2>=2.6
2
2
  PyYAML>=3.10
3
3
  Werkzeug>=0.10.1
4
4
  decorator>=3.4.0
5
- psycopg2>=2.7
6
5
  gunicorn
6
+ psycopg2>=2.7
File without changes
File without changes
File without changes