Closed Lachele closed 2 years ago
I got in there and read that error in detail. This is the bit that we can act on:
File "/website/glycam-django/glycamweb/cb/views.py" in download
218. log.debug("buildOptions: \n" + str(buildOptions))
Exception Type: UnboundLocalError at /cb/download/
Exception Value: local variable 'buildOptions' referenced before assignment
Offending code is removed.
Tool: Hybrid N-glycan builder: https://dev.glycam.org/lib/chnlib/
Bug Description: Build fails with error "UnboundLocalError at /cb/download/" until something is built from the CB itself, first. Full text of error message below.
I tested Chrome and Firefox in a Ubuntu-flavored Linux.
To Reproduce:
Expected behavior I expect the library to work even if the Carbohydrate Builder interface has never been used before.
Screenshots Probably not necessary.
Device & OS Details Firefox in Pop!_OS 20.04; Firefox and Chrome in Kubuntu 18.04.4.
Additional context
Initially found while testing Selenium... Lol.
Full text of the error message:
http://dev.glycam.org/cb/download/ 2.2.2 UnboundLocalError local variable 'buildOptions' referenced before assignment /website/glycam-django/glycamweb/cb/views.py in download, line 218 /usr/local/bin/python 3.7.5 ['..', '/programs/GRPC/BatchCompute', '/programs/gems/', '/website/glycam-django/glycamweb', '/usr/local/bin', '/programs/gems', '/programs/GRPC/BatchCompute', '/programs/GRPC/JSON', '/usr/local/lib/python37.zip', '/usr/local/lib/python3.7', '/usr/local/lib/python3.7/lib-dynload', '/usr/local/lib/python3.7/site-packages', '/programs/gems', '/programs/gems/gemsModules', '/programs/gems', '/programs/GRPC/JSON', '/programs/gems', '/programs/GRPC/BatchCompute', '/programs/GRPC/BatchCompute', '/programs/gems', '/programs/GRPC/BatchCompute', '/website/glycam-django/glycamweb/pdb', '/programs/gems/', '/programs/GRPC/JSON', '/programs/GRPC/BatchCompute', '/programs/site_deps/Grafting/program/'] Tue, 5 May 2020 23:01:51 -0400
Environment:
Request Method: GET Request URL: http://dev.glycam.org/cb/download/
Django Version: 2.2.2 Python Version: 3.7.5 Installed Applications: ['core.apps.CoreConfig', 'home.apps.HomeConfig', 'cb.apps.CbConfig', 'feedback.apps.FeedbackConfig', 'txt.apps.TxtConfig', 'gr.apps.GrConfig', 'oms.apps.OmsConfig', 'lib.apps.LibConfig', 'varmean.apps.VarmeanConfig', 'status.apps.StatusConfig', 'drawglycan.apps.DrawglycanConfig', 'gf.apps.GfConfig', 'gp.apps.GpConfig', 'ad.apps.AdConfig', 'pdb.apps.PdbConfig', 'portal.apps.PortalConfig', 'project.apps.ProjectConfig', 'md5sum.apps.Md5sumConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'crispy_forms', 'rest_framework', 'registration', 'choices.apps.ChoicesConfig', 'steps.apps.StepsConfig', 'json_api.apps.JsonApiConfig', 'url.apps.UrlConfig', 'md.apps.MdConfig'] Installed Middleware: ['django.middleware.common.CommonMiddleware', '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']
Traceback:
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
File "/website/glycam-django/glycamweb/cb/views.py" in download
Exception Type: UnboundLocalError at /cb/download/ Exception Value: local variable 'buildOptions' referenced before assignment
Request information USER
AnonymousUser GET
No GET data POST
No POST data FILES
No FILES data COOKIES Variable Value csrftoken
'cmfl5coOZT4G1grkYLX1wbmIAPHcsCwVNiVrKPyaP417qa9PGH4AVYDNTFd4wf9X'
_ga
'GA1.2.1409876372.1563680332'
sessionid
'vi8zt3m47genvtansn3nq6mxurilazxo'
META Variable Value CSRF_COOKIE
'cmfl5coOZT4G1grkYLX1wbmIAPHcsCwVNiVrKPyaP417qa9PGH4AVYDNTFd4wf9X'
HTTP_ACCEPT
'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8'
HTTP_ACCEPT_ENCODING
'gzip, deflate, br'
HTTP_ACCEPT_LANGUAGE
'en-US,en;q=0.5'
HTTP_CONNECTION
'upgrade'
HTTP_COOKIE
('csrftoken=cmfl5coOZT4G1grkYLX1wbmIAPHcsCwVNiVrKPyaP417qa9PGH4AVYDNTFd4wf9X; ' '_ga=GA1.2.1409876372.1563680332; sessionid=vi8zt3m47genvtansn3nq6mxurilazxo')
HTTP_HOST
'dev.glycam.org'
HTTP_REFERER
'https://dev.glycam.org/lib/chnlib/'
HTTP_UPGRADE_INSECURE_REQUESTS
'1'
HTTP_USER_AGENT
'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:75.0) Gecko/20100101 Firefox/75.0'
HTTP_X_FORWARDED_FOR
'10.0.0.3, 10.0.33.191, 10.0.21.6'
HTTP_X_FORWARDED_HOST
'dev.glycam.org'
HTTP_X_FORWARDED_PORT
'80'
HTTP_X_FORWARDED_PROTO
'http'
HTTP_X_FORWARDED_SERVER
'eb2bfa3030c0'
HTTP_X_REAL_IP
'10.0.21.6'
PATH_INFO
'/cb/download/'
QUERY_STRING
''
RAW_URI
'/cb/download/'
REMOTE_ADDR
'10.0.21.7'
REMOTE_PORT
'46572'
REQUEST_METHOD
'GET'
SCRIPT_NAME
''
SERVER_NAME
'0.0.0.0'
SERVER_PORT
'8000'
SERVER_PROTOCOL
'HTTP/1.1'
SERVER_SOFTWARE
'gunicorn/20.0.4'
gunicorn.socket
<socket.socket fd=9, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('10.0.21.3', 8000), raddr=('10.0.21.7', 46572)>
wsgi.errors
<gunicorn.http.wsgi.WSGIErrorsWrapper object at 0x7f3750b36bd0>
wsgi.file_wrapper
''
wsgi.input
<gunicorn.http.body.Body object at 0x7f3750b368d0>
wsgi.input_terminated
True
wsgi.multiprocess
False
wsgi.multithread
False
wsgi.run_once
False
wsgi.url_scheme
'http'
wsgi.version
(1, 0)
Settings Using settings module glycamweb.settings Setting Value ABSOLUTE_URL_OVERRIDES
{}
ACCOUNT_ACTIVATION_DAYS
7
ADMINS
[]
ALLOWED_HOSTS
['*']
APPEND_SLASH
True
AUTHENTICATION_BACKENDS
['django.contrib.auth.backends.ModelBackend']
AUTH_PASSWORD_VALIDATORS
'****'
AUTH_USER_MODEL
'auth.User'
BASE_DIR
'/website/glycam-django/glycamweb'
CACHES
{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS
'default'
CACHE_MIDDLEWARE_KEY_PREFIX
'****'
CACHE_MIDDLEWARE_SECONDS
600
CORS_ORIGIN_ALLOW_ALL
True
CRISPY_TEMPLATE_PACK
'bootstrap'
CSRF_COOKIE_AGE
31449600
CSRF_COOKIE_DOMAIN
None
CSRF_COOKIE_HTTPONLY
False
CSRF_COOKIE_NAME
'csrftoken'
CSRF_COOKIE_PATH
'/'
CSRF_COOKIE_SAMESITE
'Lax'
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': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.mysql', 'HOST': 'gw-django_db', 'NAME': 'GLYCAMWebDjangoDB', 'OPTIONS': {}, 'PASSWORD': '****', 'PORT': '3306', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'webdev'}}
DATABASE_ROUTERS
[]
DATA_DIR
'/website/userdata/'
DATA_UPLOAD_MAX_MEMORY_SIZE
2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS
1000
DATETIME_FORMAT
'N j, Y, P'
DATETIME_INPUT_FORMATS
['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
DATE_FORMAT
'N j, Y'
DATE_INPUT_FORMATS
['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y']
DEBUG
True
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
'webmaster@localhost'
DEFAULT_INDEX_TABLESPACE
''
DEFAULT_TABLESPACE
''
DISALLOWED_USER_AGENTS
[]
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
'smtp.gmail.com'
EMAIL_HOST_PASSWORD
'****'
EMAIL_HOST_USER
'glycam@gmail.com'
EMAIL_PORT
587
EMAIL_SSL_CERTFILE
None
EMAIL_SSL_KEYFILE
'****'
EMAIL_SUBJECT_PREFIX
'[Django] '
EMAIL_TIMEOUT
None
EMAIL_USE_LOCALTIME
False
EMAIL_USE_SSL
False
EMAIL_USE_TLS
True
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
[]
FORCE_SCRIPT_NAME
None
FORMAT_MODULE_PATH
None
FORM_RENDERER
'django.forms.renderers.DjangoTemplates'
IGNORABLE_404_URLS
[]
INSTALLED_APPS
['core.apps.CoreConfig', 'home.apps.HomeConfig', 'cb.apps.CbConfig', 'feedback.apps.FeedbackConfig', 'txt.apps.TxtConfig', 'gr.apps.GrConfig', 'oms.apps.OmsConfig', 'lib.apps.LibConfig', 'varmean.apps.VarmeanConfig', 'status.apps.StatusConfig', 'drawglycan.apps.DrawglycanConfig', 'gf.apps.GfConfig', 'gp.apps.GpConfig', 'ad.apps.AdConfig', 'pdb.apps.PdbConfig', 'portal.apps.PortalConfig', 'project.apps.ProjectConfig', 'md5sum.apps.Md5sumConfig', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', 'crispy_forms', 'rest_framework', 'registration', 'choices.apps.ChoicesConfig', 'steps.apps.StepsConfig', 'json_api.apps.JsonApiConfig', 'url.apps.UrlConfig', 'md.apps.MdConfig']
INTERNAL_IPS
[]
JSON_API_VERSION
'****'
LANGUAGES
[('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('dsb', 'Lower Sorbian'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-co', 'Colombian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gd', 'Scottish Gaelic'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hsb', 'Upper Sorbian'), ('hu', 'Hungarian'), ('hy', 'Armenian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kab', 'Kabyle'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmål'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI
['he', 'ar', 'fa', 'ur']
LANGUAGE_CODE
'en-us'
LANGUAGE_COOKIE_AGE
None
LANGUAGE_COOKIE_DOMAIN
None
LANGUAGE_COOKIE_NAME
'django_language'
LANGUAGE_COOKIE_PATH
'/'
LOCALE_PATHS
[]
LOGGING
{}
LOGGING_CONFIG
'logging.config.dictConfig'
LOGIN_REDIRECT_URL
'/accounts/login/'
LOGIN_URL
'/accounts/login/'
LOGOUT_REDIRECT_URL
None
MANAGERS
[]
MEDIA_ROOT
'/website/uploads/'
MEDIA_URL
''
MESSAGE_STORAGE
'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE
['django.middleware.common.CommonMiddleware', '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']
MIGRATION_MODULES
{}
MONTH_DAY_FORMAT
'F j'
NUMBER_GROUPING
0
PASSWORD_HASHERS
'****'
PASSWORD_RESET_TIMEOUT_DAYS
'****'
PREPEND_WWW
False
REGISTRATION_AUTO_LOGIN
True
REGISTRATION_DEFAULT_FROM_EMAIL
'glycam@gmail.com'
REST_FRAMEWORK
{'DEFAULT_PERMISSION_CLASSES': ('rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',)}
ROOT_URLCONF
'glycamweb.urls'
SECRET_KEY
'****'
SECURE_BROWSER_XSS_FILTER
False
SECURE_CONTENT_TYPE_NOSNIFF
False
SECURE_HSTS_INCLUDE_SUBDOMAINS
False
SECURE_HSTS_PRELOAD
False
SECURE_HSTS_SECONDS
0
SECURE_PROXY_SSL_HEADER
None
SECURE_REDIRECT_EXEMPT
[]
SECURE_SSL_HOST
None
SECURE_SSL_REDIRECT
False
SERVER_EMAIL
'root@localhost'
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_SAMESITE
'Lax'
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.PickleSerializer'
SETTINGS_MODULE
'glycamweb.settings'
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
[]
STATICFILES_FINDERS
['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATICFILES_STORAGE
'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT
'/website/glycam-django/glycamweb/static'
STATIC_URL
'/static/'
TEMPLATES
[{'APP_DIRS': True, 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/website/glycam-django/glycamweb/templates'], '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']}}]
TEST_NON_SERIALIZED_APPS
[]
TEST_RUNNER
'django.test.runner.DiscoverRunner'
THOUSAND_SEPARATOR
','
TIME_FORMAT
'P'
TIME_INPUT_FORMATS
['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE
'America/New_York'
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
'glycamweb.wsgi.application'
X_FRAME_OPTIONS
'SAMEORIGIN'
YEAR_MONTH_FORMAT
'F Y'
_UPLOAD_ROOT
'/website/userdata/tmp_uploads/'