From 1005b2e3db8e04d764c3c3136496f44d85613021 Mon Sep 17 00:00:00 2001 From: Dhaval Gojiya Date: Mon, 23 Sep 2024 00:20:00 +0530 Subject: [PATCH 1/2] [UPDATED] Upgraded django-db-mailer for Django 4.2+ compatibility by replacing deprecated imports and fields. --- dbmail/admin.py | 12 ++++++------ dbmail/apps.py | 2 +- dbmail/defaults.py | 3 +-- dbmail/models.py | 10 ++++++---- dbmail/urls.py | 16 ++++++++-------- demo/demo/urls.py | 20 +++++++++----------- docs/settings.rst | 4 ++-- docs/usage.rst | 2 +- docs/web_push.rst | 4 ++-- 9 files changed, 36 insertions(+), 37 deletions(-) diff --git a/dbmail/admin.py b/dbmail/admin.py index fa75c21..672cf0c 100644 --- a/dbmail/admin.py +++ b/dbmail/admin.py @@ -3,7 +3,7 @@ import os from django.contrib.contenttypes.models import ContentType -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.shortcuts import redirect, render try: @@ -11,7 +11,7 @@ except ImportError: from django.urls import reverse -from django.conf.urls import url +from django.urls import re_path from django.contrib import messages from django.contrib import admin @@ -155,21 +155,21 @@ def browse_model_fields_view(self, request, pk, app, model): def get_urls(self): urls = super(MailTemplateAdmin, self).get_urls() admin_urls = [ - url( + re_path( r'^(\d+)/sendmail/$', self.admin_site.admin_view(self.send_mail_view), name='send_mail_view' ), - url( + re_path( r'^(\d+)/sendmail/apps/(.*?)/(.*?)/', self.admin_site.admin_view(self.browse_model_fields_view), name='browse_model_fields_view'), - url( + re_path( r'^(\d+)/sendmail/apps/', self.admin_site.admin_view(self.get_apps_view), name='send_mail_apps_view' ), - url( + re_path( r'^reset/cache/', self.admin_site.admin_view(self.clean_cache_view), name='clean_cache_view' diff --git a/dbmail/apps.py b/dbmail/apps.py index bc14b75..1991aae 100644 --- a/dbmail/apps.py +++ b/dbmail/apps.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.apps import AppConfig diff --git a/dbmail/defaults.py b/dbmail/defaults.py index ae20e6a..6780ebc 100644 --- a/dbmail/defaults.py +++ b/dbmail/defaults.py @@ -1,8 +1,7 @@ # -*- encoding: utf-8 -*- -import os -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.conf import settings diff --git a/dbmail/models.py b/dbmail/models.py index 127f5d0..2b43226 100644 --- a/dbmail/models.py +++ b/dbmail/models.py @@ -7,7 +7,7 @@ import re from django.core import signing -from django.utils.translation import ugettext_lazy as _ +from django.utils.translation import gettext_lazy as _ from django.utils.html import strip_tags from django.utils.timezone import now from django.core.cache import cache @@ -594,7 +594,7 @@ class SignalDeferredDispatch(models.Model): kwargs = models.TextField() params = models.TextField() eta = models.DateTimeField(db_index=True) - done = models.NullBooleanField(default=None) + done = models.BooleanField(null=True) created = models.DateTimeField(auto_now_add=True) def run_task(self): @@ -617,7 +617,7 @@ def add_task(cls, args, kwargs, params, interval): ) class Meta: - index_together = (('eta', 'done'),) + indexes = [models.Index(fields=("eta", "done"))] @python_2_unicode_compatible @@ -711,7 +711,9 @@ def detect_ua(self): import httpagentparser data = httpagentparser.detect(self.ua) - get = lambda b, k: data.get(b, {}).get(k, '') + + def get(b, k): + return data.get(b, {}).get(k, '') self.ua_os = get('os', 'name') self.ua_os_version = get('os', 'version') diff --git a/dbmail/urls.py b/dbmail/urls.py index 459c7c6..af72a4e 100644 --- a/dbmail/urls.py +++ b/dbmail/urls.py @@ -1,6 +1,6 @@ # -*- encoding: utf-8 -*- -from django.conf.urls import url +from django.urls import re_path from dbmail.views import ( send_by_dbmail, mail_read_tracker, @@ -9,19 +9,19 @@ ) urlpatterns = [ - url(r'^api/', send_by_dbmail, name='db-mail-api'), - url(r'^mail_read_tracker/(.*?)/$', + re_path(r'^api/', send_by_dbmail, name='db-mail-api'), + re_path(r'^mail_read_tracker/(.*?)/$', mail_read_tracker, name='db-mail-tracker'), - url(r'^safari/v(?P[0-9]{1})/pushPackages/(?P[.\w-]+)/?', + re_path(r'^safari/v(?P[0-9]{1})/pushPackages/(?P[.\w-]+)/?', SafariPushPackagesView.as_view()), - url(r'^safari/v(?P[0-9]{1})/devices/' + re_path(r'^safari/v(?P[0-9]{1})/devices/' r'(?P[.\w-]+)/registrations/(?P[.\w-]+)/?', SafariSubscriptionView.as_view()), - url(r'^safari/v(?P[0-9]{1})/log/?', SafariLogView.as_view()), + re_path(r'^safari/v(?P[0-9]{1})/log/?', SafariLogView.as_view()), - url(r'^(?Pweb-push|mobile)/subscribe/', + re_path(r'^(?Pweb-push|mobile)/subscribe/', PushSubscriptionView.as_view(), name='push-subscribe'), - url(r'^(?Pweb-push|mobile)/unsubscribe/', + re_path(r'^(?Pweb-push|mobile)/unsubscribe/', PushSubscriptionView.as_view(), name='push-unsubscribe'), ] diff --git a/demo/demo/urls.py b/demo/demo/urls.py index bf3cfce..1240522 100644 --- a/demo/demo/urls.py +++ b/demo/demo/urls.py @@ -1,6 +1,5 @@ -import os import sys -from django.conf.urls import include, url +from django.urls import include, re_path from django.contrib import admin from django.conf import settings @@ -8,17 +7,17 @@ urlpatterns = [ - url(r'^admin/', admin.site.urls), - # url(r'^rosetta/', include('rosetta.urls')), - url(r'^dbmail/', include('dbmail.urls')), + re_path(r"^admin/", admin.site.urls), + # re_path(r'^rosetta/', include('rosetta.urls')), + re_path(r"^dbmail/", include("dbmail.urls")), ] -if 'test' not in sys.argv: +if "test" not in sys.argv: urlpatterns += [ - url(r'^grappelli/', include('grappelli.urls')), - url('^browser_notification/$', demo.views.browser_notification), - url('^web-push/$', demo.views.web_push_notification), - url(r'^ckeditor/', include('ckeditor_uploader.urls')), + re_path(r"^grappelli/", include("grappelli.urls")), + re_path("^browser_notification/$", demo.views.browser_notification), + re_path("^web-push/$", demo.views.web_push_notification), + re_path(r"^ckeditor/", include("ckeditor_uploader.urls")), ] @@ -30,4 +29,3 @@ document_root=settings.MEDIA_ROOT) urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) - diff --git a/docs/settings.rst b/docs/settings.rst index 9538bb3..bce3e35 100644 --- a/docs/settings.rst +++ b/docs/settings.rst @@ -153,7 +153,7 @@ and app will be work with Django 1.4+. } # urls.py urlpatterns += patterns( - '', url(r'^tinymce/', include('tinymce.urls')), + '', re_path(r'^tinymce/', include('tinymce.urls')), ) @@ -224,7 +224,7 @@ Add url patterns into urls.py: .. code-block:: python urlpatterns += patterns( - '', url(r'^dbmail/', include('dbmail.urls')), + '', re_path(r'^dbmail/', include('dbmail.urls')), ) diff --git a/docs/usage.rst b/docs/usage.rst index 6389ff6..704b2db 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -248,7 +248,7 @@ Add urls route: # urls.py urlpatterns += patterns( - '', url(r'^dbmail/', include('dbmail.urls')), + '', re_path(r'^dbmail/', include('dbmail.urls')), ) diff --git a/docs/web_push.rst b/docs/web_push.rst index 332b513..9f7caa4 100644 --- a/docs/web_push.rst +++ b/docs/web_push.rst @@ -155,7 +155,7 @@ After registration you must be have ``API KEY`` and ``APP ID``. .. code-block:: python urlpatterns += patterns( - '', url(r'^dbmail/', include('dbmail.urls')), + '', re_path(r'^dbmail/', include('dbmail.urls')), ) @@ -257,7 +257,7 @@ Safari examples .. code-block:: python urlpatterns += patterns( - '', url(r'^dbmail/', include('dbmail.urls')), + '', re_path(r'^dbmail/', include('dbmail.urls')), ) From fd0d5bff448f36102420b19025d711db3cb977ff Mon Sep 17 00:00:00 2001 From: Dhaval Gojiya Date: Thu, 5 Dec 2024 12:00:42 +0530 Subject: [PATCH 2/2] [ADD] Added missing migration file for Django 4.2+ compatibility. - Included migration file to reflect changes made for Django 4.2+ compatibility. - Ensures database schema is consistent with the updated codebase. --- ...one_dbmail_sign_eta_bd53d1_idx_and_more.py | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 dbmail/migrations/0016_rename_signaldeferreddispatch_eta_done_dbmail_sign_eta_bd53d1_idx_and_more.py diff --git a/dbmail/migrations/0016_rename_signaldeferreddispatch_eta_done_dbmail_sign_eta_bd53d1_idx_and_more.py b/dbmail/migrations/0016_rename_signaldeferreddispatch_eta_done_dbmail_sign_eta_bd53d1_idx_and_more.py new file mode 100644 index 0000000..45e1208 --- /dev/null +++ b/dbmail/migrations/0016_rename_signaldeferreddispatch_eta_done_dbmail_sign_eta_bd53d1_idx_and_more.py @@ -0,0 +1,36 @@ +# Generated by Django 4.2 on 2024-12-04 11:49 + +import ckeditor.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("dbmail", "0015_auto_20180926_1206"), + ] + + operations = [ + migrations.RenameIndex( + model_name="signaldeferreddispatch", + new_name="dbmail_sign_eta_bd53d1_idx", + old_fields=("eta", "done"), + ), + migrations.AlterField( + model_name="mailbasetemplate", + name="message", + field=ckeditor.fields.RichTextField( + help_text="Basic template for mail messages. {{content}} tag for msg.", + verbose_name="Body", + ), + ), + migrations.AlterField( + model_name="mailtemplate", + name="message", + field=ckeditor.fields.RichTextField(verbose_name="Body"), + ), + migrations.AlterField( + model_name="signaldeferreddispatch", + name="done", + field=models.BooleanField(null=True), + ), + ]