plain 0.34.0__tar.gz → 0.35.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 (152) hide show
  1. {plain-0.34.0 → plain-0.35.0}/PKG-INFO +1 -1
  2. {plain-0.34.0 → plain-0.35.0}/plain/test/client.py +8 -8
  3. {plain-0.34.0 → plain-0.35.0}/plain/views/base.py +1 -0
  4. {plain-0.34.0 → plain-0.35.0}/plain/views/redirect.py +5 -0
  5. {plain-0.34.0 → plain-0.35.0}/pyproject.toml +1 -1
  6. {plain-0.34.0 → plain-0.35.0}/.gitignore +0 -0
  7. {plain-0.34.0 → plain-0.35.0}/LICENSE +0 -0
  8. {plain-0.34.0 → plain-0.35.0}/README.md +0 -0
  9. {plain-0.34.0 → plain-0.35.0}/plain/README.md +0 -0
  10. {plain-0.34.0 → plain-0.35.0}/plain/__main__.py +0 -0
  11. {plain-0.34.0 → plain-0.35.0}/plain/assets/README.md +0 -0
  12. {plain-0.34.0 → plain-0.35.0}/plain/assets/__init__.py +0 -0
  13. {plain-0.34.0 → plain-0.35.0}/plain/assets/compile.py +0 -0
  14. {plain-0.34.0 → plain-0.35.0}/plain/assets/finders.py +0 -0
  15. {plain-0.34.0 → plain-0.35.0}/plain/assets/fingerprints.py +0 -0
  16. {plain-0.34.0 → plain-0.35.0}/plain/assets/urls.py +0 -0
  17. {plain-0.34.0 → plain-0.35.0}/plain/assets/views.py +0 -0
  18. {plain-0.34.0 → plain-0.35.0}/plain/cli/README.md +0 -0
  19. {plain-0.34.0 → plain-0.35.0}/plain/cli/__init__.py +0 -0
  20. {plain-0.34.0 → plain-0.35.0}/plain/cli/core.py +0 -0
  21. {plain-0.34.0 → plain-0.35.0}/plain/cli/formatting.py +0 -0
  22. {plain-0.34.0 → plain-0.35.0}/plain/cli/print.py +0 -0
  23. {plain-0.34.0 → plain-0.35.0}/plain/cli/registry.py +0 -0
  24. {plain-0.34.0 → plain-0.35.0}/plain/cli/startup.py +0 -0
  25. {plain-0.34.0 → plain-0.35.0}/plain/csrf/README.md +0 -0
  26. {plain-0.34.0 → plain-0.35.0}/plain/csrf/middleware.py +0 -0
  27. {plain-0.34.0 → plain-0.35.0}/plain/csrf/views.py +0 -0
  28. {plain-0.34.0 → plain-0.35.0}/plain/debug.py +0 -0
  29. {plain-0.34.0 → plain-0.35.0}/plain/exceptions.py +0 -0
  30. {plain-0.34.0 → plain-0.35.0}/plain/forms/README.md +0 -0
  31. {plain-0.34.0 → plain-0.35.0}/plain/forms/__init__.py +0 -0
  32. {plain-0.34.0 → plain-0.35.0}/plain/forms/boundfield.py +0 -0
  33. {plain-0.34.0 → plain-0.35.0}/plain/forms/exceptions.py +0 -0
  34. {plain-0.34.0 → plain-0.35.0}/plain/forms/fields.py +0 -0
  35. {plain-0.34.0 → plain-0.35.0}/plain/forms/forms.py +0 -0
  36. {plain-0.34.0 → plain-0.35.0}/plain/http/README.md +0 -0
  37. {plain-0.34.0 → plain-0.35.0}/plain/http/__init__.py +0 -0
  38. {plain-0.34.0 → plain-0.35.0}/plain/http/cookie.py +0 -0
  39. {plain-0.34.0 → plain-0.35.0}/plain/http/multipartparser.py +0 -0
  40. {plain-0.34.0 → plain-0.35.0}/plain/http/request.py +0 -0
  41. {plain-0.34.0 → plain-0.35.0}/plain/http/response.py +0 -0
  42. {plain-0.34.0 → plain-0.35.0}/plain/internal/__init__.py +0 -0
  43. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/__init__.py +0 -0
  44. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/base.py +0 -0
  45. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/locks.py +0 -0
  46. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/move.py +0 -0
  47. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/temp.py +0 -0
  48. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/uploadedfile.py +0 -0
  49. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/uploadhandler.py +0 -0
  50. {plain-0.34.0 → plain-0.35.0}/plain/internal/files/utils.py +0 -0
  51. {plain-0.34.0 → plain-0.35.0}/plain/internal/handlers/__init__.py +0 -0
  52. {plain-0.34.0 → plain-0.35.0}/plain/internal/handlers/base.py +0 -0
  53. {plain-0.34.0 → plain-0.35.0}/plain/internal/handlers/exception.py +0 -0
  54. {plain-0.34.0 → plain-0.35.0}/plain/internal/handlers/wsgi.py +0 -0
  55. {plain-0.34.0 → plain-0.35.0}/plain/internal/middleware/__init__.py +0 -0
  56. {plain-0.34.0 → plain-0.35.0}/plain/internal/middleware/headers.py +0 -0
  57. {plain-0.34.0 → plain-0.35.0}/plain/internal/middleware/https.py +0 -0
  58. {plain-0.34.0 → plain-0.35.0}/plain/internal/middleware/slash.py +0 -0
  59. {plain-0.34.0 → plain-0.35.0}/plain/json.py +0 -0
  60. {plain-0.34.0 → plain-0.35.0}/plain/logs/README.md +0 -0
  61. {plain-0.34.0 → plain-0.35.0}/plain/logs/__init__.py +0 -0
  62. {plain-0.34.0 → plain-0.35.0}/plain/logs/configure.py +0 -0
  63. {plain-0.34.0 → plain-0.35.0}/plain/logs/loggers.py +0 -0
  64. {plain-0.34.0 → plain-0.35.0}/plain/logs/utils.py +0 -0
  65. {plain-0.34.0 → plain-0.35.0}/plain/packages/README.md +0 -0
  66. {plain-0.34.0 → plain-0.35.0}/plain/packages/__init__.py +0 -0
  67. {plain-0.34.0 → plain-0.35.0}/plain/packages/config.py +0 -0
  68. {plain-0.34.0 → plain-0.35.0}/plain/packages/registry.py +0 -0
  69. {plain-0.34.0 → plain-0.35.0}/plain/paginator.py +0 -0
  70. {plain-0.34.0 → plain-0.35.0}/plain/preflight/README.md +0 -0
  71. {plain-0.34.0 → plain-0.35.0}/plain/preflight/__init__.py +0 -0
  72. {plain-0.34.0 → plain-0.35.0}/plain/preflight/files.py +0 -0
  73. {plain-0.34.0 → plain-0.35.0}/plain/preflight/messages.py +0 -0
  74. {plain-0.34.0 → plain-0.35.0}/plain/preflight/registry.py +0 -0
  75. {plain-0.34.0 → plain-0.35.0}/plain/preflight/security.py +0 -0
  76. {plain-0.34.0 → plain-0.35.0}/plain/preflight/urls.py +0 -0
  77. {plain-0.34.0 → plain-0.35.0}/plain/runtime/README.md +0 -0
  78. {plain-0.34.0 → plain-0.35.0}/plain/runtime/__init__.py +0 -0
  79. {plain-0.34.0 → plain-0.35.0}/plain/runtime/global_settings.py +0 -0
  80. {plain-0.34.0 → plain-0.35.0}/plain/runtime/user_settings.py +0 -0
  81. {plain-0.34.0 → plain-0.35.0}/plain/signals/README.md +0 -0
  82. {plain-0.34.0 → plain-0.35.0}/plain/signals/__init__.py +0 -0
  83. {plain-0.34.0 → plain-0.35.0}/plain/signals/dispatch/__init__.py +0 -0
  84. {plain-0.34.0 → plain-0.35.0}/plain/signals/dispatch/dispatcher.py +0 -0
  85. {plain-0.34.0 → plain-0.35.0}/plain/signals/dispatch/license.txt +0 -0
  86. {plain-0.34.0 → plain-0.35.0}/plain/signing.py +0 -0
  87. {plain-0.34.0 → plain-0.35.0}/plain/templates/README.md +0 -0
  88. {plain-0.34.0 → plain-0.35.0}/plain/templates/__init__.py +0 -0
  89. {plain-0.34.0 → plain-0.35.0}/plain/templates/core.py +0 -0
  90. {plain-0.34.0 → plain-0.35.0}/plain/templates/jinja/__init__.py +0 -0
  91. {plain-0.34.0 → plain-0.35.0}/plain/templates/jinja/environments.py +0 -0
  92. {plain-0.34.0 → plain-0.35.0}/plain/templates/jinja/extensions.py +0 -0
  93. {plain-0.34.0 → plain-0.35.0}/plain/templates/jinja/filters.py +0 -0
  94. {plain-0.34.0 → plain-0.35.0}/plain/templates/jinja/globals.py +0 -0
  95. {plain-0.34.0 → plain-0.35.0}/plain/test/README.md +0 -0
  96. {plain-0.34.0 → plain-0.35.0}/plain/test/__init__.py +0 -0
  97. {plain-0.34.0 → plain-0.35.0}/plain/test/encoding.py +0 -0
  98. {plain-0.34.0 → plain-0.35.0}/plain/test/exceptions.py +0 -0
  99. {plain-0.34.0 → plain-0.35.0}/plain/urls/README.md +0 -0
  100. {plain-0.34.0 → plain-0.35.0}/plain/urls/__init__.py +0 -0
  101. {plain-0.34.0 → plain-0.35.0}/plain/urls/converters.py +0 -0
  102. {plain-0.34.0 → plain-0.35.0}/plain/urls/exceptions.py +0 -0
  103. {plain-0.34.0 → plain-0.35.0}/plain/urls/patterns.py +0 -0
  104. {plain-0.34.0 → plain-0.35.0}/plain/urls/resolvers.py +0 -0
  105. {plain-0.34.0 → plain-0.35.0}/plain/urls/routers.py +0 -0
  106. {plain-0.34.0 → plain-0.35.0}/plain/urls/utils.py +0 -0
  107. {plain-0.34.0 → plain-0.35.0}/plain/utils/README.md +0 -0
  108. {plain-0.34.0 → plain-0.35.0}/plain/utils/__init__.py +0 -0
  109. {plain-0.34.0 → plain-0.35.0}/plain/utils/cache.py +0 -0
  110. {plain-0.34.0 → plain-0.35.0}/plain/utils/connection.py +0 -0
  111. {plain-0.34.0 → plain-0.35.0}/plain/utils/crypto.py +0 -0
  112. {plain-0.34.0 → plain-0.35.0}/plain/utils/datastructures.py +0 -0
  113. {plain-0.34.0 → plain-0.35.0}/plain/utils/dateparse.py +0 -0
  114. {plain-0.34.0 → plain-0.35.0}/plain/utils/deconstruct.py +0 -0
  115. {plain-0.34.0 → plain-0.35.0}/plain/utils/decorators.py +0 -0
  116. {plain-0.34.0 → plain-0.35.0}/plain/utils/duration.py +0 -0
  117. {plain-0.34.0 → plain-0.35.0}/plain/utils/encoding.py +0 -0
  118. {plain-0.34.0 → plain-0.35.0}/plain/utils/functional.py +0 -0
  119. {plain-0.34.0 → plain-0.35.0}/plain/utils/hashable.py +0 -0
  120. {plain-0.34.0 → plain-0.35.0}/plain/utils/html.py +0 -0
  121. {plain-0.34.0 → plain-0.35.0}/plain/utils/http.py +0 -0
  122. {plain-0.34.0 → plain-0.35.0}/plain/utils/inspect.py +0 -0
  123. {plain-0.34.0 → plain-0.35.0}/plain/utils/ipv6.py +0 -0
  124. {plain-0.34.0 → plain-0.35.0}/plain/utils/itercompat.py +0 -0
  125. {plain-0.34.0 → plain-0.35.0}/plain/utils/module_loading.py +0 -0
  126. {plain-0.34.0 → plain-0.35.0}/plain/utils/regex_helper.py +0 -0
  127. {plain-0.34.0 → plain-0.35.0}/plain/utils/safestring.py +0 -0
  128. {plain-0.34.0 → plain-0.35.0}/plain/utils/text.py +0 -0
  129. {plain-0.34.0 → plain-0.35.0}/plain/utils/timesince.py +0 -0
  130. {plain-0.34.0 → plain-0.35.0}/plain/utils/timezone.py +0 -0
  131. {plain-0.34.0 → plain-0.35.0}/plain/utils/tree.py +0 -0
  132. {plain-0.34.0 → plain-0.35.0}/plain/validators.py +0 -0
  133. {plain-0.34.0 → plain-0.35.0}/plain/views/README.md +0 -0
  134. {plain-0.34.0 → plain-0.35.0}/plain/views/__init__.py +0 -0
  135. {plain-0.34.0 → plain-0.35.0}/plain/views/csrf.py +0 -0
  136. {plain-0.34.0 → plain-0.35.0}/plain/views/errors.py +0 -0
  137. {plain-0.34.0 → plain-0.35.0}/plain/views/exceptions.py +0 -0
  138. {plain-0.34.0 → plain-0.35.0}/plain/views/forms.py +0 -0
  139. {plain-0.34.0 → plain-0.35.0}/plain/views/objects.py +0 -0
  140. {plain-0.34.0 → plain-0.35.0}/plain/views/templates.py +0 -0
  141. {plain-0.34.0 → plain-0.35.0}/plain/wsgi.py +0 -0
  142. {plain-0.34.0 → plain-0.35.0}/tests/.bolt/assets_collected/assets.json +0 -0
  143. {plain-0.34.0 → plain-0.35.0}/tests/.gitignore +0 -0
  144. {plain-0.34.0 → plain-0.35.0}/tests/app/.gitignore +0 -0
  145. {plain-0.34.0 → plain-0.35.0}/tests/app/settings.py +0 -0
  146. {plain-0.34.0 → plain-0.35.0}/tests/app/test/__init__.py +0 -0
  147. {plain-0.34.0 → plain-0.35.0}/tests/app/test/default_settings.py +0 -0
  148. {plain-0.34.0 → plain-0.35.0}/tests/app/urls.py +0 -0
  149. {plain-0.34.0 → plain-0.35.0}/tests/conftest.py +0 -0
  150. {plain-0.34.0 → plain-0.35.0}/tests/test_cli.py +0 -0
  151. {plain-0.34.0 → plain-0.35.0}/tests/test_runtime.py +0 -0
  152. {plain-0.34.0 → plain-0.35.0}/tests/test_wsgi.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plain
3
- Version: 0.34.0
3
+ Version: 0.35.0
4
4
  Summary: A web framework for building products with Python.
5
5
  Author-email: Dave Gaeddert <dave.gaeddert@dropseed.dev>
6
6
  License-File: LICENSE
@@ -17,7 +17,6 @@ from plain.urls import get_resolver
17
17
  from plain.utils.encoding import force_bytes
18
18
  from plain.utils.functional import SimpleLazyObject
19
19
  from plain.utils.http import urlencode
20
- from plain.utils.module_loading import import_string
21
20
  from plain.utils.regex_helper import _lazy_re_compile
22
21
 
23
22
  from .encoding import encode_multipart
@@ -776,11 +775,12 @@ class Client(RequestFactory):
776
775
  @property
777
776
  def session(self):
778
777
  """Return the current session variables."""
779
- Session = import_string(settings.SESSION_CLASS)
778
+ from plain.sessions import SessionStore
779
+
780
780
  cookie = self.cookies.get(settings.SESSION_COOKIE_NAME)
781
781
  if cookie:
782
- return Session(cookie.value)
783
- session = Session()
782
+ return SessionStore(cookie.value)
783
+ session = SessionStore()
784
784
  session.save()
785
785
  self.cookies[settings.SESSION_COOKIE_NAME] = session.session_key
786
786
  return session
@@ -790,14 +790,14 @@ class Client(RequestFactory):
790
790
 
791
791
  def _login(self, user):
792
792
  from plain.auth import login
793
+ from plain.sessions import SessionStore
793
794
 
794
795
  # Create a fake request to store login details.
795
796
  request = HttpRequest()
796
797
  if self.session:
797
798
  request.session = self.session
798
799
  else:
799
- Session = import_string(settings.SESSION_CLASS)
800
- request.session = Session()
800
+ request.session = SessionStore()
801
801
  login(request, user)
802
802
  # Save the session values.
803
803
  request.session.save()
@@ -816,14 +816,14 @@ class Client(RequestFactory):
816
816
  def logout(self):
817
817
  """Log out the user by removing the cookies and session object."""
818
818
  from plain.auth import get_user, logout
819
+ from plain.sessions import SessionStore
819
820
 
820
821
  request = HttpRequest()
821
822
  if self.session:
822
823
  request.session = self.session
823
824
  request.user = get_user(request)
824
825
  else:
825
- Session = import_string(settings.SESSION_CLASS)
826
- request.session = Session()
826
+ request.session = SessionStore()
827
827
  logout(request)
828
828
  self.cookies = SimpleCookie()
829
829
 
@@ -85,6 +85,7 @@ class View:
85
85
  return result
86
86
 
87
87
  if isinstance(result, str):
88
+ # Assume the str is rendered HTML
88
89
  return Response(result)
89
90
 
90
91
  if isinstance(result, list):
@@ -20,6 +20,11 @@ class RedirectView(View):
20
20
  pattern_name: str | None = None
21
21
  query_string = False
22
22
 
23
+ def __init__(self, url=None, permanent=None):
24
+ # Allow url and permanent to be set in RedirectView.as_view(url="...", permanent=True)
25
+ self.url = url or self.url
26
+ self.permanent = permanent if permanent is not None else self.permanent
27
+
23
28
  def get_redirect_url(self):
24
29
  """
25
30
  Return the URL redirect to. Keyword arguments from the URL pattern
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plain"
3
- version = "0.34.0"
3
+ version = "0.35.0"
4
4
  description = "A web framework for building products with Python."
5
5
  authors = [{name = "Dave Gaeddert", email = "dave.gaeddert@dropseed.dev"}]
6
6
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes