plain 0.4.1__tar.gz → 0.5.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.
- {plain-0.4.1 → plain-0.5.0}/PKG-INFO +1 -1
- {plain-0.4.1 → plain-0.5.0}/plain/forms/forms.py +2 -1
- {plain-0.4.1 → plain-0.5.0}/plain/signing.py +4 -22
- {plain-0.4.1 → plain-0.5.0}/pyproject.toml +1 -1
- {plain-0.4.1 → plain-0.5.0}/LICENSE +0 -0
- {plain-0.4.1 → plain-0.5.0}/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/__main__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/assets/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/assets/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/assets/compile.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/assets/finders.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/assets/fingerprints.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/assets/urls.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/assets/views.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/cli/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/cli/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/cli/cli.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/cli/formatting.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/cli/packages.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/cli/print.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/cli/startup.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/csrf/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/csrf/middleware.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/csrf/views.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/debug.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/exceptions.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/forms/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/forms/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/forms/boundfield.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/forms/exceptions.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/forms/fields.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/http/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/http/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/http/cookie.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/http/multipartparser.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/http/request.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/http/response.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/base.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/locks.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/move.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/temp.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/uploadedfile.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/uploadhandler.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/files/utils.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/handlers/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/handlers/base.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/handlers/exception.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/internal/handlers/wsgi.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/json.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/logs/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/logs/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/logs/configure.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/logs/loggers.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/logs/utils.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/middleware/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/middleware/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/middleware/clickjacking.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/middleware/common.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/middleware/gzip.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/middleware/security.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/packages/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/packages/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/packages/config.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/packages/registry.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/paginator.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/files.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/messages.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/registry.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/security/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/security/base.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/security/csrf.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/preflight/urls.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/runtime/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/runtime/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/runtime/global_settings.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/runtime/user_settings.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/signals/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/signals/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/signals/dispatch/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/signals/dispatch/dispatcher.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/signals/dispatch/license.txt +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/core.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/jinja/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/jinja/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/jinja/defaults.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/jinja/extensions.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/jinja/filters.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/templates/jinja/globals.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/test/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/test/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/test/client.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/urls/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/urls/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/urls/base.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/urls/conf.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/urls/converters.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/urls/exceptions.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/urls/resolvers.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/_os.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/cache.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/connection.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/crypto.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/datastructures.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/dateformat.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/dateparse.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/dates.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/deconstruct.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/decorators.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/deprecation.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/duration.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/email.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/encoding.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/functional.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/hashable.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/html.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/http.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/inspect.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/ipv6.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/itercompat.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/module_loading.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/regex_helper.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/safestring.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/termcolors.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/text.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/timesince.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/timezone.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/utils/tree.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/validators.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/README.md +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/__init__.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/base.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/csrf.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/errors.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/exceptions.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/forms.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/objects.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/redirect.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/views/templates.py +0 -0
- {plain-0.4.1 → plain-0.5.0}/plain/wsgi.py +0 -0
@@ -203,7 +203,8 @@ class BaseForm:
|
|
203
203
|
self._errors[field].extend(error_list)
|
204
204
|
|
205
205
|
# The field had an error, so removed it from the final data
|
206
|
-
|
206
|
+
# (we use getattr here so errors can be added to uncleaned forms)
|
207
|
+
if field in getattr(self, "cleaned_data", {}):
|
207
208
|
del self.cleaned_data[field]
|
208
209
|
|
209
210
|
def full_clean(self):
|
@@ -37,12 +37,10 @@ import base64
|
|
37
37
|
import datetime
|
38
38
|
import json
|
39
39
|
import time
|
40
|
-
import warnings
|
41
40
|
import zlib
|
42
41
|
|
43
42
|
from plain.runtime import settings
|
44
43
|
from plain.utils.crypto import constant_time_compare, salted_hmac
|
45
|
-
from plain.utils.deprecation import RemovedInDjango51Warning
|
46
44
|
from plain.utils.encoding import force_bytes
|
47
45
|
from plain.utils.module_loading import import_string
|
48
46
|
from plain.utils.regex_helper import _lazy_re_compile
|
@@ -177,17 +175,13 @@ def loads(
|
|
177
175
|
|
178
176
|
|
179
177
|
class Signer:
|
180
|
-
# RemovedInDjango51Warning: When the deprecation ends, replace with:
|
181
|
-
# def __init__(
|
182
|
-
# self, *, key=None, sep=":", salt=None, algorithm=None, fallback_keys=None
|
183
|
-
# ):
|
184
178
|
def __init__(
|
185
179
|
self,
|
186
|
-
|
180
|
+
*,
|
187
181
|
key=None,
|
188
182
|
sep=":",
|
189
183
|
salt=None,
|
190
|
-
algorithm=
|
184
|
+
algorithm="sha256",
|
191
185
|
fallback_keys=None,
|
192
186
|
):
|
193
187
|
self.key = key or settings.SECRET_KEY
|
@@ -198,20 +192,8 @@ class Signer:
|
|
198
192
|
)
|
199
193
|
self.sep = sep
|
200
194
|
self.salt = salt or f"{self.__class__.__module__}.{self.__class__.__name__}"
|
201
|
-
self.algorithm = algorithm
|
202
|
-
|
203
|
-
if args:
|
204
|
-
warnings.warn(
|
205
|
-
f"Passing positional arguments to {self.__class__.__name__} is "
|
206
|
-
f"deprecated.",
|
207
|
-
RemovedInDjango51Warning,
|
208
|
-
stacklevel=2,
|
209
|
-
)
|
210
|
-
for arg, attr in zip(
|
211
|
-
args, ["key", "sep", "salt", "algorithm", "fallback_keys"]
|
212
|
-
):
|
213
|
-
if arg or attr == "sep":
|
214
|
-
setattr(self, attr, arg)
|
195
|
+
self.algorithm = algorithm
|
196
|
+
|
215
197
|
if _SEP_UNSAFE.match(self.sep):
|
216
198
|
raise ValueError(
|
217
199
|
"Unsafe Signer separator: %r (cannot be empty or consist of "
|
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
|
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
|