diff --git a/blog/migrations/0001_initial.py b/blog/migrations/0001_initial.py index 74f08682..4e5bf3e2 100644 --- a/blog/migrations/0001_initial.py +++ b/blog/migrations/0001_initial.py @@ -1,219 +1,96 @@ -"""Database Migration.""" -# Generated by Django 3.2.13 on 2022-06-29 13:03 +# Generated by Django 5.1.2 on 2024-10-09 17:01 -import ckeditor.fields -import ckeditor_uploader.fields +import blog.models import django.db.models.deletion import django.db.models.manager import hitcount.mixins from django.conf import settings from django.db import migrations, models -import blog.models - class Migration(migrations.Migration): - """Define the Initial database migration for the blog app.""" initial = True dependencies = [ + ('preferences', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ("preferences", "0001_initial"), ] operations = [ migrations.CreateModel( - name="Blog", + name='Blog', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("title", models.CharField(max_length=50)), - ("desc", models.CharField(max_length=250)), - ("created_at", models.DateTimeField(auto_now_add=True)), - ("updated_at", models.DateTimeField(auto_now=True)), - ("body", ckeditor_uploader.fields.RichTextUploadingField()), - ("slug", models.SlugField(default="", unique=True)), - ( - "image", - models.ImageField( - blank=True, - null=True, - storage=blog.models.OverwriteStorage(), - upload_to=blog.models.get_upload_path, - ), - ), - ("draft", models.BooleanField(default=False)), - ( - "image_attrib_name", - models.CharField(blank=True, default="", max_length=50), - ), - ( - "image_attrib_name_link", - models.CharField(blank=True, default="", max_length=100), - ), - ( - "image_attrib_site", - models.CharField(blank=True, default="", max_length=50), - ), - ( - "image_attrib_site_link", - models.URLField(blank=True, default=""), - ), - ( - "user", - models.ForeignKey( - default=1, - on_delete=django.db.models.deletion.CASCADE, - related_name="blog_posts", - to=settings.AUTH_USER_MODEL, - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=50)), + ('desc', models.CharField(max_length=250)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('body', models.TextField()), + ('slug', models.SlugField(default='', unique=True)), + ('image', models.ImageField(blank=True, null=True, storage=blog.models.OverwriteStorage(), upload_to=blog.models.get_upload_path)), + ('draft', models.BooleanField(default=False)), + ('image_attrib_name', models.CharField(blank=True, default='', max_length=50)), + ('image_attrib_name_link', models.CharField(blank=True, default='', max_length=100)), + ('image_attrib_site', models.CharField(blank=True, default='', max_length=50)), + ('image_attrib_site_link', models.URLField(blank=True, default='')), + ('user', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='blog_posts', to=settings.AUTH_USER_MODEL)), ], options={ - "ordering": ["-created_at"], + 'ordering': ['-created_at'], }, bases=(models.Model, hitcount.mixins.HitCountModelMixin), ), migrations.CreateModel( - name="Tag", - fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("tag_name", models.CharField(max_length=15)), - ("slug", models.SlugField(default="", unique=True)), - ("posts", models.ManyToManyField(blank=True, to="blog.Blog")), - ( - "tag_creator", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="tags", - to=settings.AUTH_USER_MODEL, - ), - ), - ], - ), - migrations.CreateModel( - name="SitePreferences", + name='Comment', fields=[ - ( - "preferences_ptr", - models.OneToOneField( - auto_created=True, - on_delete=django.db.models.deletion.CASCADE, - parent_link=True, - primary_key=True, - serialize=False, - to="preferences.preferences", - ), - ), - ( - "sitename", - models.CharField(default="My Sexy Blog", max_length=50), - ), - ("title", models.CharField(default="My Blog", max_length=20)), - ( - "heading", - models.CharField( - default="A blog of blogging blogosity.", max_length=200 - ), - ), - ("twitter_site", models.CharField(default="", max_length=50)), - ( - "pinned_post", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - to="blog.blog", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_by_guest', models.CharField(blank=True, max_length=50)), + ('guest_email', models.EmailField(blank=True, max_length=254)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('body', models.TextField()), + ('created_by_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='comments', to=settings.AUTH_USER_MODEL)), + ('related_post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='comments', to='blog.blog')), ], options={ - "verbose_name_plural": "Site Preferences", + 'ordering': ['created_at'], }, - bases=("preferences.preferences",), - managers=[ - ("singleton", django.db.models.manager.Manager()), - ], ), migrations.CreateModel( - name="Redirect", + name='Redirect', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ("old_slug", models.SlugField(default="", unique=True)), - ( - "old_post", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - to="blog.blog", - ), - ), + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('old_slug', models.SlugField(default='', unique=True)), + ('old_post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.blog')), ], ), migrations.CreateModel( - name="Comment", + name='SitePreferences', fields=[ - ( - "id", - models.BigAutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "created_by_guest", - models.CharField(blank=True, max_length=50), - ), - ("guest_email", models.EmailField(blank=True, max_length=254)), - ("created_at", models.DateTimeField(auto_now_add=True)), - ("updated_at", models.DateTimeField(auto_now=True)), - ("body", ckeditor.fields.RichTextField(blank=True)), - ( - "created_by_user", - models.ForeignKey( - blank=True, - null=True, - on_delete=django.db.models.deletion.CASCADE, - related_name="comments", - to=settings.AUTH_USER_MODEL, - ), - ), - ( - "related_post", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="comments", - to="blog.blog", - ), - ), + ('preferences_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='preferences.preferences')), + ('sitename', models.CharField(default='My Sexy Blog', max_length=50)), + ('title', models.CharField(default='My Blog', max_length=20)), + ('heading', models.CharField(default='A blog of blogging blogosity.', max_length=200)), + ('twitter_site', models.CharField(default='', max_length=50)), + ('pinned_post', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.blog')), ], options={ - "ordering": ["created_at"], + 'verbose_name_plural': 'Site Preferences', }, + bases=('preferences.preferences',), + managers=[ + ('singleton', django.db.models.manager.Manager()), + ], + ), + migrations.CreateModel( + name='Tag', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('tag_name', models.CharField(max_length=15)), + ('slug', models.SlugField(default='', unique=True)), + ('posts', models.ManyToManyField(blank=True, to='blog.blog')), + ('tag_creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tags', to=settings.AUTH_USER_MODEL)), + ], ), ] diff --git a/blog/models.py b/blog/models.py index 23b6ca4b..6282f324 100644 --- a/blog/models.py +++ b/blog/models.py @@ -3,8 +3,6 @@ from pathlib import Path from typing import Any, Optional -from ckeditor.fields import RichTextField -from ckeditor_uploader.fields import RichTextUploadingField from django.contrib.auth.models import User from django.contrib.contenttypes.fields import GenericRelation from django.core.files.storage import FileSystemStorage @@ -56,7 +54,8 @@ class Blog(models.Model, HitCountModelMixin): desc = models.CharField(max_length=250) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) - body = RichTextUploadingField(config_name="post") + # body = RichTextUploadingField(config_name="post") + body = models.TextField() slug = models.SlugField(default="", unique=True) image = models.ImageField( upload_to=get_upload_path, @@ -140,7 +139,8 @@ class Comment(models.Model): ) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) - body = RichTextField(config_name="comment", blank=True) + # body = RichTextField(config_name="comment", blank=True) + body = models.TextField() class Meta(TypedModelMeta): """Meta configuration for the Blog model.""" diff --git a/pyblog/settings.py b/pyblog/settings.py index d6c36db7..60dcc471 100644 --- a/pyblog/settings.py +++ b/pyblog/settings.py @@ -43,8 +43,6 @@ "compressor", "django.forms", "django_gravatar", - "ckeditor", - "ckeditor_uploader", "dj_pagination", "maintenance_mode", "secretballot", diff --git a/pyblog/urls.py b/pyblog/urls.py index 14947950..222809dd 100644 --- a/pyblog/urls.py +++ b/pyblog/urls.py @@ -46,7 +46,6 @@ user_views.EditProfileView.as_view(), name="edit-profile", ), - path("ckeditor/", include("ckeditor_uploader.urls")), path("likes/", include("likes.urls")), path("maintenance-mode/", include("maintenance_mode.urls")), path("", include("user_sessions.urls", "user_sessions")), diff --git a/pyproject.toml b/pyproject.toml index c54a04d2..603df756 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,6 @@ requires-python = ">=3.10" dependencies = [ "dj-hitcount>=1.3.0", "django>=5.1.2", - "django-ckeditor>=6.7.1", "django-compressor>=4.5.1", "django-gravatar2>=1.4.5", "django-maintenance-mode>=0.21.1", @@ -110,15 +109,14 @@ plugins.md036.enabled = false plugins.md046.enabled = false [tool.pytest.ini_options] -addopts = ["--cov", "--cov-report", "term-missing", "--cov-report", "html"] +# addopts = ["--cov", "--cov-report", "term-missing", "--cov-report", "html"] filterwarnings = [] mock_use_standalone_module = true pythonpath = ["blog", "pyBlog"] DJANGO_SETTINGS_MODULE = "pyblog.settings" [tool.coverage.run] -source = ["blog", "pyBlog"] -omit = ["*/tests/*"] +# source = ["blog", "pyBlog"] [tool.ruff] line-length = 80 diff --git a/uv.lock b/uv.lock index fa721cd7..50e5574f 100644 --- a/uv.lock +++ b/uv.lock @@ -395,19 +395,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/c0/98/1cb3d9e8b1c6d0a74539b998474796fc5c0c0888b6201e5c95ba2f7a0677/django_appconf-1.0.6-py3-none-any.whl", hash = "sha256:c3ae442fba1ff7ec830412c5184b17169a7a1e71cf0864a4c3f93cf4c98a1993", size = 6424 }, ] -[[package]] -name = "django-ckeditor" -version = "6.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, - { name = "django-js-asset" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d5/64/8d465c32de704e766fa3e85f0205825ba7db7497b0c1440b5160b31ae4c1/django-ckeditor-6.7.1.tar.gz", hash = "sha256:7144f9ead662306266c728912487313b3b87ba2abf9dbb82c447f662ce25d1f7", size = 1725957 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/b7/0b3f6ff07c0635152da129532ce0a305e7d3239a15e2a1fc710904d5e3b6/django_ckeditor-6.7.1-py3-none-any.whl", hash = "sha256:55b5f9ce3af47e3c8a8ed37d42be8439da2a664d6e571c2247c1db5c96459dd7", size = 2454834 }, -] - [[package]] name = "django-compressor" version = "4.5.1" @@ -441,18 +428,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/95/e3/22cd408d91f1732582dc266654e8cbc10a5e8c9e8036f299e70bea6827ea/django_gravatar2-1.4.5-py2.py3-none-any.whl", hash = "sha256:7e6c8f63f59b0077d42402531684807ea6295867ebd2195a638d87b851f0d41c", size = 8180 }, ] -[[package]] -name = "django-js-asset" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "django" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/28/bb/04accb19b0c0b6d835a393c20f04dfc379648e8cd6654c045e4d843ad527/django_js_asset-2.2.0.tar.gz", hash = "sha256:0c57a82cae2317e83951d956110ce847f58ff0cdc24e314dbc18b35033917e94", size = 7904 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/4d/5bb8c351f2515a616576a4218c736af081edf0dd4d1eead1c7e880f74c0e/django_js_asset-2.2.0-py3-none-any.whl", hash = "sha256:7ef3e858e13d06f10799b56eea62b1e76706f42cf4e709be4e13356bc0ae30d8", size = 4704 }, -] - [[package]] name = "django-likes" version = "2.0.1" @@ -1340,7 +1315,6 @@ dependencies = [ { name = "dj-hitcount" }, { name = "dj-pagination" }, { name = "django" }, - { name = "django-ckeditor" }, { name = "django-compressor" }, { name = "django-gravatar2" }, { name = "django-likes" }, @@ -1391,7 +1365,6 @@ requires-dist = [ { name = "dj-hitcount", specifier = ">=1.3.0" }, { name = "dj-pagination", git = "https://github.com/seapagan/dj-pagination.git?branch=master" }, { name = "django", specifier = ">=5.1.2" }, - { name = "django-ckeditor", specifier = ">=6.7.1" }, { name = "django-compressor", specifier = ">=4.5.1" }, { name = "django-gravatar2", specifier = ">=1.4.5" }, { name = "django-likes", git = "https://github.com/seapagan/django-likes.git?branch=develop" },