TypeError at /insights/salary/

'NoneType' object is not subscriptable
Request Method: GET
Request URL: http://talentup.io/insights/salary/?position=sales%20operations&location=algeria
Django Version: 5.1.7
Exception Type: TypeError
Exception Value:
'NoneType' object is not subscriptable
Exception Location: /usr/src/app/insights/backend/benefits.py, line 53, in getBenefits
Raised during: insights.views.salary
Python Executable: /usr/local/bin/python
Python Version: 3.10.16
Python Path:
['/usr/src/app',
 '/usr/local/lib/python310.zip',
 '/usr/local/lib/python3.10',
 '/usr/local/lib/python3.10/lib-dynload',
 '/usr/local/lib/python3.10/site-packages']
Server time: Thu, 05 Jun 2025 17:37:37 +0000

Traceback Switch to copy-and-paste view

  • /usr/src/app/insights/backend/benefits.py, line 51, in getBenefits
    1. def getBenefits(res, ratio, ctxtSearch=None):  
    2.     try:
    3.         position = res['hits']['hits'][0]['_source']['position']['name']
    4.     except:
    5.         pass
    6.     try:
    1.         location = res['hits']['hits'][0]['_source']['location']
    1.     except:
    2.         location = {'city':ctxtSearch['location'], 'country':ctxtSearch['country']}
    3.         pass
    4.     local_benefits = []
    5.     for i in res['hits']['hits']:
    Local vars
    Variable Value
    ctxtSearch
    None
    ratio
    149.326762
    res
    {'_shards': {'failed': 0, 'skipped': 0, 'successful': 5, 'total': 5},
     'hits': {'hits': [], 'max_score': None, 'total': 0},
     'timed_out': False,
     'took': 34}
  • During handling of the above exception (list index out of range), another exception occurred:

  • /usr/local/lib/python3.10/site-packages/django/core/handlers/exception.py, line 55, in inner
    1.         return inner
    2.     else:
    3.         @wraps(get_response)
    4.         def inner(request):
    5.             try:
    1.                 response = get_response(request)
    1.             except Exception as exc:
    2.                 response = response_for_exception(request, exc)
    3.             return response
    4.         return inner
    Local vars
    Variable Value
    exc
    TypeError("'NoneType' object is not subscriptable")
    get_response
    <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7f1de030cd30>>
    request
    <WSGIRequest: GET '/insights/salary/?position=sales%20operations&location=algeria'>
  • /usr/local/lib/python3.10/site-packages/django/core/handlers/base.py, line 197, in _get_response
    1.         if response is None:
    2.             wrapped_callback = self.make_view_atomic(callback)
    3.             # If it is an asynchronous view, run it in a subthread.
    4.             if iscoroutinefunction(wrapped_callback):
    5.                 wrapped_callback = async_to_sync(wrapped_callback)
    6.             try:
    1.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)
    1.             except Exception as e:
    2.                 response = self.process_exception_by_middleware(e, request)
    3.                 if response is None:
    4.                     raise
    5.         # Complain if the view returned None (a common error).
    Local vars
    Variable Value
    callback
    <function salary at 0x7f1dab97b880>
    callback_args
    ()
    callback_kwargs
    {}
    middleware_method
    <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>>
    request
    <WSGIRequest: GET '/insights/salary/?position=sales%20operations&location=algeria'>
    response
    None
    self
    <django.core.handlers.wsgi.WSGIHandler object at 0x7f1de030cd30>
    wrapped_callback
    <function salary at 0x7f1dab97b880>
  • /usr/src/app/insights/views.py, line 2192, in salary
    1. 	try:
    2. 		originalPosition = copy.deepcopy([position[0].lower()])
    3. 	except:
    4. 		originalPosition = []
    5. 		pass
    6. 	if not request.user.is_authenticated:
    7. 		if (len(position) != 0) and (len(location) != 0):
    1. 			return salaryUnauthenticated(request,context)
    1. 	context['freePositions'] = getFreePositions()
    2. 	version = config.objects.filter(name='version')
    3. 	version = int(version[0].value)
    4. 	salariesbydateVersion = config.objects.filter(name='salariesbydateversion')
    5. 	salariesbydateVersion = int(salariesbydateVersion[0].value)
    6. 	try:
    Local vars
    Variable Value
    companytype
    None
    context
    {'afterUpgrade': False,
     'altNames': None,
     'arrBonuses': ['', 'minbonus', 'avgbonus', 'maxbonus'],
     'arrOptions': ['gross', 'net', 'cost', 'contractor'],
     'bonus': [{'salary': [1, 2], 'seniority': 'junior'},
               {'salary': [1, 2], 'seniority': 'mid'},
               {'salary': [1, 2], 'seniority': 'senior'},
               {'salary': [1, 2], 'seniority': 'lead'}],
     'currencies': ['eur',
                    'usd',
                    'xaf',
                    'xof',
                    'aed',
                    'amd',
                    'aoa',
                    'aud',
                    'azn',
                    'bam',
                    'bgn',
                    'bhd',
                    'bob',
                    'brl',
                    'bwp',
                    'byn',
                    'cad',
                    'cdf',
                    'chf',
                    'clp',
                    'cny',
                    'cop',
                    'czk',
                    'dkk',
                    'dop',
                    'dzd',
                    'egp',
                    'etb',
                    'gbp',
                    'gel',
                    'ghs',
                    'hkd',
                    'hrk',
                    'huf',
                    'idr',
                    'ils',
                    'inr',
                    'jpy',
                    'kes',
                    'krw',
                    'kzt',
                    'mad',
                    'mkd',
                    'mwk',
                    'mxn',
                    'myr',
                    'mzn',
                    'nad',
                    'ngn',
                    'nok',
                    'pen',
                    'php',
                    'pkr',
                    'pln',
                    'ron',
                    'rsd',
                    'rub',
                    'rwf',
                    'sek',
                    'sgd',
                    'thb',
                    'tnd',
                    'try',
                    'ttd',
                    'tzs',
                    'uah',
                    'ugx',
                    'uyu',
                    'vnd',
                    'zar',
                    'zmw',
                    'zwl'],
     'currencyLanguage': 'ar-dz',
     'description': None,
     'env': 'PROD',
     'errorFilters': False,
     'errorFilters_salarybydate': False,
     'exchangerate': 149.326762,
     'localCurrency': None,
     'needToBlur': True,
     'notifications': {'new': None, 'res': None},
     'purchasedPos': False,
     'quantileList': [25, 50, 75, 90, 99],
     'quantiles': [25, 50, 75, 90, 99],
     'remainingPurchases': 0,
     'salaryData': [{'salary': [1, 2], 'seniority': 'junior'},
                    {'salary': [1, 2], 'seniority': 'mid'},
                    {'salary': [1, 2], 'seniority': 'senior'},
                    {'salary': [1, 2], 'seniority': 'lead'}],
     'search': {'city': None,
                'companyType': None,
                'country': 'algeria',
                'currency': 'dzd',
                'date': None,
                'funding': '',
                'fundingArr': [],
                'location': 'algeria',
                'locationArr': ['c-algeria'],
                'locationType': 'country',
                'location_2': 'c-algeria',
                'near_location': 'algeria',
                'near_location_list': ['algeria'],
                'peers': '',
                'peersArr': [],
                'period': None,
                'position': 'sales operations',
                'positionArr': ['sales operations'],
                'sector': '',
                'sectorArr': [],
                'size': '',
                'sizeArr': []},
     'section': 'salary',
     'showOnboarding': False,
     'similarPos': [],
     'stock': [{'salary': [1, 2], 'seniority': 'junior'},
               {'salary': [1, 2], 'seniority': 'mid'},
               {'salary': [1, 2], 'seniority': 'senior'},
               {'salary': [1, 2], 'seniority': 'lead'}],
     'url_taxes': None,
     'userfullplan': 'free'}
    cookie_id
    ''
    country
    []
    currency
    None
    currencyLanguage
    None
    date
    None
    errorFilters
    False
    errorFilters_salarybydate
    False
    export
    None
    funding
    []
    id_
    0
    localCurrency
    None
    location
    ['algeria']
    midSalary
    None
    originalDate
    None
    originalPosition
    ['sales operations']
    peers
    []
    period
    None
    position
    ['sales operations']
    ratio
    1
    request
    <WSGIRequest: GET '/insights/salary/?position=sales%20operations&location=algeria'>
    sector
    []
    size
    []
    taxesPayrolls
    None
  • /usr/src/app/insights/views.py, line 2102, in salaryUnauthenticated
    1. 		context['search']['currency'], context['exchangerate'], context['url_taxes'], context['currencyLanguage'], countries = getCurrencyTaxesPayrolls(request,context)
    2. 	except:
    3. 		context['search']['currency'], context['exchangerate'], context['url_taxes'], context['currencyLanguage'], countries = 'EUR', 1, '', 'en-GB', []
    4. 		pass
    5. 	context['bonus'] = [{"seniority":"junior","salary":[1,2]},{"seniority":"mid","salary":[1,2]},{"seniority":"senior","salary":[1,2]},{"seniority":"lead","salary":[1,2]}]
    6. 	context['stock'] = [{"seniority":"junior","salary":[1,2]},{"seniority":"mid","salary":[1,2]},{"seniority":"senior","salary":[1,2]},{"seniority":"lead","salary":[1,2]}]
    7. 	context['salaryData'] = [{"seniority":"junior","salary":[1,2]},{"seniority":"mid","salary":[1,2]},{"seniority":"senior","salary":[1,2]},{"seniority":"lead","salary":[1,2]}]
    1. 	context = getPositionLocationSalaryInfo(context['search']['positionArr'], context, ratio, context['exchangerate'])
    1. 	context['authenticated'] = False		 
    2. 	try:
    3. 		# cacheKey(redisQuery,json.dumps(context,cls=DjangoJSONEncoder))
    4. 		Thread(target = cacheKey, args= (redisQuery, json.dumps(context,cls=DjangoJSONEncoder), redisCache)).start()
    5. 	except:
    6. 		print(traceback.format_exc())
    Local vars
    Variable Value
    args
    {'location': ['algeria'], 'position': ['sales operations']}
    context
    {'afterUpgrade': False,
     'altNames': None,
     'arrBonuses': ['', 'minbonus', 'avgbonus', 'maxbonus'],
     'arrOptions': ['gross', 'net', 'cost', 'contractor'],
     'bonus': [{'salary': [1, 2], 'seniority': 'junior'},
               {'salary': [1, 2], 'seniority': 'mid'},
               {'salary': [1, 2], 'seniority': 'senior'},
               {'salary': [1, 2], 'seniority': 'lead'}],
     'currencies': ['eur',
                    'usd',
                    'xaf',
                    'xof',
                    'aed',
                    'amd',
                    'aoa',
                    'aud',
                    'azn',
                    'bam',
                    'bgn',
                    'bhd',
                    'bob',
                    'brl',
                    'bwp',
                    'byn',
                    'cad',
                    'cdf',
                    'chf',
                    'clp',
                    'cny',
                    'cop',
                    'czk',
                    'dkk',
                    'dop',
                    'dzd',
                    'egp',
                    'etb',
                    'gbp',
                    'gel',
                    'ghs',
                    'hkd',
                    'hrk',
                    'huf',
                    'idr',
                    'ils',
                    'inr',
                    'jpy',
                    'kes',
                    'krw',
                    'kzt',
                    'mad',
                    'mkd',
                    'mwk',
                    'mxn',
                    'myr',
                    'mzn',
                    'nad',
                    'ngn',
                    'nok',
                    'pen',
                    'php',
                    'pkr',
                    'pln',
                    'ron',
                    'rsd',
                    'rub',
                    'rwf',
                    'sek',
                    'sgd',
                    'thb',
                    'tnd',
                    'try',
                    'ttd',
                    'tzs',
                    'uah',
                    'ugx',
                    'uyu',
                    'vnd',
                    'zar',
                    'zmw',
                    'zwl'],
     'currencyLanguage': 'ar-dz',
     'description': None,
     'env': 'PROD',
     'errorFilters': False,
     'errorFilters_salarybydate': False,
     'exchangerate': 149.326762,
     'localCurrency': None,
     'needToBlur': True,
     'notifications': {'new': None, 'res': None},
     'purchasedPos': False,
     'quantileList': [25, 50, 75, 90, 99],
     'quantiles': [25, 50, 75, 90, 99],
     'remainingPurchases': 0,
     'salaryData': [{'salary': [1, 2], 'seniority': 'junior'},
                    {'salary': [1, 2], 'seniority': 'mid'},
                    {'salary': [1, 2], 'seniority': 'senior'},
                    {'salary': [1, 2], 'seniority': 'lead'}],
     'search': {'city': None,
                'companyType': None,
                'country': 'algeria',
                'currency': 'dzd',
                'date': None,
                'funding': '',
                'fundingArr': [],
                'location': 'algeria',
                'locationArr': ['c-algeria'],
                'locationType': 'country',
                'location_2': 'c-algeria',
                'near_location': 'algeria',
                'near_location_list': ['algeria'],
                'peers': '',
                'peersArr': [],
                'period': None,
                'position': 'sales operations',
                'positionArr': ['sales operations'],
                'sector': '',
                'sectorArr': [],
                'size': '',
                'sizeArr': []},
     'section': 'salary',
     'showOnboarding': False,
     'similarPos': [],
     'stock': [{'salary': [1, 2], 'seniority': 'junior'},
               {'salary': [1, 2], 'seniority': 'mid'},
               {'salary': [1, 2], 'seniority': 'senior'},
               {'salary': [1, 2], 'seniority': 'lead'}],
     'url_taxes': None,
     'userfullplan': 'free'}
    cookie_id
    ''
    countries
    ['algeria']
    loc_info
    None
    location
    ['algeria']
    locations
    [{'cities': ['algiers'], 'name': 'algeria'},
     {'cities': ['luanda'], 'name': 'angola'},
     {'cities': ['abra pampa',
                 'adelia maria',
                 'adrogue',
                 'aguilares',
                 'alba posse',
                 'albardon',
                 'alderetes',
                 'allen',
                 'almafuerte',
                 'alta gracia',
                 'alvear',
                 'anatuya',
                 'andalgala',
                 'apolinario saravia',
                 'arauco',
                 'arias',
                 'aristobulo del valle',
                 'armstrong',
                 'arroyito',
                 'arroyo seco',
                 'avellaneda',
                 'avia terai',
                 'azul',
                 'bahia blanca',
                 'balnearia',
                 'barranqueras',
                 'bell ville',
                 'bella vista',
                 'beltran',
                 'bernardo de irigoyen',
                 'berrotaran',
                 'bovril',
                 'brinkmann',
                 'buenos aires',
                 'cafayate',
                 'caimancito',
                 'calchaqui',
                 'caleta olivia',
                 'calilegua',
                 'calingasta',
                 'campana',
                 'campo gallo',
                 'campo grande',
                 'campo largo',
                 'campo ramon',
                 'campo viera',
                 'canada de gomez',
                 'canals',
                 'candelaria',
                 'capayan',
                 'capilla del monte',
                 'capiovi',
                 'capitan bermudez',
                 'carcarana',
                 'casilda',
                 'castelli',
                 'catriel',
                 'caucete',
                 'centenario',
                 'ceres',
                 'cerro azul',
                 'cervantes',
                 'chacabuco',
                 'chajari',
                 'chamical',
                 'chanar ladeado',
                 'charata',
                 'chicoana',
                 'chilecito',
                 'chimbas',
                 'chivilcoy',
                 'choele choel',
                 'chos malal',
                 'cinco saltos',
                 'cipolletti',
                 'clodomira',
                 'clorinda',
                 'colegiales',
                 'colonia aurora',
                 'colonia wanda',
                 'comandante fontana',
                 'comodoro rivadavia',
                 'concepcion de la sierra',
                 'concepcion del bermejo',
                 'concepcion del uruguay',
                 'concordia',
                 'cordoba',
                 'coronda',
                 'coronel dorrego',
                 'coronel du graty',
                 'coronel moldes',
                 'coronel suarez',
                 'corral de bustos',
                 'corrientes',
                 'corzuela',
                 'cosquin',
                 'crespo',
                 'cruz alta',
                 'cruz del eje',
                 'curuzu cuatia'],
      'name': 'argentina'},
     {'cities': ['abovyan',
                 'akhuryan',
                 'alaverdi',
                 'aparan',
                 'ararat',
                 'armavir',
                 'artashat',
                 'ashtarak',
                 'berd',
                 'byureghavan',
                 'chambarak',
                 'dilijan',
                 'ejmiatsin',
                 'garrni',
                 'gavarr',
                 'goris',
                 'gyumri',
                 "hats'avan",
                 'hrazdan',
                 'ijevan',
                 'kapan',
                 'karanlukh',
                 'martuni',
                 'masis',
                 'metsamor',
                 "nerk'in getashen",
                 'noratus',
                 'noyemberyan',
                 'sardarapat',
                 'sarukhan',
                 'sevan',
                 'spitak',
                 "step'anavan",
                 'tashir',
                 'vanadzor',
                 'vardenik',
                 'vardenis',
                 "vayk'",
                 'vedi',
                 'yeghegnadzor',
                 'yeghvard',
                 'yerevan'],
      'name': 'armenia'},
     {'cities': ['adelaide',
                 'adelaide hills',
                 'airport west',
                 'albany',
                 'albert park',
                 'albion park rail',
                 '… <trimmed 164708 bytes string>
    logs
    {'location': ['algeria'], 'position': ['sales operations']}
    originalPosition
    ['sales operations']
    position
    ['sales operations']
    ratio
    1
    redisContext
    None
    redisQuery
    'platform salary - sales operations, algeria'
    request
    <WSGIRequest: GET '/insights/salary/?position=sales%20operations&location=algeria'>
  • /usr/src/app/insights/backend/salary.py, line 243, in getPositionLocationSalaryInfo
    1. 			midSalary = res['hits']['hits'][0]['_source']['midSalary']['overall']
    2. 			midSalary = int(round(midSalary * rate, -2))
    3. 	except:
    4. 		midSalary = None
    5. 		pass
    6. 	
    1. 	context['statuoryBenefits'], context['competitiveAdvantages'], context['additionalPerks'] = getBenefits(res,context['exchangerate'])
    1. 	context['insights'] = {"offer":res['hits']['hits'][0]['_source']['insights']['offer']['value'],
    2.                   "demand":res['hits']['hits'][0]['_source']['insights']['demand']['value']}
    3. 	 
    4. 	context['updated_at'] = datetime.strptime(res['hits']['hits'][0]['_source']['updated_at'], '%Y-%m-%dT%H:%M:%S.%f').strftime("%d %b %Y")
    5. 	context['observations'] = res['hits']['hits'][0]['_source']['observations']
    Local vars
    Variable Value
    bodyy
    {'_source': ['midSalary.overall',
                 'observations',
                 'updated_at',
                 'insights.demand.value',
                 'insights.offer.value',
                 'position',
                 'location',
                 'gender',
                 'confidence_ratios',
                 'salary_hierarchy',
                 'benefits'],
     'query': {'bool': {'must': [{'terms': {'position.name.keyword': ['sales '
                                                                      'operations']}},
                                 {'term': {'version': 25}},
                                 {'term': {'isMain': True}},
                                 {'terms': {'location.country.keyword': ['algeria']}}],
                        'must_not': [{'exists': {'field': 'location.city'}}]}},
     'size': 1,
     'sort': {'updated_at': 'desc'}}
    context
    {'afterUpgrade': False,
     'altNames': None,
     'arrBonuses': ['', 'minbonus', 'avgbonus', 'maxbonus'],
     'arrOptions': ['gross', 'net', 'cost', 'contractor'],
     'bonus': [{'salary': [1, 2], 'seniority': 'junior'},
               {'salary': [1, 2], 'seniority': 'mid'},
               {'salary': [1, 2], 'seniority': 'senior'},
               {'salary': [1, 2], 'seniority': 'lead'}],
     'currencies': ['eur',
                    'usd',
                    'xaf',
                    'xof',
                    'aed',
                    'amd',
                    'aoa',
                    'aud',
                    'azn',
                    'bam',
                    'bgn',
                    'bhd',
                    'bob',
                    'brl',
                    'bwp',
                    'byn',
                    'cad',
                    'cdf',
                    'chf',
                    'clp',
                    'cny',
                    'cop',
                    'czk',
                    'dkk',
                    'dop',
                    'dzd',
                    'egp',
                    'etb',
                    'gbp',
                    'gel',
                    'ghs',
                    'hkd',
                    'hrk',
                    'huf',
                    'idr',
                    'ils',
                    'inr',
                    'jpy',
                    'kes',
                    'krw',
                    'kzt',
                    'mad',
                    'mkd',
                    'mwk',
                    'mxn',
                    'myr',
                    'mzn',
                    'nad',
                    'ngn',
                    'nok',
                    'pen',
                    'php',
                    'pkr',
                    'pln',
                    'ron',
                    'rsd',
                    'rub',
                    'rwf',
                    'sek',
                    'sgd',
                    'thb',
                    'tnd',
                    'try',
                    'ttd',
                    'tzs',
                    'uah',
                    'ugx',
                    'uyu',
                    'vnd',
                    'zar',
                    'zmw',
                    'zwl'],
     'currencyLanguage': 'ar-dz',
     'description': None,
     'env': 'PROD',
     'errorFilters': False,
     'errorFilters_salarybydate': False,
     'exchangerate': 149.326762,
     'localCurrency': None,
     'needToBlur': True,
     'notifications': {'new': None, 'res': None},
     'purchasedPos': False,
     'quantileList': [25, 50, 75, 90, 99],
     'quantiles': [25, 50, 75, 90, 99],
     'remainingPurchases': 0,
     'salaryData': [{'salary': [1, 2], 'seniority': 'junior'},
                    {'salary': [1, 2], 'seniority': 'mid'},
                    {'salary': [1, 2], 'seniority': 'senior'},
                    {'salary': [1, 2], 'seniority': 'lead'}],
     'search': {'city': None,
                'companyType': None,
                'country': 'algeria',
                'currency': 'dzd',
                'date': None,
                'funding': '',
                'fundingArr': [],
                'location': 'algeria',
                'locationArr': ['c-algeria'],
                'locationType': 'country',
                'location_2': 'c-algeria',
                'near_location': 'algeria',
                'near_location_list': ['algeria'],
                'peers': '',
                'peersArr': [],
                'period': None,
                'position': 'sales operations',
                'positionArr': ['sales operations'],
                'sector': '',
                'sectorArr': [],
                'size': '',
                'sizeArr': []},
     'section': 'salary',
     'showOnboarding': False,
     'similarPos': [],
     'stock': [{'salary': [1, 2], 'seniority': 'junior'},
               {'salary': [1, 2], 'seniority': 'mid'},
               {'salary': [1, 2], 'seniority': 'senior'},
               {'salary': [1, 2], 'seniority': 'lead'}],
     'url_taxes': None,
     'userfullplan': 'free'}
    midSalary
    None
    position
    ['sales operations']
    rate
    149.326762
    ratio
    1
    res
    {'_shards': {'failed': 0, 'skipped': 0, 'successful': 5, 'total': 5},
     'hits': {'hits': [], 'max_score': None, 'total': 0},
     'timed_out': False,
     'took': 34}
  • /usr/src/app/insights/backend/benefits.py, line 53, in getBenefits
    1.     try:
    2.         position = res['hits']['hits'][0]['_source']['position']['name']
    3.     except:
    4.         pass
    5.     try:
    6.         location = res['hits']['hits'][0]['_source']['location']
    7.     except:
    1.         location = {'city':ctxtSearch['location'], 'country':ctxtSearch['country']}
    1.         pass
    2.     local_benefits = []
    3.     for i in res['hits']['hits']:
    4.         for j in i['_source']['benefits']:
    5.             local_benefits.append(j['name'])
    Local vars
    Variable Value
    ctxtSearch
    None
    ratio
    149.326762
    res
    {'_shards': {'failed': 0, 'skipped': 0, 'successful': 5, 'total': 5},
     'hits': {'hits': [], 'max_score': None, 'total': 0},
     'timed_out': False,
     'took': 34}


Request information

USER

AnonymousUser

GET

Variable Value
position
'sales operations'
location
'algeria'

POST

No POST data

FILES

No FILES data

No cookie data

META

Variable Value
ACCOUNT_HTTP_PROTOCOL
'https'
APOLLO_API_KEY
'********************'
CONTENT_LENGTH
''
CONTENT_TYPE
'text/plain'
DATABASE
'insights'
DATABASE_HOST
'mysql'
DATABASE_PORT
'3306'
DEBUG
'"False"'
DJANGO_SETTINGS_MODULE
'insights.settings'
GATEWAY_INTERFACE
'CGI/1.1'
GPG_KEY
'********************'
HOME
'/root'
HOSTNAME
'858b4654535d'
HTTP_ACCEPT
'*/*'
HTTP_ACCEPT_ENCODING
'gzip, deflate, br'
HTTP_CONNECTION
'upgrade'
HTTP_HOST
'talentup.io'
HTTP_USER_AGENT
'python-requests/2.27.1'
LANG
'C.UTF-8'
MAILCHIMP_KEY
'********************'
PATH
'/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
PATH_INFO
'/insights/salary/'
PWD
'/usr/src/app'
PYTHON_SHA256
'bfb249609990220491a1b92850a07135ed0831e41738cf681d63cf01b2a8fbd1'
PYTHON_VERSION
'3.10.16'
QUERY_STRING
'position=sales%20operations&location=algeria'
REMOTE_ADDR
'172.19.0.8'
REMOTE_HOST
''
REQUEST_METHOD
'GET'
RUN_MAIN
'true'
SCRIPT_NAME
''
SENDGRID_KEY
'********************'
SERVER_NAME
'858b4654535d'
SERVER_PORT
'8000'
SERVER_PROTOCOL
'HTTP/1.1'
SERVER_SOFTWARE
'WSGIServer/0.2'
STAGE
'PROD'
TZ
'UTC'
wsgi.errors
<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>
wsgi.file_wrapper
<class 'wsgiref.util.FileWrapper'>
wsgi.input
<django.core.handlers.wsgi.LimitedStream object at 0x7f1da99086a0>
wsgi.multiprocess
False
wsgi.multithread
True
wsgi.run_once
False
wsgi.url_scheme
'http'
wsgi.version
(1, 0)

Settings

Using settings module insights.settings

Setting Value
ABSOLUTE_URL_OVERRIDES
{}
ACCOUNT_ADAPTER
'insights.adapter.MyAccountAdapter'
ACCOUNT_AUTHENTICATION_METHOD
'email'
ACCOUNT_DEFAULT_HTTP_PROTOCOL
'https'
ACCOUNT_EMAIL_REQUIRED
True
ACCOUNT_EMAIL_VERIFICATION
'none'
ACCOUNT_SIGNUP_FORM_CLASS
'insights.forms.LocalSignupForm'
ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE
'********************'
ACCOUNT_USERNAME_REQUIRED
False
ACCOUNT_USER_MODEL_USERNAME_FIELD
None
ADMINS
[]
ALLOWED_HOSTS
['localhost',
 'www.talentup.io',
 'talentup.io',
 'dev.talentup.io',
 'insights.talentup.io',
 'test.talentup.io']
APOLLO_KEY
'********************'
APPEND_SLASH
True
AUTHENTICATION_BACKENDS
('django.contrib.auth.backends.ModelBackend',
 'allauth.account.auth_backends.AuthenticationBackend')
AUTH_PASSWORD_VALIDATORS
'********************'
AUTH_USER_MODEL
'insights.hcuser'
BASE_DIR
'/usr/src/app'
BOWER_COMPONENTS_ROOT
'/usr/src/app/static/assets/components'
BOWER_PATH
'/usr/src/app/../bin/bower'
CACHES
{'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}}
CACHE_MIDDLEWARE_ALIAS
'default'
CACHE_MIDDLEWARE_KEY_PREFIX
'********************'
CACHE_MIDDLEWARE_SECONDS
600
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
['https://talentup.io']
CSRF_USE_SESSIONS
False
DATABASES
{'default': {'ATOMIC_REQUESTS': False,
             'AUTOCOMMIT': True,
             'CONN_HEALTH_CHECKS': False,
             'CONN_MAX_AGE': 0,
             'ENGINE': 'django.db.backends.mysql',
             'HOST': 'mysql',
             'NAME': 'insights',
             'OPTIONS': {},
             'PASSWORD': '********************',
             'PORT': '3306',
             'TEST': {'CHARSET': None,
                      'COLLATION': None,
                      'MIGRATE': True,
                      'MIRROR': None,
                      'NAME': None},
             'TIME_ZONE': None,
             'USER': 'root'}}
DATABASE_ROUTERS
[]
DATA_UPLOAD_MAX_MEMORY_SIZE
2621440
DATA_UPLOAD_MAX_NUMBER_FIELDS
1000
DATA_UPLOAD_MAX_NUMBER_FILES
100
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',
 '%m/%d/%Y %H:%M:%S',
 '%m/%d/%Y %H:%M:%S.%f',
 '%m/%d/%Y %H:%M',
 '%m/%d/%y %H:%M:%S',
 '%m/%d/%y %H:%M:%S.%f',
 '%m/%d/%y %H:%M']
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_AUTO_FIELD
'django.db.models.AutoField'
DEFAULT_CHARSET
'utf-8'
DEFAULT_EMAIL_FROM
'platform@talentup.io'
DEFAULT_EXCEPTION_REPORTER
'django.views.debug.ExceptionReporter'
DEFAULT_EXCEPTION_REPORTER_FILTER
'django.views.debug.SafeExceptionReporterFilter'
DEFAULT_FROM_EMAIL
'platform@talentup.io'
DEFAULT_HTTP_PROTOCOL
'https'
DEFAULT_INDEX_TABLESPACE
''
DEFAULT_TABLESPACE
''
DISALLOWED_USER_AGENTS
[]
ELASTICSEARCH_HOST
'talentup.io:9200'
EMAIL_BACKEND
'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST
'smtp.sendgrid.net'
EMAIL_HOST_PASSWORD
'********************'
EMAIL_HOST_USER
'apikey'
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
ENVIRONMENT
'PROD'
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
420
FILE_UPLOAD_TEMP_DIR
None
FIRST_DAY_OF_WEEK
0
FIXTURE_DIRS
[]
FORCE_SCRIPT_NAME
None
FORMAT_MODULE_PATH
None
FORMS_URLFIELD_ASSUME_HTTPS
False
FORM_RENDERER
'django.forms.renderers.DjangoTemplates'
IGNORABLE_404_URLS
[]
INSTALLED_APPS
['insights',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.sites',
 'allauth',
 'allauth.account',
 'allauth.socialaccount',
 'allauth.socialaccount.providers.github',
 'allauth.socialaccount.providers.google',
 'allauth.socialaccount.providers.windowslive',
 'django.contrib.humanize']
INTERNAL_IPS
[]
LANGUAGES
[('af', 'Afrikaans'),
 ('ar', 'Arabic'),
 ('ar-dz', 'Algerian Arabic'),
 ('ast', 'Asturian'),
 ('az', 'Azerbaijani'),
 ('bg', 'Bulgarian'),
 ('be', 'Belarusian'),
 ('bn', 'Bengali'),
 ('br', 'Breton'),
 ('bs', 'Bosnian'),
 ('ca', 'Catalan'),
 ('ckb', 'Central Kurdish (Sorani)'),
 ('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'),
 ('ig', 'Igbo'),
 ('io', 'Ido'),
 ('is', 'Icelandic'),
 ('it', 'Italian'),
 ('ja', 'Japanese'),
 ('ka', 'Georgian'),
 ('kab', 'Kabyle'),
 ('kk', 'Kazakh'),
 ('km', 'Khmer'),
 ('kn', 'Kannada'),
 ('ko', 'Korean'),
 ('ky', 'Kyrgyz'),
 ('lb', 'Luxembourgish'),
 ('lt', 'Lithuanian'),
 ('lv', 'Latvian'),
 ('mk', 'Macedonian'),
 ('ml', 'Malayalam'),
 ('mn', 'Mongolian'),
 ('mr', 'Marathi'),
 ('ms', 'Malay'),
 ('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'),
 ('tg', 'Tajik'),
 ('th', 'Thai'),
 ('tk', 'Turkmen'),
 ('tr', 'Turkish'),
 ('tt', 'Tatar'),
 ('udm', 'Udmurt'),
 ('ug', 'Uyghur'),
 ('uk', 'Ukrainian'),
 ('ur', 'Urdu'),
 ('uz', 'Uzbek'),
 ('vi', 'Vietnamese'),
 ('zh-hans', 'Simplified Chinese'),
 ('zh-hant', 'Traditional Chinese')]
LANGUAGES_BIDI
['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ug', 'ur']
LANGUAGE_CODE
'en-us'
LANGUAGE_COOKIE_AGE
None
LANGUAGE_COOKIE_DOMAIN
None
LANGUAGE_COOKIE_HTTPONLY
False
LANGUAGE_COOKIE_NAME
'django_language'
LANGUAGE_COOKIE_PATH
'/'
LANGUAGE_COOKIE_SAMESITE
None
LANGUAGE_COOKIE_SECURE
False
LOCALE_PATHS
[]
LOGGING
{}
LOGGING_CONFIG
'logging.config.dictConfig'
LOGIN_REDIRECT_URL
'/insights/dashboard'
LOGIN_URL
'/accounts/login/'
LOGOUT_REDIRECT_URL
None
MANAGERS
[]
MEDIA_ROOT
''
MEDIA_URL
'/'
MESSAGE_STORAGE
'django.contrib.messages.storage.fallback.FallbackStorage'
MIDDLEWARE
['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',
 'insights.backend.custom-middleware.lastvisit.SetLastVisitMiddleware',
 'allauth.account.middleware.AccountMiddleware']
MIGRATION_MODULES
{}
MONTH_DAY_FORMAT
'F j'
NUMBER_GROUPING
0
PASSWORD_HASHERS
'********************'
PASSWORD_RESET_TIMEOUT
'********************'
PREPEND_WWW
False
RECAPTCHA_PRIVATE_KEY
'********************'
RECAPTCHA_PUBLIC_KEY
'********************'
RECAPTCHA_REQUIRED_SCORE
0.75
ROOT_URLCONF
'insights.urls'
SECRET_KEY
'********************'
SECRET_KEY_FALLBACKS
'********************'
SECURE_CONTENT_TYPE_NOSNIFF
True
SECURE_CROSS_ORIGIN_OPENER_POLICY
'same-origin'
SECURE_HSTS_INCLUDE_SUBDOMAINS
False
SECURE_HSTS_PRELOAD
False
SECURE_HSTS_SECONDS
0
SECURE_PROXY_SSL_HEADER
None
SECURE_REDIRECT_EXEMPT
[]
SECURE_REFERRER_POLICY
'same-origin'
SECURE_SSL_HOST
None
SECURE_SSL_REDIRECT
False
SENDGRID_KEY
'********************'
SERVER_EMAIL
'root@localhost'
SESSION_CACHE_ALIAS
'default'
SESSION_COOKIE_AGE
1209600
SESSION_COOKIE_DOMAIN
None
SESSION_COOKIE_HTTPONLY
True
SESSION_COOKIE_NAME
'fdnsFHudis43jHb'
SESSION_COOKIE_PATH
'/'
SESSION_COOKIE_SAMESITE
'Lax'
SESSION_COOKIE_SECURE
False
SESSION_ENGINE
'django.contrib.sessions.backends.cached_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
'insights.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
4
SOCIALACCOUNT_ADAPTER
'insights.socialadapter.SocialAdapter'
SOCIALACCOUNT_PROVIDERS
{'google': {'AUTH_PARAMS': {'access_type': 'offline'},
            'OAUTH_PKCE_ENABLED': True,
            'SCOPE': ['email', 'profile']}}
STATICFILES_DIRS
['/usr/src/app/static']
STATICFILES_FINDERS
['django.contrib.staticfiles.finders.FileSystemFinder',
 'django.contrib.staticfiles.finders.AppDirectoriesFinder']
STATIC_ROOT
None
STATIC_URL
'/insights/static/'
STORAGES
{'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},
 'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'}}
TEMPLATES
[{'APP_DIRS': True,
  'BACKEND': 'django.template.backends.django.DjangoTemplates',
  'DIRS': [],
  '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
'UTC'
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
None
X_FRAME_OPTIONS
'DENY'
YEAR_MONTH_FORMAT
'F Y'