specify / specify7

Specify 7
https://www.specifysoftware.org/products/specify-7/
GNU General Public License v2.0
63 stars 36 forks source link

400 error when opening preparation form #874

Closed maxpatiiuk closed 3 years ago

maxpatiiuk commented 3 years ago

Screen Shot 2021-07-14 at 12 48 02 AM

This is the request that fails - http://workbench.test.specifycloud.org/api/specify/loanpreparation/?domainfilter=false&preparation_id=&isresolved=false&offset=0

invalid literal for int() with base 10: ''
maxpatiiuk commented 3 years ago

Also happens when saving Borrow:

ValueError at /api/specify/borrow/
invalid literal for int() with base 10: ''

Request Method: POST
Request URL: http://localhost/api/specify/borrow/
Django Version: 2.2.10
Python Executable: /opt/specify7/ve/bin/python
Python Version: 3.6.9
Python Path: ['/opt/specify7', '/opt/specify7', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/opt/specify7/ve/lib/python3.6/site-packages']
Server time: Tue, 13 Jul 2021 22:37:36 -0500
Installed Applications:
('django.contrib.sessions',
 'django.contrib.staticfiles',
 'django.contrib.contenttypes',
 'django.contrib.auth',
 'specifyweb.specify',
 'specifyweb.stored_queries',
 'specifyweb.businessrules',
 'specifyweb.express_search',
 'specifyweb.context',
 'specifyweb.attachment_gw',
 'specifyweb.frontend',
 'specifyweb.barvis',
 'specifyweb.report_runner',
 'specifyweb.interactions',
 'specifyweb.workbench',
 'specifyweb.notifications',
 'specifyweb.export',
 'specifyweb.raven_placeholder',
 'django_jsonfield_backport')
Installed Middleware:
['django.middleware.gzip.GZipMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'specifyweb.context.middleware.ContextMiddleware']

Traceback:

File "/opt/specify7/ve/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  115.                 response = self.process_exception_by_middleware(e, request)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  113.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/opt/specify7/specifyweb/specify/views.py" in wrapped
  20.         return view(request, *args, **kwargs)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/views/decorators/cache.py" in _cache_controlled
  31.             response = viewfunc(request, *args, **kw)

File "/opt/specify7/specifyweb/specify/views.py" in wrapped
  32.         return view(request, *args, **kwargs)

File "/opt/specify7/specifyweb/specify/views.py" in view
  62.             return dispatch_func(request, *args, **kwargs)

File "/opt/specify7/specifyweb/specify/api.py" in collection_dispatch
  180.                             request.GET.get('recordsetid', None))

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

File "/opt/specify7/specifyweb/specify/api.py" in post_resource
  266.     obj = create_obj(collection, agent, name, data)

File "/opt/specify7/specifyweb/specify/api.py" in create_obj
  349.     handle_to_many(collection, agent, obj, data)

File "/opt/specify7/specifyweb/specify/api.py" in handle_to_many
  529.                 rel_obj = create_obj(collection, agent, rel_model, rel_data, parent_obj=obj)

File "/opt/specify7/specifyweb/specify/api.py" in create_obj
  343.         autonumber_and_save(collection, agent.specifyuser, obj)

File "/opt/specify7/specifyweb/specify/autonumbering.py" in autonumber_and_save
  24.         obj.save()

File "/opt/specify7/specifyweb/specify/build_models.py" in save
  55.             return super(model, self).save(*args, **kwargs)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/base.py" in save
  741.                        force_update=force_update, update_fields=update_fields)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/base.py" in save_base
  779.                 force_update, using, update_fields,

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/base.py" in _save_table
  870.             result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/base.py" in _do_insert
  908.                                using=using, raw=raw)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/manager.py" in manager_method
  82.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/query.py" in _insert
  1186.         return query.get_compiler(using=using).execute_sql(return_id)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in execute_sql
  1367.             for sql, params in self.as_sql():

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in as_sql
  1311.                 for obj in self.query.objs

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in <listcomp>
  1311.                 for obj in self.query.objs

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in <listcomp>
  1310.                 [self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/sql/compiler.py" in prepare_value
  1251.             value = field.get_db_prep_save(value, connection=self.connection)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/fields/__init__.py" in get_db_prep_save
  793.         return self.get_db_prep_value(value, connection=connection, prepared=False)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/fields/__init__.py" in get_db_prep_value
  788.             value = self.get_prep_value(value)

File "/opt/specify7/ve/lib/python3.6/site-packages/django/db/models/fields/__init__.py" in get_prep_value
  1825.         return int(value)

Exception Type: ValueError at /api/specify/borrow/
Exception Value: invalid literal for int() with base 10: ''
Request information:
USER: Specifyuser object (1)

GET: No GET data

POST: No POST data

FILES: No FILES data

COOKIES:
csrftoken = '1dT8FWwTOIZq1t5LDJ8hYZAHy60HqyYXDWUL5LVmVpBbc8EwT7sG0BC9Wqzn7svG'
1.sp-print-on-save.CollectionObject.generateLabelChk = 'true'
collection = '4'
sessionid = 'l08tlokh9cbl4lhq2sg42lmns57rqolc'

META:
CELERY_BROKER_URL = 'redis://redis/0'
CELERY_RESULT_BACKEND = 'redis://redis/1'
CONTENT_LENGTH = '736'
CONTENT_TYPE = 'application/json'
CSRF_COOKIE = '1dT8FWwTOIZq1t5LDJ8hYZAHy60HqyYXDWUL5LVmVpBbc8EwT7sG0BC9Wqzn7svG'
DATABASE_HOST = 'mariadb'
DATABASE_NAME = 'specify'
DATABASE_PORT = '3306'
DJANGO_SETTINGS_MODULE = 'settings'
GATEWAY_INTERFACE = 'CGI/1.1'
HOME = '/home/specify'
HOSTNAME = '1511026da177'
HTTP_ACCEPT = 'application/json, text/javascript, */*; q=0.01'
HTTP_ACCEPT_ENCODING = 'gzip, deflate'
HTTP_ACCEPT_LANGUAGE = 'en-us'
HTTP_CONNECTION = 'close'
HTTP_COOKIE = 'csrftoken=1dT8FWwTOIZq1t5LDJ8hYZAHy60HqyYXDWUL5LVmVpBbc8EwT7sG0BC9Wqzn7svG; 1.sp-print-on-save.CollectionObject.generateLabelChk=true; collection=4; sessionid=l08tlokh9cbl4lhq2sg42lmns57rqolc'
HTTP_HOST = 'localhost'
HTTP_ORIGIN = 'http://localhost'
HTTP_REFERER = 'http://localhost/specify/view/borrow/new/'
HTTP_USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Safari/605.1.15'
HTTP_X_CSRFTOKEN = '1dT8FWwTOIZq1t5LDJ8hYZAHy60HqyYXDWUL5LVmVpBbc8EwT7sG0BC9Wqzn7svG'
HTTP_X_FORWARDED_FOR = '172.18.0.1'
HTTP_X_REAL_IP = '172.18.0.1'
HTTP_X_REQUESTED_WITH = 'XMLHttpRequest'
LOG_LEVEL = 'WARNING'
MASTER_NAME = 'master'
MASTER_PASSWORD = 'master'
OLDPWD = '/opt/specify7'
PATH = '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PATH_INFO = '/api/specify/borrow/'
PWD = '/opt/specify7'
QUERY_STRING = ''
REMOTE_ADDR = '172.18.0.9'
REMOTE_HOST = ''
REPORT_RUNNER_HOST = 'report-runner'
REPORT_RUNNER_PORT = '8080'
REQUEST_METHOD = 'POST'
RUN_MAIN = 'true'
SCRIPT_NAME = ''
SECRET_KEY = 'change this to some unique random string'
SERVER_NAME = '1511026da177'
SERVER_PORT = '8000'
SERVER_PROTOCOL = 'HTTP/1.0'
SERVER_SOFTWARE = 'WSGIServer/0.2'
SHLVL = '0'
SP7_DEBUG = 'true'
TZ = 'America/Chicago'
wsgi.errors = <_io.TextIOWrapper name='<stderr>' mode='w' encoding='ANSI_X3.4-1968'>
wsgi.file_wrapper = ''
wsgi.input = <django.core.handlers.wsgi.LimitedStream object at 0x7f055d435550>
wsgi.multiprocess = False
wsgi.multithread = True
wsgi.run_once = False
wsgi.url_scheme = 'http'
wsgi.version = '(1, 0)'

Settings:
Using settings module settings
ABSOLUTE_URL_OVERRIDES = {}
ADMINS = '()'
ADMIN_MEDIA_PREFIX = '/static/admin/'
ALLOWED_HOSTS = ['*']
ALLOW_SPECIFY6_PASSWORDS = '********************'
ALLOW_SUPPORT_LOGIN = False
ANONYMOUS_USER = None
APPEND_SLASH = True
AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend']
AUTH_LDAP_SERVER_URI = None
AUTH_PASSWORD_VALIDATORS = '********************'
AUTH_USER_MODEL = 'specify.Specifyuser'
CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS = 'default'
CACHE_MIDDLEWARE_KEY_PREFIX = '********************'
CACHE_MIDDLEWARE_SECONDS = 600
CELERY_BROKER_URL = 'redis://redis/0'
CELERY_RESULT_BACKEND = 'redis://redis/1'
CELERY_TASK_DEFAULT_QUEUE = 'specify'
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': {'ENGINE': 'specifyweb.hibernateboolsbackend.backends.mysql', 'NAME': 'specify', 'USER': 'master', 'PASSWORD': '********************', 'HOST': 'mariadb', 'PORT': '3306', 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}, 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_MAX_AGE': 0, 'OPTIONS': {}, 'TIME_ZONE': None}}
DATABASE_HOST = 'mariadb'
DATABASE_NAME = 'specify'
DATABASE_PORT = '3306'
DATABASE_ROUTERS = []
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 = ''
DEPOSITORY_DIR = '/volumes/static-files/depository'
DISABLE_AUDITING = False
DISALLOWED_USER_AGENTS = []
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_HOST_PASSWORD = '********************'
EMAIL_HOST_USER = ''
EMAIL_PORT = 25
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 = False
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 = "('django.contrib.sessions', 'django.contrib.staticfiles', 'django.contrib.contenttypes', 'django.contrib.auth', 'specifyweb.specify', 'specifyweb.stored_queries', 'specifyweb.businessrules', 'specifyweb.express_search', 'specifyweb.context', 'specifyweb.attachment_gw', 'specifyweb.frontend', 'specifyweb.barvis', 'specifyweb.report_runner', 'specifyweb.interactions', 'specifyweb.workbench', 'specifyweb.notifications', 'specifyweb.export', 'specifyweb.raven_placeholder', 'django_jsonfield_backport')"
INTERNAL_IPS = []
JAVA_PATH = '/usr/bin/java'
LANGUAGES = [('en-us', 'English')]
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 = "('/opt/specify7/frontend/locale',)"
LOGGING = {'version': 1, 'disable_existing_loggers': False, 'formatters': {'standard': {'format': '[%(asctime)s] [%(levelname)s] [%(name)s:%(lineno)s] %(message)s', 'datefmt': '%d/%b/%Y %H:%M:%S'}}, 'handlers': {'console': {'level': 'WARNING', 'class': 'logging.StreamHandler', 'formatter': 'standard'}}, 'loggers': {'django.request': {'handlers': ['console'], 'level': 'DEBUG', 'propagate': False}, 'specifyweb': {'handlers': ['console'], 'level': 'DEBUG', 'propagate': False}}}
LOGGING_CONFIG = 'logging.config.dictConfig'
LOGIN_REDIRECT_URL = '/'
LOGIN_URL = '/accounts/login/'
LOGOUT_REDIRECT_URL = None
MANAGERS = '()'
MASTER_NAME = 'master'
MASTER_PASSWORD = '********************'
MEDIA_ROOT = ''
MEDIA_URL = ''
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE = ['django.middleware.gzip.GZipMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'specifyweb.context.middleware.ContextMiddleware']
MIGRATION_MODULES = {}
MONTH_DAY_FORMAT = 'F j'
NOTIFICATION_TTL_DAYS = 7
NUMBER_GROUPING = 0
PASSWORD_HASHERS = '********************'
PASSWORD_RESET_TIMEOUT_DAYS = '********************'
PREPEND_WWW = False
RAVEN_CONFIG = None
REPORT_RUNNER_HOST = 'report-runner'
REPORT_RUNNER_PORT = '8080'
ROOT_URLCONF = 'specifyweb.urls'
RO_MODE = False
SA_DATABASE_URL = 'mysql://master:master@mariadb:3306/specify?charset=utf8'
SA_POOL_RECYCLE = 3600
SCHEMA_LANGUAGE = 'en'
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.file'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_FILE_PATH = None
SESSION_SAVE_EVERY_REQUEST = False
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer'
SETTINGS_MODULE = '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
SPECIFY_CONFIG_DIR = '/opt/Specify/config'
SPECIFY_THICK_CLIENT = '/opt/Specify'
STATICFILES_DIRS = "(('config', '/opt/Specify/config'),)"
STATICFILES_FINDERS = "('django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder')"
STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATS_URL = 'https://stats.specifycloud.org/capture'
SUPPORT_LOGIN_TTL = 300
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': {'context_processors': ['django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages']}}]
TEST_NON_SERIALIZED_APPS = []
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
THICK_CLIENT_LOCATION = '/opt/Specify'
THOUSAND_SEPARATOR = ','
TIME_FORMAT = 'P'
TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
TIME_ZONE = 'America/Chicago'
USE_I18N = True
USE_L10N = True
USE_THOUSAND_SEPARATOR = False
USE_TZ = False
USE_X_FORWARDED_HOST = False
USE_X_FORWARDED_PORT = False
VERSION = '(debug)'
WB_UPLOAD_LOG_DIR = '/home/specify/wb_upload_logs'
WEB_ATTACHMENT_COLLECTION = None
WEB_ATTACHMENT_KEY = '********************'
WEB_ATTACHMENT_REQUIRES_KEY_FOR_GET = '********************'
WEB_ATTACHMENT_URL = None
WSGI_APPLICATION = None
X_FRAME_OPTIONS = 'SAMEORIGIN'
YEAR_MONTH_FORMAT = 'F Y'

You're seeing this error because you have DEBUG = True in your
Django settings file. Change that to False, and Django will
display a standard page generated by the handler for this status code.
maxpatiiuk commented 3 years ago

See https://github.com/specify/specify7/issues/650#issuecomment-880833659