Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update software stack to latest versions #43

Merged
merged 2 commits into from
Sep 21, 2024
Merged
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
203 changes: 99 additions & 104 deletions mainproject/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,108 +23,106 @@

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
SECRET_KEY = config(
'SECRET_KEY', default='GF#QhIU%}4;auyFdIr]6>$_~|=."9qB%[Oj;.<^$IkNAgp0E{d')
DEBUG = config('DEBUG', default=False, cast=bool)
ALLOWED_HOSTS = config('ALLOWED_HOSTS', default='', cast=Csv())
MATD3_NAME = mark_safe(config('MATD3_NAME', default='MatD&#xb3;'))
MATD3_URL = config('MATD3_URL', default='')
# DEFAULT_AUTO_FIELD='django.db.models.AutoField' #Uncomment this line if using Django version 3.2 or higher
"SECRET_KEY", default='GF#QhIU%}4;auyFdIr]6>$_~|=."9qB%[Oj;.<^$IkNAgp0E{d'
)
DEBUG = config("DEBUG", default=False, cast=bool)
ALLOWED_HOSTS = config("ALLOWED_HOSTS", default="", cast=Csv())
MATD3_NAME = mark_safe(config("MATD3_NAME", default="MatD&#xb3;"))
MATD3_URL = config("MATD3_URL", default="")
DEFAULT_AUTO_FIELD = "django.db.models.AutoField" # Uncomment this line if using Django version 3.2 or higher

# Application definition

INSTALLED_APPS = [
'materials',
'accounts',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'raven.contrib.django.raven_compat',
'nested_admin',
'rest_framework',
'django_filters'
"materials",
"accounts",
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"raven.contrib.django.raven_compat",
"nested_admin",
"rest_framework",
"django_filters",
]

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.clickjacking.XFrameOptionsMiddleware",
]

ROOT_URLCONF = 'mainproject.urls'
ROOT_URLCONF = "mainproject.urls"

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'mainproject/templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'mainproject.context_processors.title',
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [os.path.join(BASE_DIR, "mainproject/templates")],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contrib.messages.context_processors.messages",
"mainproject.context_processors.title",
],
},
},
]

WSGI_APPLICATION = 'mainproject.wsgi.application'
WSGI_APPLICATION = "mainproject.wsgi.application"

# Database
USE_SQLITE = config('USE_SQLITE', default=False, cast=bool)
USE_SQLITE = config("USE_SQLITE", default=False, cast=bool)
if USE_SQLITE:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'materials.db'),
"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": os.path.join(BASE_DIR, "materials.db"),
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'materials',
'USER': config('DB_USER', default=''),
'PASSWORD': config('DB_PASSWORD', default=''),
'HOST': 'localhost',
'PORT': '',
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "materials",
"USER": config("DB_USER", default=""),
"PASSWORD": config("DB_PASSWORD", default=""),
"HOST": "localhost",
"PORT": "",
}
}

# Password validation

AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.'
'UserAttributeSimilarityValidator',
"NAME": "django.contrib.auth.password_validation."
"UserAttributeSimilarityValidator",
},
{
'NAME': 'django.contrib.auth.password_validation.'
'MinimumLengthValidator',
"NAME": "django.contrib.auth.password_validation." "MinimumLengthValidator",
},
{
'NAME': 'django.contrib.auth.password_validation.'
'CommonPasswordValidator',
"NAME": "django.contrib.auth.password_validation." "CommonPasswordValidator",
},
{
'NAME': 'django.contrib.auth.password_validation.'
'NumericPasswordValidator',
"NAME": "django.contrib.auth.password_validation." "NumericPasswordValidator",
},
]

# Internationalization

LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = "en-us"

TIME_ZONE = 'America/New_York'
TIME_ZONE = "America/New_York"

USE_I18N = True

Expand All @@ -136,91 +134,88 @@

# Static files (CSS, JavaScript, Images)

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'mainproject/static')
]
STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATICFILES_DIRS = [os.path.join(BASE_DIR, "mainproject/static")]

# Media
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'mainproject/media')
MEDIA_URL = "/media/"
MEDIA_ROOT = os.path.join(BASE_DIR, "mainproject/media")
DATA_UPLOAD_MAX_MEMORY_SIZE = None
DATA_UPLOAD_MAX_NUMBER_FIELDS = None
FILE_UPLOAD_MAX_MEMORY_SIZE = int(5e8)

# Account

LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/accounts/login'
LOGIN_REDIRECT_URL = "/"
LOGIN_URL = "/accounts/login"
ACCOUNT_ACTIVATION_DAYS = 7

# Email

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = config('EMAIL_HOST', default='')
EMAIL_PORT = config('EMAIL_PORT', default=587, cast=int)
EMAIL_HOST_USER = config('EMAIL_HOST_USER', default='')
EMAIL_HOST_PASSWORD = config('EMAIL_HOST_PASSWORD', default='')
EMAIL_USE_TLS = config('EMAIL_USE_TLS', default=True, cast=bool)
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = config("EMAIL_HOST", default="")
EMAIL_PORT = config("EMAIL_PORT", default=587, cast=int)
EMAIL_HOST_USER = config("EMAIL_HOST_USER", default="")
EMAIL_HOST_PASSWORD = config("EMAIL_HOST_PASSWORD", default="")
EMAIL_USE_TLS = config("EMAIL_USE_TLS", default=True, cast=bool)

# Messages framework

MESSAGE_TAGS = {
messages.ERROR: 'danger',
messages.ERROR: "danger",
}

# Logging

RAVEN_CONFIG = {
'dsn': config('RAVEN_DSN', default=''),
'release': raven.fetch_git_sha(BASE_DIR),
"dsn": config("RAVEN_DSN", default=""),
"release": raven.fetch_git_sha(BASE_DIR),
}

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '{levelname} - {asctime} - {module} - {message}',
'style': '{',
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": "{levelname} - {asctime} - {module} - {message}",
"style": "{",
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'verbose',
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "verbose",
},
'sentry': {
'level': 'WARNING',
'class':
'raven.contrib.django.raven_compat.handlers.SentryHandler',
"sentry": {
"level": "WARNING",
"class": "raven.contrib.django.raven_compat.handlers.SentryHandler",
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
'propagate': True,
"loggers": {
"django": {
"handlers": ["console"],
"level": os.getenv("DJANGO_LOG_LEVEL", "INFO"),
"propagate": True,
},
'': {
'handlers': ['sentry'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
"": {
"handlers": ["sentry"],
"level": os.getenv("DJANGO_LOG_LEVEL", "INFO"),
},
},
}

# REST framework

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly'
"DEFAULT_PERMISSION_CLASSES": [
"rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly"
],
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 10,
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
"DEFAULT_PAGINATION_CLASS": "rest_framework.pagination.PageNumberPagination",
"PAGE_SIZE": 10,
"DEFAULT_FILTER_BACKENDS": ["django_filters.rest_framework.DjangoFilterBackend"],
}

# Tests

SELENIUM_DRIVER = config('SELENIUM_DRIVER', default='firefox').lower()
SELENIUM_DRIVER = config("SELENIUM_DRIVER", default="firefox").lower()
6 changes: 4 additions & 2 deletions materials/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ def __init__(self, model=None, field=None, *args, **kwargs):
class AddReferenceForm(forms.Form):
inputRISFile = forms.FileField(
required=False,
widget=forms.ClearableFileInput(attrs={'multiple': True, 'onchange':'handleFileSelect();' }),
widget=forms.ClearableFileInput(attrs={'allow_multiple_selected': True, 'onchange':'handleFileSelect();' }),
# widget=forms.ClearableFileInput(attrs={'multiple': True, 'onchange':'handleFileSelect();' }),
help_text='Upload RIS file reference'
)
title = forms.CharField(
Expand Down Expand Up @@ -558,7 +559,8 @@ class AddDataForm(forms.Form):
# Uploads
uploaded_files = forms.FileField(
required=False,
widget=forms.ClearableFileInput(attrs={'multiple': True}),
widget=forms.ClearableFileInput(attrs={'allow_multiple_selected': True}),
# widget=forms.ClearableFileInput(attrs={'allow_multiple_selected': True}),
help_text=''
'Upload files containing anything that is relevant to the current '
'data (input files to a calculation, image of the sample, ...). '
Expand Down
34 changes: 17 additions & 17 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
Django==3.1.14
matplotlib==3.0.2
mysqlclient==1.4.2
numpy==1.21.0
Pillow==9.0.1
python-dateutil==2.8.0
sentry-sdk==0.7.3
raven==6.10.0
python-decouple==3.1
django-nested-admin==3.2.4
djangorestframework==3.12.2
coverage==4.5.3
selenium==3.141.0
requests==2.22.0
Sphinx==2.2.0
gunicorn==19.9.0
Django
matplotlib
mysqlclient
numpy
Pillow
python-dateutil
sentry-sdk
raven
python-decouple
django-nested-admin
djangorestframework
coverage
selenium
requests
Sphinx
gunicorn
sphinx_rtd_theme
django-filter>=2.4.0
django-filter
Loading