Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions requirements-testing.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
django-stubs==1.12.0
# django-stubs==1.12.0
django-stubs==5.2.9
mypy==1.5.1
hypothesis>=6.131.9,<7
hypothesis-jsonschema==0.19.0
types-requests==2.28.5
lxml
lxml
debugpy==1.6.5
pytest==7.2.1
pytest-django==4.12.0
django-extensions==4.1
# django-debug-toolbar==4.4.6
4 changes: 2 additions & 2 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ wheel
kombu==5.5.2
redis==6.4.0
celery==5.5.1
Django==4.2.30
Django==5.2.13
mysqlclient==2.1.1
SQLAlchemy==1.4.54
sqlalchemy2-stubs
requests==2.32.4
pycryptodome==3.21.0
PyJWT==2.12.1
django-auth-ldap==1.2.17
django-auth-ldap==5.3.0
jsonschema==4.0.1
typing-extensions==4.12.2
stream-zip==0.0.83
Expand Down
4 changes: 0 additions & 4 deletions specifyweb/settings/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,10 +150,6 @@ def get_sa_db_url(db_name):
# to load the internationalization machinery.
USE_I18N = True

# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True

LANGUAGE_COOKIE_NAME='language'

# Absolute filesystem path to the directory that will hold user-uploaded files.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Generated by Django 5.2.13 on 2026-04-30

from django.db import migrations, models

class Migration(migrations.Migration):
dependencies = [
('specify', '0044_alter_deletion_cascade'),
]

operations = [
migrations.AlterField(
model_name='autonumberingscheme',
name='collections',
field=models.ManyToManyField(related_name='numberingschemes', through='specify.Autonumschcoll', through_fields=('autonumberingscheme', 'collection'), to='specify.collection'),
),
migrations.AlterField(
model_name='autonumberingscheme',
name='disciplines',
field=models.ManyToManyField(related_name='numberingschemes', through='specify.Autonumschdsp', through_fields=('autonumberingscheme', 'discipline'), to='specify.discipline'),
),
migrations.AlterField(
model_name='autonumberingscheme',
name='divisions',
field=models.ManyToManyField(related_name='numberingschemes', through='specify.Autonumschdiv', through_fields=('autonumberingscheme', 'division'), to='specify.division'),
),
migrations.AlterField(
model_name='project',
name='collectionobjects',
field=models.ManyToManyField(related_name='projects', through='specify.Project_colobj', through_fields=('project', 'collectionobject'), to='specify.collectionobject'),
),
migrations.AlterField(
model_name='specifyuser',
name='spprincipals',
field=models.ManyToManyField(related_name='specifyusers', through='specify.Specifyuser_spprincipal', through_fields=('specifyuser', 'spprincipal'), to='specify.spprincipal'),
),
migrations.AlterField(
model_name='spexportschema',
name='mappings',
field=models.ManyToManyField(related_name='spexportschemas', through='specify.Spexportschema_exportmapping', through_fields=('spexportschema', 'spexportschemamapping'), to='specify.spexportschemamapping'),
),
migrations.AlterField(
model_name='spprincipal',
name='sppermissions',
field=models.ManyToManyField(related_name='spprincipals', through='specify.Spprincipal_sppermission', through_fields=('spprincipal', 'sppermission'), to='specify.sppermission'),
),
]
7 changes: 6 additions & 1 deletion specifyweb/specify/utils/case_insensitive_bool.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ def to_python(self, value):
return False
return super().to_python(value)

class NullBooleanField(models.NullBooleanField):
class NullBooleanField(BooleanField):
def __init__(self, *args, **kwargs):
kwargs.setdefault('null', True)
kwargs.setdefault('blank', True)
super().__init__(*args, **kwargs)

def to_python(self, value):
if value == 'true':
return True
Expand Down
Loading