appier 1.34.10__tar.gz → 1.34.12__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 (108) hide show
  1. {appier-1.34.10/src/appier.egg-info → appier-1.34.12}/PKG-INFO +1 -1
  2. {appier-1.34.10 → appier-1.34.12}/setup.py +1 -1
  3. {appier-1.34.10 → appier-1.34.12}/src/appier/__init__.py +1 -0
  4. {appier-1.34.10 → appier-1.34.12}/src/appier/base.py +4 -0
  5. {appier-1.34.10 → appier-1.34.12}/src/appier/validation.py +13 -0
  6. {appier-1.34.10 → appier-1.34.12/src/appier.egg-info}/PKG-INFO +1 -1
  7. {appier-1.34.10 → appier-1.34.12}/MANIFEST.in +0 -0
  8. {appier-1.34.10 → appier-1.34.12}/README.rst +0 -0
  9. {appier-1.34.10 → appier-1.34.12}/pyproject.toml +0 -0
  10. {appier-1.34.10 → appier-1.34.12}/setup.cfg +0 -0
  11. {appier-1.34.10 → appier-1.34.12}/src/appier/amqp.py +0 -0
  12. {appier-1.34.10 → appier-1.34.12}/src/appier/api.py +0 -0
  13. {appier-1.34.10 → appier-1.34.12}/src/appier/asgi.py +0 -0
  14. {appier-1.34.10 → appier-1.34.12}/src/appier/async_neo.py +0 -0
  15. {appier-1.34.10 → appier-1.34.12}/src/appier/async_old.py +0 -0
  16. {appier-1.34.10 → appier-1.34.12}/src/appier/asynchronous.py +0 -0
  17. {appier-1.34.10 → appier-1.34.12}/src/appier/asynchronous.pyi +0 -0
  18. {appier-1.34.10 → appier-1.34.12}/src/appier/base.pyi +0 -0
  19. {appier-1.34.10 → appier-1.34.12}/src/appier/bus.py +0 -0
  20. {appier-1.34.10 → appier-1.34.12}/src/appier/bus.pyi +0 -0
  21. {appier-1.34.10 → appier-1.34.12}/src/appier/cache.py +0 -0
  22. {appier-1.34.10 → appier-1.34.12}/src/appier/cache.pyi +0 -0
  23. {appier-1.34.10 → appier-1.34.12}/src/appier/common.py +0 -0
  24. {appier-1.34.10 → appier-1.34.12}/src/appier/component.py +0 -0
  25. {appier-1.34.10 → appier-1.34.12}/src/appier/component.pyi +0 -0
  26. {appier-1.34.10 → appier-1.34.12}/src/appier/compress.py +0 -0
  27. {appier-1.34.10 → appier-1.34.12}/src/appier/config.py +0 -0
  28. {appier-1.34.10 → appier-1.34.12}/src/appier/controller.py +0 -0
  29. {appier-1.34.10 → appier-1.34.12}/src/appier/crypt.py +0 -0
  30. {appier-1.34.10 → appier-1.34.12}/src/appier/data.py +0 -0
  31. {appier-1.34.10 → appier-1.34.12}/src/appier/data.pyi +0 -0
  32. {appier-1.34.10 → appier-1.34.12}/src/appier/defines.py +0 -0
  33. {appier-1.34.10 → appier-1.34.12}/src/appier/exceptions.py +0 -0
  34. {appier-1.34.10 → appier-1.34.12}/src/appier/execution.py +0 -0
  35. {appier-1.34.10 → appier-1.34.12}/src/appier/export.py +0 -0
  36. {appier-1.34.10 → appier-1.34.12}/src/appier/extra.py +0 -0
  37. {appier-1.34.10 → appier-1.34.12}/src/appier/extra_neo.py +0 -0
  38. {appier-1.34.10 → appier-1.34.12}/src/appier/extra_old.py +0 -0
  39. {appier-1.34.10 → appier-1.34.12}/src/appier/geo.py +0 -0
  40. {appier-1.34.10 → appier-1.34.12}/src/appier/git.py +0 -0
  41. {appier-1.34.10 → appier-1.34.12}/src/appier/graph.py +0 -0
  42. {appier-1.34.10 → appier-1.34.12}/src/appier/http.py +0 -0
  43. {appier-1.34.10 → appier-1.34.12}/src/appier/legacy.py +0 -0
  44. {appier-1.34.10 → appier-1.34.12}/src/appier/log.py +0 -0
  45. {appier-1.34.10 → appier-1.34.12}/src/appier/meta.py +0 -0
  46. {appier-1.34.10 → appier-1.34.12}/src/appier/mock.py +0 -0
  47. {appier-1.34.10 → appier-1.34.12}/src/appier/model.py +0 -0
  48. {appier-1.34.10 → appier-1.34.12}/src/appier/model.pyi +0 -0
  49. {appier-1.34.10 → appier-1.34.12}/src/appier/model_a.py +0 -0
  50. {appier-1.34.10 → appier-1.34.12}/src/appier/mongo.py +0 -0
  51. {appier-1.34.10 → appier-1.34.12}/src/appier/observer.py +0 -0
  52. {appier-1.34.10 → appier-1.34.12}/src/appier/part.py +0 -0
  53. {appier-1.34.10 → appier-1.34.12}/src/appier/part.pyi +0 -0
  54. {appier-1.34.10 → appier-1.34.12}/src/appier/preferences.py +0 -0
  55. {appier-1.34.10 → appier-1.34.12}/src/appier/preferences.pyi +0 -0
  56. {appier-1.34.10 → appier-1.34.12}/src/appier/queuing.py +0 -0
  57. {appier-1.34.10 → appier-1.34.12}/src/appier/redisdb.py +0 -0
  58. {appier-1.34.10 → appier-1.34.12}/src/appier/request.py +0 -0
  59. {appier-1.34.10 → appier-1.34.12}/src/appier/res/static/css/base.css +0 -0
  60. {appier-1.34.10 → appier-1.34.12}/src/appier/res/static/images/favicon.ico +0 -0
  61. {appier-1.34.10 → appier-1.34.12}/src/appier/res/static/js/base.js +0 -0
  62. {appier-1.34.10 → appier-1.34.12}/src/appier/res/templates/error.html.tpl +0 -0
  63. {appier-1.34.10 → appier-1.34.12}/src/appier/res/templates/holder.html.tpl +0 -0
  64. {appier-1.34.10 → appier-1.34.12}/src/appier/res/templates/layout.html.tpl +0 -0
  65. {appier-1.34.10 → appier-1.34.12}/src/appier/scheduler.py +0 -0
  66. {appier-1.34.10 → appier-1.34.12}/src/appier/scheduler.pyi +0 -0
  67. {appier-1.34.10 → appier-1.34.12}/src/appier/serialize.py +0 -0
  68. {appier-1.34.10 → appier-1.34.12}/src/appier/session.py +0 -0
  69. {appier-1.34.10 → appier-1.34.12}/src/appier/session.pyi +0 -0
  70. {appier-1.34.10 → appier-1.34.12}/src/appier/settings.py +0 -0
  71. {appier-1.34.10 → appier-1.34.12}/src/appier/smtp.py +0 -0
  72. {appier-1.34.10 → appier-1.34.12}/src/appier/storage.py +0 -0
  73. {appier-1.34.10 → appier-1.34.12}/src/appier/structures.py +0 -0
  74. {appier-1.34.10 → appier-1.34.12}/src/appier/test/__init__.py +0 -0
  75. {appier-1.34.10 → appier-1.34.12}/src/appier/test/base.py +0 -0
  76. {appier-1.34.10 → appier-1.34.12}/src/appier/test/cache.py +0 -0
  77. {appier-1.34.10 → appier-1.34.12}/src/appier/test/config.py +0 -0
  78. {appier-1.34.10 → appier-1.34.12}/src/appier/test/crypt.py +0 -0
  79. {appier-1.34.10 → appier-1.34.12}/src/appier/test/data.py +0 -0
  80. {appier-1.34.10 → appier-1.34.12}/src/appier/test/error_handler.py +0 -0
  81. {appier-1.34.10 → appier-1.34.12}/src/appier/test/exception_handler.py +0 -0
  82. {appier-1.34.10 → appier-1.34.12}/src/appier/test/exceptions.py +0 -0
  83. {appier-1.34.10 → appier-1.34.12}/src/appier/test/export.py +0 -0
  84. {appier-1.34.10 → appier-1.34.12}/src/appier/test/graph.py +0 -0
  85. {appier-1.34.10 → appier-1.34.12}/src/appier/test/http.py +0 -0
  86. {appier-1.34.10 → appier-1.34.12}/src/appier/test/legacy.py +0 -0
  87. {appier-1.34.10 → appier-1.34.12}/src/appier/test/log.py +0 -0
  88. {appier-1.34.10 → appier-1.34.12}/src/appier/test/mock.py +0 -0
  89. {appier-1.34.10 → appier-1.34.12}/src/appier/test/model.py +0 -0
  90. {appier-1.34.10 → appier-1.34.12}/src/appier/test/part.py +0 -0
  91. {appier-1.34.10 → appier-1.34.12}/src/appier/test/preferences.py +0 -0
  92. {appier-1.34.10 → appier-1.34.12}/src/appier/test/queuing.py +0 -0
  93. {appier-1.34.10 → appier-1.34.12}/src/appier/test/request.py +0 -0
  94. {appier-1.34.10 → appier-1.34.12}/src/appier/test/scheduler.py +0 -0
  95. {appier-1.34.10 → appier-1.34.12}/src/appier/test/serialize.py +0 -0
  96. {appier-1.34.10 → appier-1.34.12}/src/appier/test/session.py +0 -0
  97. {appier-1.34.10 → appier-1.34.12}/src/appier/test/smtp.py +0 -0
  98. {appier-1.34.10 → appier-1.34.12}/src/appier/test/structures.py +0 -0
  99. {appier-1.34.10 → appier-1.34.12}/src/appier/test/tags.py +0 -0
  100. {appier-1.34.10 → appier-1.34.12}/src/appier/test/typesf.py +0 -0
  101. {appier-1.34.10 → appier-1.34.12}/src/appier/test/util.py +0 -0
  102. {appier-1.34.10 → appier-1.34.12}/src/appier/test/validation.py +0 -0
  103. {appier-1.34.10 → appier-1.34.12}/src/appier/typesf.py +0 -0
  104. {appier-1.34.10 → appier-1.34.12}/src/appier/util.py +0 -0
  105. {appier-1.34.10 → appier-1.34.12}/src/appier.egg-info/SOURCES.txt +0 -0
  106. {appier-1.34.10 → appier-1.34.12}/src/appier.egg-info/dependency_links.txt +0 -0
  107. {appier-1.34.10 → appier-1.34.12}/src/appier.egg-info/not-zip-safe +0 -0
  108. {appier-1.34.10 → appier-1.34.12}/src/appier.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: appier
3
- Version: 1.34.10
3
+ Version: 1.34.12
4
4
  Summary: Appier Framework
5
5
  Home-page: http://appier.hive.pt
6
6
  Author: Hive Solutions Lda.
@@ -44,7 +44,7 @@ def read_file(path):
44
44
 
45
45
  setuptools.setup(
46
46
  name="appier",
47
- version="1.34.10",
47
+ version="1.34.12",
48
48
  author="Hive Solutions Lda.",
49
49
  author_email="development@hive.pt",
50
50
  description="Appier Framework",
@@ -406,6 +406,7 @@ from .validation import (
406
406
  validate_b,
407
407
  validate_e,
408
408
  safe,
409
+ custom,
409
410
  eq,
410
411
  gt,
411
412
  gte,
@@ -1264,6 +1264,7 @@ class App(
1264
1264
  self.add_filter(self.strip, "strip")
1265
1265
  self.add_filter(self.sentence, "sentence")
1266
1266
  self.add_filter(self.absolute_url, "absolute_url")
1267
+ self.add_filter(self.callable, "callable")
1267
1268
 
1268
1269
  self.add_filter(self.script_tag_jinja, "script_tag", type="eval")
1269
1270
  self.add_filter(self.css_tag_jinja, "css_tag", type="eval")
@@ -3735,6 +3736,9 @@ class App(
3735
3736
  value = base_url + prefix + value
3736
3737
  return value
3737
3738
 
3739
+ def callable(self, value):
3740
+ return callable(value)
3741
+
3738
3742
  def url_for(
3739
3743
  self,
3740
3744
  type,
@@ -151,6 +151,19 @@ def safe(comparison):
151
151
  return False
152
152
 
153
153
 
154
+ def custom(name, callable, message="value is not valid", locale=True):
155
+ def validation(object, ctx):
156
+ value = object.get(name, None)
157
+ if value == None:
158
+ return True
159
+ if callable(value):
160
+ return True
161
+ message_l = _to_locale(message) if locale else message
162
+ raise exceptions.ValidationInternalError(name, message_l)
163
+
164
+ return validation
165
+
166
+
154
167
  def eq(name, value_c, message="must be equal to %s", locale=True):
155
168
  def validation(object, ctx):
156
169
  value = object.get(name, None)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 1.1
2
2
  Name: appier
3
- Version: 1.34.10
3
+ Version: 1.34.12
4
4
  Summary: Appier Framework
5
5
  Home-page: http://appier.hive.pt
6
6
  Author: Hive Solutions Lda.
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