horsemeat 2.25.0__tar.gz → 2.26.1__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 (31) hide show
  1. {horsemeat-2.25.0 → horsemeat-2.26.1}/PKG-INFO +6 -1
  2. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/__init__.py +35 -0
  3. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/version.py +1 -1
  4. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/handler.py +6 -29
  5. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/request.py +16 -3
  6. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat.egg-info/PKG-INFO +6 -1
  7. {horsemeat-2.25.0 → horsemeat-2.26.1}/MANIFEST.in +0 -0
  8. {horsemeat-2.25.0 → horsemeat-2.26.1}/README +0 -0
  9. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/configwrapper.py +0 -0
  10. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/model/__init__.py +0 -0
  11. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/model/newsmessage.py +0 -0
  12. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/model/session.py +0 -0
  13. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/model/user.py +0 -0
  14. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/pg.py +0 -0
  15. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/scripts/make-frippery-project +0 -0
  16. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/tests/__init__.py +0 -0
  17. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/tests/test_configwrapper.py +0 -0
  18. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/__init__.py +0 -0
  19. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/bogusrequest.py +0 -0
  20. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/dispatcher.py +0 -0
  21. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/framework_templates/__init__.py +0 -0
  22. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/frameworkhandlers.py +0 -0
  23. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/response.py +0 -0
  24. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat/webapp/scrubber.py +0 -0
  25. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat.egg-info/SOURCES.txt +0 -0
  26. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat.egg-info/dependency_links.txt +0 -0
  27. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat.egg-info/requires.txt +1 -1
  28. {horsemeat-2.25.0 → horsemeat-2.26.1}/horsemeat.egg-info/top_level.txt +0 -0
  29. {horsemeat-2.25.0 → horsemeat-2.26.1}/requirements.txt +0 -0
  30. {horsemeat-2.25.0 → horsemeat-2.26.1}/setup.cfg +0 -0
  31. {horsemeat-2.25.0 → horsemeat-2.26.1}/setup.py +0 -0
@@ -1,8 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: horsemeat
3
- Version: 2.25.0
3
+ Version: 2.26.1
4
4
  Summary: Web framework for the damned. The mad.
5
5
  Home-page: https://github.com/216software/horsemeat
6
6
  Author: 216 Software, LLC
7
7
  Author-email: info@216software.com
8
+ License: UNKNOWN
9
+ Platform: UNKNOWN
8
10
  Classifier: Programming Language :: Python :: 3
11
+
12
+ UNKNOWN
13
+
@@ -55,3 +55,38 @@ fancyjsondumps = functools.partial(
55
55
  sort_keys=True,
56
56
  indent=4,
57
57
  separators=(',', ': '))
58
+
59
+
60
+
61
+ class CookieWrapper:
62
+
63
+ """
64
+ This CookieWrapper allows us to be backwards compatible with https
65
+ SimpleCookie.
66
+
67
+ We need to switch to werkzeug cookie because google and facebook
68
+ have recently been using malformed cookies, which breaks the reading
69
+ of our cookies
70
+
71
+ """
72
+
73
+
74
+ def __repr__(self):
75
+ return str(self._cookies)
76
+
77
+ def __init__(self, cookie_dict):
78
+ self._cookies = cookie_dict
79
+
80
+ def __getitem__(self, key):
81
+ return MockMorsel(self._cookies[key])
82
+
83
+ def __contains__(self, key):
84
+ return key in self._cookies
85
+
86
+ def get(self, key, default=None):
87
+ value = self._cookies.get(key, default)
88
+ return MockMorsel(value) if value is not None else None
89
+
90
+ class MockMorsel:
91
+ def __init__(self, value):
92
+ self.value = value
@@ -22,4 +22,4 @@ hasn't been installed yet.
22
22
 
23
23
  """
24
24
 
25
- __version__ = '2.25.0'
25
+ __version__ = '2.26.1'
@@ -285,34 +285,6 @@ class Handler(object):
285
285
 
286
286
  pass
287
287
 
288
- @staticmethod
289
- @decorator.decorator
290
- def only_allow_superusers(handle_method, self, req):
291
-
292
- """
293
- Add this to a handle method like this::
294
-
295
- @Handler.only_allow_superusers
296
- def handle(self, req):
297
- ...
298
-
299
- And then, if the request isn't from a signed-in superuser,
300
- they'll get a JSON reply below.
301
-
302
- If the request is from a signed-in superuser, then your handle
303
- method is normal.
304
- """
305
-
306
- if not req.user or not req.user.is_superuser:
307
-
308
- return Response.json(dict(
309
- message="Sorry, superusers only!",
310
- success=False,
311
- reply_timestamp=datetime.datetime.now()))
312
-
313
- else:
314
- return handle_method(self, req)
315
-
316
288
  @property
317
289
  def four_zero_four_template(self):
318
290
  return 'framework_templates/404.html'
@@ -335,7 +307,7 @@ class Handler(object):
335
307
  they'll get a JSON reply that says nope.
336
308
 
337
309
  If the request is from a signed-in user, then your handle
338
- method is normal.
310
+ method runs like normal.
339
311
  """
340
312
 
341
313
  if not req.user:
@@ -348,6 +320,8 @@ class Handler(object):
348
320
 
349
321
  resp.status = '401 UNAUTHORIZED'
350
322
 
323
+ return resp
324
+
351
325
  elif not req.user.is_superuser:
352
326
 
353
327
  resp = self.Response.json(dict(
@@ -361,6 +335,9 @@ class Handler(object):
361
335
  return resp
362
336
 
363
337
  else:
338
+
339
+ log.debug("Returning...")
340
+
364
341
  return handler_method(self, req)
365
342
 
366
343
  @staticmethod
@@ -15,7 +15,10 @@ import urllib.parse
15
15
  import warnings
16
16
  import wsgiref.util
17
17
 
18
+ from horsemeat import CookieWrapper
19
+
18
20
  from werkzeug.wrappers import Request as WerkzeugRequest
21
+ from werkzeug.http import parse_cookie
19
22
 
20
23
  log = logging.getLogger(__name__)
21
24
 
@@ -94,13 +97,23 @@ class Request(collections.abc.MutableMapping):
94
97
  self['parsed_QS'] = parsed_qs
95
98
  return parsed_qs
96
99
 
100
+
97
101
  @property
98
102
  def parsed_cookie(self):
99
103
 
104
+ """
105
+ Switched from Simple Cookie to werkzeug cookie, with a cookie
106
+ wrapper to maintain functionality
107
+ """
108
+
100
109
  if self.HTTP_COOKIE:
101
- c = http.cookies.SimpleCookie()
102
- c.load(self.HTTP_COOKIE)
103
- return c
110
+ #c = http.cookies.SimpleCookie()
111
+ #c.load(self.HTTP_COOKIE)
112
+
113
+ c = parse_cookie(self.HTTP_COOKIE)
114
+ if c:
115
+ return CookieWrapper(c)
116
+
104
117
 
105
118
  @property
106
119
  def body(self):
@@ -1,8 +1,13 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: horsemeat
3
- Version: 2.25.0
3
+ Version: 2.26.1
4
4
  Summary: Web framework for the damned. The mad.
5
5
  Home-page: https://github.com/216software/horsemeat
6
6
  Author: 216 Software, LLC
7
7
  Author-email: info@216software.com
8
+ License: UNKNOWN
9
+ Platform: UNKNOWN
8
10
  Classifier: Programming Language :: Python :: 3
11
+
12
+ UNKNOWN
13
+
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
- gunicorn
6
5
  psycopg2>=2.7
6
+ gunicorn
File without changes
File without changes
File without changes