From d774f2f93c173495326507c30a6a0e6986bb500e Mon Sep 17 00:00:00 2001 From: Surya Date: Sat, 28 Feb 2026 18:50:48 +0530 Subject: [PATCH] Added UserData to the API --- .gitignore | 3 + BH/settings.py | 6 +- api/filters.py | 8 +++ api/permissions.py | 12 ++++ api/serializers.py | 2 +- api/urls.py | 2 + api/views.py | 29 +++++++- db.sqlite3 | Bin 294912 -> 307200 bytes users/admin.py | 4 +- users/forms.py | 2 +- .../0003_userdata_delete_profile.py | 31 +++++++++ users/models.py | 21 ++++-- users/serializers.py | 7 ++ users/urls.py | 4 +- users/views.py | 62 +++++++----------- 15 files changed, 137 insertions(+), 56 deletions(-) create mode 100644 api/filters.py create mode 100644 users/migrations/0003_userdata_delete_profile.py create mode 100644 users/serializers.py diff --git a/.gitignore b/.gitignore index cffd79f..0e1ea32 100644 --- a/.gitignore +++ b/.gitignore @@ -163,3 +163,6 @@ cython_debug/ # static staticfiles/ + +# database +db.sqlite3 diff --git a/BH/settings.py b/BH/settings.py index 83ff08e..b87b28e 100644 --- a/BH/settings.py +++ b/BH/settings.py @@ -24,7 +24,7 @@ TEMPLATES_DIR = os.path.join(BASE_DIR + '/templates') SECRET_KEY = '!2g)+m+_h9fq9%il5+t5#qnj^9502or6$=2!$==v=i2*c#7q*m' # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False +DEBUG = True ALLOWED_HOSTS = ['localhost', '127.0.0.1', 'beyond-heroes.com', 'www.beyond-heroes.com'] @@ -127,7 +127,7 @@ REST_FRAMEWORK = { 'rest_framework.permissions.IsAuthenticated', ], 'DEFAULT_AUTHENTICATION_CLASSES': ( - # 'rest_framework.authentication.SessionAuthentication', # causes CSRF Token conflicts in API + 'rest_framework.authentication.SessionAuthentication', # causes CSRF Token conflicts in API 'rest_framework.authentication.TokenAuthentication', ) } @@ -161,6 +161,6 @@ LOGIN_REDIRECT_URL = 'Home' LOGIN_URL = 'Login' EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' # prints to console -# SITE_ID = 1 # for django-allauth +SITE_ID = 1 # for django-allauth DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/api/filters.py b/api/filters.py new file mode 100644 index 0000000..b250d48 --- /dev/null +++ b/api/filters.py @@ -0,0 +1,8 @@ +from rest_framework.filters import BaseFilterBackend +from users.models import * + +class UserDataFilterBackend(BaseFilterBackend): + def filter_queryset(self, request, queryset, view): + queryset = queryset.filter(user__id=request.user.id) + + return queryset diff --git a/api/permissions.py b/api/permissions.py index 26cdde2..9ef600d 100644 --- a/api/permissions.py +++ b/api/permissions.py @@ -10,3 +10,15 @@ class IsSuperUserOrReadOnly(permissions.BasePermission): class IsStaff(permissions.BasePermission): def has_permission(self, request, view): return request.user.is_staff + + +class IsSuperUserOrAuthReadOnly(permissions.BasePermission): + def has_permission(self, request, view): + if request.method in permissions.SAFE_METHODS: + return request.user != None + return request.user.is_superuser + + +class IsSuperUser(permissions.BasePermission): + def has_permission(self, request, view): + return request.user.is_superuser diff --git a/api/serializers.py b/api/serializers.py index 400fa05..1f0cca8 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -10,7 +10,7 @@ class ProvinceSerializer(serializers.ModelSerializer): class AssaultTroopSerializer(serializers.ModelSerializer): class Meta: model = AssaultTroop - fields = ['id', 'name', 'faction', 'type', 'province', 'deployed', 'orders', 'owner'] + fields = ['id', 'name', 'faction', 'type', 'province', 'orders', 'owner'] class PlayerSerializer(serializers.ModelSerializer): diff --git a/api/urls.py b/api/urls.py index 327296f..8a07d97 100644 --- a/api/urls.py +++ b/api/urls.py @@ -10,4 +10,6 @@ urlpatterns = [ path('players//', PlayerView.as_view()), path('servers/', ServersView.as_view()), path('servers//', ServerView.as_view()), + path('user_data/', UserDataView.as_view()), + path('user_data//', UserDatumView.as_view()), ] diff --git a/api/views.py b/api/views.py index 30ac0d5..a4adcd0 100644 --- a/api/views.py +++ b/api/views.py @@ -1,48 +1,75 @@ from rest_framework import generics, permissions +from django.views.decorators.csrf import csrf_exempt +from django.utils.decorators import method_decorator from .models import * +from .filters import * from .serializers import * from .permissions import * +from users.models import * +from users.serializers import * - +@method_decorator(csrf_exempt, name='dispatch') class ProvincesView(generics.ListCreateAPIView): permission_classes = (IsSuperUserOrReadOnly,) queryset = Province.objects.all() serializer_class = ProvinceSerializer +@method_decorator(csrf_exempt, name='dispatch') class ProvinceView(generics.RetrieveUpdateDestroyAPIView): permission_classes = (IsSuperUserOrReadOnly,) queryset = Province.objects.all() serializer_class = ProvinceSerializer +@method_decorator(csrf_exempt, name='dispatch') class AssaultTroopsView(generics.ListCreateAPIView): permission_classes = (IsSuperUserOrReadOnly,) queryset = AssaultTroop.objects.all() serializer_class = AssaultTroopSerializer +@method_decorator(csrf_exempt, name='dispatch') class AssaultTroopView(generics.RetrieveUpdateDestroyAPIView): permission_classes = (IsSuperUserOrReadOnly,) queryset = AssaultTroop.objects.all() serializer_class = AssaultTroopSerializer +@method_decorator(csrf_exempt, name='dispatch') class PlayersView(generics.ListCreateAPIView): permission_classes = (IsStaff,) # Only Staff can see player info, i.e. authorized servers queryset = Player.objects.all() serializer_class = PlayerSerializer +@method_decorator(csrf_exempt, name='dispatch') class PlayerView(generics.RetrieveUpdateDestroyAPIView): permission_classes = (IsStaff) queryset = Player.objects.all() serializer_class = PlayerSerializer +@method_decorator(csrf_exempt, name='dispatch') class ServersView(generics.ListCreateAPIView): permission_classes = (IsSuperUserOrReadOnly,) queryset = Server.objects.all() serializer_class = ServerSerializer +@method_decorator(csrf_exempt, name='dispatch') class ServerView(generics.RetrieveUpdateDestroyAPIView): permission_classes = (IsSuperUserOrReadOnly,) queryset = Server.objects.all() serializer_class = ServerSerializer + + +@method_decorator(csrf_exempt, name='dispatch') +class UserDatumView(generics.RetrieveUpdateDestroyAPIView): + permission_classes = (IsSuperUser,) + queryset = UserData.objects.all() + serializer_class = UserDataSerializer + # filter_backends = [UserDataFilterBackend] + +@method_decorator(csrf_exempt, name='dispatch') +class UserDataView(generics.ListCreateAPIView): + permission_classes = (IsSuperUserOrAuthReadOnly,) + queryset = UserData.objects.all() + serializer_class = UserDataSerializer + filter_backends = [UserDataFilterBackend] \ No newline at end of file diff --git a/db.sqlite3 b/db.sqlite3 index 02c78a60e66d4c67e5be3a6d8e697cc1df91608c..51fa76967409cb4accdf39825b83cfc920d1edde 100644 GIT binary patch delta 11067 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 diff --git a/users/admin.py b/users/admin.py index b5afd5a..42421a0 100644 --- a/users/admin.py +++ b/users/admin.py @@ -1,5 +1,5 @@ from django.contrib import admin -from .models import Profile +from .models import * -# Register your models here. +admin.site.register(UserData) diff --git a/users/forms.py b/users/forms.py index 17b30be..0d0a388 100644 --- a/users/forms.py +++ b/users/forms.py @@ -1,7 +1,7 @@ from django import forms from django.contrib.auth.models import User from django.contrib.auth.forms import UserCreationForm -from .models import Profile +from .models import * class UserRegisterForm(UserCreationForm): diff --git a/users/migrations/0003_userdata_delete_profile.py b/users/migrations/0003_userdata_delete_profile.py new file mode 100644 index 0000000..88ae888 --- /dev/null +++ b/users/migrations/0003_userdata_delete_profile.py @@ -0,0 +1,31 @@ +# Generated by Django 5.2.9 on 2026-02-28 03:45 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0002_alter_profile_id'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='UserData', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=40)), + ('xp', models.IntegerField()), + ('money', models.IntegerField()), + ('equipment', models.CharField(default='0;', max_length=1024)), + ('inventory', models.CharField(default='0;', max_length=1024)), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.DeleteModel( + name='Profile', + ), + ] diff --git a/users/models.py b/users/models.py index 3802880..8a3ec8e 100644 --- a/users/models.py +++ b/users/models.py @@ -3,14 +3,21 @@ from django.contrib.auth.models import User # Create your models here. -class Profile(models.Model): +class UserData(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) - name = models.CharField(max_length=100) - about = models.TextField(default='Hi, I am new to TechBlog') - gender = models.TextField(default='None') - dob = models.DateField(default='1999-01-01') - # image = models.ImageField(default='default.png', name='profile_pic', upload_to='profile_pics') + name = models.CharField(max_length=40) + xp = models.IntegerField() + money = models.IntegerField() + equipment = models.CharField(max_length=1024, default='0;') + inventory = models.CharField(max_length=1024, default='0;') def __str__(self): - return f"{self.user.username}'s Profile" + return f"{self.user.username}'s data" + + +# So this is my beutiful brainchild to keep user data in about 1KB per user, I'm not too sure but still +# it's worth the try, so the main payload is the inventory along the soliers an their weapons and vehicles +# along with the mods for everything which I have separated by `;`, `.` and `,` for soldier, equipment +# class and each equipment. I'll try a bit of bit-hacking to pack as much info of 20 bytes in 2 of the mods. +# ammo|--|sights|---|internals|---|, trigger|--|barrel|--|skins|----|, number|--------| \ No newline at end of file diff --git a/users/serializers.py b/users/serializers.py new file mode 100644 index 0000000..f8a8a47 --- /dev/null +++ b/users/serializers.py @@ -0,0 +1,7 @@ +from rest_framework import serializers +from .models import * + +class UserDataSerializer(serializers.ModelSerializer): + class Meta: + model = UserData + fields = ['user', 'name', 'xp', 'money', 'equipment', 'inventory'] diff --git a/users/urls.py b/users/urls.py index d90dc45..1e87528 100644 --- a/users/urls.py +++ b/users/urls.py @@ -3,8 +3,8 @@ from django.contrib.auth import views as login_view from . import views urlpatterns = [ - path('profile/', views.profile, name='Profile'), - path('profile/', views.profile, name='NamedProfile'), + # path('profile/', views.profile, name='Profile'), + # path('profile/', views.profile, name='NamedProfile'), path('login/', login_view.LoginView.as_view(template_name='users/login.html'), name='Login'), path('logout/', login_view.LogoutView.as_view(template_name='users/logout.html'), name='Logout'), path('register/', views.register, name='Register') diff --git a/users/views.py b/users/views.py index 6bac6ff..70326ac 100644 --- a/users/views.py +++ b/users/views.py @@ -11,52 +11,36 @@ from django.views.generic import * # def users(request): # return render(request, 'users/users.html', {'title': 'Users'}) -def getFromArr(arr, indices, *args, **kwargs): - x = [] - for i in indices: - x.append(arr[i]) - return x +# def getFromArr(arr, indices, *args, **kwargs): +# x = [] +# for i in indices: +# x.append(arr[i]) +# return x -@login_required -def profile(request, *args, **kwargs): - try: - user = User._default_manager.all()[kwargs['pk'] - 1] - except: - user = request.user - print(user.id) +# @login_required +# def profile(request, *args, **kwargs): +# try: +# user = User._default_manager.all()[kwargs['pk'] - 1] +# except: +# user = request.user +# print(user.id) - allow_empty = True - queryset = None - model = Post - paginate_by = None - paginate_orphans = 0 - context_object_name = 'posts' - ordering = ['-date_posted'] +# allow_empty = True +# queryset = Post._default_manager.all() +# context_object_name = 'posts' +# ordering = ['-date_posted'] - if queryset is not None: - queryset = queryset - if isinstance(queryset, QuerySet): - queryset = queryset.all() - elif model is not None: - queryset = model._default_manager.all() - else: - raise ImproperlyConfigured( - "%(cls)s is missing a QuerySet. Define " - "%(cls)s.model, %(cls)s.queryset, or override " - "%(cls)s.get_queryset()." % {"cls": self.__class__.__name__} - ) +# if ordering: +# if isinstance(ordering, str): +# ordering = (ordering,) +# queryset = queryset.order_by(*ordering) - if ordering: - if isinstance(ordering, str): - ordering = (ordering,) - queryset = queryset.order_by(*ordering) - - return render(request, 'users/profile.html', {'title': 'Profile', 'profileUser': user, context_object_name: queryset}) +# return render(request, 'users/profile.html', {'title': 'Profile', 'profileUser': user, context_object_name: queryset}) -def people(request): - return render(request, 'users/people.html', {'title': 'People', 'users': User._default_manager.all()}) +# def people(request): +# return render(request, 'users/people.html', {'title': 'People', 'users': User._default_manager.all()}) users = {