Skip to content

Commit 1d9e35d

Browse files
Fixes for infinite looping 500 errors and redundant table addition
1 parent 71cf62c commit 1d9e35d

File tree

2 files changed

+50
-94
lines changed

2 files changed

+50
-94
lines changed

web/templates/statistics.html

Lines changed: 0 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -189,67 +189,6 @@ <h5 class="mb-0"><i class="fas fa-chart-pie"></i> Category Popularity</h5>
189189
</div>
190190
</div>
191191
</div>
192-
<div class="col-md-6">
193-
<div class="card mb-4 shadow-sm">
194-
<div class="card-header bg-success text-white">
195-
<h5 class="mb-0"><i class="fas fa-language"></i> Most Popular Languages</h5>
196-
</div>
197-
<div class="card-body">
198-
{% if popular_languages %}
199-
<table class="table table-hover table-sm">
200-
<thead>
201-
<tr>
202-
<th>Language</th>
203-
<th class="text-end">Occurrences</th>
204-
</tr>
205-
</thead>
206-
<tbody>
207-
{% for lang in popular_languages %}
208-
<tr>
209-
<td>{{ lang.name }}</td>
210-
<td class="text-end">{{ lang.count }}</td>
211-
</tr>
212-
{% endfor %}
213-
</tbody>
214-
</table>
215-
{% else %}
216-
<p class="text-center">No data available yet.</p>
217-
{% endif %}
218-
</div>
219-
</div>
220-
</div>
221-
</div>
222-
223-
<div class="row">
224-
<div class="col-12">
225-
<div class="card mb-4 shadow-sm">
226-
<div class="card-header bg-info text-white">
227-
<h5 class="mb-0"><i class="fas fa-project-diagram"></i> Most Popular Concept Categories</h5>
228-
</div>
229-
<div class="card-body">
230-
{% if popular_structures %}
231-
<table class="table table-hover table-sm">
232-
<thead>
233-
<tr>
234-
<th>Category</th>
235-
<th class="text-end">Lookups</th>
236-
</tr>
237-
</thead>
238-
<tbody>
239-
{% for struct in popular_structures %}
240-
<tr>
241-
<td>{{ struct.name }}</td>
242-
<td class="text-end">{{ struct.count }}</td>
243-
</tr>
244-
{% endfor %}
245-
</tbody>
246-
</table>
247-
{% else %}
248-
<p class="text-center">No data available yet.</p>
249-
{% endif %}
250-
</div>
251-
</div>
252-
</div>
253192
</div>
254193
</div>
255194

web/views.py

Lines changed: 50 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -33,45 +33,59 @@
3333

3434

3535
def store_url_info(request):
36-
if 'HTTP_USER_AGENT' in request.META:
37-
user_agent = request.META['HTTP_USER_AGENT']
38-
else:
39-
user_agent = ""
36+
try:
37+
if 'HTTP_USER_AGENT' in request.META:
38+
user_agent = request.META['HTTP_USER_AGENT']
39+
else:
40+
user_agent = ""
4041

41-
if 'HTTP_REFERER' in request.META:
42-
referer = request.META['HTTP_REFERER']
43-
else:
44-
referer = ""
42+
if 'HTTP_REFERER' in request.META:
43+
referer = request.META['HTTP_REFERER']
44+
else:
45+
referer = ""
4546

46-
visit = SiteVisit(
47-
url=request.get_full_path(),
48-
user_agent=user_agent,
49-
referer=referer,
50-
)
51-
visit.save()
52-
return visit
47+
visit = SiteVisit(
48+
url=request.get_full_path(),
49+
user_agent=user_agent,
50+
referer=referer,
51+
)
52+
visit.save()
53+
return visit
54+
except Exception as e:
55+
logging.error(f"Failed to store URL info: {e}")
56+
return None
5357

5458

5559
def store_lookup_info(request, visit, language1, version1, language2, version2, structure):
56-
info = LookupData(
57-
language1=language1,
58-
version1=version1,
59-
language2=language2,
60-
version2=version2,
61-
structure=structure,
62-
site_visit=visit
63-
)
64-
info.save()
60+
if not visit:
61+
return
62+
try:
63+
info = LookupData(
64+
language1=language1,
65+
version1=version1,
66+
language2=language2,
67+
version2=version2,
68+
structure=structure,
69+
site_visit=visit
70+
)
71+
info.save()
72+
except Exception as e:
73+
logging.error(f"Failed to store lookup info: {e}")
6574

6675

6776
def store_missing_info(visit, item_type, item_value, language_context=None):
68-
info = MissingLookup(
69-
item_type=item_type,
70-
item_value=item_value,
71-
language_context=language_context,
72-
site_visit=visit
73-
)
74-
info.save()
77+
if not visit:
78+
return
79+
try:
80+
info = MissingLookup(
81+
item_type=item_type,
82+
item_value=item_value,
83+
language_context=language_context,
84+
site_visit=visit
85+
)
86+
info.save()
87+
except Exception as e:
88+
logging.error(f"Failed to store missing info: {e}")
7589

7690

7791
@require_http_methods(['GET'])
@@ -496,9 +510,12 @@ def error_handler_500_server_error(request):
496510
:param request: HttpRequest object
497511
:return: HttpResponse object with rendered object of the page
498512
"""
499-
store_url_info(request)
513+
try:
514+
store_url_info(request)
515+
except Exception:
516+
pass
500517

501-
logging.error(request)
518+
logging.error(f"500 error at {request.get_full_path()}")
502519
response = render(request, 'error500.html')
503520
return HttpResponseServerError(response)
504521

0 commit comments

Comments
 (0)