django-nativemojo 0.1.10__tar.gz → 0.1.16__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 (371) hide show
  1. django_nativemojo-0.1.16/PKG-INFO +138 -0
  2. django_nativemojo-0.1.16/README.md +107 -0
  3. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/__init__.py +1 -1
  4. django_nativemojo-0.1.16/mojo/apps/account/management/__init__.py +5 -0
  5. django_nativemojo-0.1.16/mojo/apps/account/management/commands/__init__.py +6 -0
  6. django_nativemojo-0.1.16/mojo/apps/account/management/commands/serializer_admin.py +651 -0
  7. django_nativemojo-0.1.16/mojo/apps/account/migrations/0004_user_avatar.py +20 -0
  8. django_nativemojo-0.1.16/mojo/apps/account/migrations/0005_group_last_activity.py +18 -0
  9. django_nativemojo-0.1.16/mojo/apps/account/migrations/0006_add_device_tracking_models.py +72 -0
  10. django_nativemojo-0.1.16/mojo/apps/account/migrations/0007_delete_userdevicelocation.py +16 -0
  11. django_nativemojo-0.1.16/mojo/apps/account/migrations/0008_userdevicelocation.py +33 -0
  12. django_nativemojo-0.1.16/mojo/apps/account/migrations/0009_geolocatedip_subnet.py +18 -0
  13. django_nativemojo-0.1.16/mojo/apps/account/migrations/0010_group_avatar.py +20 -0
  14. django_nativemojo-0.1.16/mojo/apps/account/migrations/0011_user_org_registereddevice_pushconfig_and_more.py +118 -0
  15. django_nativemojo-0.1.16/mojo/apps/account/migrations/0012_remove_pushconfig_apns_key_file_and_more.py +21 -0
  16. django_nativemojo-0.1.16/mojo/apps/account/migrations/0013_pushconfig_test_mode_alter_pushconfig_apns_enabled_and_more.py +28 -0
  17. django_nativemojo-0.1.16/mojo/apps/account/migrations/0014_notificationdelivery_data_payload_and_more.py +48 -0
  18. django_nativemojo-0.1.16/mojo/apps/account/models/__init__.py +5 -0
  19. django_nativemojo-0.1.16/mojo/apps/account/models/device.py +281 -0
  20. django_nativemojo-0.1.16/mojo/apps/account/models/group.py +402 -0
  21. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/models/member.py +29 -5
  22. django_nativemojo-0.1.16/mojo/apps/account/models/push/__init__.py +4 -0
  23. django_nativemojo-0.1.16/mojo/apps/account/models/push/config.py +112 -0
  24. django_nativemojo-0.1.16/mojo/apps/account/models/push/delivery.py +93 -0
  25. django_nativemojo-0.1.16/mojo/apps/account/models/push/device.py +66 -0
  26. django_nativemojo-0.1.16/mojo/apps/account/models/push/template.py +99 -0
  27. django_nativemojo-0.1.16/mojo/apps/account/models/user.py +561 -0
  28. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/rest/__init__.py +2 -0
  29. django_nativemojo-0.1.16/mojo/apps/account/rest/device.py +39 -0
  30. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/rest/group.py +9 -0
  31. django_nativemojo-0.1.16/mojo/apps/account/rest/push.py +187 -0
  32. django_nativemojo-0.1.16/mojo/apps/account/rest/user.py +141 -0
  33. django_nativemojo-0.1.16/mojo/apps/account/services/__init__.py +1 -0
  34. django_nativemojo-0.1.16/mojo/apps/account/services/push.py +363 -0
  35. django_nativemojo-0.1.16/mojo/apps/aws/migrations/0001_initial.py +206 -0
  36. django_nativemojo-0.1.16/mojo/apps/aws/migrations/0002_emaildomain_can_recv_emaildomain_can_send_and_more.py +28 -0
  37. django_nativemojo-0.1.16/mojo/apps/aws/migrations/0003_mailbox_is_domain_default_mailbox_is_system_default_and_more.py +31 -0
  38. django_nativemojo-0.1.16/mojo/apps/aws/migrations/0004_s3bucket.py +39 -0
  39. django_nativemojo-0.1.16/mojo/apps/aws/migrations/0005_alter_emaildomain_region_delete_s3bucket.py +21 -0
  40. django_nativemojo-0.1.16/mojo/apps/aws/models/__init__.py +19 -0
  41. django_nativemojo-0.1.16/mojo/apps/aws/models/email_attachment.py +99 -0
  42. django_nativemojo-0.1.16/mojo/apps/aws/models/email_domain.py +218 -0
  43. django_nativemojo-0.1.16/mojo/apps/aws/models/email_template.py +132 -0
  44. django_nativemojo-0.1.16/mojo/apps/aws/models/incoming_email.py +197 -0
  45. django_nativemojo-0.1.16/mojo/apps/aws/models/mailbox.py +288 -0
  46. django_nativemojo-0.1.16/mojo/apps/aws/models/sent_message.py +175 -0
  47. django_nativemojo-0.1.16/mojo/apps/aws/rest/__init__.py +7 -0
  48. django_nativemojo-0.1.16/mojo/apps/aws/rest/email.py +33 -0
  49. django_nativemojo-0.1.16/mojo/apps/aws/rest/email_ops.py +183 -0
  50. django_nativemojo-0.1.16/mojo/apps/aws/rest/messages.py +32 -0
  51. django_nativemojo-0.1.16/mojo/apps/aws/rest/s3.py +64 -0
  52. django_nativemojo-0.1.16/mojo/apps/aws/rest/send.py +101 -0
  53. django_nativemojo-0.1.16/mojo/apps/aws/rest/sns.py +403 -0
  54. django_nativemojo-0.1.16/mojo/apps/aws/rest/templates.py +19 -0
  55. django_nativemojo-0.1.16/mojo/apps/aws/services/__init__.py +32 -0
  56. django_nativemojo-0.1.16/mojo/apps/aws/services/email.py +390 -0
  57. django_nativemojo-0.1.16/mojo/apps/aws/services/email_ops.py +548 -0
  58. django_nativemojo-0.1.16/mojo/apps/docit/__init__.py +6 -0
  59. django_nativemojo-0.1.16/mojo/apps/docit/markdown_plugins/syntax_highlight.py +25 -0
  60. django_nativemojo-0.1.16/mojo/apps/docit/markdown_plugins/toc.py +12 -0
  61. django_nativemojo-0.1.16/mojo/apps/docit/migrations/0001_initial.py +113 -0
  62. django_nativemojo-0.1.16/mojo/apps/docit/migrations/0002_alter_book_modified_by_alter_page_modified_by.py +26 -0
  63. django_nativemojo-0.1.16/mojo/apps/docit/migrations/0003_alter_book_group.py +20 -0
  64. django_nativemojo-0.1.16/mojo/apps/docit/models/__init__.py +17 -0
  65. django_nativemojo-0.1.16/mojo/apps/docit/models/asset.py +231 -0
  66. django_nativemojo-0.1.16/mojo/apps/docit/models/book.py +227 -0
  67. django_nativemojo-0.1.16/mojo/apps/docit/models/page.py +319 -0
  68. django_nativemojo-0.1.16/mojo/apps/docit/models/page_revision.py +203 -0
  69. django_nativemojo-0.1.16/mojo/apps/docit/rest/__init__.py +10 -0
  70. django_nativemojo-0.1.16/mojo/apps/docit/rest/asset.py +17 -0
  71. django_nativemojo-0.1.16/mojo/apps/docit/rest/book.py +22 -0
  72. django_nativemojo-0.1.16/mojo/apps/docit/rest/page.py +22 -0
  73. django_nativemojo-0.1.16/mojo/apps/docit/rest/page_revision.py +17 -0
  74. django_nativemojo-0.1.16/mojo/apps/docit/services/__init__.py +11 -0
  75. django_nativemojo-0.1.16/mojo/apps/docit/services/docit.py +315 -0
  76. django_nativemojo-0.1.16/mojo/apps/docit/services/markdown.py +44 -0
  77. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/README.md +8 -8
  78. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/backends/base.py +76 -70
  79. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/backends/filesystem.py +86 -86
  80. django_nativemojo-0.1.16/mojo/apps/fileman/backends/s3.py +699 -0
  81. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0001_initial.py +106 -0
  82. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0002_filemanager_parent_alter_filemanager_max_file_size.py +24 -0
  83. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0003_remove_file_fileman_fil_upload__c4bc35_idx_and_more.py +25 -0
  84. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0004_remove_file_original_filename_and_more.py +39 -0
  85. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0005_alter_file_upload_token.py +18 -0
  86. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0006_file_download_url_filemanager_forever_urls.py +23 -0
  87. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0007_remove_filemanager_forever_urls_and_more.py +22 -0
  88. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0008_file_category.py +18 -0
  89. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0009_rename_file_path_file_storage_file_path.py +18 -0
  90. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0010_filerendition.py +33 -0
  91. django_nativemojo-0.1.16/mojo/apps/fileman/migrations/0011_alter_filerendition_original_file.py +19 -0
  92. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/models/__init__.py +1 -5
  93. django_nativemojo-0.1.16/mojo/apps/fileman/models/file.py +474 -0
  94. django_nativemojo-0.1.16/mojo/apps/fileman/models/manager.py +623 -0
  95. django_nativemojo-0.1.16/mojo/apps/fileman/models/rendition.py +118 -0
  96. django_nativemojo-0.1.16/mojo/apps/fileman/renderer/__init__.py +111 -0
  97. django_nativemojo-0.1.16/mojo/apps/fileman/renderer/audio.py +403 -0
  98. django_nativemojo-0.1.16/mojo/apps/fileman/renderer/base.py +205 -0
  99. django_nativemojo-0.1.16/mojo/apps/fileman/renderer/document.py +404 -0
  100. django_nativemojo-0.1.16/mojo/apps/fileman/renderer/image.py +222 -0
  101. django_nativemojo-0.1.16/mojo/apps/fileman/renderer/utils.py +297 -0
  102. django_nativemojo-0.1.16/mojo/apps/fileman/renderer/video.py +304 -0
  103. django_nativemojo-0.1.16/mojo/apps/fileman/rest/__init__.py +6 -0
  104. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/rest/upload.py +22 -32
  105. django_nativemojo-0.1.16/mojo/apps/fileman/signals.py +58 -0
  106. django_nativemojo-0.1.16/mojo/apps/fileman/tasks.py +254 -0
  107. django_nativemojo-0.1.16/mojo/apps/fileman/utils/__init__.py +43 -0
  108. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0005_incidenthistory.py +39 -0
  109. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0006_alter_incident_state.py +18 -0
  110. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0007_event_uid.py +18 -0
  111. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0008_ticket_ticketnote.py +55 -0
  112. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0009_incident_status.py +18 -0
  113. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0010_event_country_code.py +18 -0
  114. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0011_incident_country_code.py +18 -0
  115. django_nativemojo-0.1.16/mojo/apps/incident/migrations/0012_alter_incident_status.py +18 -0
  116. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/models/__init__.py +2 -0
  117. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/models/event.py +35 -0
  118. django_nativemojo-0.1.16/mojo/apps/incident/models/history.py +36 -0
  119. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/models/incident.py +3 -1
  120. django_nativemojo-0.1.16/mojo/apps/incident/models/ticket.py +62 -0
  121. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/reporter.py +21 -1
  122. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/rest/__init__.py +1 -0
  123. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/rest/event.py +7 -1
  124. django_nativemojo-0.1.16/mojo/apps/incident/rest/ticket.py +43 -0
  125. django_nativemojo-0.1.16/mojo/apps/jobs/__init__.py +489 -0
  126. django_nativemojo-0.1.16/mojo/apps/jobs/adapters.py +24 -0
  127. django_nativemojo-0.1.16/mojo/apps/jobs/cli.py +616 -0
  128. django_nativemojo-0.1.16/mojo/apps/jobs/daemon.py +370 -0
  129. django_nativemojo-0.1.16/mojo/apps/jobs/examples/sample_jobs.py +376 -0
  130. django_nativemojo-0.1.16/mojo/apps/jobs/examples/webhook_examples.py +203 -0
  131. django_nativemojo-0.1.16/mojo/apps/jobs/handlers/__init__.py +5 -0
  132. django_nativemojo-0.1.16/mojo/apps/jobs/handlers/webhook.py +317 -0
  133. django_nativemojo-0.1.16/mojo/apps/jobs/job_engine.py +734 -0
  134. django_nativemojo-0.1.16/mojo/apps/jobs/keys.py +203 -0
  135. django_nativemojo-0.1.16/mojo/apps/jobs/local_queue.py +363 -0
  136. django_nativemojo-0.1.16/mojo/apps/jobs/management/__init__.py +3 -0
  137. django_nativemojo-0.1.16/mojo/apps/jobs/management/commands/__init__.py +3 -0
  138. django_nativemojo-0.1.16/mojo/apps/jobs/manager.py +1327 -0
  139. django_nativemojo-0.1.16/mojo/apps/jobs/migrations/0001_initial.py +97 -0
  140. django_nativemojo-0.1.16/mojo/apps/jobs/migrations/0002_alter_job_max_retries_joblog.py +39 -0
  141. django_nativemojo-0.1.16/mojo/apps/jobs/models/__init__.py +6 -0
  142. django_nativemojo-0.1.16/mojo/apps/jobs/models/job.py +441 -0
  143. django_nativemojo-0.1.16/mojo/apps/jobs/rest/__init__.py +2 -0
  144. django_nativemojo-0.1.16/mojo/apps/jobs/rest/control.py +466 -0
  145. django_nativemojo-0.1.16/mojo/apps/jobs/rest/jobs.py +421 -0
  146. django_nativemojo-0.1.16/mojo/apps/jobs/scheduler.py +571 -0
  147. django_nativemojo-0.1.16/mojo/apps/jobs/services/__init__.py +6 -0
  148. django_nativemojo-0.1.16/mojo/apps/jobs/services/job_actions.py +465 -0
  149. django_nativemojo-0.1.16/mojo/apps/jobs/settings.py +209 -0
  150. django_nativemojo-0.1.16/mojo/apps/logit/migrations/0004_alter_log_level.py +18 -0
  151. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/logit/models/log.py +7 -1
  152. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/metrics/__init__.py +8 -1
  153. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/metrics/redis_metrics.py +198 -0
  154. django_nativemojo-0.1.16/mojo/apps/metrics/rest/__init__.py +4 -0
  155. django_nativemojo-0.1.16/mojo/apps/metrics/rest/categories.py +266 -0
  156. django_nativemojo-0.1.16/mojo/apps/metrics/rest/helpers.py +48 -0
  157. django_nativemojo-0.1.16/mojo/apps/metrics/rest/permissions.py +99 -0
  158. django_nativemojo-0.1.16/mojo/apps/metrics/rest/values.py +277 -0
  159. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/metrics/utils.py +19 -2
  160. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/decorators/auth.py +6 -1
  161. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/decorators/http.py +47 -3
  162. django_nativemojo-0.1.16/mojo/helpers/aws/__init__.py +45 -0
  163. django_nativemojo-0.1.16/mojo/helpers/aws/ec2.py +804 -0
  164. django_nativemojo-0.1.16/mojo/helpers/aws/iam.py +748 -0
  165. django_nativemojo-0.1.16/mojo/helpers/aws/inbound_email.py +309 -0
  166. django_nativemojo-0.1.16/mojo/helpers/aws/kms.py +413 -0
  167. django_nativemojo-0.1.16/mojo/helpers/aws/s3.py +708 -0
  168. django_nativemojo-0.1.16/mojo/helpers/aws/ses.py +483 -0
  169. django_nativemojo-0.1.16/mojo/helpers/aws/ses_domain.py +959 -0
  170. django_nativemojo-0.1.16/mojo/helpers/aws/sns.py +461 -0
  171. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/__init__.py +1 -1
  172. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/utils.py +15 -0
  173. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/dates.py +18 -0
  174. django_nativemojo-0.1.16/mojo/helpers/location/__init__.py +2 -0
  175. django_nativemojo-0.1.16/mojo/helpers/location/countries.py +262 -0
  176. django_nativemojo-0.1.16/mojo/helpers/location/geolocation.py +196 -0
  177. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/logit.py +37 -0
  178. django_nativemojo-0.1.16/mojo/helpers/redis/__init__.py +2 -0
  179. django_nativemojo-0.1.16/mojo/helpers/redis/adapter.py +606 -0
  180. django_nativemojo-0.1.16/mojo/helpers/redis/client.py +48 -0
  181. django_nativemojo-0.1.16/mojo/helpers/redis/pool.py +225 -0
  182. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/request.py +8 -0
  183. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/response.py +14 -2
  184. django_nativemojo-0.1.16/mojo/helpers/settings/__init__.py +2 -0
  185. django_nativemojo-0.1.10/mojo/helpers/settings.py → django_nativemojo-0.1.16/mojo/helpers/settings/helper.py +1 -37
  186. django_nativemojo-0.1.16/mojo/helpers/settings/parser.py +132 -0
  187. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/middleware/auth.py +1 -1
  188. django_nativemojo-0.1.16/mojo/middleware/cors.py +40 -0
  189. django_nativemojo-0.1.16/mojo/middleware/logging.py +174 -0
  190. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/middleware/mojo.py +10 -0
  191. django_nativemojo-0.1.16/mojo/models/rest.py +967 -0
  192. django_nativemojo-0.1.16/mojo/models/secrets.py +154 -0
  193. django_nativemojo-0.1.16/mojo/serializers/__init__.py +106 -0
  194. django_nativemojo-0.1.16/mojo/serializers/core/__init__.py +90 -0
  195. django_nativemojo-0.1.16/mojo/serializers/core/cache/__init__.py +121 -0
  196. django_nativemojo-0.1.16/mojo/serializers/core/cache/backends.py +518 -0
  197. django_nativemojo-0.1.16/mojo/serializers/core/cache/base.py +102 -0
  198. django_nativemojo-0.1.16/mojo/serializers/core/cache/disabled.py +181 -0
  199. django_nativemojo-0.1.16/mojo/serializers/core/cache/memory.py +287 -0
  200. django_nativemojo-0.1.16/mojo/serializers/core/cache/redis.py +533 -0
  201. django_nativemojo-0.1.16/mojo/serializers/core/cache/utils.py +454 -0
  202. django_nativemojo-0.1.16/mojo/serializers/core/manager.py +550 -0
  203. django_nativemojo-0.1.16/mojo/serializers/core/serializer.py +475 -0
  204. django_nativemojo-0.1.16/mojo/serializers/examples/settings.py +322 -0
  205. django_nativemojo-0.1.16/mojo/serializers/formats/csv.py +393 -0
  206. django_nativemojo-0.1.16/mojo/serializers/formats/localizers.py +509 -0
  207. django_nativemojo-0.1.10/mojo/serializers/models.py → django_nativemojo-0.1.16/mojo/serializers/simple.py +38 -15
  208. django_nativemojo-0.1.16/mojo/serializers/suggested_improvements.md +388 -0
  209. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/pyproject.toml +3 -1
  210. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/testit/client.py +1 -1
  211. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/testit/helpers.py +35 -4
  212. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/testit/runner.py +23 -6
  213. django_nativemojo-0.1.10/PKG-INFO +0 -96
  214. django_nativemojo-0.1.10/README.md +0 -66
  215. django_nativemojo-0.1.10/mojo/apps/account/models/__init__.py +0 -3
  216. django_nativemojo-0.1.10/mojo/apps/account/models/group.py +0 -98
  217. django_nativemojo-0.1.10/mojo/apps/account/models/user.py +0 -211
  218. django_nativemojo-0.1.10/mojo/apps/account/rest/user.py +0 -47
  219. django_nativemojo-0.1.10/mojo/apps/fileman/backends/s3.py +0 -398
  220. django_nativemojo-0.1.10/mojo/apps/fileman/models/file.py +0 -292
  221. django_nativemojo-0.1.10/mojo/apps/fileman/models/manager.py +0 -227
  222. django_nativemojo-0.1.10/mojo/apps/fileman/models/render.py +0 -0
  223. django_nativemojo-0.1.10/mojo/apps/fileman/rest/__init__ +0 -0
  224. django_nativemojo-0.1.10/mojo/apps/fileman/rest/__init__.py +0 -23
  225. django_nativemojo-0.1.10/mojo/apps/fileman/utils/__init__.py +0 -19
  226. django_nativemojo-0.1.10/mojo/apps/metrics/rest/__init__.py +0 -1
  227. django_nativemojo-0.1.10/mojo/apps/metrics/rest/db.py +0 -0
  228. django_nativemojo-0.1.10/mojo/apps/notify/README.md +0 -91
  229. django_nativemojo-0.1.10/mojo/apps/notify/README_NOTIFICATIONS.md +0 -566
  230. django_nativemojo-0.1.10/mojo/apps/notify/admin.py +0 -52
  231. django_nativemojo-0.1.10/mojo/apps/notify/handlers/example_handlers.py +0 -516
  232. django_nativemojo-0.1.10/mojo/apps/notify/handlers/ses/__init__.py +0 -25
  233. django_nativemojo-0.1.10/mojo/apps/notify/handlers/ses/bounce.py +0 -0
  234. django_nativemojo-0.1.10/mojo/apps/notify/handlers/ses/complaint.py +0 -25
  235. django_nativemojo-0.1.10/mojo/apps/notify/handlers/ses/message.py +0 -86
  236. django_nativemojo-0.1.10/mojo/apps/notify/management/commands/__init__.py +0 -1
  237. django_nativemojo-0.1.10/mojo/apps/notify/management/commands/process_notifications.py +0 -370
  238. django_nativemojo-0.1.10/mojo/apps/notify/mod +0 -0
  239. django_nativemojo-0.1.10/mojo/apps/notify/models/__init__.py +0 -12
  240. django_nativemojo-0.1.10/mojo/apps/notify/models/account.py +0 -128
  241. django_nativemojo-0.1.10/mojo/apps/notify/models/attachment.py +0 -24
  242. django_nativemojo-0.1.10/mojo/apps/notify/models/bounce.py +0 -68
  243. django_nativemojo-0.1.10/mojo/apps/notify/models/complaint.py +0 -40
  244. django_nativemojo-0.1.10/mojo/apps/notify/models/inbox.py +0 -113
  245. django_nativemojo-0.1.10/mojo/apps/notify/models/inbox_message.py +0 -173
  246. django_nativemojo-0.1.10/mojo/apps/notify/models/outbox.py +0 -129
  247. django_nativemojo-0.1.10/mojo/apps/notify/models/outbox_message.py +0 -288
  248. django_nativemojo-0.1.10/mojo/apps/notify/models/template.py +0 -30
  249. django_nativemojo-0.1.10/mojo/apps/notify/providers/aws.py +0 -73
  250. django_nativemojo-0.1.10/mojo/apps/notify/rest/ses.py +0 -0
  251. django_nativemojo-0.1.10/mojo/apps/notify/utils/__init__.py +0 -2
  252. django_nativemojo-0.1.10/mojo/apps/notify/utils/notifications.py +0 -404
  253. django_nativemojo-0.1.10/mojo/apps/notify/utils/parsing.py +0 -202
  254. django_nativemojo-0.1.10/mojo/apps/notify/utils/render.py +0 -144
  255. django_nativemojo-0.1.10/mojo/apps/tasks/README.md +0 -118
  256. django_nativemojo-0.1.10/mojo/apps/tasks/__init__.py +0 -11
  257. django_nativemojo-0.1.10/mojo/apps/tasks/manager.py +0 -489
  258. django_nativemojo-0.1.10/mojo/apps/tasks/rest/__init__.py +0 -2
  259. django_nativemojo-0.1.10/mojo/apps/tasks/rest/hooks.py +0 -0
  260. django_nativemojo-0.1.10/mojo/apps/tasks/rest/tasks.py +0 -62
  261. django_nativemojo-0.1.10/mojo/apps/tasks/runner.py +0 -174
  262. django_nativemojo-0.1.10/mojo/apps/tasks/tq_handlers.py +0 -14
  263. django_nativemojo-0.1.10/mojo/helpers/aws/s3.py +0 -268
  264. django_nativemojo-0.1.10/mojo/helpers/aws/setup_email.py +0 -0
  265. django_nativemojo-0.1.10/mojo/helpers/redis.py +0 -10
  266. django_nativemojo-0.1.10/mojo/middleware/logging.py +0 -55
  267. django_nativemojo-0.1.10/mojo/models/meta.py +0 -262
  268. django_nativemojo-0.1.10/mojo/models/rest.py +0 -538
  269. django_nativemojo-0.1.10/mojo/models/secrets.py +0 -59
  270. django_nativemojo-0.1.10/mojo/ws4redis/README.md +0 -174
  271. django_nativemojo-0.1.10/mojo/ws4redis/__init__.py +0 -2
  272. django_nativemojo-0.1.10/mojo/ws4redis/client.py +0 -283
  273. django_nativemojo-0.1.10/mojo/ws4redis/connection.py +0 -327
  274. django_nativemojo-0.1.10/mojo/ws4redis/exceptions.py +0 -32
  275. django_nativemojo-0.1.10/mojo/ws4redis/redis.py +0 -183
  276. django_nativemojo-0.1.10/mojo/ws4redis/servers/base.py +0 -86
  277. django_nativemojo-0.1.10/mojo/ws4redis/servers/django.py +0 -171
  278. django_nativemojo-0.1.10/mojo/ws4redis/servers/uwsgi.py +0 -63
  279. django_nativemojo-0.1.10/mojo/ws4redis/settings.py +0 -45
  280. django_nativemojo-0.1.10/mojo/ws4redis/utf8validator.py +0 -128
  281. django_nativemojo-0.1.10/mojo/ws4redis/websocket.py +0 -403
  282. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/LICENSE +0 -0
  283. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/NOTICE +0 -0
  284. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/__init__.py +0 -0
  285. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/admin.py +0 -0
  286. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/apps.py +0 -0
  287. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/migrations/0001_initial.py +0 -0
  288. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/migrations/0002_user_is_email_verified_user_is_phone_verified.py +0 -0
  289. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/migrations/0003_group_mojo_secrets_user_mojo_secrets.py +0 -0
  290. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/migrations/__init__.py +0 -0
  291. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/models/pkey.py +0 -0
  292. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/utils/__init__.py +0 -0
  293. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/utils/jwtoken.py +0 -0
  294. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/account/utils/passkeys.py +0 -0
  295. {django_nativemojo-0.1.10/mojo/apps/fileman → django_nativemojo-0.1.16/mojo/apps/aws}/__init__.py +0 -0
  296. {django_nativemojo-0.1.10/mojo/apps/incident → django_nativemojo-0.1.16/mojo/apps/aws}/migrations/__init__.py +0 -0
  297. {django_nativemojo-0.1.10/mojo/apps/incident/parsers → django_nativemojo-0.1.16/mojo/apps/docit/markdown_plugins}/__init__.py +0 -0
  298. {django_nativemojo-0.1.10/mojo/apps/logit → django_nativemojo-0.1.16/mojo/apps/docit/migrations}/__init__.py +0 -0
  299. {django_nativemojo-0.1.10/mojo/apps/logit/migrations → django_nativemojo-0.1.16/mojo/apps/fileman}/__init__.py +0 -0
  300. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/apps.py +0 -0
  301. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/backends/__init__.py +0 -0
  302. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/examples/configurations.py +0 -0
  303. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/examples/usage_example.py +0 -0
  304. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/management/__init__.py +0 -0
  305. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/management/commands/__init__.py +0 -0
  306. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/management/commands/cleanup_expired_uploads.py +0 -0
  307. {django_nativemojo-0.1.10/mojo/apps/notify → django_nativemojo-0.1.16/mojo/apps/fileman/migrations}/__init__.py +0 -0
  308. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/rest/fileman.py +0 -0
  309. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/fileman/utils/upload.py +0 -0
  310. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/__init__.py +0 -0
  311. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/handlers/__init__.py +0 -0
  312. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/handlers/event_handlers.py +0 -0
  313. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/migrations/0001_initial.py +0 -0
  314. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/migrations/0002_rename_bundle_ruleset_bundle_minutes_event_hostname_and_more.py +0 -0
  315. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/migrations/0003_alter_event_model_id.py +0 -0
  316. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/migrations/0004_alter_incident_model_id.py +0 -0
  317. {django_nativemojo-0.1.10/mojo/apps/notify/handlers → django_nativemojo-0.1.16/mojo/apps/incident/migrations}/__init__.py +0 -0
  318. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/models/rule.py +0 -0
  319. {django_nativemojo-0.1.10/mojo/apps/notify/management → django_nativemojo-0.1.16/mojo/apps/incident/parsers}/__init__.py +0 -0
  320. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/parsers/ossec/__init__.py +0 -0
  321. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/parsers/ossec/core.py +0 -0
  322. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/parsers/ossec/parsed.py +0 -0
  323. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/parsers/ossec/rules.py +0 -0
  324. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/parsers/ossec/utils.py +0 -0
  325. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/incident/rest/ossec.py +0 -0
  326. {django_nativemojo-0.1.10/mojo/apps/notify/providers → django_nativemojo-0.1.16/mojo/apps/jobs/examples}/__init__.py +0 -0
  327. {django_nativemojo-0.1.10/mojo/apps/notify/rest → django_nativemojo-0.1.16/mojo/apps/jobs/migrations}/__init__.py +0 -0
  328. {django_nativemojo-0.1.10/mojo/helpers → django_nativemojo-0.1.16/mojo/apps/logit}/__init__.py +0 -0
  329. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/logit/admin.py +0 -0
  330. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/logit/migrations/0001_initial.py +0 -0
  331. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/logit/migrations/0002_log_duid_log_payload_log_username.py +0 -0
  332. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/logit/migrations/0003_log_level.py +0 -0
  333. {django_nativemojo-0.1.10/mojo/helpers/aws → django_nativemojo-0.1.16/mojo/apps/logit/migrations}/__init__.py +0 -0
  334. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/logit/models/__init__.py +0 -0
  335. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/logit/rest.py +0 -0
  336. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/metrics/README.md +0 -0
  337. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/apps/metrics/rest/base.py +0 -0
  338. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/decorators/__init__.py +0 -0
  339. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/decorators/cron.py +0 -0
  340. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/decorators/validate.py +0 -0
  341. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/errors.py +0 -0
  342. {django_nativemojo-0.1.10/mojo/helpers/dns → django_nativemojo-0.1.16/mojo/helpers}/__init__.py +0 -0
  343. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/aws/client.py +0 -0
  344. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/cron.py +0 -0
  345. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/aes.py +0 -0
  346. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/hash.py +0 -0
  347. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/privpub/__init__.py +0 -0
  348. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/privpub/hybrid.py +0 -0
  349. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/privpub/rsa.py +0 -0
  350. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/sign.py +0 -0
  351. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/crypto/too.l.py +0 -0
  352. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/daemon.py +0 -0
  353. {django_nativemojo-0.1.10/mojo/middleware → django_nativemojo-0.1.16/mojo/helpers/dns}/__init__.py +0 -0
  354. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/dns/godaddy.py +0 -0
  355. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/filetypes.py +0 -0
  356. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/modules.py +0 -0
  357. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/paths.py +0 -0
  358. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/request_parser.py +0 -0
  359. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/sysinfo.py +0 -0
  360. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/helpers/ua.py +0 -0
  361. {django_nativemojo-0.1.10/mojo/migrations → django_nativemojo-0.1.16/mojo/middleware}/__init__.py +0 -0
  362. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/migrations/0001_initial.py +0 -0
  363. {django_nativemojo-0.1.10/mojo/serializers → django_nativemojo-0.1.16/mojo/migrations}/__init__.py +0 -0
  364. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/models/__init__.py +0 -0
  365. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/rest/__init__.py +0 -0
  366. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/rest/info.py +0 -0
  367. {django_nativemojo-0.1.10/mojo/serializers → django_nativemojo-0.1.16/mojo/rest}/openapi.py +0 -0
  368. {django_nativemojo-0.1.10/mojo/ws4redis/servers → django_nativemojo-0.1.16/mojo/serializers/formats}/__init__.py +0 -0
  369. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/mojo/urls.py +0 -0
  370. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/testit/__init__.py +0 -0
  371. {django_nativemojo-0.1.10 → django_nativemojo-0.1.16}/testit/faker.py +0 -0
@@ -0,0 +1,138 @@
1
+ Metadata-Version: 2.3
2
+ Name: django-nativemojo
3
+ Version: 0.1.16
4
+ Summary: A REST framework for DJANGO with some extra apps that make it easy to provide a secure robust graph like RESIT API.
5
+ License: MIT
6
+ Author: MOJO Dev Team
7
+ Author-email: gotmojo@nativemojo.com
8
+ Requires-Python: >=3.9,<4.0
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Requires-Dist: django (>=4.2.18,<6.0.0)
17
+ Requires-Dist: django-cors-headers (>=4.7.0,<5.0.0)
18
+ Requires-Dist: faker (>=35.2.0,<36.0.0)
19
+ Requires-Dist: gevent (>=25.5.1,<26.0.0)
20
+ Requires-Dist: mistune (>=3.0.2,<4.0.0)
21
+ Requires-Dist: pycryptodome (>=3.21.0,<4.0.0)
22
+ Requires-Dist: pygments (>=2.18.0,<3.0.0)
23
+ Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
24
+ Requires-Dist: pyobjict (>=2.0.2,<4.0.0)
25
+ Requires-Dist: pytz (>=2025.1,<2026.0)
26
+ Requires-Dist: redis (>=3.5.3,<6.0.0)
27
+ Requires-Dist: requests (>=2.32.3,<3.0.0)
28
+ Requires-Dist: ua-parser (>=1.0.1,<2.0.0)
29
+ Requires-Dist: ujson (>=5.10.0,<6.0.0)
30
+ Description-Content-Type: text/markdown
31
+
32
+ # Django-MOJO
33
+
34
+ **The Lightweight, Secure, and Extensible REST and Auth Framework for Django**
35
+
36
+ ---
37
+
38
+ Django-MOJO helps you rapidly build secure APIs and manage authentication in Django projects—without the usual boilerplate or complexity. It brings clarity and maintainability to your codebase, all while providing robust object-level security and powerful helper utilities for real-world development.
39
+
40
+ ---
41
+
42
+ ## Why Django-MOJO?
43
+
44
+ - **Minimal Setup, Maximum Power:** Expose Django models as RESTful APIs with a few lines of code. Add new features without touching central registries.
45
+ - **Object-Level Permissions:** Move beyond Django’s traditional model-level permissions for fine-grained access control.
46
+ - **Secure by Default:** Every endpoint and operation is permission-aware, designed to keep your data and users safe.
47
+ - **Simple Patterns & Helpers:** Use concise decorators, built-in utilities (cron, crypto, logging, tasks), and keep codebases easy for teams to extend.
48
+ - **Effortless Testing:** Built-in lightweight test framework for REST APIs—no external dependencies needed.
49
+
50
+ ---
51
+
52
+ ## Core Workflow
53
+
54
+ 1. **Create Django Models:**
55
+ Inherit from `MojoModel` and define a `RestMeta` inner class to configure permissions, default filters, and output graphs.
56
+
57
+ 2. **Register REST Endpoints:**
58
+ Use decorators (`@md.URL`, `@md.GET`, etc.) to expose catch-all or method-specific API endpoints in your app’s rest/ directory.
59
+
60
+ 3. **Embrace Helpers:**
61
+ Leverage and extend the extensive helpers in `mojo/helpers/` for logging, cron, request parsing, redis, and more.
62
+
63
+ 4. **Test with Confidence:**
64
+ Write and run tests using MOJO’s integrated “testit” system—both for APIs and backend logic.
65
+
66
+ ---
67
+
68
+ ## Quick Example
69
+
70
+ **models/group.py**
71
+ ```python
72
+ from django.db import models
73
+ from mojo.models import MojoModel
74
+
75
+ class Group(MojoModel):
76
+ name = models.CharField(max_length=200)
77
+ class RestMeta:
78
+ VIEW_PERMS = ["view_groups"]
79
+ SAVE_PERMS = ["manage_groups"]
80
+ LIST_DEFAULT_FILTERS = {"is_active": True}
81
+ GRAPHS = {
82
+ "default": {"fields": ["id", "name", "created"]},
83
+ }
84
+ ```
85
+
86
+ **rest/group.py**
87
+ ```python
88
+ from mojo import decorators as md
89
+ from .models.group import Group
90
+
91
+ @md.URL('group')
92
+ @md.URL('group/<int:pk>')
93
+ def on_group(request, pk=None):
94
+ return Group.on_rest_request(request, pk)
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Project Structure
100
+
101
+ - **mojo/account/** – Authentication models, JWT middleware, and permissions
102
+ - **mojo/base/** – Core model/REST abstractions
103
+ - **mojo/helpers/** – Logging, crypto, cron, and other utilities
104
+ - **mojo/tasks/** – Redis-backed task scheduling and runner
105
+ - **mojo/testit/** – Lightweight test suite and REST client
106
+ - **docs/** – Area-focused detailed documentation
107
+
108
+ ---
109
+
110
+ ## Documentation
111
+
112
+ Want details or examples? Dive into the docs:
113
+
114
+ - [Getting Started & Installing](docs/llm_context.md)
115
+ - [REST API & Graph Serialization](docs/rest.md)
116
+ - [Authentication & JWT](docs/auth.md)
117
+ - [Helpers & Utilities](docs/helpers.md)
118
+ - [Tasks & Cron Schedules](docs/tasks.md)
119
+ - [Testing Framework](docs/testit.md)
120
+ - [Developing & Contributing](docs/developer_guide.md)
121
+ - [Decorators Reference](docs/decorators.md)
122
+ - [Metrics](docs/metrics.md)
123
+ - [Cron Scheduler](docs/cron.md)
124
+
125
+ ---
126
+
127
+ ## Contributing
128
+
129
+ We welcome pull requests and issues! Contributions should follow our [Developer Guide](docs/developer_guide.md) and maintain the framework’s philosophy: **keep it simple, explicit, and secure**.
130
+
131
+ ---
132
+
133
+ ## License
134
+
135
+ Licensed under the Apache License v2.0.
136
+ See the [LICENSE](LICENSE) file for details.
137
+
138
+ ---
@@ -0,0 +1,107 @@
1
+ # Django-MOJO
2
+
3
+ **The Lightweight, Secure, and Extensible REST and Auth Framework for Django**
4
+
5
+ ---
6
+
7
+ Django-MOJO helps you rapidly build secure APIs and manage authentication in Django projects—without the usual boilerplate or complexity. It brings clarity and maintainability to your codebase, all while providing robust object-level security and powerful helper utilities for real-world development.
8
+
9
+ ---
10
+
11
+ ## Why Django-MOJO?
12
+
13
+ - **Minimal Setup, Maximum Power:** Expose Django models as RESTful APIs with a few lines of code. Add new features without touching central registries.
14
+ - **Object-Level Permissions:** Move beyond Django’s traditional model-level permissions for fine-grained access control.
15
+ - **Secure by Default:** Every endpoint and operation is permission-aware, designed to keep your data and users safe.
16
+ - **Simple Patterns & Helpers:** Use concise decorators, built-in utilities (cron, crypto, logging, tasks), and keep codebases easy for teams to extend.
17
+ - **Effortless Testing:** Built-in lightweight test framework for REST APIs—no external dependencies needed.
18
+
19
+ ---
20
+
21
+ ## Core Workflow
22
+
23
+ 1. **Create Django Models:**
24
+ Inherit from `MojoModel` and define a `RestMeta` inner class to configure permissions, default filters, and output graphs.
25
+
26
+ 2. **Register REST Endpoints:**
27
+ Use decorators (`@md.URL`, `@md.GET`, etc.) to expose catch-all or method-specific API endpoints in your app’s rest/ directory.
28
+
29
+ 3. **Embrace Helpers:**
30
+ Leverage and extend the extensive helpers in `mojo/helpers/` for logging, cron, request parsing, redis, and more.
31
+
32
+ 4. **Test with Confidence:**
33
+ Write and run tests using MOJO’s integrated “testit” system—both for APIs and backend logic.
34
+
35
+ ---
36
+
37
+ ## Quick Example
38
+
39
+ **models/group.py**
40
+ ```python
41
+ from django.db import models
42
+ from mojo.models import MojoModel
43
+
44
+ class Group(MojoModel):
45
+ name = models.CharField(max_length=200)
46
+ class RestMeta:
47
+ VIEW_PERMS = ["view_groups"]
48
+ SAVE_PERMS = ["manage_groups"]
49
+ LIST_DEFAULT_FILTERS = {"is_active": True}
50
+ GRAPHS = {
51
+ "default": {"fields": ["id", "name", "created"]},
52
+ }
53
+ ```
54
+
55
+ **rest/group.py**
56
+ ```python
57
+ from mojo import decorators as md
58
+ from .models.group import Group
59
+
60
+ @md.URL('group')
61
+ @md.URL('group/<int:pk>')
62
+ def on_group(request, pk=None):
63
+ return Group.on_rest_request(request, pk)
64
+ ```
65
+
66
+ ---
67
+
68
+ ## Project Structure
69
+
70
+ - **mojo/account/** – Authentication models, JWT middleware, and permissions
71
+ - **mojo/base/** – Core model/REST abstractions
72
+ - **mojo/helpers/** – Logging, crypto, cron, and other utilities
73
+ - **mojo/tasks/** – Redis-backed task scheduling and runner
74
+ - **mojo/testit/** – Lightweight test suite and REST client
75
+ - **docs/** – Area-focused detailed documentation
76
+
77
+ ---
78
+
79
+ ## Documentation
80
+
81
+ Want details or examples? Dive into the docs:
82
+
83
+ - [Getting Started & Installing](docs/llm_context.md)
84
+ - [REST API & Graph Serialization](docs/rest.md)
85
+ - [Authentication & JWT](docs/auth.md)
86
+ - [Helpers & Utilities](docs/helpers.md)
87
+ - [Tasks & Cron Schedules](docs/tasks.md)
88
+ - [Testing Framework](docs/testit.md)
89
+ - [Developing & Contributing](docs/developer_guide.md)
90
+ - [Decorators Reference](docs/decorators.md)
91
+ - [Metrics](docs/metrics.md)
92
+ - [Cron Scheduler](docs/cron.md)
93
+
94
+ ---
95
+
96
+ ## Contributing
97
+
98
+ We welcome pull requests and issues! Contributions should follow our [Developer Guide](docs/developer_guide.md) and maintain the framework’s philosophy: **keep it simple, explicit, and secure**.
99
+
100
+ ---
101
+
102
+ ## License
103
+
104
+ Licensed under the Apache License v2.0.
105
+ See the [LICENSE](LICENSE) file for details.
106
+
107
+ ---
@@ -1,3 +1,3 @@
1
- __version__ = "0.1.10"
1
+ __version__ = "0.1.16"
2
2
 
3
3
  from mojo.helpers.response import JsonResponse
@@ -0,0 +1,5 @@
1
+ """
2
+ Django-MOJO Management Commands
3
+
4
+ This package contains Django management commands for MOJO framework operations.
5
+ """
@@ -0,0 +1,6 @@
1
+ """
2
+ Django-MOJO Management Commands
3
+
4
+ This package contains Django management commands for MOJO framework operations
5
+ including serializer management, performance monitoring, and system utilities.
6
+ """