django-email-learning 2.2.0__tar.gz → 2.2.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 (319) hide show
  1. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/PKG-INFO +1 -1
  2. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/send_newsletters_job.py +1 -0
  3. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/base.html +29 -0
  4. django_email_learning-2.2.1/django_email_learning/templates/emails/newsletter_sendout.html +95 -0
  5. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/pyproject.toml +1 -1
  6. django_email_learning-2.2.0/django_email_learning/templates/emails/newsletter_sendout.html +0 -13
  7. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/LICENSE +0 -0
  8. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/README.md +0 -0
  9. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/__init__.py +0 -0
  10. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/admin.py +0 -0
  11. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/__init__.py +0 -0
  12. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/ai_service_protocol.py +0 -0
  13. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/apps.py +0 -0
  14. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/language_models.py +0 -0
  15. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/open_ai_adapter.py +0 -0
  16. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/serializers.py +0 -0
  17. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/urls.py +0 -0
  18. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ai/views.py +0 -0
  19. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/analytics/__init__.py +0 -0
  20. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/analytics/downloads.py +0 -0
  21. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/analytics/serializers.py +0 -0
  22. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/analytics/urls.py +0 -0
  23. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/analytics/views.py +0 -0
  24. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/apps.py +0 -0
  25. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/decorators.py +0 -0
  26. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/__init__.py +0 -0
  27. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/api/__init__.py +0 -0
  28. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/api/urls.py +0 -0
  29. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/api/views.py +0 -0
  30. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/check_imap_job.py +0 -0
  31. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/deactivate_inactive_enrollments_job.py +0 -0
  32. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/deliver_contents_job.py +0 -0
  33. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/executor_utils.py +0 -0
  34. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/job_metrics.py +0 -0
  35. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/queue_utils.py +0 -0
  36. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/registry.py +0 -0
  37. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/jobs/send_reminders_job.py +0 -0
  38. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/__init__.py +0 -0
  39. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/__init__.py +0 -0
  40. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/check_imap_connections.py +0 -0
  41. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/cleanup_job_executions.py +0 -0
  42. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/deactivate_inactive_enrollments.py +0 -0
  43. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/deliver_contents.py +0 -0
  44. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/rotate_encryption_key.py +0 -0
  45. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/send_newsletters.py +0 -0
  46. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/management/commands/send_reminders.py +0 -0
  47. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0001_initial.py +0 -0
  48. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0002_newsletter_feature.py +0 -0
  49. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0003_learner_photo_private_storage.py +0 -0
  50. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0004_sendout_blocked_reason.py +0 -0
  51. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0005_jobexecution_failed_status_and_error.py +0 -0
  52. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0006_sociallink.py +0 -0
  53. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0007_backfill_social_links.py +0 -0
  54. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0008_remove_organization_legacy_social_fields.py +0 -0
  55. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/0009_add_more_social_link_platforms.py +0 -0
  56. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/migrations/__init__.py +0 -0
  57. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/__init__.py +0 -0
  58. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/api_keys.py +0 -0
  59. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/course_contents.py +0 -0
  60. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/courses.py +0 -0
  61. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/deliveries.py +0 -0
  62. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/enrollments.py +0 -0
  63. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/enums/__init__.py +0 -0
  64. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/enums/course_content_type.py +0 -0
  65. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/enums/deactivation_reason.py +0 -0
  66. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/enums/delivery_status.py +0 -0
  67. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/enums/enrollment_status.py +0 -0
  68. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/imap_connections.py +0 -0
  69. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/jobs.py +0 -0
  70. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/mixin_models.py +0 -0
  71. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/newsletters.py +0 -0
  72. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/organizations.py +0 -0
  73. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/models/submissions.py +0 -0
  74. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/__init__.py +0 -0
  75. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/apps.py +0 -0
  76. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/base_handler.py +0 -0
  77. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/group_enrollment/__init__.py +0 -0
  78. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/group_enrollment/base_group_enrollment_handler.py +0 -0
  79. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/group_enrollment/google_group_enrollment_handler.py +0 -0
  80. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/migrations/0001_initial.py +0 -0
  81. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/migrations/0002_session_access_token.py +0 -0
  82. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/migrations/__init__.py +0 -0
  83. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/mixins.py +0 -0
  84. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/models.py +0 -0
  85. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/serializers.py +0 -0
  86. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/urls.py +0 -0
  87. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/oauth_integrations/views.py +0 -0
  88. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/personalised/api/__init__.py +0 -0
  89. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/personalised/api/serializers.py +0 -0
  90. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/personalised/api/urls.py +0 -0
  91. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/personalised/api/views.py +0 -0
  92. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/personalised/serializers.py +0 -0
  93. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/personalised/urls.py +0 -0
  94. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/personalised/views.py +0 -0
  95. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/__init__.py +0 -0
  96. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/__init__.py +0 -0
  97. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/newsletter_access_mixin.py +0 -0
  98. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/pagniated_api_mixin.py +0 -0
  99. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/__init__.py +0 -0
  100. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/assignments.py +0 -0
  101. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/common.py +0 -0
  102. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/courses.py +0 -0
  103. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/learners.py +0 -0
  104. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/lessons.py +0 -0
  105. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/misc.py +0 -0
  106. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/newsletters.py +0 -0
  107. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/oauth.py +0 -0
  108. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/organisations.py +0 -0
  109. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/serializers/quizzes.py +0 -0
  110. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/urls.py +0 -0
  111. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/__init__.py +0 -0
  112. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/assignments.py +0 -0
  113. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/courses.py +0 -0
  114. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/learners.py +0 -0
  115. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/misc.py +0 -0
  116. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/newsletters.py +0 -0
  117. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/oauth.py +0 -0
  118. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/api/views/organisations.py +0 -0
  119. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/features.py +0 -0
  120. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/serializers.py +0 -0
  121. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/urls.py +0 -0
  122. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/views/__init__.py +0 -0
  123. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/views/base.py +0 -0
  124. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/views/courses.py +0 -0
  125. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/views/learners.py +0 -0
  126. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/views/misc.py +0 -0
  127. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/views/newsletters.py +0 -0
  128. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/platform/views/organisations.py +0 -0
  129. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ports/__init__.py +0 -0
  130. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ports/email_sender_protocol.py +0 -0
  131. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ports/imap_interface_protocol.py +0 -0
  132. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ports/job_executor_protocol.py +0 -0
  133. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ports/metric_recorder_protocol.py +0 -0
  134. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/ports/task_queue_protocol.py +0 -0
  135. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/__init__.py +0 -0
  136. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/api/__init__.py +0 -0
  137. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/api/serializers.py +0 -0
  138. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/api/urls.py +0 -0
  139. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/api/views.py +0 -0
  140. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/newsletter_views.py +0 -0
  141. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/serializers.py +0 -0
  142. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/urls.py +0 -0
  143. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/public/views.py +0 -0
  144. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/scripts/__init__.py +0 -0
  145. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/scripts/setup_dev.py +0 -0
  146. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/__init__.py +0 -0
  147. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_handler_service.py +0 -0
  148. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/__init__.py +0 -0
  149. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/abstract_command.py +0 -0
  150. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/command_request.py +0 -0
  151. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/enroll_command.py +0 -0
  152. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/exceptions/__init__.py +0 -0
  153. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/exceptions/blocked_email_error.py +0 -0
  154. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/exceptions/enrollment_already_exists_error.py +0 -0
  155. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/exceptions/invalid_course_slug_error.py +0 -0
  156. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/exceptions/invalid_enrollment_error.py +0 -0
  157. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/exceptions/invalid_verification_code_error.py +0 -0
  158. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/exceptions/learner_cap_exceeded_error.py +0 -0
  159. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/send_assignment_command.py +0 -0
  160. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/send_assignment_reminder_command.py +0 -0
  161. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/send_assignment_review_command.py +0 -0
  162. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/send_lesson_command.py +0 -0
  163. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/send_quiz_command.py +0 -0
  164. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/send_quiz_reminder_command.py +0 -0
  165. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/unsubscribe_command.py +0 -0
  166. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/command_models/verify_enrollment_command.py +0 -0
  167. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/__init__.py +0 -0
  168. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/database_delivery_queue.py +0 -0
  169. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/database_reminder_queue.py +0 -0
  170. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/database_sendout_queue.py +0 -0
  171. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/email_sender.py +0 -0
  172. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/imap_interface.py +0 -0
  173. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/log_based_metric_recorder.py +0 -0
  174. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/defaults/thread_pool_job_executor.py +0 -0
  175. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/email_sender_service.py +0 -0
  176. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/jwt_service.py +0 -0
  177. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/metrics_service.py +0 -0
  178. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/sanitize.py +0 -0
  179. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/storage_tools.py +0 -0
  180. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/services/utils.py +0 -0
  181. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/signals.py +0 -0
  182. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/README +0 -0
  183. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Add-DNm1SyP7.js +0 -0
  184. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Alert-C9BZ_0yq.js +0 -0
  185. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Assignment-9NgEvbck.js +0 -0
  186. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/AssignmentForm-BSU6HzBh.js +0 -0
  187. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Avatar-BgcwkYp5.js +0 -0
  188. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/BarChart-iFhHVNa-.js +0 -0
  189. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Base-Ca7y26tx.js +0 -0
  190. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Button-BeAdSA4d.js +0 -0
  191. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Cancel-DPlxL2nh.js +0 -0
  192. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/CheckCircle-BfciItNb.js +0 -0
  193. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Checkbox-BRX35f1Y.js +0 -0
  194. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Chip-CH8y6_z8.js +0 -0
  195. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/CloudUpload-Cy4xbdRS.js +0 -0
  196. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Container-D3PEmuWO.js +0 -0
  197. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/ContentCopy-D-rQgHyG.js +0 -0
  198. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/ContentEditor-CKKjA5Xn.css +0 -0
  199. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/ContentEditor-aar9LvuR.js +0 -0
  200. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/CourseForm-DElF8k1y.js +0 -0
  201. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Delete-Cqi_Q3OO.js +0 -0
  202. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/DeleteContentForm-WjUJzuUH.js +0 -0
  203. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/DeleteCoursePopup-Bm2AHccd.js +0 -0
  204. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/DeleteNewsletterDialog-F2mHZ45A.js +0 -0
  205. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/DeleteUserDialog--aSnkNdL.js +0 -0
  206. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Dialog-Dnjk4ZKo.js +0 -0
  207. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/DialogActions-Dyb2R8kn.js +0 -0
  208. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/DialogContentText-CQdksgVi.js +0 -0
  209. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/DialogTitle-BwJi5rjs.js +0 -0
  210. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Edit-Cw_wtcbs.js +0 -0
  211. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/EmptyTableState-zZuBcjpl.js +0 -0
  212. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/EnableCourseSwitchPopup-CKnhMhCg.js +0 -0
  213. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/EnrollmentForm-qftqSHOy.js +0 -0
  214. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/EnrollmentList-DcMBT_0Z.js +0 -0
  215. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/FormControlLabel-DkPpSsM8.js +0 -0
  216. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/FormGroup-DYYcJ0Nr.js +0 -0
  217. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Grid-CaQNlbNT.js +0 -0
  218. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/ImageUpload-ux8OZta3.js +0 -0
  219. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/InfoOutlined-B9OPv4zc.js +0 -0
  220. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Layout-BBuJT7Vg.js +0 -0
  221. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/LessonForm-CMtSL_02.js +0 -0
  222. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/LinearProgress-DvO9MIvu.js +0 -0
  223. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/ListItemText-DG4NRDGR.js +0 -0
  224. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Lock-CFTd9FlH.js +0 -0
  225. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/MenuItem-De4h4Y61.js +0 -0
  226. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Modal-BGens4S0.js +0 -0
  227. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/NewsletterForm-BkbCz64Q.js +0 -0
  228. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/OrganizationForm-bzLD8D3r.js +0 -0
  229. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Pagination-IGhmyRq6.js +0 -0
  230. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Public-CnlfcIAL.js +0 -0
  231. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/QuizForm-DwxE1IkB.js +0 -0
  232. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/RequiredTextField-RdX7wAKK.js +0 -0
  233. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/School-CRQRfzHf.js +0 -0
  234. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Select-BvElZvjt.js +0 -0
  235. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Stack-BT3rdKGE.js +0 -0
  236. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Switch-CEUO9dp9.js +0 -0
  237. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/SwitchBase-jqwq1b8w.js +0 -0
  238. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/TableCell-mnvybjBi.js +0 -0
  239. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Tabs-BLPrkQE3.js +0 -0
  240. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/TextField-DqJmnpXC.js +0 -0
  241. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/Tooltip-BN0hUIVb.js +0 -0
  242. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/UserForm-YCJs9pma.js +0 -0
  243. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/WorkspacePremium-B0slSXpO.js +0 -0
  244. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/analytics-vFt3TwJ1.js +0 -0
  245. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/apiClient-DLC4iHBU.js +0 -0
  246. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/assignment_public-CrzrzkyL.js +0 -0
  247. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/certificate-DIuc9lng.js +0 -0
  248. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/certtificate_form-Cq5Sea-V.js +0 -0
  249. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/command_result-DgztzBA1.js +0 -0
  250. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/course-C1fZg5V8.js +0 -0
  251. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/courses-c_0sDl1c.js +0 -0
  252. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/isMuiElement-DFZDks--.js +0 -0
  253. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/isMuiElement-bWJER0DN.js +0 -0
  254. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/learners-CN2si8cF.js +0 -0
  255. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/logo-h-dark-BW-XhXGy.png +0 -0
  256. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/logo-h-light-CDWnatM_.png +0 -0
  257. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/logo-v-dark-Bs2lkb0t.js +0 -0
  258. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/logo-v-dark-IaqEVA7I.png +0 -0
  259. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/logo-v-light-CQaPHwc9.png +0 -0
  260. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/organization-BN0w5-_P.js +0 -0
  261. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/organizations-D9xrsOp4.js +0 -0
  262. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/platform_newsletter-DUfCvY75.js +0 -0
  263. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/platform_newsletter_subscribers-Dq5h5FbR.js +0 -0
  264. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/platform_organization-B78-xS3O.js +0 -0
  265. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/preload-helper-CUg6q9T1.js +0 -0
  266. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/public_course-DEM3REtf.js +0 -0
  267. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/quiz_public-w8fT6Juo.js +0 -0
  268. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/render-CSlijdTr.js +0 -0
  269. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/settings_api_keys-FpBodIWw.js +0 -0
  270. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/useThemeProps-ByT4Z9AK.js +0 -0
  271. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/assets/with-selector-kU74hpO7.js +0 -0
  272. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/logo-h.png +0 -0
  273. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/static/logo.png +0 -0
  274. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/assignment.html +0 -0
  275. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/assignment.txt +0 -0
  276. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/assignment_reminder.html +0 -0
  277. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/assignment_reminder.txt +0 -0
  278. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/assignment_review.html +0 -0
  279. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/assignment_review.txt +0 -0
  280. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/base_amp.html +0 -0
  281. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/certificate_form.html +0 -0
  282. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/certificate_form.txt +0 -0
  283. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/deactivation_deadline_passed.html +0 -0
  284. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/deactivation_deadline_passed.txt +0 -0
  285. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/enrollment_verification.html +0 -0
  286. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/enrollment_verification.txt +0 -0
  287. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/enrollment_verified.html +0 -0
  288. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/enrollment_verified.txt +0 -0
  289. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/lesson.html +0 -0
  290. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/lesson.txt +0 -0
  291. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/password_reset.html +0 -0
  292. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/password_reset.txt +0 -0
  293. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/quiz.html +0 -0
  294. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/quiz.txt +0 -0
  295. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/quiz_amp.html +0 -0
  296. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/quiz_reminder.html +0 -0
  297. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/emails/quiz_reminder.txt +0 -0
  298. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/newsletters/unsubscribe_invalid.html +0 -0
  299. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/newsletters/unsubscribed.html +0 -0
  300. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/personalised/assignment_public.html +0 -0
  301. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/personalised/base.html +0 -0
  302. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/personalised/certificate.html +0 -0
  303. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/personalised/certificate_form.html +0 -0
  304. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/personalised/command_result.html +0 -0
  305. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/personalised/quiz_public.html +0 -0
  306. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/analytics.html +0 -0
  307. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/base.html +0 -0
  308. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/course.html +0 -0
  309. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/courses.html +0 -0
  310. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/learners.html +0 -0
  311. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/newsletter.html +0 -0
  312. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/newsletter_subscribers.html +0 -0
  313. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/organization.html +0 -0
  314. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/organizations.html +0 -0
  315. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/platform/settings_api_keys.html +0 -0
  316. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/public/base.html +0 -0
  317. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/public/course.html +0 -0
  318. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/templates/public/organization.html +0 -0
  319. {django_email_learning-2.2.0 → django_email_learning-2.2.1}/django_email_learning/urls.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-email-learning
3
- Version: 2.2.0
3
+ Version: 2.2.1
4
4
  Summary: A platform for creating and delivering learning materials via email within a Django application. It provides tools for content management, user role-based administration, and scheduler integration for automated content delivery.
5
5
  License-Expression: BSD-3-Clause
6
6
  License-File: LICENSE
@@ -180,6 +180,7 @@ class SendNewslettersJob:
180
180
  "body": sendout.body,
181
181
  "newsletter_title": sendout.newsletter.title,
182
182
  "unsubscribe_url": full_unsubscribe_url,
183
+ "social_links": sendout.newsletter.organization.social_links.all(),
183
184
  }
184
185
 
185
186
  msg = EmailMultiAlternatives(
@@ -140,6 +140,35 @@
140
140
  font-size: 14px;
141
141
  color: #6c757d;
142
142
  }
143
+ .email-divider-note.centered {
144
+ text-align: center;
145
+ }
146
+ .email-social-links {
147
+ margin: 0 0 12px;
148
+ font-size: 14px;
149
+ }
150
+ .email-social-link {
151
+ display: inline-flex;
152
+ align-items: center;
153
+ justify-content: center;
154
+ width: 28px;
155
+ height: 28px;
156
+ margin-right: 8px;
157
+ border-radius: 999px;
158
+ background-color: #4f46e5;
159
+ border: 1px solid #4f46e5;
160
+ color: #ffffff !important;
161
+ vertical-align: middle;
162
+ }
163
+ .email-social-icon {
164
+ width: 20px;
165
+ height: 20px;
166
+ display: block;
167
+ }
168
+ .email-social-link[data-platform="whatsapp"] .email-social-icon {
169
+ width: 22px;
170
+ height: 22px;
171
+ }
143
172
  .email-muted-note {
144
173
  font-size: 14px;
145
174
  color: #7f8c8d;
@@ -0,0 +1,95 @@
1
+ {% extends "emails/base.html" %}
2
+ {% load i18n %}
3
+
4
+ {% block content %}
5
+ <h2 class="email-title">{{ subject }}</h2>
6
+
7
+ {{ body|safe }}
8
+
9
+ <div class="email-divider-note centered">
10
+ {% if social_links %}
11
+ <p class="email-social-links">
12
+ {% for link in social_links %}
13
+ <a
14
+ href="{{ link.url }}"
15
+ class="email-social-link color-brand"
16
+ style="text-decoration: none;"
17
+ data-platform="{{ link.platform }}"
18
+ aria-label="{{ link.get_platform_display }}"
19
+ title="{{ link.get_platform_display }}"
20
+ >
21
+ {% if link.platform == "website" %}
22
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
23
+ <title>{{ link.get_platform_display }}</title>
24
+ <circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="1.8"/>
25
+ <path d="M3 12h18M12 3a14 14 0 0 0 0 18M12 3a14 14 0 0 1 0 18" fill="none" stroke="currentColor" stroke-width="1.8"/>
26
+ </svg>
27
+ {% elif link.platform == "youtube" %}
28
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
29
+ <title>{{ link.get_platform_display }}</title>
30
+ <rect x="3" y="6.5" width="18" height="11" rx="3" fill="none" stroke="currentColor" stroke-width="1.8"/>
31
+ <path d="M10 9.5l6 2.5-6 2.5z" fill="currentColor"/>
32
+ </svg>
33
+ {% elif link.platform == "linkedin" %}
34
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
35
+ <title>{{ link.get_platform_display }}</title>
36
+ <rect x="3.5" y="3.5" width="17" height="17" rx="3" fill="none" stroke="currentColor" stroke-width="1.8"/>
37
+ <circle cx="8" cy="9" r="1.2" fill="currentColor"/>
38
+ <path d="M7 11.2v5.8M11 17v-3.3c0-1.2.8-2 2-2s2 .8 2 2V17M11 12v5" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
39
+ </svg>
40
+ {% elif link.platform == "facebook" %}
41
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
42
+ <title>{{ link.get_platform_display }}</title>
43
+ <circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="1.8"/>
44
+ <path d="M13.4 8.1h1.8V6h-1.8c-1.9 0-3.1 1.2-3.1 3v1.4H8.8v2.1h1.5V18h2.3v-5.5h2.1l.4-2.1h-2.5V9c0-.5.3-.9.8-.9z" fill="currentColor"/>
45
+ </svg>
46
+ {% elif link.platform == "instagram" %}
47
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
48
+ <title>{{ link.get_platform_display }}</title>
49
+ <rect x="4" y="4" width="16" height="16" rx="4" fill="none" stroke="currentColor" stroke-width="1.8"/>
50
+ <circle cx="12" cy="12" r="3.2" fill="none" stroke="currentColor" stroke-width="1.8"/>
51
+ <circle cx="16.4" cy="7.6" r="1.1" fill="currentColor"/>
52
+ </svg>
53
+ {% elif link.platform == "tiktok" %}
54
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
55
+ <title>{{ link.get_platform_display }}</title>
56
+ <path d="M14 6v7.2a3.4 3.4 0 1 1-2.4-3.2" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
57
+ <path d="M14 6c.7 1.3 2.1 2.1 3.6 2.1" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
58
+ </svg>
59
+ {% elif link.platform == "x" %}
60
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
61
+ <title>{{ link.get_platform_display }}</title>
62
+ <path d="M5 5h3.4l3.8 5.1L16.4 5H19l-5.6 6.4L19.4 19H16l-4.2-5.7L7 19H4.4l5.9-6.8z" fill="currentColor"/>
63
+ </svg>
64
+ {% elif link.platform == "whatsapp" %}
65
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
66
+ <title>{{ link.get_platform_display }}</title>
67
+ <circle cx="12" cy="12" r="8" fill="none" stroke="currentColor" stroke-width="1.8"/>
68
+ <path d="M7.5 18.5l1-2.8" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
69
+ <path d="M10.2 9.2c.4-.6.8-.6 1-.3l.7 1c.2.3.1.6-.1.8l-.4.4c.4.9 1.1 1.6 2 2l.4-.4c.2-.2.5-.3.8-.1l1 .7c.3.2.3.6-.3 1-.7.6-1.6.5-2.8-.1-1.5-.8-2.8-2.1-3.6-3.6-.6-1.2-.7-2.1-.1-2.8z" fill="currentColor"/>
70
+ </svg>
71
+ {% elif link.platform == "telegram" %}
72
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
73
+ <title>{{ link.get_platform_display }}</title>
74
+ <circle cx="12" cy="12" r="9" fill="none" stroke="currentColor" stroke-width="1.8"/>
75
+ <path d="M6.8 11.8l10.1-4-2.1 8.3-3-2.4-1.8 1.8.4-2.8z" fill="currentColor"/>
76
+ </svg>
77
+ {% elif link.platform == "substack" %}
78
+ <svg class="email-social-icon" viewBox="0 0 24 24" role="img" aria-hidden="true" focusable="false">
79
+ <title>{{ link.get_platform_display }}</title>
80
+ <rect x="5" y="5" width="14" height="2" fill="currentColor"/>
81
+ <rect x="5" y="9" width="14" height="2" fill="currentColor"/>
82
+ <rect x="5" y="13" width="14" height="2" fill="currentColor"/>
83
+ <rect x="5" y="17" width="14" height="2" fill="currentColor"/>
84
+ </svg>
85
+ {% else %}
86
+ <span>{{ link.get_platform_display }}</span>
87
+ {% endif %}
88
+ </a>
89
+ {% endfor %}
90
+ </p>
91
+ {% endif %}
92
+ <p>{% blocktranslate %}You are receiving this email because you subscribed to <strong>{{ newsletter_title }}</strong>.{% endblocktranslate %}</p>
93
+ <p>{% blocktranslate %}If you no longer wish to receive these emails, you can <a href="{{ unsubscribe_url }}">unsubscribe from this newsletter</a>.{% endblocktranslate %}</p>
94
+ </div>
95
+ {% endblock %}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "django-email-learning"
3
- version = "2.2.0"
3
+ version = "2.2.1"
4
4
  description = "A platform for creating and delivering learning materials via email within a Django application. It provides tools for content management, user role-based administration, and scheduler integration for automated content delivery."
5
5
  authors = [
6
6
  {name = "Payam Najafizadeh",email = "payam.nj@gmail.com"}
@@ -1,13 +0,0 @@
1
- {% extends "emails/base.html" %}
2
- {% load i18n %}
3
-
4
- {% block content %}
5
- <h2 class="email-title">{{ subject }}</h2>
6
-
7
- {{ body|safe }}
8
-
9
- <div class="email-divider-note">
10
- <p>{% blocktranslate %}You are receiving this email because you subscribed to <strong>{{ newsletter_title }}</strong>.{% endblocktranslate %}</p>
11
- <p>{% blocktranslate %}If you no longer wish to receive these emails, you can <a href="{{ unsubscribe_url }}">unsubscribe from this newsletter</a>.{% endblocktranslate %}</p>
12
- </div>
13
- {% endblock %}