list index out of range
Request Method: | GET |
---|---|
Request URL: | https://maartenv.be/gitar/joeni/validigo/cb71f7808565258f368c |
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 11:29:50 +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/joeni/validigo/cb71f7808565258f368c'> |
/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': 'cb71f7808565258f368c', 'repository_name': 'joeni'} |
middleware_method | <bound method CsrfViewMiddleware.process_view of <CsrfViewMiddleware get_response=convert_exception_to_response.<locals>.inner>> |
request | <WSGIRequest: GET '/gitar/joeni/validigo/cb71f7808565258f368c'> |
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 0x7c070d80e450> |
commit_hash | 'cb71f7808565258f368c' |
commit_repo | <pydriller.repository.Repository object at 0x7c070ee86c10> |
context | {'commit': <pydriller.domain.commit.Commit object at 0x7c070d80e450>, 'first_line': 'Add new roster module and make related changes', '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.MODIFY: 5>, 'deleted_methods': [], 'html_code_after': ['<div ' 'class="source"><pre><span></span><span ' 'class="kn">from</span> <span ' 'class="nn">django.db</span> <span ' 'class="kn">import</span> <span ' 'class="n">models</span>', '<span class="kn">from</span> <span ' 'class="nn">django.core.exceptions</span> ' '<span class="kn">import</span> <span ' 'class="n">ValidationError</span>', '<span class="kn">from</span> <span ' 'class="nn">django.core.validators</span> ' '<span class="kn">import</span> <span ' 'class="n">MaxValueValidator</span>', '<span class="kn">from</span> <span ' 'class="nn">django.utils.translation</span> ' '<span class="kn">import</span> <span ' 'class="n">ugettext_lazy</span> <span ' 'class="k">as</span> <span ' 'class="n">_</span>', '<span class="kn">from</span> <span ' 'class="nn">django.utils.text</span> ' '<span class="kn">import</span> <span ' 'class="n">slugify</span>', '<span class="kn">from</span> <span ' 'class="nn">django.contrib.auth.models</span> ' '<span class="kn">import</span> <span ' 'class="n">AbstractUser</span>', '<span class="kn">import</span> <span ' 'class="nn">datetime</span>', '<span class="kn">import</span> <span ' 'class="nn">os</span>', '<span class="kn">import</span> <span ' 'class="nn">uuid</span>', '<span class="c1">#from . import ' 'roster</span>', '', '<span class="k">def</span> <span ' 'class="nf">validate_IBAN</span><span ' 'class="p">(</span><span ' 'class="n">value</span><span ' 'class="p">):</span>', '<span class="w"> </span><span ' 'class="sd">""" ' 'Validates if the given value ' 'qualifies as a valid IBAN ' 'number.</span>', '<span class="sd"> This validator ' … <trimmed 1139360 bytes string> |
modified_file | <pydriller.domain.commit.ModifiedFile object at 0x7c070d2b76d0> |
parts | ['Add new roster module and make related changes', 'The old roster module was terribly bugged and not properly written to begin\n' "with. I've created a new module that has a ton less bugs, and has more " 'features.\n' "For legacy reasons, I'm keeping the old roster module for a while, but I " 'will\n' 'remove it soon enough.'] |
processed | {'change_type': <ModificationType.MODIFY: 5>, 'deleted_methods': [], 'html_code_after': ['<div class="source"><pre><span></span><span ' 'class="kn">from</span> <span class="nn">django.db</span> ' '<span class="kn">import</span> <span ' 'class="n">models</span>', '<span class="kn">from</span> <span ' 'class="nn">django.core.exceptions</span> <span ' 'class="kn">import</span> <span ' 'class="n">ValidationError</span>', '<span class="kn">from</span> <span ' 'class="nn">django.core.validators</span> <span ' 'class="kn">import</span> <span ' 'class="n">MaxValueValidator</span>', '<span class="kn">from</span> <span ' 'class="nn">django.utils.translation</span> <span ' 'class="kn">import</span> <span ' 'class="n">ugettext_lazy</span> <span class="k">as</span> ' '<span class="n">_</span>', '<span class="kn">from</span> <span ' 'class="nn">django.utils.text</span> <span ' 'class="kn">import</span> <span class="n">slugify</span>', '<span class="kn">from</span> <span ' 'class="nn">django.contrib.auth.models</span> <span ' 'class="kn">import</span> <span ' 'class="n">AbstractUser</span>', '<span class="kn">import</span> <span ' 'class="nn">datetime</span>', '<span class="kn">import</span> <span ' 'class="nn">os</span>', '<span class="kn">import</span> <span ' 'class="nn">uuid</span>', '<span class="c1">#from . import roster</span>', '', '<span class="k">def</span> <span ' 'class="nf">validate_IBAN</span><span ' 'class="p">(</span><span class="n">value</span><span ' 'class="p">):</span>', '<span class="w"> </span><span ' 'class="sd">""" Validates if the given ' 'value qualifies as a valid IBAN number.</span>', '<span class="sd"> This validator checks if the ' 'structure is valid, and calculates the control</span>', '<span class="sd"> number if the structure is correct. ' 'If the control number fails, or the</span>', '<span class="sd"> structure is invalid, a ' 'ValidationError will be raised. In that case,</span>', '<span class="sd"> the Error will specify whether the ' 'structure is incorrect, or the control</span>', '<span class="sd"> number is not valid.</span>', '<span class="sd"> """</span>', ' <span class="c1"># FIXME: This function is not ' 'complete. When there's time, implement</span>', ' <span class="c1"># as specified at ' 'https://nl.wikipedia.org/wiki/International_Bank_Account_Number#Structuur</span>', ' <span class="k">if</span> <span ' 'class="kc">False</span><span class="p">:</span>', ' <span class="k">raise</span> <span ' 'class="n">ValidationError</span><span class="p">(</span>', ' <span class="n">_</span><span ' 'class="p">(</span><span class="s1">'</span><span ' 'class="si">%(value)s</span><span class="s1"> is not a ' 'valid IBAN number.'</span><span class="p">),</span>', … <trimmed 672211 bytes string> |
repository_model | <Repository: joeni> |
repository_name | 'joeni' |
request | <WSGIRequest: GET '/gitar/joeni/validigo/cb71f7808565258f368c'> |
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: '""" This is a module dedicated to collecting all functionality regarding ' 'the', 2: 'building of the roster. """', 3: 'from django.shortcuts import render', 4: 'from collections import OrderedDict', 5: 'import datetime', 6: 'from django.urls import reverse', 7: 'from django.utils.translation import gettext as _', 8: 'from .models import *', 9: 'import administration', 10: '', 11: 'def same_day(datetime_a, datetime_b):', 12: ' """True if both a and b are on the same day, false otherwise."""', 13: ' return (', 14: ' datetime_a.day == datetime_b.day and', 15: ' datetime_a.month == datetime_b.month and', 16: ' datetime_a.year == datetime_b.year)', 17: '', 18: 'def same_daytime(moment, hour, minute):', 19: ' return (moment.minute == minute and moment.hour == hour)', 20: '', 21: 'def conflicting_events(events):', 22: ' """Finds conflicting events in the given set, and returns a list of ' 'all', 23: ' conflicting events, grouped according to their conflicts in ' 'lists."""', 24: ' conflicts = list()', 25: ' test_conflict = list()', 26: ' for event in events.order_by("begin_time"):', 27: ' if len(test_conflict) == 0:', 28: ' test_conflict.append(event)', 29: ' else:', 30: ' possible_conflict = test_conflict.pop()', 31: ' if possible_conflict.end_time > event.begin_time: # New ' 'conflict!', 32: ' test_conflict.append(possible_conflict)', 33: ' test_conflict.append(event)', 34: ' elif len(test_conflict) == 0: # No conflict', 35: ' pass', 36: ' else: # No conflict, but previous conflicting events exist', 37: ' test_conflict.append(possible_conflict)', 38: ' conflicts.append(test_conflict.copy())', 39: ' test_conflict.clear()', 40: ' return conflicts', 41: '', 42: 'def replace_conflict(events, conflicts):', 43: ' """Removes the conflicts from events, and replaces them with a new', 44: ' event. Returns the key number for this conflict set. Expects the ' 'conflicts', 45: ' to be in chronological order based on begin_time."""', 46: ' for conflict in conflicting_events:', 47: ' events.remove(conflict)', 48: ' conflict_number = 0', 49: ' for event in events:', 50: ' if event.note == "Conflict - " + str(conflict_number):', 51: ' conflict_number += 1', 52: '', 53: ' replacement = Event.create(', 54: ' conflicts[0].begin_time,', 55: ' conflicts[-1].end_time,', 56: ' note = "Conflict - " + str(conflict_number),', 57: ' )', 58: ' events.add(replacement)', 59: ' return conflict_number', 60: '', 61: 'def replace_conflicts(events):', 62: ' """Searches for all events that are in conflict regarding timespans, ' 'and', 63: ' replaces them with a general event. Returns a dictionary with keys ' 'referencing', 64: ' a specific conflict block, and the values being a list of the events ' 'that are', 65: ' in conflict with each other."""', 66: ' all_conflicts = conflicting_events(events)', 67: ' conflict_dict = dict()', 68: ' for conflict_list in all_conflicts:', 69: ' conflict_number = replace_conflict(events, conflict_list)', 70: ' conflict_dict[conflict_number] = conflict_list', 71: ' return conflict_dict', 72: '', 73: 'def create_roster_event(event_type, quarters, content, style="", ' 'note=""):', 74: ' return \'<td class="{event_type}" style="{style}" {title} ' 'rowspan="{quarters}">{content}</td>\'.format(', 75: ' event_type=event_type,', 76: ' style=style,', 77: ' quarters=quarters,', 78: ' content=content,', 79: ' title=note)', 80: '', 81: 'def create_roster_conflict_event(event):', 82: ' quarters = (event.end_time - event.begin_time).seconds // 60 // 15', 83: " content = _('Conflicting events! Consult <a " 'href="#\'+event.note+\'">block \'… <trimmed 10379 bytes string> |
deleted | {} |
line | '' |
modified_file | <pydriller.domain.commit.ModifiedFile object at 0x7c070d2b76d0> |
number | 222 |
result | {'change_type': <ModificationType.ADD: 1>, 'html_code_after': ['<div class="source"><pre><span></span><span ' 'class="sd">""" This is a module dedicated ' 'to collecting all functionality regarding the</span>', '<span class="sd">building of the roster. ' '"""</span>', '<span class="kn">from</span> <span ' 'class="nn">django.shortcuts</span> <span ' 'class="kn">import</span> <span class="n">render</span>', '<span class="kn">from</span> <span ' 'class="nn">collections</span> <span ' 'class="kn">import</span> <span ' 'class="n">OrderedDict</span>', '<span class="kn">import</span> <span ' 'class="nn">datetime</span>', '<span class="kn">from</span> <span ' 'class="nn">django.urls</span> <span ' 'class="kn">import</span> <span class="n">reverse</span>', '<span class="kn">from</span> <span ' 'class="nn">django.utils.translation</span> <span ' 'class="kn">import</span> <span class="n">gettext</span> ' '<span class="k">as</span> <span class="n">_</span>', '<span class="kn">from</span> <span ' 'class="nn">.models</span> <span class="kn">import</span> ' '<span class="o">*</span>', '<span class="kn">import</span> <span ' 'class="nn">administration</span>', '', '<span class="k">def</span> <span ' 'class="nf">same_day</span><span class="p">(</span><span ' 'class="n">datetime_a</span><span class="p">,</span> ' '<span class="n">datetime_b</span><span ' 'class="p">):</span>', '<span class="w"> </span><span ' 'class="sd">"""True if both a and b are on ' 'the same day, false otherwise."""</span>', ' <span class="k">return</span> <span ' 'class="p">(</span>', ' <span class="n">datetime_a</span><span ' 'class="o">.</span><span class="n">day</span> <span ' 'class="o">==</span> <span ' 'class="n">datetime_b</span><span class="o">.</span><span ' 'class="n">day</span> <span class="ow">and</span>', ' <span class="n">datetime_a</span><span ' 'class="o">.</span><span class="n">month</span> <span ' 'class="o">==</span> <span ' 'class="n">datetime_b</span><span class="o">.</span><span ' 'class="n">month</span> <span class="ow">and</span>', ' <span class="n">datetime_a</span><span ' 'class="o">.</span><span class="n">year</span> <span ' 'class="o">==</span> <span ' 'class="n">datetime_b</span><span class="o">.</span><span ' 'class="n">year</span><span class="p">)</span>', '', '<span class="k">def</span> <span ' 'class="nf">same_daytime</span><span ' 'class="p">(</span><span class="n">moment</span><span ' 'class="p">,</span> <span class="n">hour</span><span ' 'class="p">,</span> <span class="n">minute</span><span ' 'class="p">):</span>', ' <span class="k">return</span> <span ' 'class="p">(</span><span class="n">moment</span><span ' 'class="o">.</span><span class="n">minute</span> <span ' … <trimmed 55348 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: '""" This is a module dedicated to collecting all functionality regarding ' 'the', 2: 'building of the roster. """', 3: 'from django.shortcuts import render', 4: 'from collections import OrderedDict', 5: 'import datetime', 6: 'from django.urls import reverse', 7: 'from django.utils.translation import gettext as _', 8: 'from .models import *', 9: 'import administration', 10: '', 11: 'def same_day(datetime_a, datetime_b):', 12: ' """True if both a and b are on the same day, false otherwise."""', 13: ' return (', 14: ' datetime_a.day == datetime_b.day and', 15: ' datetime_a.month == datetime_b.month and', 16: ' datetime_a.year == datetime_b.year)', 17: '', 18: 'def same_daytime(moment, hour, minute):', 19: ' return (moment.minute == minute and moment.hour == hour)', 20: '', 21: 'def conflicting_events(events):', 22: ' """Finds conflicting events in the given set, and returns a list of ' 'all', 23: ' conflicting events, grouped according to their conflicts in ' 'lists."""', 24: ' conflicts = list()', 25: ' test_conflict = list()', 26: ' for event in events.order_by("begin_time"):', 27: ' if len(test_conflict) == 0:', 28: ' test_conflict.append(event)', 29: ' else:', 30: ' possible_conflict = test_conflict.pop()', 31: ' if possible_conflict.end_time > event.begin_time: # New ' 'conflict!', 32: ' test_conflict.append(possible_conflict)', 33: ' test_conflict.append(event)', 34: ' elif len(test_conflict) == 0: # No conflict', 35: ' pass', 36: ' else: # No conflict, but previous conflicting events exist', 37: ' test_conflict.append(possible_conflict)', 38: ' conflicts.append(test_conflict.copy())', 39: ' test_conflict.clear()', 40: ' return conflicts', 41: '', 42: 'def replace_conflict(events, conflicts):', 43: ' """Removes the conflicts from events, and replaces them with a new', 44: ' event. Returns the key number for this conflict set. Expects the ' 'conflicts', 45: ' to be in chronological order based on begin_time."""', 46: ' for conflict in conflicting_events:', 47: ' events.remove(conflict)', 48: ' conflict_number = 0', 49: ' for event in events:', 50: ' if event.note == "Conflict - " + str(conflict_number):', 51: ' conflict_number += 1', 52: '', 53: ' replacement = Event.create(', 54: ' conflicts[0].begin_time,', 55: ' conflicts[-1].end_time,', 56: ' note = "Conflict - " + str(conflict_number),', 57: ' )', 58: ' events.add(replacement)', 59: ' return conflict_number', 60: '', 61: 'def replace_conflicts(events):', 62: ' """Searches for all events that are in conflict regarding timespans, ' 'and', 63: ' replaces them with a general event. Returns a dictionary with keys ' 'referencing', 64: ' a specific conflict block, and the values being a list of the events ' 'that are', 65: ' in conflict with each other."""', 66: ' all_conflicts = conflicting_events(events)', 67: ' conflict_dict = dict()', 68: ' for conflict_list in all_conflicts:', 69: ' conflict_number = replace_conflict(events, conflict_list)', 70: ' conflict_dict[conflict_number] = conflict_list', 71: ' return conflict_dict', 72: '', 73: 'def create_roster_event(event_type, quarters, content, style="", ' 'note=""):', 74: ' return \'<td class="{event_type}" style="{style}" {title} ' 'rowspan="{quarters}">{content}</td>\'.format(', 75: ' event_type=event_type,', 76: ' style=style,', 77: ' quarters=quarters,', 78: ' content=content,', 79: ' title=note)', 80: '', 81: 'def create_roster_conflict_event(event):', 82: ' quarters = (event.end_time - event.begin_time).seconds // 60 // 15', 83: " content = _('Conflicting events! Consult <a " 'href="#\'+event.note+\'">block \'… <trimmed 10379 bytes string> |
after_count | 218 |
before_count | 1 |
deletions | {} |
row | {'new_num': 218, 'type': 'addition'} |
rows | [{'line': '<span class="sd">building of the roster. """</span>', 'new_num': 1, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span ' 'class="nn">django.shortcuts</span> <span class="kn">import</span> ' '<span class="n">render</span>', 'new_num': 2, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span class="nn">collections</span> ' '<span class="kn">import</span> <span class="n">OrderedDict</span>', 'new_num': 3, 'type': 'addition'}, {'line': '<span class="kn">import</span> <span class="nn">datetime</span>', 'new_num': 4, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span class="nn">django.urls</span> ' '<span class="kn">import</span> <span class="n">reverse</span>', 'new_num': 5, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span ' 'class="nn">django.utils.translation</span> <span ' 'class="kn">import</span> <span class="n">gettext</span> <span ' 'class="k">as</span> <span class="n">_</span>', 'new_num': 6, 'type': 'addition'}, {'line': '<span class="kn">from</span> <span class="nn">.models</span> <span ' 'class="kn">import</span> <span class="o">*</span>', 'new_num': 7, 'type': 'addition'}, {'line': '<span class="kn">import</span> <span ' 'class="nn">administration</span>', 'new_num': 8, 'type': 'addition'}, {'line': '', 'new_num': 9, 'type': 'addition'}, {'line': '<span class="k">def</span> <span class="nf">same_day</span><span ' 'class="p">(</span><span class="n">datetime_a</span><span ' 'class="p">,</span> <span class="n">datetime_b</span><span ' 'class="p">):</span>', 'new_num': 10, 'type': 'addition'}, {'line': '<span class="w"> </span><span class="sd">"""True ' 'if both a and b are on the same day, false ' 'otherwise."""</span>', 'new_num': 11, 'type': 'addition'}, {'line': ' <span class="k">return</span> <span class="p">(</span>', 'new_num': 12, 'type': 'addition'}, {'line': ' <span class="n">datetime_a</span><span ' 'class="o">.</span><span class="n">day</span> <span ' 'class="o">==</span> <span class="n">datetime_b</span><span ' 'class="o">.</span><span class="n">day</span> <span ' 'class="ow">and</span>', 'new_num': 13, 'type': 'addition'}, {'line': ' <span class="n">datetime_a</span><span ' 'class="o">.</span><span class="n">month</span> <span ' 'class="o">==</span> <span class="n">datetime_b</span><span ' 'class="o">.</span><span class="n">month</span> <span ' 'class="ow">and</span>', 'new_num': 14, 'type': 'addition'}, {'line': ' <span class="n">datetime_a</span><span ' 'class="o">.</span><span class="n">year</span> <span ' 'class="o">==</span> <span class="n">datetime_b</span><span ' 'class="o">.</span><span class="n">year</span><span ' 'class="p">)</span>', 'new_num': 15, 'type': 'addition'}, {'line': '', 'new_num': 16, 'type': 'addition'}, {'line': '<span class="k">def</span> <span ' 'class="nf">same_daytime</span><span class="p">(</span><span ' 'class="n">moment</span><span class="p">,</span> <span ' 'class="n">hour</span><span class="p">,</span> <span ' 'class="n">minute</span><span class="p">):</span>', 'new_num': 17, 'type': 'addition'}, {'line': ' <span class="k">return</span> <span class="p">(</span><span ' 'class="n">moment</span><span class="o">.</span><span ' 'class="n">minute</span> <span class="o">==</span> <span ' 'class="n">minute</span> <span class="ow">and</span> <span ' 'class="n">moment</span><span class="o">.</span><span ' 'class="n">hour</span> <span class="o">==</span> <span ' 'class="n">hour</span><span class="p">)</span>', 'new_num': 18, 'type': 'addition'}, {'line': '', 'new_num': 19, 'type': 'addition'}, {'line': '<… <trimmed 52599 bytes string> |
source_after | ['<div class="source"><pre><span></span><span class="sd">""" ' 'This is a module dedicated to collecting all functionality regarding ' 'the</span>', '<span class="sd">building of the roster. """</span>', '<span class="kn">from</span> <span class="nn">django.shortcuts</span> <span ' 'class="kn">import</span> <span class="n">render</span>', '<span class="kn">from</span> <span class="nn">collections</span> <span ' 'class="kn">import</span> <span class="n">OrderedDict</span>', '<span class="kn">import</span> <span class="nn">datetime</span>', '<span class="kn">from</span> <span class="nn">django.urls</span> <span ' 'class="kn">import</span> <span class="n">reverse</span>', '<span class="kn">from</span> <span ' 'class="nn">django.utils.translation</span> <span class="kn">import</span> ' '<span class="n">gettext</span> <span class="k">as</span> <span ' 'class="n">_</span>', '<span class="kn">from</span> <span class="nn">.models</span> <span ' 'class="kn">import</span> <span class="o">*</span>', '<span class="kn">import</span> <span class="nn">administration</span>', '', '<span class="k">def</span> <span class="nf">same_day</span><span ' 'class="p">(</span><span class="n">datetime_a</span><span class="p">,</span> ' '<span class="n">datetime_b</span><span class="p">):</span>', '<span class="w"> </span><span class="sd">"""True if both a ' 'and b are on the same day, false otherwise."""</span>', ' <span class="k">return</span> <span class="p">(</span>', ' <span class="n">datetime_a</span><span class="o">.</span><span ' 'class="n">day</span> <span class="o">==</span> <span ' 'class="n">datetime_b</span><span class="o">.</span><span ' 'class="n">day</span> <span class="ow">and</span>', ' <span class="n">datetime_a</span><span class="o">.</span><span ' 'class="n">month</span> <span class="o">==</span> <span ' 'class="n">datetime_b</span><span class="o">.</span><span ' 'class="n">month</span> <span class="ow">and</span>', ' <span class="n">datetime_a</span><span class="o">.</span><span ' 'class="n">year</span> <span class="o">==</span> <span ' 'class="n">datetime_b</span><span class="o">.</span><span ' 'class="n">year</span><span class="p">)</span>', '', '<span class="k">def</span> <span class="nf">same_daytime</span><span ' 'class="p">(</span><span class="n">moment</span><span class="p">,</span> ' '<span class="n">hour</span><span class="p">,</span> <span ' 'class="n">minute</span><span class="p">):</span>', ' <span class="k">return</span> <span class="p">(</span><span ' 'class="n">moment</span><span class="o">.</span><span class="n">minute</span> ' '<span class="o">==</span> <span class="n">minute</span> <span ' 'class="ow">and</span> <span class="n">moment</span><span ' 'class="o">.</span><span class="n">hour</span> <span class="o">==</span> ' '<span class="n">hour</span><span class="p">)</span>', '', '<span class="k">def</span> <span class="nf">conflicting_events</span><span ' 'class="p">(</span><span class="n">events</span><span class="p">):</span>', '<span class="w"> </span><span class="sd">"""Finds ' 'conflicting events in the given set, and returns a list of all</span>', '<span class="sd"> conflicting events, grouped according to their ' 'conflicts in lists."""</span>', ' <span class="n">conflicts</span> <span class="o">=</span> <span ' 'class="nb">list</span><span class="p">()</span>', ' <span class="n">test_conflict</span> <span class="o">=</span> <span ' 'class="nb">list</span><span class="p">()</span>', ' <span class="k">for</span> <span class="n">event</span> <span ' 'class="ow">in</span> <span class="n">events</span><span ' 'class="o">.</span><span class="n">order_by</span><span ' 'class="p">(</span><span class="s2">"begin_time"</span><span ' 'class="p">):</span>', ' <span class="k">if</span> <span class="nb">len</span><span ' 'class="p">(</span><span class="n">test_conflict</span><span ' 'class="p">)</span… <trimmed 37274 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/joeni/validigo/cb71f7808565258f368c' |
QUERY_STRING | '' |
REMOTE_ADDR | '44.201.199.251' |
REMOTE_PORT | '53644' |
REQUEST_METHOD | 'GET' |
REQUEST_SCHEME | 'https' |
REQUEST_URI | '/gitar/joeni/validigo/cb71f7808565258f368c' |
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 0x7c070df48df0> |
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'}, '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.