list index out of range
Request Method: | GET |
---|---|
Request URL: | https://maartenv.be/gitar/gitar/validigo/e15cfdf9ce610943b6caa901b40bd1581227b894 |
Django Version: | 4.2.7 |
Exception Type: | IndexError |
Exception Value: | list index out of range |
Exception Location: | /srv/django/website/gitar/GitActions/CommitInfo.py, line 150, in process_file |
Raised during: | gitar.views.commit |
Python Executable: | /usr/bin/uwsgi |
Python Version: | 3.11.7 |
Python Path: | ['.', '', '/usr/lib/python311.zip', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload', '/home/maarten/.local/lib/python3.11/site-packages', '/usr/lib/python3.11/site-packages'] |
Server time: | Fri, 29 Mar 2024 09:12:29 +0100 |
/usr/lib/python3.11/site-packages/django/core/handlers/exception.py
, line 55, in inner
return inner
else:
@wraps(get_response)
def inner(request):
try:
response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^…
except Exception as exc:
response = response_for_exception(request, exc)
return response
return inner
Variable | Value |
---|---|
exc | IndexError('list index out of range') |
get_response | <bound method BaseHandler._get_response of <django.core.handlers.wsgi.WSGIHandler object at 0x7c073f7ca150>> |
request | <WSGIRequest: GET '/gitar/gitar/validigo/e15cfdf9ce610943b6caa901b40bd1581227b894'> |
/usr/lib/python3.11/site-packages/django/core/handlers/base.py
, line 197, in _get_response
if response is None:
wrapped_callback = self.make_view_atomic(callback)
# If it is an asynchronous view, run it in a subthread.
if iscoroutinefunction(wrapped_callback):
wrapped_callback = async_to_sync(wrapped_callback)
try:
response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
except Exception as e:
response = self.process_exception_by_middleware(e, request)
if response is None:
raise
# Complain if the view returned None (a common error).
Variable | Value |
---|---|
callback | <function commit at 0x7c073f060720> |
callback_args | () |
callback_kwargs | {'commit_hash': 'e15cfdf9ce610943b6caa901b40bd1581227b894', 'repository_name': 'gitar'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>> |
request | <WSGIRequest: GET '/gitar/gitar/validigo/e15cfdf9ce610943b6caa901b40bd1581227b894'> |
response | None |
self | <django.core.handlers.wsgi.WSGIHandler object at 0x7c073f7ca150> |
wrapped_callback | <function commit at 0x7c073f060720> |
/srv/django/website/gitar/views.py
, line 95, in commit
context["other_lines"] = parts[1]
# Final formatting:
if "other_lines" in context:
context["other_lines"] = context["other_lines"].replace('\n\n','<br>').replace('\n', ' ')
# Processing the modified files
for modified_file in c.modified_files:
#print("FILE")
processed = CommitInfo.prepare_and_process(modified_file) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^…
#print(processed)
context["modified_files"].append(processed)
#html_code_before = None
#html_code_after = None
#if modified_file.source_code_before is not None:
#html_code_before = code_to_HTML(
Variable | Value |
---|---|
c | <pydriller.domain.commit.Commit object at 0x7c0710cccb90> |
commit_hash | 'e15cfdf9ce610943b6caa901b40bd1581227b894' |
commit_repo | <pydriller.repository.Repository object at 0x7c07101cd9d0> |
context | {'commit': <pydriller.domain.commit.Commit object at 0x7c0710cccb90>, 'first_line': 'Start of the Gitar project! I already worked on a series of ' 'files, which I add directly. Also included is a license file. ' "Template files haven't been added yet, because they aren't " 'relevant right now. They may be added in the future.', 'footer_description': 'Gitar is a simple web app that allows its users to ' 'easily share Git repos in combination with the Django ' 'framework.', 'footer_links': [['Home page', '/']], 'footer_title': 'Gitar', 'modified_files': [{'change_type': <ModificationType.ADD: 1>, 'html_code_after': ["# Django fluff doesn't have to be " 'tracked.', 'migrations/', '__pycache__/', '# Init file for Python modules. ' 'Nope.', '__init__.py # '], 'html_code_before': [], 'methods_available': False, 'object': <pydriller.domain.commit.ModifiedFile object at 0x7c0710d48990>, 'path': '.gitignore', 'rows': [{'line': 'migrations/', 'new_num': 1, 'type': 'addition'}, {'line': '__pycache__/', 'new_num': 2, 'type': 'addition'}, {'line': '# Init file for Python modules. Nope.', 'new_num': 3, 'type': 'addition'}, {'line': '__init__.py # ', 'new_num': 4, 'type': 'addition'}, {'line': '__init__.py # ', 'new_num': 5, 'type': 'addition'}]}, {'change_type': <ModificationType.ADD: 1>, 'html_code_after': ['<div ' 'class="source"><pre><span></span><span ' 'class="gh">Dependencies</span>', '<span class="gh">============</span>', '', 'Since web apps (and everything web ' 'related) are known to suck at ' 'dependency handling (which is why we ' 'have Bower, NPM, cdnjs, docker, ... ' '(I'll explain sometime somewhere ' 'why this is done, and why I ' 'don't like it), I've decided ' 'to take matters in my own hands; ' 'I'll just provide one simple ' 'markdown file listing all ' 'dependencies in human-readable ' 'format. I don't care whether ' 'this helps or not, but no harm is ' 'done, right?', '', '<span class="gu">Legend</span>', '<span class="gu">------</span>', '', 'The dependencies themselves have ' 'been ranked with a certain grade. I ' 'explain what they mean here:', … <trimmed 375720 bytes string> |
modified_file | <pydriller.domain.commit.ModifiedFile object at 0x7c0712700f90> |
processed | {'change_type': <ModificationType.ADD: 1>, 'html_code_after': ['<div class="source"><pre><span></span><span ' 'class="sd">""" urls.py - URL ' 'configuration handler for Gitar.</span>', '<span class="sd"> Copyright © 2016 Maarten ' '"Vngngdn" Vangeneugden</span>', '', '<span class="sd"> This program is free software: you ' 'can redistribute it and/or modify</span>', '<span class="sd"> it under the terms of the GNU ' 'Affero General Public License as</span>', '<span class="sd"> published by the Free Software ' 'Foundation, either version 3 of the</span>', '<span class="sd"> License, or (at your option) any ' 'later version.</span>', '', '<span class="sd"> This program is distributed in the ' 'hope that it will be useful,</span>', '<span class="sd"> but WITHOUT ANY WARRANTY; without ' 'even the implied warranty of</span>', '<span class="sd"> MERCHANTABILITY or FITNESS FOR A ' 'PARTICULAR PURPOSE. See the</span>', '<span class="sd"> GNU Affero General Public License ' 'for more details.</span>', '', '<span class="sd"> You should have received a copy of ' 'the GNU Affero General Public License</span>', '<span class="sd"> along with this program. If not, ' 'see https://www.gnu.org/licenses/agpl.html.</span>', '<span class="sd">"""</span>', '', '<span class="kn">from</span> <span ' 'class="nn">django.conf.urls</span> <span ' 'class="kn">import</span> <span class="n">url</span>', '', '<span class="kn">from</span> <span class="nn">.</span> ' '<span class="kn">import</span> <span ' 'class="n">views</span> <span class="c1"># Imports the ' 'views from the same directory (which is ' 'views.py).</span>', '', '<span class="n">urlpatterns</span> <span ' 'class="o">=</span> <span class="p">[</span>', ' <span class="n">url</span><span ' 'class="p">(</span><span class="sa">r</span><span ' 'class="s1">'^$'</span><span class="p">,</span> ' '<span class="n">views</span><span ' 'class="o">.</span><span class="n">index</span><span ' 'class="p">,</span> <span class="n">name</span><span ' 'class="o">=</span><span ' 'class="s1">'gitar-index'</span><span ' 'class="p">),</span>', ' <span class="n">url</span><span ' 'class="p">(</span><span class="sa">r</span><span ' 'class="s1">'^(?P<repositoryName>\\w+)$'</span><span ' 'class="p">,</span> <span class="n">views</span><span ' 'class="o">.</span><span ' 'class="n">repositories</span><span class="p">,</span> ' '<span class="n">name</span><span class="o">=</span><span ' 'class="s1">'gitar-repository'</span><span ' 'class="p">),</span>', ' <span class="n">url</span><span ' 'class="p">(</span><span class="sa">r</span><span ' 'class="s1">'^(?P<repositoryName>\\w+)/(?P<fileName>\\w+)… <trimmed 10391 bytes string> |
repository_model | <Repository: gitar> |
repository_name | 'gitar' |
request | <WSGIRequest: GET '/gitar/gitar/validigo/e15cfdf9ce610943b6caa901b40bd1581227b894'> |
template | 'gitar/commit.djhtml' |
/srv/django/website/gitar/GitActions/CommitInfo.py
, line 54, in prepare_and_process
pass
deleted[number] = line
if result["path"] == "Challenge 4/Controller.java":
pass
#print("NU CONTROLLER.jAVA")
#print(modified_file.diff_parsed)
#print(deleted)
result["rows"] = process_file(…
result["html_code_before"],
result["html_code_after"],
added,
deleted)
# These three lists are going to be empty if the methods couldn't be detected
Variable | Value |
---|---|
added | {1: '""" views.py - Describes the different views that can be presented to the ' 'user.', 2: ' Copyright © 2016 Maarten "Vngngdn" Vangeneugden', 3: '', 4: ' This program is free software: you can redistribute it and/or modify', 5: ' it under the terms of the GNU Affero General Public License as', 6: ' published by the Free Software Foundation, either version 3 of the', 7: ' License, or (at your option) any later version.', 8: '', 9: ' This program is distributed in the hope that it will be useful,', 10: ' but WITHOUT ANY WARRANTY; without even the implied warranty of', 11: ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the', 12: ' GNU Affero General Public License for more details.', 13: '', 14: ' You should have received a copy of the GNU Affero General Public ' 'License', 15: ' along with this program. If not, see ' 'https://www.gnu.org/licenses/agpl.html.', 16: '"""', 17: '', 18: 'from django.shortcuts import get_object_or_404, render # This allows to ' "render the template with the view here. It's pretty cool and important.", 19: 'from django.http import HttpResponseRedirect, HttpResponse', 20: 'from django.core.urlresolvers import reverse', 21: 'from .models import *', 22: '', 23: 'from git import Repo # GitPython functionality.', 24: 'import git', 25: '', 26: '# First, I list some standard variables that are common for most of the ' 'sites of this app.', 27: '', 28: 'def footer_description():', 29: ' return "Gitar is a simple web app that allows its users to easily ' 'share Git repos in combination with the Django framework."', 30: '', 31: 'def footer_links():', 32: ' footer_links = [', 33: " ['Source', 'OHGODHELPNOTDONEYET'],", 34: " ['Personal website', reverse('about-index')],", 35: ' ]', 36: ' return footer_links', 37: '', 38: 'def standard_context():', 39: ' context = {', 40: ' \'materialDesign_color\': "blue-grey",', 41: ' \'materialDesign_accentColor\': "green",', 42: ' \'navbar_title\': "Gitar",', 43: " 'navbar_backArrow': False,", 44: ' \'footer_title\': "Gitar",', 45: " 'footer_description': footer_description(),", 46: " 'footer_links': footer_links(),", 47: ' }', 48: ' return context', 49: '', 50: '# From here, the actual views start.', 51: 'def index(request):', 52: ' """ The start page of Gitar.', 53: '', 54: ' The goal of this view, is to collect all the available repositories,', 55: ' including some additional information, such as programming language,', 56: ' license, description, ... in order to give a fast overview of the ' 'most', 57: ' prominent information.', 58: ' """', 59: '', 60: ' # Collecting the available repositories:', 61: ' # Template:', 62: ' template = "gitar/index.html"', 63: ' # Requesting the repositories:', 64: ' modelRepos = Repository.objects.all()', 65: ' # From here, we start collecting info about all the repositories:', 66: ' class BlankRepository: pass # Blank object in which all data will ' 'be collected.', 67: ' repositories = []', 68: ' for modelRepo in modelRepos:', 69: ' repository = BlankRepository()', 70: " # TODO: Find a way to add all of modelRepo's fields without " 'having to', 71: ' # hardcode them. This is prone to errors and is redundant.', 72: ' repository.name = modelRepo.name', 73: ' repository.programmingLanguage = modelRepo.programmingLanguage', 74: ' repository.license = modelRepo.license', 75: '', 76: ' gitRepo = Repo.init(modelRepo.directory(), bare=True) # ' 'Connects to the Git Repo.', 77: ' # See tests.py, which assures all repositories exist. Tests are ' 'handy.', 78: ' repository.description = gitRepo.description', 79: ' # This is mostly personal taste, but I like to show the amount ' 'of files.', 80: ' repoTre… <trimmed 6163 bytes string> |
deleted | {} |
line | '' |
modified_file | <pydriller.domain.commit.ModifiedFile object at 0x7c0712700f90> |
number | 128 |
result | {'change_type': <ModificationType.ADD: 1>, 'html_code_after': ['<div class="source"><pre><span></span><span ' 'class="sd">""" views.py - Describes the ' 'different views that can be presented to the ' 'user.</span>', '<span class="sd"> Copyright © 2016 Maarten ' '"Vngngdn" Vangeneugden</span>', '', '<span class="sd"> This program is free software: you ' 'can redistribute it and/or modify</span>', '<span class="sd"> it under the terms of the GNU ' 'Affero General Public License as</span>', '<span class="sd"> published by the Free Software ' 'Foundation, either version 3 of the</span>', '<span class="sd"> License, or (at your option) any ' 'later version.</span>', '', '<span class="sd"> This program is distributed in the ' 'hope that it will be useful,</span>', '<span class="sd"> but WITHOUT ANY WARRANTY; without ' 'even the implied warranty of</span>', '<span class="sd"> MERCHANTABILITY or FITNESS FOR A ' 'PARTICULAR PURPOSE. See the</span>', '<span class="sd"> GNU Affero General Public License ' 'for more details.</span>', '', '<span class="sd"> You should have received a copy of ' 'the GNU Affero General Public License</span>', '<span class="sd"> along with this program. If not, ' 'see https://www.gnu.org/licenses/agpl.html.</span>', '<span class="sd">"""</span>', '', '<span class="kn">from</span> <span ' 'class="nn">django.shortcuts</span> <span ' 'class="kn">import</span> <span ' 'class="n">get_object_or_404</span><span ' 'class="p">,</span> <span class="n">render</span> <span ' 'class="c1"># This allows to render the template with the ' 'view here. It's pretty cool and important.</span>', '<span class="kn">from</span> <span ' 'class="nn">django.http</span> <span ' 'class="kn">import</span> <span ' 'class="n">HttpResponseRedirect</span><span ' 'class="p">,</span> <span class="n">HttpResponse</span> ', '<span class="kn">from</span> <span ' 'class="nn">django.core.urlresolvers</span> <span ' 'class="kn">import</span> <span class="n">reverse</span> ', '<span class="kn">from</span> <span ' 'class="nn">.models</span> <span class="kn">import</span> ' '<span class="o">*</span>', '', '<span class="kn">from</span> <span class="nn">git</span> ' '<span class="kn">import</span> <span ' 'class="n">Repo</span> <span class="c1"># GitPython ' 'functionality.</span>', '<span class="kn">import</span> <span ' 'class="nn">git</span>', '', '<span class="c1"># First, I list some standard variables ' 'that are common for most of the sites of this ' 'app.</span>', '', '<span class="k">def</span> <span ' 'class="nf">footer_description</span><span ' 'class="p">():</span>', ' <span class="k">return</span> <span ' 'class="s2… <trimmed 24352 bytes string> |
/srv/django/website/gitar/GitActions/CommitInfo.py
, line 150, in process_file
elif after_count in additions:
row["type"] = "addition"
row["new_num"] = after_count
# Idem for additions[]
if after_count == len(source_after):
row["line"] = source_after[-1]
else:
row["line"] = source_after[after_count] ^^^^^^^^^^^^^^^^^^^^^^^^^…
after_count += 1
else: # No change to this particular line
row["old_num"] = before_count
row["new_num"] = after_count
if len(source_before) > before_count:
row["line"] = source_before[before_count]
Variable | Value |
---|---|
additions | {1: '""" views.py - Describes the different views that can be presented to the ' 'user.', 2: ' Copyright © 2016 Maarten "Vngngdn" Vangeneugden', 3: '', 4: ' This program is free software: you can redistribute it and/or modify', 5: ' it under the terms of the GNU Affero General Public License as', 6: ' published by the Free Software Foundation, either version 3 of the', 7: ' License, or (at your option) any later version.', 8: '', 9: ' This program is distributed in the hope that it will be useful,', 10: ' but WITHOUT ANY WARRANTY; without even the implied warranty of', 11: ' MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the', 12: ' GNU Affero General Public License for more details.', 13: '', 14: ' You should have received a copy of the GNU Affero General Public ' 'License', 15: ' along with this program. If not, see ' 'https://www.gnu.org/licenses/agpl.html.', 16: '"""', 17: '', 18: 'from django.shortcuts import get_object_or_404, render # This allows to ' "render the template with the view here. It's pretty cool and important.", 19: 'from django.http import HttpResponseRedirect, HttpResponse', 20: 'from django.core.urlresolvers import reverse', 21: 'from .models import *', 22: '', 23: 'from git import Repo # GitPython functionality.', 24: 'import git', 25: '', 26: '# First, I list some standard variables that are common for most of the ' 'sites of this app.', 27: '', 28: 'def footer_description():', 29: ' return "Gitar is a simple web app that allows its users to easily ' 'share Git repos in combination with the Django framework."', 30: '', 31: 'def footer_links():', 32: ' footer_links = [', 33: " ['Source', 'OHGODHELPNOTDONEYET'],", 34: " ['Personal website', reverse('about-index')],", 35: ' ]', 36: ' return footer_links', 37: '', 38: 'def standard_context():', 39: ' context = {', 40: ' \'materialDesign_color\': "blue-grey",', 41: ' \'materialDesign_accentColor\': "green",', 42: ' \'navbar_title\': "Gitar",', 43: " 'navbar_backArrow': False,", 44: ' \'footer_title\': "Gitar",', 45: " 'footer_description': footer_description(),", 46: " 'footer_links': footer_links(),", 47: ' }', 48: ' return context', 49: '', 50: '# From here, the actual views start.', 51: 'def index(request):', 52: ' """ The start page of Gitar.', 53: '', 54: ' The goal of this view, is to collect all the available repositories,', 55: ' including some additional information, such as programming language,', 56: ' license, description, ... in order to give a fast overview of the ' 'most', 57: ' prominent information.', 58: ' """', 59: '', 60: ' # Collecting the available repositories:', 61: ' # Template:', 62: ' template = "gitar/index.html"', 63: ' # Requesting the repositories:', 64: ' modelRepos = Repository.objects.all()', 65: ' # From here, we start collecting info about all the repositories:', 66: ' class BlankRepository: pass # Blank object in which all data will ' 'be collected.', 67: ' repositories = []', 68: ' for modelRepo in modelRepos:', 69: ' repository = BlankRepository()', 70: " # TODO: Find a way to add all of modelRepo's fields without " 'having to', 71: ' # hardcode them. This is prone to errors and is redundant.', 72: ' repository.name = modelRepo.name', 73: ' repository.programmingLanguage = modelRepo.programmingLanguage', 74: ' repository.license = modelRepo.license', 75: '', 76: ' gitRepo = Repo.init(modelRepo.directory(), bare=True) # ' 'Connects to the Git Repo.', 77: ' # See tests.py, which assures all repositories exist. Tests are ' 'handy.', 78: ' repository.description = gitRepo.description', 79: ' # This is mostly personal taste, but I like to show the amount ' 'of files.', 80: ' repoTre… <trimmed 6163 bytes string> |
after_count | 127 |
before_count | 1 |
deletions | {} |
row | {'new_num': 127, 'type': 'addition'} |
rows | [{'line': '<span class="sd"> Copyright © 2016 Maarten "Vngngdn" ' 'Vangeneugden</span>', 'new_num': 1, 'type': 'addition'}, {'line': '', 'new_num': 2, 'type': 'addition'}, {'line': '<span class="sd"> This program is free software: you can ' 'redistribute it and/or modify</span>', 'new_num': 3, 'type': 'addition'}, {'line': '<span class="sd"> it under the terms of the GNU Affero General ' 'Public License as</span>', 'new_num': 4, 'type': 'addition'}, {'line': '<span class="sd"> published by the Free Software Foundation, ' 'either version 3 of the</span>', 'new_num': 5, 'type': 'addition'}, {'line': '<span class="sd"> License, or (at your option) any later ' 'version.</span>', 'new_num': 6, 'type': 'addition'}, {'line': '', 'new_num': 7, 'type': 'addition'}, {'line': '<span class="sd"> This program is distributed in the hope that ' 'it will be useful,</span>', 'new_num': 8, 'type': 'addition'}, {'line': '<span class="sd"> but WITHOUT ANY WARRANTY; without even the ' 'implied warranty of</span>', 'new_num': 9, 'type': 'addition'}, {'line': '<span class="sd"> MERCHANTABILITY or FITNESS FOR A PARTICULAR ' 'PURPOSE. See the</span>', 'new_num': 10, 'type': 'addition'}, {'line': '<span class="sd"> GNU Affero General Public License for more ' 'details.</span>', 'new_num': 11, 'type': 'addition'}, {'line': '', 'new_num': 12, 'type': 'addition'}, {'line': '<span class="sd"> You should have received a copy of the GNU ' 'Affero General Public License</span>', 'new_num': 13, 'type': 'addition'}, {'line': '<span class="sd"> along with this program. If not, see ' 'https://www.gnu.org/licenses/agpl.html.</span>', 'new_num': 14, 'type': 'addition'}, {'line': '<span class="sd">"""</span>', 'new_num': 15, 'type': 'addition'}, {'line': '', 'new_num': 16, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span ' 'class="nn">django.shortcuts</span> <span class="kn">import</span> ' '<span class="n">get_object_or_404</span><span class="p">,</span> ' '<span class="n">render</span> <span class="c1"># This allows to ' 'render the template with the view here. It's pretty cool and ' 'important.</span>', 'new_num': 17, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span class="nn">django.http</span> ' '<span class="kn">import</span> <span ' 'class="n">HttpResponseRedirect</span><span class="p">,</span> <span ' 'class="n">HttpResponse</span> ', 'new_num': 18, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span ' 'class="nn">django.core.urlresolvers</span> <span ' 'class="kn">import</span> <span class="n">reverse</span> ', 'new_num': 19, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span class="nn">.models</span> <span ' 'class="kn">import</span> <span class="o">*</span>', 'new_num': 20, 'type': 'addition'}, {'line': '', 'new_num': 21, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span class="nn">git</span> <span ' 'class="kn">import</span> <span class="n">Repo</span> <span ' 'class="c1"># GitPython functionality.</span>', 'new_num': 22, 'type': 'addition'}, {'line': '<span class="kn">import</span> <span class="nn">git</span>', 'new_num': 23, 'type': 'addition'}, {'line': '', 'new_num': 24, 'type': 'addition'}, {'line': '<span class="c1"># First, I list some standard variables that are ' 'common for most of the sites of this app.</span>', 'new_num': 25, 'type': 'addition'}, {'line': '', 'new_num': 26, 'type': 'addition'}, {'line': '<span class="k">def</span> <span ' 'class="nf">footer_description</span><span class="p">():</span>', 'new_num': 27, 'type': 'addition'}, {'line': ' <span class="k">return</span> <span class="s2">"Gitar is a ' 'simple … <trimmed 24056 bytes string> |
source_after | ['<div class="source"><pre><span></span><span class="sd">""" ' 'views.py - Describes the different views that can be presented to the ' 'user.</span>', '<span class="sd"> Copyright © 2016 Maarten "Vngngdn" ' 'Vangeneugden</span>', '', '<span class="sd"> This program is free software: you can redistribute it ' 'and/or modify</span>', '<span class="sd"> it under the terms of the GNU Affero General Public ' 'License as</span>', '<span class="sd"> published by the Free Software Foundation, either ' 'version 3 of the</span>', '<span class="sd"> License, or (at your option) any later version.</span>', '', '<span class="sd"> This program is distributed in the hope that it will be ' 'useful,</span>', '<span class="sd"> but WITHOUT ANY WARRANTY; without even the implied ' 'warranty of</span>', '<span class="sd"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ' 'See the</span>', '<span class="sd"> GNU Affero General Public License for more ' 'details.</span>', '', '<span class="sd"> You should have received a copy of the GNU Affero ' 'General Public License</span>', '<span class="sd"> along with this program. If not, see ' 'https://www.gnu.org/licenses/agpl.html.</span>', '<span class="sd">"""</span>', '', '<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span ' 'class="kn">import</span> <span class="n">get_object_or_404</span><span ' 'class="p">,</span> <span class="n">render</span> <span class="c1"># This ' 'allows to render the template with the view here. It's pretty cool and ' 'important.</span>', '<span class="kn">from</span> <span class="nn">django.http</span> <span ' 'class="kn">import</span> <span class="n">HttpResponseRedirect</span><span ' 'class="p">,</span> <span class="n">HttpResponse</span> ', '<span class="kn">from</span> <span ' 'class="nn">django.core.urlresolvers</span> <span class="kn">import</span> ' '<span class="n">reverse</span> ', '<span class="kn">from</span> <span class="nn">.models</span> <span ' 'class="kn">import</span> <span class="o">*</span>', '', '<span class="kn">from</span> <span class="nn">git</span> <span ' 'class="kn">import</span> <span class="n">Repo</span> <span class="c1"># ' 'GitPython functionality.</span>', '<span class="kn">import</span> <span class="nn">git</span>', '', '<span class="c1"># First, I list some standard variables that are common for ' 'most of the sites of this app.</span>', '', '<span class="k">def</span> <span class="nf">footer_description</span><span ' 'class="p">():</span>', ' <span class="k">return</span> <span class="s2">"Gitar is a simple ' 'web app that allows its users to easily share Git repos in combination with ' 'the Django framework."</span>', '', '<span class="k">def</span> <span class="nf">footer_links</span><span ' 'class="p">():</span>', ' <span class="n">footer_links</span> <span class="o">=</span> <span ' 'class="p">[</span>', ' <span class="p">[</span><span ' 'class="s1">'Source'</span><span class="p">,</span> <span ' 'class="s1">'OHGODHELPNOTDONEYET'</span><span class="p">],</span>', ' <span class="p">[</span><span class="s1">'Personal ' 'website'</span><span class="p">,</span> <span ' 'class="n">reverse</span><span class="p">(</span><span ' 'class="s1">'about-index'</span><span class="p">)],</span>', ' <span class="p">]</span>', ' <span class="k">return</span> <span class="n">footer_links</span>', '', '<span class="k">def</span> <span class="nf">standard_context</span><span ' 'class="p">():</span>', ' <span class="n">context</span> <span class="o">=</span> <span ' 'class="p">{</span>', ' <span class="s1">'materialDesign_color'</span><span ' 'class="p">:</span> <span class="s2">"blue-grey"</span><span ' 'class="p">,</span>', ' <span ' 'class="s1">'materialDesign_accentColor'</span><span ' 'class="p">:</span> <span class="s2">"… <trimmed 16222 bytes string> |
source_before | [] |
AnonymousUser
No GET data
No POST data
No FILES data
No cookie data
Variable | Value |
---|---|
CONTENT_LENGTH | '' |
CONTENT_TYPE | '' |
DOCUMENT_ROOT | '/etc/nginx/html' |
HTTPS | 'on' |
HTTP_ACCEPT | '*/*' |
HTTP_HOST | 'maartenv.be' |
HTTP_USER_AGENT | 'claudebot' |
PATH_INFO | '/gitar/gitar/validigo/e15cfdf9ce610943b6caa901b40bd1581227b894' |
QUERY_STRING | '' |
REMOTE_ADDR | '44.200.32.31' |
REMOTE_PORT | '52912' |
REQUEST_METHOD | 'GET' |
REQUEST_SCHEME | 'https' |
REQUEST_URI | '/gitar/gitar/validigo/e15cfdf9ce610943b6caa901b40bd1581227b894' |
SCRIPT_NAME | '' |
SERVER_NAME | '[2a02:1812:151f:2900:1e87:2cff:fe43:5c0e]' |
SERVER_PORT | '443' |
SERVER_PROTOCOL | 'HTTP/2.0' |
uwsgi.node | b'HeadQuarters' |
uwsgi.version | b'2.0.23' |
wsgi.errors | <_io.TextIOWrapper name=2 mode='w' encoding='UTF-8'> |
wsgi.file_wrapper | <built-in function uwsgi_sendfile> |
wsgi.input | <uwsgi._Input object at 0x7c071136c910> |
wsgi.multiprocess | True |
wsgi.multithread | False |
wsgi.run_once | False |
wsgi.url_scheme | 'https' |
wsgi.version | (1, 0) |
website.settings
Setting | Value |
---|---|
ABSOLUTE_URL_OVERRIDES | {} |
ADMINS | [] |
ALLOWED_HOSTS | ['maartenv.be', 'localhost', '127.0.0.1', '192.168.178.20', '78.22.232.102', '[2a02:1812:151f:2900:1e87:2cff:fe43:5c0e]'] |
APPEND_SLASH | True |
AUTHENTICATION_BACKENDS | ['django.contrib.auth.backends.ModelBackend'] |
AUTH_PASSWORD_VALIDATORS | '********************' |
AUTH_USER_MODEL | 'auth.User' |
BASE_DIR | '/srv/django/website' |
CACHES | {'default': {'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache', 'LOCATION': '127.0.0.1:11211', 'TIMEOUT': 86400}} |
CACHE_MIDDLEWARE_ALIAS | 'default' |
CACHE_MIDDLEWARE_KEY_PREFIX | '********************' |
CACHE_MIDDLEWARE_SECONDS | 86400 |
CSRF_COOKIE_AGE | 31449600 |
CSRF_COOKIE_DOMAIN | None |
CSRF_COOKIE_HTTPONLY | True |
CSRF_COOKIE_MASKED | False |
CSRF_COOKIE_NAME | 'csrftoken' |
CSRF_COOKIE_PATH | '/' |
CSRF_COOKIE_SAMESITE | 'Lax' |
CSRF_COOKIE_SECURE | True |
CSRF_FAILURE_VIEW | 'django.views.csrf.csrf_failure' |
CSRF_HEADER_NAME | 'HTTP_X_CSRFTOKEN' |
CSRF_TRUSTED_ORIGINS | ['https://maartenv.be'] |
CSRF_USE_SESSIONS | False |
DATABASES | {'default': {'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'CONN_HEALTH_CHECKS': False, 'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.postgresql', 'HOST': '127.0.0.1', 'NAME': 'website', 'OPTIONS': {}, 'PASSWORD': '********************', 'PORT': '5432', 'TEST': {'CHARSET': None, 'COLLATION': None, 'MIGRATE': True, 'MIRROR': None, 'NAME': None}, 'TIME_ZONE': None, 'USER': 'postgres'}} |
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_EXCEPTION_REPORTER | 'django.views.debug.ExceptionReporter' |
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 | '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 |
EXTRA_LANG_INFO | {'fr-be': {'bidi': False, 'code': 'fr-be', 'name': 'Belgian French', 'name_local': 'Français de Belgique'}, 'nl-be': {'bidi': False, 'code': 'nl-be', 'name': 'Flemish', 'name_local': 'Vlaams', 'name_translated': 'Flemish'}} |
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 |
FORM_RENDERER | 'django.forms.renderers.DjangoTemplates' |
IGNORABLE_404_URLS | [] |
INSTALLED_APPS | ('django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.humanize', 'dit', 'about', 'gitar', 'blog', 'publications', 'durf_ondernemen_app', 'ugent2020', 'demobel') |
INTERNAL_IPS | [] |
LANGUAGES | [('en', 'English'), ('nl', 'Dutch'), ('nl-be', 'Flemish'), ('fr', 'French'), ('fr-be', 'Belgian French'), ('de', 'German'), ('es', 'Spanish'), ('eo', 'Esperanto'), ('af', 'Afrikaans')] |
LANGUAGES_BIDI | ['he', 'ar', 'ar-dz', 'ckb', 'fa', 'ur'] |
LANGUAGE_CODE | 'en-uk' |
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 |
LANG_INFO | {'af': {'bidi': False, 'code': 'af', 'name': 'Afrikaans', 'name_local': 'Afrikaans'}, 'ar': {'bidi': True, 'code': 'ar', 'name': 'Arabic', 'name_local': 'العربيّة'}, 'ar-dz': {'bidi': True, 'code': 'ar-dz', 'name': 'Algerian Arabic', 'name_local': 'العربية الجزائرية'}, 'ast': {'bidi': False, 'code': 'ast', 'name': 'Asturian', 'name_local': 'asturianu'}, 'az': {'bidi': True, 'code': 'az', 'name': 'Azerbaijani', 'name_local': 'Azərbaycanca'}, 'be': {'bidi': False, 'code': 'be', 'name': 'Belarusian', 'name_local': 'беларуская'}, 'bg': {'bidi': False, 'code': 'bg', 'name': 'Bulgarian', 'name_local': 'български'}, 'bn': {'bidi': False, 'code': 'bn', 'name': 'Bengali', 'name_local': 'বাংলা'}, 'br': {'bidi': False, 'code': 'br', 'name': 'Breton', 'name_local': 'brezhoneg'}, 'bs': {'bidi': False, 'code': 'bs', 'name': 'Bosnian', 'name_local': 'bosanski'}, 'ca': {'bidi': False, 'code': 'ca', 'name': 'Catalan', 'name_local': 'català'}, 'ckb': {'bidi': True, 'code': 'ckb', 'name': 'Central Kurdish (Sorani)', 'name_local': 'کوردی'}, 'cs': {'bidi': False, 'code': 'cs', 'name': 'Czech', 'name_local': 'česky'}, 'cy': {'bidi': False, 'code': 'cy', 'name': 'Welsh', 'name_local': 'Cymraeg'}, 'da': {'bidi': False, 'code': 'da', 'name': 'Danish', 'name_local': 'dansk'}, 'de': {'bidi': False, 'code': 'de', 'name': 'German', 'name_local': 'Deutsch', 'name_translated': 'German'}, 'dsb': {'bidi': False, 'code': 'dsb', 'name': 'Lower Sorbian', 'name_local': 'dolnoserbski'}, 'el': {'bidi': False, 'code': 'el', 'name': 'Greek', 'name_local': 'Ελληνικά'}, 'en': {'bidi': False, 'code': 'en', 'name': 'English', 'name_local': 'English', 'name_translated': 'English'}, 'en-au': {'bidi': False, 'code': 'en-au', 'name': 'Australian English', 'name_local': 'Australian English'}, 'en-gb': {'bidi': False, 'code': 'en-gb', 'name': 'British English', 'name_local': 'British English'}, 'eo': {'bidi': False, 'code': 'eo', 'name': 'Esperanto', 'name_local': 'Esperanto'}, 'es': {'bidi': False, 'code': 'es', 'name': 'Spanish', 'name_local': 'español', 'name_translated': 'Spanish'}, 'es-ar': {'bidi': False, 'code': 'es-ar', 'name': 'Argentinian Spanish', 'name_local': 'español de Argentina'}, 'es-co': {'bidi': False, 'code': 'es-co', 'name': 'Colombian Spanish', 'name_local': 'español de Colombia'}, 'es-mx': {'bidi': False, 'code': 'es-mx', 'name': 'Mexican Spanish', 'name_local': 'español de Mexico'}, 'es-ni': {'bidi': False, 'code': 'es-ni', 'name': 'Nicaraguan Spanish', 'name_local': 'español de Nicaragua'}, 'es-ve': {'bidi': False, 'code': 'es-ve', 'name': 'Venezuelan Spanish', 'name_local': 'español de Venezuela'}, 'et': {'bidi': False, 'code': 'et', 'name': 'Estonian', 'name_local': 'eesti'}, 'eu': {'bidi': False, 'code': 'eu', 'name': 'Basque', 'name_local': 'Basque'}, 'fa': {'bidi': True, 'code': 'fa', 'name': 'Persian', 'name_local': 'فارسی'}, 'fi': {'bidi': False, 'code': 'fi', 'name': 'Finnish', 'name_local': 'suomi'}, 'fr': {'bidi': False, 'code': 'fr', 'name': 'French', 'name_local': 'français', 'name_translated': 'French'}, 'fr-be': {'bidi': False, 'code': 'fr-be', 'name': 'Belgian French', 'name_local': 'Français de Belgique'}, 'fy': {'bidi': False, 'code': 'fy', 'name': 'Frisian', 'name_local': 'frysk'}, 'ga': {'bidi': False, 'code': 'ga', 'name': 'Irish', 'name_local': 'Gaeilge'}, 'gd': {'bidi': False, 'code': 'gd', 'name': 'Scottish Gaelic', 'name_local': 'Gàidhlig'}, 'gl': {'bidi': False, 'code': 'gl', 'name': 'Galician', 'name_local': 'galego'}, 'he': {'bidi': True, 'code': 'he', 'name': 'Hebrew', 'name_local': 'עברית'}, 'hi': {'bidi': False, 'code': 'hi', 'name': 'Hindi', 'name_local': 'हिंदी'}, 'hr': {'bidi': False, 'code': 'hr', 'name': 'Croatian', 'name_local': 'Hrvatski'}, 'hsb': {'bidi': False, 'code': 'hsb', 'name': 'Upper Sorbian', 'name_local': 'hornjoserbsce'}, 'hu': {'bidi': False, 'code': 'hu', 'name': 'Hungarian', 'name_local': 'Magyar'}, 'hy': {'bidi': False, 'code': 'hy', 'name': 'Armenian', 'name_local': 'հայերեն'}, 'ia': {'bidi': False, 'code': 'ia', 'name': 'Interlingua', 'name_local': 'Interlingua'}, 'id': {'bidi': False, 'code': 'id', 'name': 'Indonesian', 'name_local': 'Bahasa Indonesia'}, 'ig': {'bidi': False, 'code': 'ig', 'name': 'Igbo', 'name_local': 'Asụsụ Ìgbò'}, 'io': {'bidi': False, 'code': 'io', 'name': 'Ido', 'name_local': 'ido'}, 'is': {'bidi': False, 'code': 'is', 'name': 'Icelandic', 'name_local': 'Íslenska'}, 'it': {'bidi': False, 'code': 'it', 'name': 'Italian', 'name_local': 'italiano'}, 'ja': {'bidi': False, 'code': 'ja', 'name': 'Japanese', 'name_local': '日本語'}, 'ka': {'bidi': False, 'code': 'ka', 'name': 'Georgian', 'name_local': 'ქართული'}, 'kab': {'bidi': False, 'code': 'kab', 'name': 'Kabyle', 'name_local': 'taqbaylit'}, 'kk': {'bidi': False, 'code': 'kk', 'name': 'Kazakh', 'name_local': 'Қазақ'}, 'km': {'bidi': False, 'code': 'km', 'name': 'Khmer', 'name_local': 'Khmer'}, 'kn': {'bidi': False, 'code': 'kn', 'name': 'Kannada', 'name_local': 'Kannada'}, 'ko': {'bidi': False, 'code': 'ko', 'name': 'Korean', 'name_local': '한국어'}, 'ky': {'bidi': False, 'code': 'ky', 'name': 'Kyrgyz', 'name_local': 'Кыргызча'}, 'lb': {'bidi': False, 'code': 'lb', 'name': 'Luxembourgish', 'name_local': 'Lëtzebuergesch'}, 'lt': {'bidi': False, 'code': 'lt', 'name': 'Lithuanian', 'name_local': 'Lietuviškai'}, 'lv': {'bidi': False, 'code': 'lv', 'name': 'Latvian', 'name_local': 'latviešu'}, 'mk': {'bidi': False, 'code': 'mk', 'name': 'Macedonian', 'name_local': 'Македонски'}, 'ml': {'bidi': False, 'code': 'ml', 'name': 'Malayalam', 'name_local': 'മലയാളം'}, 'mn': {'bidi': False, 'code': 'mn', 'name': 'Mongolian', 'name_local': 'Mongolian'}, 'mr': {'bidi': False, 'code': 'mr', 'name': 'Marathi', 'name_local': 'मराठी'}, 'ms': {'bidi': False, 'code': 'ms', 'name': 'Malay', 'name_local': 'Bahasa Melayu'}, 'my': {'bidi': False, 'code': 'my', 'name': 'Burmese', 'name_local': 'မြန်မာဘာသာ'}, 'nb': {'bidi': False, 'code': 'nb', 'name': 'Norwegian Bokmal', 'name_local': 'norsk (bokmål)'}, 'ne': {'bidi': False, 'code': 'ne', 'name': 'Nepali', 'name_local': 'नेपाली'}, 'nl': {'bidi': False, 'code': 'nl', 'name': 'Dutch', 'name_local': 'Nederlands', 'name_translated': 'Dutch'}, 'nl-be': {'bidi': False, 'code': 'nl-be', 'name': 'Flemish', 'name_local': 'Vlaams', 'name_translated': 'Flemish'}, 'nn': {'bidi': False, 'code': 'nn', 'name': 'Norwegian Nynorsk', 'name_local': 'norsk (nynorsk)'}, 'no': {'bidi': False, 'code': 'no', 'name': 'Norwegian', 'name_local': 'norsk'}, 'os': {'bidi': False, 'code': 'os', 'name': 'Ossetic', 'name_local': 'Ирон'}, 'pa': {'bidi': False, 'code': 'pa', 'name': 'Punjabi', 'name_local': 'Punjabi'}, 'pl': {'bidi': False, 'code': 'pl', 'name': 'Polish', 'name_local': 'polski'}, 'pt': {'bidi': False, 'code': 'pt', 'name': 'Portuguese', 'name_local': 'Português'}, 'pt-br': {'bidi': False, 'code': 'pt-br', 'name': 'Brazilian Portuguese', 'name_local': 'Português Brasileiro'}, 'ro': {'bidi': False, 'code': 'ro', 'name': 'Romanian', 'name_local': 'Română'}, 'ru': {'bidi': False, 'code': 'ru', 'name': 'Russian', 'name_local': 'Русский'}, 'sk': {'bidi': False, 'code': 'sk', 'name': 'Slovak', 'name_local': 'Slovensky'}, 'sl': {'bidi': False, 'code': 'sl', 'name': 'Slovenian', 'name_local': 'Slovenščina'}, 'sq': {'bidi': False, 'code': 'sq', 'name': 'Albanian', 'name_local': 'shqip'}, 'sr': {'bidi': False, 'code': 'sr', 'name': 'Serbian', 'name_local': 'српски'}, 'sr-latn': {'bidi': False, 'code': 'sr-latn', 'name': 'Serbian Latin', 'name_local': 'srpski (latinica)'}, 'sv': {'bidi': False, 'code': 'sv', 'name': 'Swedish', 'name_local': 'svenska'}, 'sw': {'bidi': False, 'code': 'sw', 'name': 'Swahili', 'name_local': 'Kiswahili'}, 'ta': {'bidi': False, 'code': 'ta', 'name': 'Tamil', 'name_local': 'தமிழ்'}, 'te': {'bidi': False, 'code': 'te', 'name': 'Telugu', 'name_local': 'తెలుగు'}, 'tg': {'bidi': False, 'code': 'tg', 'name': 'Tajik', 'name_local': 'тоҷикӣ'}, 'th': {'bidi': False, 'code': 'th', 'name': 'Thai', 'name_local': 'ภาษาไทย'}, 'tk': {'bidi': False, 'code': 'tk', 'name': 'Turkmen', 'name_local': 'Türkmençe'}, 'tr': {'bidi': False, 'code': 'tr', 'name': 'Turkish', 'name_local': 'Türkçe'}, 'tt': {'bidi': False, 'code': 'tt', 'name': 'Tatar', 'name_local': 'Татарча'}, 'udm': {'bidi': False, 'code': 'udm', 'name': 'Udmurt', 'name_local': 'Удмурт'}, 'uk': {'bidi': False, 'code': 'uk', 'name': 'Ukrainian', 'name_local': 'Українська'}, 'ur': {'bidi': True, 'code': 'ur', 'name': 'Urdu', 'name_local': 'اردو'}, 'uz': {'bidi': False, 'code': 'uz', 'name': 'Uzbek', 'name_local': 'oʻzbek tili'}, 'vi': {'bidi': False, 'code': 'vi', 'name': 'Vietnamese', 'name_local': 'Tiếng Việt'}, 'zh-cn': {'fallback': ['zh-hans']}, 'zh-hans': {'bidi': False, 'code': 'zh-hans', 'name': 'Simplified Chinese', 'name_local': '简体中文'}, 'zh-hant': {'bidi': False, 'code': 'zh-hant', 'name': 'Traditional Chinese', 'name_local': '繁體中文'}, 'zh-hk': {'fallback': ['zh-hant']}, 'zh-mo': {'fallback': ['zh-hant']}, 'zh-my': {'fallback': ['zh-hans']}, 'zh-sg': {'fallback': ['zh-hans']}, 'zh-tw': {'fallback': ['zh-hant']}} |
LOCALE_PATHS | ('/srv/django/website/locale', '/srv/django/website/about/templates/about/locale', '/srv/django/website/gitar/templates/gitar/locale', '/srv/django/website/blog/templates/blog/locale', '/srv/django/website/publications/templates/publications/locale', '/srv/django/website/demobel/templates/demobel/locale', '/srv/django/website/website/templates/website/locale', '/srv/django/website/ugent2020/templates/ugent2020/locale') |
LOGGING | {} |
LOGGING_CONFIG | 'logging.config.dictConfig' |
LOGIN_REDIRECT_URL | '/accounts/profile/' |
LOGIN_URL | '/accounts/login/' |
LOGOUT_REDIRECT_URL | None |
MANAGERS | [] |
MEDIA_ROOT | '/srv/django/website/media/' |
MEDIA_URL | '/media/' |
MESSAGE_STORAGE | 'django.contrib.messages.storage.fallback.FallbackStorage' |
MIDDLEWARE | ('django.middleware.cache.UpdateCacheMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.cache.FetchFromCacheMiddleware', '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', 'django.middleware.security.SecurityMiddleware') |
MIGRATION_MODULES | {} |
MONTH_DAY_FORMAT | 'F j' |
NUMBER_GROUPING | 0 |
PASSWORD_HASHERS | '********************' |
PASSWORD_RESET_TIMEOUT | '********************' |
PREPEND_WWW | False |
PROJECT_ROOT | '/srv/django/website' |
ROOT_URLCONF | 'website.urls' |
SECRET_KEY | '********************' |
SECRET_KEY_FALLBACKS | '********************' |
SECURE_BROWSER_XSS_FILTER | True |
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 | True |
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 | True |
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 | 'website.settings' |
SHORT_DATETIME_FORMAT | 'm/d/Y P' |
SHORT_DATE_FORMAT | 'm/d/Y' |
SIGNING_BACKEND | 'django.core.signing.TimestampSigner' |
SILENCED_SYSTEM_CHECKS | [] |
STATICFILES_DIRS | [] |
STATICFILES_FINDERS | ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] |
STATICFILES_STORAGE | 'django.contrib.staticfiles.storage.StaticFilesStorage' |
STATIC_ROOT | '/srv/django/website/static/' |
STATIC_URL | '/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': ['website/templates/', '/tmp/'], 'OPTIONS': {'context_processors': ['django.template.context_processors.debug', 'django.template.context_processors.i18n', '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_DEPRECATED_PYTZ | 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 | 'website.wsgi.application' |
X_FRAME_OPTIONS | 'DENY' |
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.