More progress
This commit is contained in:
parent
6f7ebb2d47
commit
d07c7f73da
@ -4,12 +4,8 @@ from django.views.generic import TemplateView
|
|||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
|
|
||||||
import random
|
|
||||||
import time
|
|
||||||
|
|
||||||
# Create your views here.
|
|
||||||
|
|
||||||
from bloonsa_game.models import Level
|
from bloonsa_game.models import Level
|
||||||
|
from users.util import tag_player
|
||||||
|
|
||||||
|
|
||||||
class CSRFexemptTemplateView(TemplateView):
|
class CSRFexemptTemplateView(TemplateView):
|
||||||
@ -21,6 +17,7 @@ class CSRFexemptTemplateView(TemplateView):
|
|||||||
class LoadLevel(CSRFexemptTemplateView):
|
class LoadLevel(CSRFexemptTemplateView):
|
||||||
|
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
levelNum = request.POST.get("level_num")
|
levelNum = request.POST.get("level_num")
|
||||||
if levelNum is None or not levelNum.isdigit():
|
if levelNum is None or not levelNum.isdigit():
|
||||||
return HttpResponseBadRequest()
|
return HttpResponseBadRequest()
|
||||||
@ -35,19 +32,23 @@ class LoadLevel(CSRFexemptTemplateView):
|
|||||||
|
|
||||||
class RandomLevel(CSRFexemptTemplateView):
|
class RandomLevel(CSRFexemptTemplateView):
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
level = Level.objects.order_by("?").first()
|
level = Level.objects.order_by("?").first()
|
||||||
flashVars = level.getFlashVars(seperator="&")
|
flashVars = level.getFlashVars(seperator="&")
|
||||||
return HttpResponse(flashVars)
|
return HttpResponse(flashVars)
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
level = Level.objects.order_by("?").first()
|
level = Level.objects.order_by("?").first()
|
||||||
flashVars = level.getFlashVars(seperator="&")
|
flashVars = level.getFlashVars(seperator="&")
|
||||||
return HttpResponse(flashVars)
|
return HttpResponse(flashVars)
|
||||||
|
|
||||||
class CompleteLevel(CSRFexemptTemplateView):
|
class CompleteLevel(CSRFexemptTemplateView):
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
class RateLevel(CSRFexemptTemplateView):
|
class RateLevel(CSRFexemptTemplateView):
|
||||||
def post(self, request, *args, **kwargs):
|
def post(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
pass
|
pass
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
from .models import Level, Author
|
from .models import Level, Author
|
||||||
# Register your models here.
|
|
||||||
|
|
||||||
admin.site.register(Level)
|
admin.site.register(Level)
|
||||||
admin.site.register(Author)
|
admin.site.register(Author)
|
||||||
@ -1,24 +1,26 @@
|
|||||||
from django.contrib.auth.forms import AuthenticationForm
|
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
# Create your views here.
|
|
||||||
|
|
||||||
from bloonsa_game.models import Level
|
from bloonsa_game.models import Level
|
||||||
|
from users.util import tag_player
|
||||||
|
|
||||||
|
|
||||||
class IndexView(TemplateView):
|
class IndexView(TemplateView):
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
return render(request, "bloonsa_game/index.html", context={})
|
return render(request, "bloonsa_game/index.html", context={})
|
||||||
|
|
||||||
class TermsView(TemplateView):
|
class TermsView(TemplateView):
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
return render(request, "bloonsa_game/terms.html", context={})
|
return render(request, "bloonsa_game/terms.html", context={})
|
||||||
|
|
||||||
class GameView(TemplateView):
|
class GameView(TemplateView):
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
|
tag_player(request=request)
|
||||||
if type(kwargs.get("pk")) is int:
|
if type(kwargs.get("pk")) is int:
|
||||||
level = Level.objects.get(id=kwargs["pk"])
|
level = Level.objects.get(id=kwargs["pk"])
|
||||||
if level:
|
if level:
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
|
||||||
# Register your models here.
|
from .models import Player, User
|
||||||
|
|
||||||
|
admin.site.register(Player)
|
||||||
|
|||||||
@ -63,3 +63,9 @@ class UserLoginForm(AuthenticationForm):
|
|||||||
max_length=16,
|
max_length=16,
|
||||||
label="Username",
|
label="Username",
|
||||||
required=True)
|
required=True)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = User
|
||||||
|
fields = [
|
||||||
|
"username",
|
||||||
|
]
|
||||||
@ -5,6 +5,8 @@ from django.contrib.auth.models import User
|
|||||||
from bloonsa_game.models import Level
|
from bloonsa_game.models import Level
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Player(models.Model):
|
class Player(models.Model):
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
|
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
|
||||||
# Savedata
|
# Savedata
|
||||||
@ -21,3 +23,6 @@ class Player(models.Model):
|
|||||||
suspended = models.BooleanField(default=False)
|
suspended = models.BooleanField(default=False)
|
||||||
banned = models.BooleanField(default=False)
|
banned = models.BooleanField(default=False)
|
||||||
admin = models.BooleanField(default=False)
|
admin = models.BooleanField(default=False)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return f"{self.user} - {self.latestIP}"
|
||||||
40
app/users/util.py
Normal file
40
app/users/util.py
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
from django.utils import timezone
|
||||||
|
|
||||||
|
from users.models import Player
|
||||||
|
|
||||||
|
tracking = False
|
||||||
|
|
||||||
|
def get_ip(request):
|
||||||
|
x_forwarded_for = request.META.get("HTTP_X_FORWARDED_FOR")
|
||||||
|
if x_forwarded_for:
|
||||||
|
ip = x_forwarded_for.split(",")[-1].strip()
|
||||||
|
else:
|
||||||
|
ip = request.META.get("REMOTE_ADDR")
|
||||||
|
return ip
|
||||||
|
|
||||||
|
# Create a Player object for a User
|
||||||
|
def init_player(request, user):
|
||||||
|
if not user.is_authenticated:
|
||||||
|
return
|
||||||
|
player = Player.objects.get(user=request.user)
|
||||||
|
if player:
|
||||||
|
return
|
||||||
|
ip = get_ip(request=request)
|
||||||
|
player = Player(user=user,
|
||||||
|
creationIP=ip,
|
||||||
|
latestIP=ip)
|
||||||
|
player.save()
|
||||||
|
|
||||||
|
# Update activity timestamp and IP
|
||||||
|
def tag_player(request, user=None):
|
||||||
|
if not tracking:
|
||||||
|
return
|
||||||
|
user = user or request.user
|
||||||
|
if not user.is_authenticated:
|
||||||
|
return
|
||||||
|
player = Player.objects.get(user=request.user)
|
||||||
|
if not player:
|
||||||
|
init_player(request=request, user=user)
|
||||||
|
player.latestActivity = timezone.now()
|
||||||
|
player.latestIP = get_ip(request=request)
|
||||||
|
player.save()
|
||||||
@ -4,6 +4,8 @@ from django.shortcuts import render, redirect
|
|||||||
from django.views.generic import TemplateView
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
from users.forms import UserRegisterForm, UserLoginForm
|
from users.forms import UserRegisterForm, UserLoginForm
|
||||||
|
from users.models import Player
|
||||||
|
from users.util import init_player, tag_player
|
||||||
|
|
||||||
|
|
||||||
class LoginView(TemplateView):
|
class LoginView(TemplateView):
|
||||||
@ -16,7 +18,9 @@ class LoginView(TemplateView):
|
|||||||
form = UserLoginForm(data=request.POST)
|
form = UserLoginForm(data=request.POST)
|
||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return render(request=request, template_name="users/login.html", context={"form": form})
|
return render(request=request, template_name="users/login.html", context={"form": form})
|
||||||
login(request=request, user=form.get_user())
|
user = form.get_user()
|
||||||
|
init_player(request=request, user=user)
|
||||||
|
login(request=request, user=user)
|
||||||
return redirect("bloonsa_game:game")
|
return redirect("bloonsa_game:game")
|
||||||
|
|
||||||
|
|
||||||
@ -30,7 +34,9 @@ class RegisterView(TemplateView):
|
|||||||
form = UserRegisterForm(request.POST)
|
form = UserRegisterForm(request.POST)
|
||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return render(request=request, template_name="users/register.html", context={"form": form})
|
return render(request=request, template_name="users/register.html", context={"form": form})
|
||||||
login(request=request, user=form.save())
|
user = form.save()
|
||||||
|
init_player(request=request, user=user)
|
||||||
|
login(request=request, user=user)
|
||||||
return redirect("bloonsa_game:game")
|
return redirect("bloonsa_game:game")
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +45,7 @@ class LogoutView(TemplateView):
|
|||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
if request.user.is_authenticated:
|
if request.user.is_authenticated:
|
||||||
|
tag_player(request=request)
|
||||||
logout(request)
|
logout(request)
|
||||||
return redirect("bloonsa_game:game")
|
return redirect("bloonsa_game:game")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user