ouhft / COPE

Project Repository for Work Package 4 of the COPE Transplant Trial
https://cope.nds.ox.ac.uk
1 stars 0 forks source link

ISE: ImproperlyConfigured at /en-gb/wp4/adverse-event/670/ Using ModelFormMixin (base class of AdverseEventUpdateView) without the 'fields' attribute is prohibited. #306

Closed marshalc closed 7 years ago

marshalc commented 7 years ago
Internal Server Error: /en-gb/wp4/adverse-event/670/

ImproperlyConfigured at /en-gb/wp4/adverse-event/670/
Using ModelFormMixin (base class of AdverseEventUpdateView) without the 'fields' attribute is prohibited.

Request Method: GET
Request URL: https://cope.nds.ox.ac.uk/en-gb/wp4/adverse-event/670/
Django Version: 1.11.2
Python Executable: /sites/.virtualenvs/py3_cope/bin/python3
Python Version: 3.5.2
Python Path: ['/sites/py3_cope/cope_repo', '/sites/.virtualenvs/py3_cope/bin', '/sites/py3_cope/cope_repo/${PYTHONPATH}', '/sites/py3_cope/cope_repo', '/sites/.virtualenvs/py3_cope/lib/python35.zip', '/sites/.virtualenvs/py3_cope/lib/python3.5', '/sites/.virtualenvs/py3_cope/lib/python3.5/plat-x86_64-linux-gnu', '/sites/.virtualenvs/py3_cope/lib/python3.5/lib-dynload', '/usr/lib/python3.5', '/usr/lib/python3.5/plat-x86_64-linux-gnu', '/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages', '/sites/.virtualenvs/py3_cope/src/django-crispy-forms']
Server time: Tue, 19 Sep 2017 09:48:39 +0100
Installed Applications:
['dal',
'dal_select2',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
'django.contrib.admin',
'django.contrib.admindocs',
'crispy_forms',
'reversion',
'reversion_compare',
'wp4.compare',
'wp4.locations',
'wp4.staff',
'wp4.perfusion_machine',
'wp4.health_economics',
'wp4.samples',
'wp4.adverse_event',
'wp4.followups',
'wp4.administration',
'wp4.theme',
'djangosecure',
'gunicorn']
Installed Middleware:
['djangosecure.middleware.SecurityMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'reversion.middleware.RevisionMiddleware',
'config.middleware.activate_timezone.TimezoneMiddleware']

Traceback:  

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/core/handlers/exception.py" in inner
 41.             response = get_response(request)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/core/handlers/base.py" in _legacy_get_response
 249.             response = self._get_response(request)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
 187.                 response = self.process_exception_by_middleware(e, request)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/core/handlers/base.py" in _get_response
 185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/usr/lib/python3.5/contextlib.py" in inner
 30.                 return func(*args, **kwds)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/views/generic/base.py" in view
 68.             return self.dispatch(request, *args, **kwargs)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/braces/views/_access.py" in dispatch
 102.             request, *args, **kwargs)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/braces/views/_access.py" in dispatch
 201.             request, *args, **kwargs)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/views/generic/base.py" in dispatch
 88.         return handler(request, *args, **kwargs)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/views/generic/edit.py" in get
 236.         return super(BaseUpdateView, self).get(request, *args, **kwargs)

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/views/generic/edit.py" in get
 174.         return self.render_to_response(self.get_context_data())

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/views/generic/edit.py" in get_context_data
 93.             kwargs['form'] = self.get_form()

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/views/generic/edit.py" in get_form
 44.             form_class = self.get_form_class()

File "/sites/py3_cope/cope_repo/wp4/adverse_event/views.py" in get_form_class
 109.         return super(AjaxFormMixin, self).get_form_class()

File "/sites/.virtualenvs/py3_cope/lib/python3.5/site-packages/django/views/generic/edit.py" in get_form_class
 129.                     "the 'fields' attribute is prohibited." % self.__class__.__name__

Exception Type: ImproperlyConfigured at /en-gb/wp4/adverse-event/670/
Exception Value: Using ModelFormMixin (base class of AdverseEventUpdateView) without the 'fields' attribute is prohibited.
Request information:
USER: Laurent Weekers

GET: No GET data

POST: No POST data

FILES: No FILES data

COOKIES:
csrftoken = 'Hrmmog33VUE7UW0tLYenOemgSmvJEoP2un7siq3gApraY4LqMnTaF3RMS9qDHsrQ'
sessionid = 'iq0zbq2d4r3eptfmop0zuv5a217r5f8i'

META:
CSRF_COOKIE = 'Hrmmog33VUE7UW0tLYenOemgSmvJEoP2un7siq3gApraY4LqMnTaF3RMS9qDHsrQ'
HTTP_ACCEPT = 'text/html, application/xhtml+xml, */*'
HTTP_ACCEPT_ENCODING = 'gzip, deflate'
HTTP_ACCEPT_LANGUAGE = 'fr-BE'
HTTP_CONNECTION = 'close'
HTTP_COOKIE = 'csrftoken=Hrmmog33VUE7UW0tLYenOemgSmvJEoP2un7siq3gApraY4LqMnTaF3RMS9qDHsrQ; sessionid=iq0zbq2d4r3eptfmop0zuv5a217r5f8i'
HTTP_DNT = '1'
HTTP_HOST = 'cope.nds.ox.ac.uk'
HTTP_REFERER = 'https://cope.nds.ox.ac.uk/en-gb/wp4/adverse-event/670/details/'
HTTP_USER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko'
HTTP_X_FORWARDED_FOR = '139.165.96.129'
HTTP_X_FORWARDED_PROTOCOL = 'https'
HTTP_X_REAL_IP = '139.165.96.129'
HTTP_X_SCHEME = 'https'
PATH_INFO = '/en-gb/wp4/adverse-event/670/'
QUERY_STRING = ''
RAW_URI = '/en-gb/wp4/adverse-event/670/'
REMOTE_ADDR = "b''"
REQUEST_METHOD = 'GET'
SCRIPT_NAME = ''
SERVER_NAME = 'cope.nds.ox.ac.uk'
SERVER_PORT = '80'
SERVER_PROTOCOL = 'HTTP/1.0'
SERVER_SOFTWARE = 'gunicorn/19.7.1'
gunicorn.socket = <socket.socket fd=13, family=AddressFamily.AF_UNIX, type=SocketKind.SOCK_STREAM, proto=0, laddr=/sites/py3_cope/var/run/wsgi.socket>
wsgi.errors = <gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f93cbeb7ba8>
wsgi.file_wrapper = ''
wsgi.input = <gunicorn.http.body.Body object at 0x7f93cbeb73c8>
wsgi.multiprocess = True
wsgi.multithread = False
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version = 

Settings:
Using settings module config.settings.production
ABSOLUTE_URL_OVERRIDES = {}
ACCOUNT_ALLOW_REGISTRATION = True
ACCOUNT_AUTHENTICATION_METHOD = 'username'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ADD_REVERSION_ADMIN = True
ADMINS = [('Carl Marshall', 'carl.marshall@nds.ox.ac.uk')]
ALLOWED_HOSTS = ['cope.nds.ox.ac.uk', 'localhost', '127.0.0.1']
APPEND_SLASH = True
APPS_DIR = <Path:/sites/py3_cope/cope_repo/wp4>
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'staff.Person'
AUTOSLUG_SLUGIFY_FUNCTION = 'slugify.slugify'
BASE_DIR = '/sites/py3_cope/cope_repo'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache', 'LOCATION': ''}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
CRISPY_TEMPLATE_PACK = 'bootstrap3'
CSRF_COOKIE_AGE = 31449600
CSRF_COOKIE_DOMAIN = None
CSRF_COOKIE_HTTPONLY = False
CSRF_COOKIE_NAME = 'csrftoken'
CSRF_COOKIE_PATH = '/'
CSRF_COOKIE_SECURE = False
CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN'
CSRF_TRUSTED_ORIGINS = []
CSRF_USE_SESSIONS = False
DATABASES = {'default': {'CONN_MAX_AGE': 0, 'TIME_ZONE': None, 'USER': '', 'NAME': 'db.sqlite3', 'TEST': {'COLLATION': None, 'CHARSET': None, 'MIRROR': None, 'NAME': None}, 'ENGINE': 'django.db.backends.sqlite3', 'ATOMIC_REQUESTS': True, 'OPTIONS': {}, 'AUTOCOMMIT': True, 'HOST': '', 'PASSWORD': '********************', 'PORT': ''}}
DATABASE_ROUTERS = []
DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000
DATETIME_FORMAT = 'N j, Y, P'
DATETIME_INPUT_FORMATS = ['%d-%m-%Y %H:%M', '%Y-%m-%d %H:%M', '%d/%m/%Y %H:%M', '%Y/%m/%d %H:%M']
DATE_FORMAT = 'N j, Y'
DATE_INPUT_FORMATS = ['%d-%m-%Y', '%Y-%m-%d', '%d/%m/%Y', '%Y/%m/%d']
DEBUG = False
DEBUG_PROPAGATE_EXCEPTIONS = False
DECIMAL_SEPARATOR = '.'
DEFAULT_CHARSET = 'utf-8'
DEFAULT_CONTENT_TYPE = 'text/html'
DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEFAULT_FROM_EMAIL = 'COPE DB<no-reply@cope.nds.ox.ac.uk>'
DEFAULT_INDEX_TABLESPACE = ''
DEFAULT_TABLESPACE = ''
DISALLOWED_USER_AGENTS = []
DJANGO_APPS = ['django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin', 'django.contrib.admindocs']
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_FILE_PATH = '/sites/cope/tmp'
EMAIL_HOST = 'smtp.ox.ac.uk'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
EMAIL_SSL_CERTFILE = None
EMAIL_SSL_KEYFILE = '********************'
EMAIL_SUBJECT_PREFIX = '[Cope DB] '
EMAIL_TIMEOUT = None
EMAIL_USE_LOCALTIME = False
EMAIL_USE_SSL = False
EMAIL_USE_TLS = False
ENV_FILE = '/sites/py3_cope/cope_repo/config/settings/.env'
FILE_CHARSET = 'utf-8'
FILE_UPLOAD_DIRECTORY_PERMISSIONS = None
FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler']
FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440
FILE_UPLOAD_PERMISSIONS = None
FILE_UPLOAD_TEMP_DIR = None
FIRST_DAY_OF_WEEK = 0
FIXTURE_DIRS = ['/sites/py3_cope/cope_repo/wp4/fixtures', '/sites/py3_cope/cope_repo/config/fixtures']
FORCE_SCRIPT_NAME = None
FORMAT_MODULE_PATH = None
FORM_RENDERER = 'django.forms.renderers.DjangoTemplates'
IGNORABLE_404_URLS = []
INSTALLED_APPS = ['dal', 'dal_select2', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'django.contrib.admin', 'django.contrib.admindocs', 'crispy_forms', 'reversion', 'reversion_compare', 'wp4.compare', 'wp4.locations', 'wp4.staff', 'wp4.perfusion_machine', 'wp4.health_economics', 'wp4.samples', 'wp4.adverse_event', 'wp4.followups', 'wp4.administration', 'wp4.theme', 'djangosecure', 'gunicorn']
INTERNAL_IPS = []
LANGUAGES = [('en-gb', 'Great Britain'), ('fr-be', 'Belgium'), ('nl-nl', 'Netherlands')]
LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE = 'en-gb'
LANGUAGE_COOKIE_AGE = None
LANGUAGE_COOKIE_DOMAIN = None
LANGUAGE_COOKIE_NAME = 'django_language'
LANGUAGE_COOKIE_PATH = '/'
LOCALE_PATHS = ['/sites/py3_cope/cope_repo/locale']
LOCAL_APPS = ['wp4.compare', 'wp4.locations', 'wp4.staff', 'wp4.perfusion_machine', 'wp4.health_economics', 'wp4.samples', 'wp4.adverse_event', 'wp4.followups', 'wp4.administration', 'wp4.theme']
LOGGING = {'formatters': {'verbose': {'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'}}, 'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}}, 'version': 1, 'loggers': {'django.request': {'level': 'ERROR', 'handlers': ['mail_admins'], 'propagate': True}, 'loggers': {'django.security.DisallowedHost': {'level': 'ERROR', 'handlers': ['console', 'mail_admins'], 'propagate': True}}}, 'handlers': {'console': {'level': 'DEBUG', 'formatter': 'verbose', 'class': 'logging.StreamHandler'}, 'mail_admins': {'filters': ['require_debug_false'], 'level': 'ERROR', 'class': 'django.utils.log.AdminEmailHandler'}}, 'disable_existing_loggers': False}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/accounts/login/'
LOGOUT_REDIRECT_URL = '/'
MANAGERS = [('Carl Marshall', 'carl.marshall@nds.ox.ac.uk')]
MEDIA_ROOT = '/sites/py3_cope/htdocs/media'
MEDIA_URL = '/media/'
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MESSAGE_TAGS = {40: 'danger'}
MIDDLEWARE = None
MIDDLEWARE_CLASSES = ['djangosecure.middleware.SecurityMiddleware', 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'reversion.middleware.RevisionMiddleware', 'config.middleware.activate_timezone.TimezoneMiddleware']
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
PREPEND_WWW = False
REDIRECT_FIELD_NAME = 'redirect_to'
ROOT_DIR = <Path:/sites/py3_cope/cope_repo>
ROOT_URLCONF = 'config.urls'
SECRET_KEY = '********************'
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_FRAME_DENY = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
SECURE_HSTS_PRELOAD = False
SECURE_HSTS_SECONDS = 60
SECURE_PROXY_SSL_HEADER = 
SECURE_REDIRECT_EXEMPT = []
SECURE_SSL_HOST = None
SECURE_SSL_REDIRECT = True
SECURITY_MIDDLEWARE = ['djangosecure.middleware.SecurityMiddleware']
SERVER_EMAIL = 'COPE DB<no-reply@cope.nds.ox.ac.uk>'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_AGE = 1209600
SESSION_COOKIE_DOMAIN = None
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_NAME = 'sessionid'
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SECURE = False
SESSION_ENGINE = 'django.contrib.sessions.backends.db'
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE = 'config.settings.production'
SHORT_DATETIME_FORMAT = 'm/d/Y P'
SHORT_DATE_FORMAT = 'm/d/Y'
SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
SILENCED_SYSTEM_CHECKS = []
SITE_ID = 1
STATICFILES_DIRS = ['/sites/py3_cope/cope_repo/wp4/theme/static', '/sites/py3_cope/cope_repo/docs/_static']
STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = '/sites/py3_cope/htdocs/'
STATIC_URL = '/static/'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/sites/py3_cope/cope_repo/wp4/theme/templates'], 'OPTIONS': {'debug': False, 'loaders': [('django.template.loaders.cached.Loader', ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader'])], 'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.i18n', 'django.template.context_processors.tz', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.contrib.messages.context_processors.messages']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THIRD_PARTY_APPS = ['crispy_forms', 'reversion', 'reversion_compare']
THIRD_PARTY_PRE_DJANGO_APPS = ['dal', 'dal_select2']
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'UTC'
USE_ETAGS = False
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = True
USE_X_FORWARDED_HOST = False
USE_X_FORWARDED_PORT = False
WSGI_APPLICATION = 'config.wsgi.application'
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'
marshalc commented 7 years ago

A series of 6 errors this morning, with either S/AE 670 or 577 and Laurent Weekers as the user.

Local testing shows that when logged in as Laurent, this error is generated when trying to edit (view works fine) the S/AE.

Investigating...

marshalc commented 7 years ago

It's possible they were trying to get in to update the contact details for the event...

From: l.weekers@chu.ulg.ac.be [mailto:l.weekers@chu.ulg.ac.be] 
Sent: 18 September 2017 16:02
To: COPE DB <no-reply@cope.nds.ox.ac.uk>
Cc: Jacques Pirenne <jacques.pirenne@uzleuven.be>; Ina Jochmans <ina.jochmans@uzleuven.be>; sarah mertens <sarah.mertens@uzleuven.be>; Ally Bradley <ally.bradley@nds.ox.ac.uk>; j monard <j.monard@chu.ulg.ac.be>
Subject: Re: Serious Adverse Event Updated - WP445003L

Could you please put Mrs J.Monard in copy of this mails since she is charge for encoding this information in our center ?

Than you

Dr. Laurent WEEKERS
Néphrologie-Transplantation
CHU Sart-Tilman B35
4000 Liège

Ligne Directe:  +32(0)4.284.45.20. (Sart-Tilman)
Secrétariat:    +32(0)4.270.31.43. 
Fax:            +32(0)4.270.31.71. (NDB)
               +32(0)4.366.83.37  (Sart-Tilman)

----- Original Message -----
From: "COPE DB" <no-reply@cope.nds.ox.ac.uk>
To: "Jacques Pirenne" <jacques.pirenne@uzleuven.be>, "ina jochmans" <ina.jochmans@uzleuven.be>, "sarah mertens" <sarah.mertens@uzleuven.be>, "WEEKERS Laurent" <L.Weekers@chu.ulg.ac.be>
Cc: "ally bradley" <ally.bradley@nds.ox.ac.uk>
Sent: Monday, September 18, 2017 3:35:35 PM
Subject: Serious Adverse Event Updated - WP445003L

Visit https://cope.nds.ox.ac.uk/en-gb/wp4/adverse-event/577/details/ for more details. The Local Investigator is Laurent Weekers and has been emailed at L.Weekers@chu.ulg.ac.be.
marshalc commented 7 years ago

Email forwarded from Ally, since Laurent did not notice the "no-reply" in the email address to cope.

marshalc commented 7 years ago

Fixed: Missing a form_class definition from AdverseEventUpdateView - this was hidden for admin/staff users because of an override put in place for categorisation of events.

marshalc commented 7 years ago

Code rebranched into a 0.8.5 branch, and merged with test (so now deployed on test server). There was a bit of a moment where the test server was showing 502 errors, but then it cleared up with no apparent intervention from me, so I'm wondering if there was some server configuration going on on the shared host (though nothing in the status blog about it). At the time of writing the Test Server is running the 0.8.5 release... I'll try and do a production release in the morning.

marshalc commented 7 years ago

0.8.5 released to production with this fix in it now.