This commit is contained in:
Iliyan Angelov
2025-10-13 01:49:06 +03:00
parent 76c857b4f5
commit 5ad9cbe3a6
97 changed files with 5752 additions and 2376 deletions

View File

@@ -89,23 +89,28 @@ class SupportTicketCreateSerializer(serializers.ModelSerializer):
def validate_user_email(self, value):
"""
Validate that the email is registered and active in the RegisteredEmail model
Validate email format and optionally check if registered
"""
from .models import RegisteredEmail
from django.core.validators import validate_email
from django.core.exceptions import ValidationError as DjangoValidationError
# Check if email exists and is active in RegisteredEmail model
# Basic email format validation
try:
validate_email(value)
except DjangoValidationError:
raise serializers.ValidationError("Please enter a valid email address.")
# Optional: Check if email is registered (for analytics/tracking)
# But don't block ticket creation if not registered
try:
registered_email = RegisteredEmail.objects.get(email=value)
if not registered_email.is_active:
raise serializers.ValidationError(
"This email has been deactivated. "
"Please contact us at support@gnxsoft.com for assistance."
)
# Log this but don't block the ticket
logger.warning(f'Ticket submitted by deactivated registered email: {value}')
except RegisteredEmail.DoesNotExist:
raise serializers.ValidationError(
"This email is not registered in our system. "
"Please contact us at support@gnxsoft.com to register your email first."
)
# This is fine - unregistered users can submit tickets
logger.info(f'Ticket submitted by unregistered email: {value}')
return value
@@ -133,12 +138,14 @@ class SupportTicketCreateSerializer(serializers.ModelSerializer):
user_name=ticket.user_name
)
# Update registered email statistics
# Update registered email statistics (only if email is registered)
try:
registered_email = RegisteredEmail.objects.get(email=validated_data['user_email'])
registered_email.increment_ticket_count()
logger.info(f'Updated ticket count for registered email: {validated_data["user_email"]}')
except RegisteredEmail.DoesNotExist:
logger.warning(f'RegisteredEmail not found for {validated_data["user_email"]} after validation')
# This is normal now - unregistered users can submit tickets
logger.info(f'Ticket created by unregistered email: {validated_data["user_email"]}')
# Send email notifications
try: