from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from .models import UserData, AIKey, AppVersion, Contact from django.shortcuts import get_object_or_404 from .serializers import ContactSerializer from rest_framework.generics import CreateAPIView import os import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart class UserDataPostView(APIView): def post(self, request): user_id = request.data.get("user_id") if not user_id: return Response( {"error": "user_id is required"}, status=status.HTTP_400_BAD_REQUEST ) obj, created = UserData.objects.get_or_create(user_id=user_id) # Track if updates were actually made updated = False for key in ["expenses", "salary", "category", "user_data"]: if key in request.data and getattr(obj, key) != request.data[key]: setattr(obj, key, request.data[key]) updated = True if updated: obj.save() if created: obj = get_object_or_404(UserData, user_id=user_id) if obj.has_ai_access: AI_KEY = get_object_or_404(AIKey, isActive=True).aikey else: AI_KEY = None return Response( { "message": "Data created successfull", "app_version": get_object_or_404(AppVersion, isActive=True).version, "has_music_url_access": obj.has_music_url_access, "has_ai_access": obj.has_ai_access, "ai_key": AI_KEY, }, status=status.HTTP_201_CREATED, ) elif updated: obj = get_object_or_404(UserData, user_id=user_id) print(obj.has_ai_access) if obj.has_ai_access: AI_KEY = get_object_or_404(AIKey, isActive=True).aikey else: AI_KEY = None return Response( { "message": "Data updated successfull", "app_version": get_object_or_404(AppVersion, isActive=True).version, "has_music_url_access": obj.has_music_url_access, "has_ai_access": obj.has_ai_access, "ai_key": AI_KEY, }, status=status.HTTP_200_OK, ) else: obj = get_object_or_404(UserData, user_id=user_id) if obj.has_ai_access: AI_KEY = get_object_or_404(AIKey, isActive=True).aikey else: AI_KEY = None return Response( { "message": "No changes made", "app_version": get_object_or_404(AppVersion, isActive=True).version, "has_music_url_access": obj.has_music_url_access, "has_ai_access": obj.has_ai_access, "ai_key": AI_KEY, }, status=status.HTTP_200_OK, ) class GetFieldView(APIView): def get(self, request, field, user_id): obj = get_object_or_404(UserData, user_id=user_id) if field == "all": data = { "userData": obj.user_data, "expenseData": obj.expenses, "categoryData": obj.category, "salaryData": obj.salary, } return Response(data) if hasattr(obj, field): return Response({field: getattr(obj, field)}) return Response({"error": "Invalid field"}, status=status.HTTP_400_BAD_REQUEST) upper_body = """
I've received your message.
Hi """ mid_body = """,
Thanks for reaching out via my portfolio! I wanted to let you know that your message has landed safely in my inbox.
I appreciate your interest. I typically review inquiries within 24 hours and will get back to you as soon as possible.
""" lower_body = """
Best regards,
Dev Namdev