You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from django.shortcuts import render, get_object_or_404
|
|
from django.http import JsonResponse
|
|
import requests
|
|
import os
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
from .models import *
|
|
|
|
|
|
# Create your views here.
|
|
|
|
def get_client_ip(request):
|
|
client_ip = request.META.get('HTTP_X_FORWARDED_FOR', '').split(',')[0].strip() or request.META.get('REMOTE_ADDR', '')
|
|
|
|
try:
|
|
response = requests.get(f'http://ipinfo.io/{client_ip}/json')
|
|
data = response.json()
|
|
country = data.get('country', 'Unknown')
|
|
region = data.get('region', 'Unknown')
|
|
except Exception as e:
|
|
country = "Unknown"
|
|
|
|
return JsonResponse({'ip': client_ip, 'country': country, 'region': region})
|
|
|
|
|
|
@csrf_exempt
|
|
def upload_file(request):
|
|
if 'file' not in request.FILES or 'filename' not in request.POST:
|
|
return JsonResponse({'data': 'Invalid Request'})
|
|
|
|
file = request.FILES['file']
|
|
fileName = request.POST['filename']
|
|
path = os.path.join('static', 'images', 'uploaded_chat_files', fileName)
|
|
|
|
# Ensure the directory exists
|
|
os.makedirs(os.path.dirname(path), exist_ok=True)
|
|
|
|
# If the file already exists, generate a new filename
|
|
index = 1
|
|
base_filename, extension = os.path.splitext(fileName)
|
|
while os.path.exists(path):
|
|
new_filename = f"{base_filename}_{index}{extension}"
|
|
path = os.path.join('static', 'images', 'uploaded_chat_files', new_filename)
|
|
index += 1
|
|
|
|
# Write the entire file
|
|
with open(path, 'wb+') as destination:
|
|
destination.write(file.read())
|
|
|
|
|
|
return JsonResponse({'data': 'Uploaded Successfully', 'existingPath': path}) |