update prints to log

This commit is contained in:
Parsa Nazer
2026-05-12 09:47:45 +03:30
parent 45fe9c1f4c
commit e5d940e3c9
9 changed files with 44 additions and 29 deletions
+8 -6
View File
@@ -2,6 +2,9 @@ from django.contrib.auth.models import AbstractBaseUser, BaseUserManager, Permis
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
import random import random
import logging
logger = logging.getLogger(__name__)
from datetime import datetime, timedelta from datetime import datetime, timedelta
from django.utils import timezone from django.utils import timezone
from rest_framework_simplejwt.token_blacklist.models import BlacklistedToken, OutstandingToken from rest_framework_simplejwt.token_blacklist.models import BlacklistedToken, OutstandingToken
@@ -113,7 +116,7 @@ class User(AbstractBaseUser, PermissionsMixin):
for token in tokens: for token in tokens:
BlacklistedToken.objects.get_or_create(token=token) BlacklistedToken.objects.get_or_create(token=token)
except Exception as e: except Exception as e:
print(f"block list error: {e}") logger.error(f"block list error: {e}")
def __str__(self): def __str__(self):
@@ -200,7 +203,6 @@ class PushSubscription(models.Model):
"icon": 'https://api.heymlz.com' + icon, "icon": 'https://api.heymlz.com' + icon,
"image": 'https://api.heymlz.com' + icon, "image": 'https://api.heymlz.com' + icon,
} }
print(payload)
try: try:
webpush( webpush(
subscription_info={ subscription_info={
@@ -214,7 +216,7 @@ class PushSubscription(models.Model):
} }
) )
except WebPushException as ex: except WebPushException as ex:
print("Failed to send notification:", ex) logger.error(f"Failed to send notification: {ex}")
@classmethod @classmethod
def send_group_notification(cls, user, title, body): def send_group_notification(cls, user, title, body):
@@ -240,7 +242,7 @@ class PushSubscription(models.Model):
} }
) )
except WebPushException as ex: except WebPushException as ex:
print(f"Failed to send notification to {sub.user}:", ex) logger.error(f"Failed to send notification to {sub.user}: {ex}")
@@ -277,10 +279,10 @@ def get_location_from_ip(ip_address):
if data["status"] == "success": if data["status"] == "success":
return data['country'], data['regionName'], data['city'], data.get('zip', 'ناموجود'), data['lat'], data['lon'], data['isp'] return data['country'], data['regionName'], data['city'], data.get('zip', 'ناموجود'), data['lat'], data['lon'], data['isp']
else: else:
print("Error fetching data: ", data["message"]) logger.error(f"Error fetching data: {data['message']}")
return None return None
except Exception as e: except Exception as e:
print(f"An error occurred: {e}") logger.error(f"An error occurred: {e}")
return None return None
class SecurityBreachAttemptModel(models.Model): class SecurityBreachAttemptModel(models.Model):
+4 -1
View File
@@ -1,5 +1,8 @@
from django.db import models from django.db import models
from account.models import User from account.models import User
import logging
logger = logging.getLogger(__name__)
from product.models import ProductModel from product.models import ProductModel
from django.conf import settings from django.conf import settings
import openai import openai
@@ -55,7 +58,7 @@ class ProductChatModel(models.Model):
self.thread = thread.id self.thread = thread.id
except Exception as e: except Exception as e:
print(f'error in chat class: {e}') logger.error(f'error in chat class: {e}')
raise ValueError(f"Error creating OpenAI thread: {e}") raise ValueError(f"Error creating OpenAI thread: {e}")
super().save(*args, **kwargs) super().save(*args, **kwargs)
+5 -4
View File
@@ -1,7 +1,10 @@
import json import json
import random import random
import logging
from functools import lru_cache from functools import lru_cache
logger = logging.getLogger(__name__)
from django.contrib.humanize.templatetags.humanize import intcomma from django.contrib.humanize.templatetags.humanize import intcomma
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
@@ -274,9 +277,7 @@ class FakeAdminLoginView(View):
ip = x_forwarded_for.split(',')[0] ip = x_forwarded_for.split(',')[0]
else: else:
ip = request.META.get("REMOTE_ADDR") ip = request.META.get("REMOTE_ADDR")
print(ip) logger.info(f"Honeypot GET request from IP: {ip}, length: {len(ip)}, type: {type(ip).__name__}")
print(len(ip))
print(type(ip))
hacker, created = SecurityBreachAttemptModel.objects.get_or_create(ip_address=ip) hacker, created = SecurityBreachAttemptModel.objects.get_or_create(ip_address=ip)
return render(request, 'admin/fake_login.html', self.get_context(request)) return render(request, 'admin/fake_login.html', self.get_context(request))
@@ -286,7 +287,7 @@ class FakeAdminLoginView(View):
ip = x_forwarded_for.split(',')[0] ip = x_forwarded_for.split(',')[0]
else: else:
ip = request.META.get("REMOTE_ADDR") ip = request.META.get("REMOTE_ADDR")
print(ip) logger.warning(f"Honeypot POST request from IP: {ip}")
hacker, created = SecurityBreachAttemptModel.objects.get_or_create(ip_address=ip) hacker, created = SecurityBreachAttemptModel.objects.get_or_create(ip_address=ip)
hacker.trys += 1 hacker.trys += 1
hacker.save() hacker.save()
+4 -2
View File
@@ -1,5 +1,8 @@
from django.contrib import admin, messages from django.contrib import admin, messages
from .models import * from .models import *
import logging
logger = logging.getLogger(__name__)
from unfold.admin import TabularInline, StackedInline from unfold.admin import TabularInline, StackedInline
from unfold.contrib.inlines.admin import NonrelatedTabularInline from unfold.contrib.inlines.admin import NonrelatedTabularInline
from django.db.models import Q from django.db.models import Q
@@ -35,8 +38,7 @@ class OrderItemAdmin(ModelAdmin):
if not hasattr(request.user, 'shop'): if not hasattr(request.user, 'shop'):
return False return False
print(obj.product.product.shop) logger.debug(f"Shop permissions check: obj.shop={obj.product.product.shop}, user.shop={request.user.shop}")
print(request.user.shop)
return request.user.shop == obj.product.product.shop return request.user.shop == obj.product.product.shop
+8 -7
View File
@@ -1,5 +1,8 @@
from account.models import SpecialDiscountCode from account.models import SpecialDiscountCode
from django.db import models, transaction from django.db import models, transaction
import logging
logger = logging.getLogger(__name__)
from account.models import User, UserAddressModel, PushSubscription from account.models import User, UserAddressModel, PushSubscription
from product.models import ProductModel, ProductVariant, ProductImageModel from product.models import ProductModel, ProductVariant, ProductImageModel
from django.utils import timezone from django.utils import timezone
@@ -33,7 +36,7 @@ class DiscountCode(models.Model):
elif not self.quantity > 0: elif not self.quantity > 0:
return 'این کد تخفیف تمام شده است' return 'این کد تخفیف تمام شده است'
else: else:
print('log later bug') logger.warning('Discount code validity check failed')
class Cart(models.Model): class Cart(models.Model):
@@ -168,8 +171,8 @@ class OrderModel(models.Model):
null=True, related_name='orders', verbose_name='کاربر') null=True, related_name='orders', verbose_name='کاربر')
address = models.ForeignKey(UserAddressModel, on_delete=models.SET_NULL, address = models.ForeignKey(UserAddressModel, on_delete=models.SET_NULL,
related_name='orders', null=True, verbose_name='ادرس') related_name='orders', null=True, verbose_name='ادرس')
created_at = jmodels.jDateField( created_at = models.DateTimeField(
blank=True, null=True, verbose_name="تاریخ ثبت سفارش") auto_now_add=True, verbose_name="تاریخ ثبت سفارش")
is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت") is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت")
discount_code = models.ForeignKey( discount_code = models.ForeignKey(
DiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف") DiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف")
@@ -227,9 +230,7 @@ class OrderModel(models.Model):
return True return True
except Exception as e: except Exception as e:
print(e) logger.error(f"Failed to rollback stock for order {self.pk}: {e}")
# Log the error if you have logging setup
# logger.error(f"Failed to rollback stock for order {self.pk}: {e}")
return False return False
@@ -264,7 +265,7 @@ class OrderItemModel(models.Model):
# @property # @property
def price_after_special_discount(self): def price_after_special_discount(self):
all_discounts = (self.special_discount_amount or 0) + self.total_product_discount_amount() all_discounts = (self.special_discount_amount or 0) + self.total_product_discount_amount()
print(all_discounts) logger.debug(f"Total discounts calculated: {all_discounts}")
return self.total_price_before_discount() - all_discounts return self.total_price_before_discount() - all_discounts
def unit_price(self): def unit_price(self):
+3 -3
View File
@@ -40,8 +40,8 @@ def send_change_status_notif(instance_pk, new_status):
for user_sub in user_subs: for user_sub in user_subs:
try: try:
user_sub.send_notif(f'سفارش شما به {new_status} تغییر کرد', f'سفارش شما به {new_status} تغییر کرد', ProductImageModel.objects.all().first().image.url) user_sub.send_notif(f'سفارش شما به {new_status} تغییر کرد', f'سفارش شما به {new_status} تغییر کرد', ProductImageModel.objects.all().first().image.url)
except: except Exception as e:
print('log later send notif error') logger.error('Error sending status notification: ' + str(e))
@shared_task @shared_task
def send_change_status_sms(instance_pk, new_status): def send_change_status_sms(instance_pk, new_status):
@@ -77,7 +77,7 @@ def generate_daily_shop_reports():
from .models import ShopOrderModel, ShopDailyReport from .models import ShopOrderModel, ShopDailyReport
target_date = (timezone.now() - timedelta(days=1)).date() target_date = (timezone.now() - timedelta(days=1)).date()
print(f'Generating shop reports for {target_date}') logging.info(f'Generating shop reports for {target_date}')
shop_orders = ShopOrderModel.objects.filter(created_at__date=target_date) shop_orders = ShopOrderModel.objects.filter(created_at__date=target_date)
if not shop_orders.exists(): if not shop_orders.exists():
+2 -2
View File
@@ -390,13 +390,13 @@ class PaymentView(APIView):
}) })
except AZBankGatewaysException as e: except AZBankGatewaysException as e:
print(f"Payment gateway error: {e}") logger.error(f"Payment gateway error: {e}")
return Response({ return Response({
'error': 'خطا در اتصال به درگاه پرداخت' 'error': 'خطا در اتصال به درگاه پرداخت'
}, status=status.HTTP_400_BAD_REQUEST) }, status=status.HTTP_400_BAD_REQUEST)
except Exception as e: except Exception as e:
print(f"Order creation error: {e}") logger.error(f"Order creation error: {e}")
return Response({ return Response({
'error': 'خطا در ثبت سفارش' 'error': 'خطا در ثبت سفارش'
}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) }, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
+6 -3
View File
@@ -1,5 +1,8 @@
from django.contrib import admin, messages from django.contrib import admin, messages
from django import forms from django import forms
import logging
logger = logging.getLogger(__name__)
# from product.tasks import update_prices # from product.tasks import update_prices
from .models import * from .models import *
from unfold.admin import TabularInline, StackedInline from unfold.admin import TabularInline, StackedInline
@@ -263,13 +266,13 @@ class ProductDetailModel1Admin(ModelAdmin, ImportExportModelAdmin):
def get_queryset(self, request): def get_queryset(self, request):
if request.user.is_superuser: if request.user.is_superuser:
print('here') logger.info('Returning all ProductDetailModels for superuser')
return ProductDetailModel.objects.all() return ProductDetailModel.objects.all()
if not hasattr(request.user, 'shop'): if not hasattr(request.user, 'shop'):
print(' in here 2') logger.info('User has no shop, returning empty queryset')
return ProductDetailModel.objects.none() return ProductDetailModel.objects.none()
print('in here 3') logger.info('Filtering ProductDetailModels by shop')
queryset = ProductDetailModel.objects.filter(product__product__shop__id=request.user.shop.id) queryset = ProductDetailModel.objects.filter(product__product__shop__id=request.user.shop.id)
return queryset return queryset
+4 -1
View File
@@ -1,5 +1,8 @@
from django.db import models from django.db import models
from django.utils.text import slugify from django.utils.text import slugify
import logging
logger = logging.getLogger(__name__)
from account.models import User from account.models import User
from django.urls import reverse from django.urls import reverse
import requests import requests
@@ -148,7 +151,7 @@ class DollorModel(models.Model):
data = response.json() data = response.json()
price = int(data["lastTradePrice"]) price = int(data["lastTradePrice"])
price_in_usd = price / 10.0 price_in_usd = price / 10.0
print('\n\nprice from api \n\n') logger.info('Price fetched from API')
except Exception as e: except Exception as e:
return self.defualt_price return self.defualt_price