debug product serializer

This commit is contained in:
Parsa Nazer
2025-02-18 21:42:14 +03:30
parent 96cfcf1fcb
commit 7617431f2b
5 changed files with 119 additions and 4 deletions
+3 -1
View File
@@ -7,6 +7,7 @@ from rest_framework_simplejwt.views import TokenObtainPairView,TokenRefreshView
from product import views from product import views
from account.views import CustomTokenObtainPairView from account.views import CustomTokenObtainPairView
from home.views import HomeView from home.views import HomeView
from .views import FakeAdminLoginView
urlpatterns = [ urlpatterns = [
@@ -17,7 +18,8 @@ urlpatterns = [
path('home', HomeView.as_view()), path('home', HomeView.as_view()),
path('token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'), path('token/', CustomTokenObtainPairView.as_view(), name='token_obtain_pair'),
path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), path('token/refresh/', TokenRefreshView.as_view(), name='token_refresh'),
path('admin/', admin.site.urls), path('admin/', FakeAdminLoginView.as_view()), # Fake admin
path('secret-admin/', admin.site.urls), # Real admin
path('schema/', SpectacularAPIView.as_view(), name='schema'), path('schema/', SpectacularAPIView.as_view(), name='schema'),
# path('comment/<int:pk>', views.CommentView.as_view(), name='comment-list'), # path('comment/<int:pk>', views.CommentView.as_view(), name='comment-list'),
path('products/', include('product.urls')), path('products/', include('product.urls')),
+54 -1
View File
@@ -10,12 +10,13 @@ from unfold.views import UnfoldModelAdminViewMixin
from order.models import OrderModel from order.models import OrderModel
from ticket.models import Ticket from ticket.models import Ticket
import json
def dashboard_callback(request, context): def dashboard_callback(request, context):
print(context)
pending_count = OrderModel.objects.filter(status='ADMIN_PENDING').count() pending_count = OrderModel.objects.filter(status='ADMIN_PENDING').count()
open_tickets_count = Ticket.objects.filter(status__in=['open', 'in_progress']).count() open_tickets_count = Ticket.objects.filter(status__in=['open', 'in_progress']).count()
context.update(random_data()) context.update(random_data())
@@ -192,3 +193,55 @@ def random_data():
], ],
} }
return response return response
# views.py
from django.contrib.auth.views import LoginView
from django.contrib.admin.sites import site as admin_site
from django.contrib import messages
from django.shortcuts import redirect
from django.views.generic import RedirectView, TemplateView
from unfold.views import UnfoldModelAdminViewMixin
class FakeAdminLoginView(LoginView):
template_name = "admin/fake_login.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
print(self.get_form())
context.update({
**admin_site.each_context(self.request),
"title": "Log in",
"site_header": admin_site.site_header,
"form": self.get_form(),
})
return context
def form_valid(self, form):
# Log the honeypot attempt
username = form.cleaned_data.get("username")
ip = self.request.META.get("REMOTE_ADDR")
print(f"Honeypot triggered! IP: {ip}, Username: {username}")
# Add error message and redirect back to fake login
messages.error(self.request, "Please enter a correct شماره تماس and password. Note that both fields may be case-sensitive.")
return redirect('/admin')
def form_invalid(self, form):
# Log the honeypot attempt
username = form.cleaned_data.get("username")
ip = self.request.META.get("REMOTE_ADDR")
print(f"Honeypot triggered! IP: {ip}, Username: {username}")
# Add error message and redirect back to fake login
messages.error(self.request, "Please enter a correct شماره تماس and password. Note that both fields may be case-sensitive.")
return redirect('/admin')
+1 -1
View File
@@ -28,7 +28,7 @@ class OrderAdmin(ModelAdmin, ImportExportModelAdmin):
list_filter = ['is_paid', 'status'] list_filter = ['is_paid', 'status']
list_display = ['user', 'is_paid', 'status', 'discount_code', 'address'] list_display = ['user', 'is_paid', 'status', 'discount_code', 'address']
readonly_fields = ('created_at',)
compressed_fields = True compressed_fields = True
warn_unsaved_form = True warn_unsaved_form = True
+1 -1
View File
@@ -44,7 +44,7 @@ class ProductImageSerailizer(serializers.ModelSerializer):
class ProductVariantSerialzier(serializers.ModelSerializer): class ProductVariantSerialzier(serializers.ModelSerializer):
attributes = AttributeValueSerialzier(many=True) product_attributes = AttributeValueSerialzier(many=True)
price = serializers.SerializerMethodField() price = serializers.SerializerMethodField()
in_pack_items = InPackItemsSerialzier(many=True) in_pack_items = InPackItemsSerialzier(many=True)
images = ProductImageSerailizer(many=True) images = ProductImageSerailizer(many=True)
+60
View File
@@ -0,0 +1,60 @@
{% extends "admin/login.html" %}
{% load i18n static %}
{% block content %}
<div class="flex min-h-screen">
<div class="w-full max-w-md mx-auto p-6">
<div class="mb-8 text-center">
{% include "unfold/helpers/logo.html" %}
</div>
{% if messages %}
<div class="bg-red-50 text-red-600 p-4 rounded-lg mb-4 text-sm"> <!-- Unfold's error class -->
{% for message in messages %}
{{ message }}
{% endfor %}
</div>
{% endif %}
<form method="post" class="space-y-4">
{% csrf_token %}
asdfadsf
<!-- Username Input (Matches Unfold's Styling) -->
<div>
<label for="id_username" class="block text-sm font-medium text-gray-700 mb-2">
{% trans "Username" %}
</label>
<input
type="text"
name="username"
id="id_username"
class="w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500" <!-- Unfold's input classes -->
required
>
</div>
<!-- Password Input -->
<div>
<label for="id_password" class="block text-sm font-medium text-gray-700 mb-2">
{% trans "Password" %}
</label>
<input
type="password"
name="password"
id="id_password"
class="w-full px-3 py-2 border rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
required
>
</div>
<!-- Submit Button -->
<button
type="submit"
class="w-full bg-blue-600 text-white py-2 px-4 rounded-lg hover:bg-blue-700 focus:ring-2 focus:ring-blue-500" <!-- Unfold's button classes -->
>
{% trans "Log in" %}
</button>
</form>
</div>
</div>
{% endblock %}