added views and admin security

This commit is contained in:
DerTyp187
2021-11-18 08:48:26 +01:00
parent 1c11ebbfcc
commit 74d8f41426
10 changed files with 147 additions and 7 deletions

View File

@@ -19,5 +19,5 @@ from django.urls import path, include
urlpatterns = [ urlpatterns = [
path('', include('main.urls')), path('', include('main.urls')),
path('analytics/', include('analytics.urls')), path('analytics/', include('analytics.urls')),
path('admin/', admin.site.urls), path('SDGFOLKJASDNVASDFASDFSLAKDF/', admin.site.urls),
] ]

View File

@@ -1,3 +1,5 @@
from django.contrib import admin from django.contrib import admin
# Register your models here. from analytics.models import View
admin.site.register(View)

View File

@@ -0,0 +1,17 @@
# Generated by Django 3.2.9 on 2021-11-18 07:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('analytics', '0001_initial'),
]
operations = [
migrations.RemoveField(
model_name='view',
name='category',
),
]

View File

@@ -0,0 +1,30 @@
# Generated by Django 3.2.9 on 2021-11-18 07:24
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('main', '0008_alter_topic_output'),
('analytics', '0002_remove_view_category'),
]
operations = [
migrations.AddField(
model_name='view',
name='admin',
field=models.BooleanField(default=False),
),
migrations.AddField(
model_name='view',
name='category',
field=models.ForeignKey(blank=True, default=None, on_delete=django.db.models.deletion.CASCADE, to='main.category'),
),
migrations.AlterField(
model_name='view',
name='topic',
field=models.ForeignKey(blank=True, default=None, on_delete=django.db.models.deletion.CASCADE, to='main.topic'),
),
]

View File

@@ -0,0 +1,25 @@
# Generated by Django 3.2.9 on 2021-11-18 07:26
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('main', '0008_alter_topic_output'),
('analytics', '0003_auto_20211118_0824'),
]
operations = [
migrations.AlterField(
model_name='view',
name='category',
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='main.category'),
),
migrations.AlterField(
model_name='view',
name='topic',
field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.CASCADE, to='main.topic'),
),
]

View File

@@ -0,0 +1,25 @@
# Generated by Django 3.2.9 on 2021-11-18 07:27
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('main', '0008_alter_topic_output'),
('analytics', '0004_auto_20211118_0826'),
]
operations = [
migrations.AlterField(
model_name='view',
name='category',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='main.category'),
),
migrations.AlterField(
model_name='view',
name='topic',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='main.topic'),
),
]

View File

@@ -0,0 +1,18 @@
# Generated by Django 3.2.9 on 2021-11-18 07:33
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('analytics', '0005_auto_20211118_0827'),
]
operations = [
migrations.AddField(
model_name='view',
name='home',
field=models.BooleanField(default=False),
),
]

View File

@@ -1,13 +1,17 @@
from django.db import models from django.db import models
from django.db.models.deletion import CASCADE
from django.utils import timezone from django.utils import timezone
from main.models import Category,Topic from main.models import Topic, Category
class View(models.Model): class View(models.Model):
ip = models.CharField(max_length=200) ip = models.CharField(max_length=200)
date = models.DateTimeField(default=timezone.now) date = models.DateTimeField(default=timezone.now)
topic = models.ForeignKey(Topic, on_delete=CASCADE) topic = models.ForeignKey(Topic, on_delete=models.CASCADE, blank=True, null=True)
category = models.ForeignKey(Category, on_delete=CASCADE) category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=True, null=True)
admin = models.BooleanField(default=False)
home = models.BooleanField(default=False)
def __str__(self): def __str__(self):
return self.ip return self.ip

View File

@@ -1,4 +1,6 @@
from django.shortcuts import render from django.shortcuts import render
from django.contrib.auth.decorators import login_required
@login_required
def index(req): def index(req):
return render(req, 'analytics/index.html') return render(req, 'analytics/index.html')

View File

@@ -1,8 +1,10 @@
from django.shortcuts import render, redirect from django.shortcuts import render, redirect
from .models import Category, Topic from .models import Category, Topic
from analytics.models import View
def index(req): def index(req):
view = View(ip=get_client_ip(req), home=True)
view.save()
categorys_obj = Category.objects.all() categorys_obj = Category.objects.all()
return render(req, "main/index.html", {'categorys': categorys_obj}) return render(req, "main/index.html", {'categorys': categorys_obj})
@@ -26,6 +28,9 @@ def topic(req, category, topic):
'output': topic_obj.output, 'output': topic_obj.output,
} }
view = View(ip=get_client_ip(req), topic=topic_obj)
view.save()
return render(req, "main/topic.html", context) return render(req, "main/topic.html", context)
return redirect("main-index") return redirect("main-index")
@@ -38,6 +43,10 @@ def category(req, category):
category_obj = Category.objects.filter(title = category).first() category_obj = Category.objects.filter(title = category).first()
if category_obj: if category_obj:
topics_obj = Topic.objects.filter(category=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 render(req, "main/category.html", {'category_obj': category_obj, 'topics': topics_obj})
@@ -55,3 +64,11 @@ def about(req):
def privacy(req): def privacy(req):
return render(req, "main/privacy.html") 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