61 lines
2.3 KiB
Python
61 lines
2.3 KiB
Python
import os
|
|
import platform
|
|
from django.shortcuts import render, redirect
|
|
from django.utils import timezone
|
|
from django.contrib import messages
|
|
from .models import Channel, Conversation, Message
|
|
|
|
def home(request):
|
|
"""UniChat Dashboard - The Central Hub"""
|
|
# Ensure default channels exist
|
|
for code, name in Channel.PLATFORM_CHOICES:
|
|
Channel.objects.get_or_create(name=code)
|
|
|
|
active_channels = Channel.objects.filter(is_active=True)
|
|
recent_conversations = Conversation.objects.filter(channel__in=active_channels).order_by('-last_message_at')[:5]
|
|
|
|
context = {
|
|
"active_channels": active_channels,
|
|
"recent_conversations": recent_conversations,
|
|
"total_active": active_channels.count(),
|
|
"all_channels": Channel.objects.all(),
|
|
}
|
|
return render(request, "core/index.html", context)
|
|
|
|
def integrations(request):
|
|
"""Manage connected messaging services"""
|
|
if request.method == "POST":
|
|
channel_id = request.POST.get("channel_id")
|
|
action = request.POST.get("action")
|
|
|
|
try:
|
|
channel = Channel.objects.get(id=channel_id)
|
|
if action == "enable":
|
|
channel.is_active = True
|
|
messages.success(request, f"{channel.get_name_display()} enabled successfully.")
|
|
else:
|
|
channel.is_active = False
|
|
messages.info(request, f"{channel.get_name_display()} disabled.")
|
|
channel.save()
|
|
except Channel.DoesNotExist:
|
|
messages.error(request, "Channel not found.")
|
|
|
|
return redirect("integrations")
|
|
|
|
channels = Channel.objects.all()
|
|
return render(request, "core/integrations.html", {"channels": channels})
|
|
|
|
def wipe_data(request):
|
|
"""Deadman Switch implementation - wipes sensitive data"""
|
|
if request.method == "POST":
|
|
# In a real app, verify the Deadman PIN here
|
|
Message.objects.all().delete()
|
|
Conversation.objects.all().delete()
|
|
# Mark as wiped in profile
|
|
if request.user.is_authenticated:
|
|
request.user.profile.last_wipe_at = timezone.now()
|
|
request.user.profile.save()
|
|
|
|
messages.warning(request, "SECURITY PROTOCOL ACTIVATED: All local data has been wiped.")
|
|
return redirect("home")
|
|
return redirect("home") |