Merge pull request #385 from mouse-reeve/remove-sqlite-support

Remove sqlite support
This commit is contained in:
Mouse Reeve 2020-12-12 20:30:24 -08:00 committed by GitHub
commit 45e159775f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 15 additions and 87 deletions

View file

@ -7,7 +7,7 @@ import django.core.validators
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
import django.utils.timezone import django.utils.timezone
import bookwyrm.utils.fields from django.contrib.postgres.fields import JSONField
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -62,7 +62,7 @@ class Migration(migrations.Migration):
('content', models.TextField(blank=True, null=True)), ('content', models.TextField(blank=True, null=True)),
('created_date', models.DateTimeField(auto_now_add=True)), ('created_date', models.DateTimeField(auto_now_add=True)),
('openlibrary_key', models.CharField(max_length=255)), ('openlibrary_key', models.CharField(max_length=255)),
('data', bookwyrm.utils.fields.JSONField()), ('data', JSONField()),
], ],
options={ options={
'abstract': False, 'abstract': False,
@ -75,7 +75,7 @@ class Migration(migrations.Migration):
('content', models.TextField(blank=True, null=True)), ('content', models.TextField(blank=True, null=True)),
('created_date', models.DateTimeField(auto_now_add=True)), ('created_date', models.DateTimeField(auto_now_add=True)),
('openlibrary_key', models.CharField(max_length=255, unique=True)), ('openlibrary_key', models.CharField(max_length=255, unique=True)),
('data', bookwyrm.utils.fields.JSONField()), ('data', JSONField()),
('cover', models.ImageField(blank=True, null=True, upload_to='covers/')), ('cover', models.ImageField(blank=True, null=True, upload_to='covers/')),
('added_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)), ('added_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to=settings.AUTH_USER_MODEL)),
('authors', models.ManyToManyField(to='bookwyrm.Author')), ('authors', models.ManyToManyField(to='bookwyrm.Author')),

View file

@ -2,7 +2,6 @@
import bookwyrm.models.connector import bookwyrm.models.connector
import bookwyrm.models.site import bookwyrm.models.site
import bookwyrm.utils.fields
from django.conf import settings from django.conf import settings
import django.contrib.postgres.operations import django.contrib.postgres.operations
import django.core.validators import django.core.validators
@ -10,6 +9,7 @@ from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
import django.db.models.expressions import django.db.models.expressions
import django.utils.timezone import django.utils.timezone
from django.contrib.postgres.fields import JSONField, ArrayField
import uuid import uuid
@ -148,7 +148,7 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='book', model_name='book',
name='misc_identifiers', name='misc_identifiers',
field=bookwyrm.utils.fields.JSONField(null=True), field=JSONField(null=True),
), ),
migrations.AddField( migrations.AddField(
model_name='book', model_name='book',
@ -226,7 +226,7 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='author', model_name='author',
name='aliases', name='aliases',
field=bookwyrm.utils.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None), field=bookwyrm.models.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None),
), ),
migrations.AddField( migrations.AddField(
model_name='user', model_name='user',
@ -394,17 +394,17 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='book', model_name='book',
name='subject_places', name='subject_places',
field=bookwyrm.utils.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None), field=ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None),
), ),
migrations.AddField( migrations.AddField(
model_name='book', model_name='book',
name='subjects', name='subjects',
field=bookwyrm.utils.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None), field=ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None),
), ),
migrations.AddField( migrations.AddField(
model_name='edition', model_name='edition',
name='publishers', name='publishers',
field=bookwyrm.utils.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None), field=ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None),
), ),
migrations.AlterField( migrations.AlterField(
model_name='connector', model_name='connector',
@ -578,7 +578,7 @@ class Migration(migrations.Migration):
migrations.AddField( migrations.AddField(
model_name='book', model_name='book',
name='languages', name='languages',
field=bookwyrm.utils.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None), field=ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, size=None),
), ),
migrations.AddField( migrations.AddField(
model_name='edition', model_name='edition',
@ -676,7 +676,7 @@ class Migration(migrations.Migration):
name='ImportItem', name='ImportItem',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('data', bookwyrm.utils.fields.JSONField()), ('data', JSONField()),
], ],
), ),
migrations.CreateModel( migrations.CreateModel(

View file

@ -1,10 +1,9 @@
# Generated by Django 3.0.7 on 2020-11-29 03:04 # Generated by Django 3.0.7 on 2020-11-29 03:04
import bookwyrm.utils.fields
from django.conf import settings from django.conf import settings
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
from django.contrib.postgres.fields import ArrayField
class Migration(migrations.Migration): class Migration(migrations.Migration):
@ -16,12 +15,12 @@ class Migration(migrations.Migration):
migrations.AlterField( migrations.AlterField(
model_name='book', model_name='book',
name='subject_places', name='subject_places',
field=bookwyrm.utils.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, null=True, size=None), field=ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, null=True, size=None),
), ),
migrations.AlterField( migrations.AlterField(
model_name='book', model_name='book',
name='subjects', name='subjects',
field=bookwyrm.utils.fields.ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, null=True, size=None), field=ArrayField(base_field=models.CharField(max_length=255), blank=True, default=list, null=True, size=None),
), ),
migrations.AlterField( migrations.AlterField(
model_name='edition', model_name='edition',

View file

@ -2,12 +2,12 @@
import re import re
import dateutil.parser import dateutil.parser
from django.contrib.postgres.fields import JSONField
from django.db import models from django.db import models
from django.utils import timezone from django.utils import timezone
from bookwyrm import books_manager from bookwyrm import books_manager
from bookwyrm.models import ReadThrough, User, Book from bookwyrm.models import ReadThrough, User, Book
from bookwyrm.utils.fields import JSONField
from .base_model import PrivacyLevels from .base_model import PrivacyLevels

View file

@ -99,10 +99,6 @@ BOOKWYRM_DBS = {
'HOST': env('POSTGRES_HOST', ''), 'HOST': env('POSTGRES_HOST', ''),
'PORT': 5432 'PORT': 5432
}, },
'sqlite': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'fedireads.db')
}
} }
DATABASES = { DATABASES = {

View file

@ -1,67 +0,0 @@
'''Quick and dirty shim for JSONField and ArrayField compatibility on sqlite.
For more info and original code, see:
- https://medium.com/@philamersune/using-postgresql-jsonfield-in-sqlite-95ad4ad2e5f1
- https://gist.github.com/pvsune/2e5f9f9ae356d0bff633d896bc7d168b#file-django-sqlite-fields-py
'''
import json
from django.conf import settings
from django.contrib.postgres.fields import (
JSONField as DjangoJSONField,
ArrayField as DjangoArrayField,
)
from django.db.models import Field
class JSONField(DjangoJSONField):
pass
class ArrayField(DjangoArrayField):
pass
if 'sqlite' in settings.DATABASES['default']['ENGINE']:
class JSONField(Field):
def db_type(self, connection):
return 'text'
def from_db_value(self, value, expression, connection):
if value is not None:
return self.to_python(value)
return value
def to_python(self, value):
if value is not None:
try:
return json.loads(value)
except (TypeError, ValueError):
return value
return value
def get_prep_value(self, value):
if value is not None:
return str(json.dumps(value))
return value
def value_to_string(self, obj):
return self.value_from_object(obj)
class ArrayField(JSONField):
def __init__(self, base_field, size=None, **kwargs):
"""Care for DjangoArrayField's kwargs."""
self.base_field = base_field
self.size = size
super().__init__(**kwargs)
def deconstruct(self):
"""Need to create migrations properly."""
name, path, args, kwargs = super().deconstruct()
kwargs.update({
'base_field': self.base_field.clone(),
'size': self.size,
})
return name, path, args, kwargs