Files
tealcode-django-python/TealCode/main/views.py
DerTyp187 e7438643ff fr
2021-11-19 13:37:02 +01:00

88 lines
2.4 KiB
Python

from django.http.response import HttpResponse
from django.shortcuts import render, redirect
from .models import Category, Topic
from analytics.models import View
def index(req):
view = View(ip=get_client_ip(req), home=True)
view.save()
categorys_obj = Category.objects.all()
return render(req, "main/index.html", {'categorys': categorys_obj})
def topic(req, category, topic):
if topic and category:
category_obj = Category.objects.filter(title = category).first()
if category_obj:
topic_obj = Topic.objects.filter(title=topic, category = category_obj).first()
previous_obj = Topic.objects.filter(id = topic_obj.id-1, category = category_obj).first()
next_obj = Topic.objects.filter(id = topic_obj.id+1, category = category_obj).first()
if topic_obj:
context = {
'title': topic_obj.title,
'code': topic_obj.code_text,
'category_title': category_obj.title,
'version': topic_obj.version,
'previous': previous_obj,
'next': next_obj,
'output': topic_obj.output,
}
view = View(ip=get_client_ip(req), topic=topic_obj)
view.save()
return render(req, "main/topic.html", context)
return redirect("main-index")
def category(req, category):
if category:
category_obj = Category.objects.filter(title = category).first()
if category_obj:
topics_obj = Topic.objects.filter(category=category_obj)
view = View(ip=get_client_ip(req), category=category_obj)
view.save()
return render(req, "main/category.html", {'category_obj': category_obj, 'topics': topics_obj})
return redirect("main-index")
def sitemap(req):
topics = Topic.objects.all()
categories = Category.objects.all()
#REPLACE ALL BLANKS WITH %20
context = {
'topics': topics,
'categories': categories
}
return render(req, 'sitemap.xml', context, 'text/xml')
def about(req):
return render(req, "main/about.html")
def privacy(req):
return render(req, "main/privacy.html")
def get_client_ip(req):
x_forwarded_for = req.META.get("HTTP_X_FORWARDED_FOR")
if x_forwarded_for:
ip = x_forwarded_for.split[","][0]
else:
ip = req.META.get("REMOTE_ADDR")
return ip