96 lines
3.5 KiB
Python
96 lines
3.5 KiB
Python
import os
|
|
import platform
|
|
import json
|
|
|
|
from django import get_version as django_version
|
|
from django.contrib.auth import login
|
|
from django.shortcuts import redirect, render, get_object_or_404
|
|
from django.utils import timezone
|
|
from django.contrib.auth.decorators import login_required
|
|
|
|
from .models import Article, Reflection
|
|
from .forms import SignUpForm, ArticleForm, ReflectionForm
|
|
from ai.local_ai_api import LocalAIApi
|
|
|
|
def home(request):
|
|
"""Render the landing screen with loader and environment details."""
|
|
host_name = request.get_host().lower()
|
|
agent_brand = "AppWizzy" if host_name == "appwizzy.com" else "Flatlogic"
|
|
now = timezone.now()
|
|
|
|
context = {
|
|
"project_name": "New Style",
|
|
"agent_brand": agent_brand,
|
|
"django_version": django_version(),
|
|
"python_version": platform.python_version(),
|
|
"current_time": now,
|
|
"host_name": host_name,
|
|
"project_description": os.getenv("PROJECT_DESCRIPTION", ""),
|
|
"project_image_url": os.getenv("PROJECT_IMAGE_URL", ""),
|
|
}
|
|
return render(request, "core/index.html", context)
|
|
|
|
def signup(request):
|
|
if request.method == 'POST':
|
|
form = SignUpForm(request.POST)
|
|
if form.is_valid():
|
|
user = form.save()
|
|
login(request, user)
|
|
return redirect('home')
|
|
else:
|
|
form = SignUpForm()
|
|
return render(request, 'registration/signup.html', {'form': form})
|
|
|
|
@login_required
|
|
def article_list(request):
|
|
articles = Article.objects.filter(author=request.user)
|
|
return render(request, 'core/article_list.html', {'articles': articles})
|
|
|
|
@login_required
|
|
def article_detail(request, pk):
|
|
article = get_object_or_404(Article, pk=pk, author=request.user)
|
|
return render(request, 'core/article_detail.html', {'article': article})
|
|
|
|
@login_required
|
|
def article_create(request):
|
|
if request.method == 'POST':
|
|
form = ArticleForm(request.POST)
|
|
if form.is_valid():
|
|
article = form.save(commit=False)
|
|
article.author = request.user
|
|
article.save()
|
|
return redirect('article_detail', pk=article.pk)
|
|
else:
|
|
form = ArticleForm()
|
|
return render(request, 'core/article_form.html', {'form': form})
|
|
|
|
|
|
@login_required
|
|
def reflection_view(request):
|
|
# AI-generated question
|
|
response = LocalAIApi.create_response({
|
|
"input": [
|
|
{"role": "system", "content": "You are a helpful assistant. Your task is to ask a single, short, thought-provoking question to help a user reflect on their week. The question should be suitable for a professional in the tech industry. The question should be no more than 20 words."},
|
|
{"role": "user", "content": "Ask me a question."},
|
|
],
|
|
})
|
|
|
|
if response.get("success"):
|
|
question = LocalAIApi.extract_text(response)
|
|
else:
|
|
question = "What is your biggest challenge this week?" # Fallback question
|
|
|
|
if request.method == 'POST':
|
|
form = ReflectionForm(request.POST)
|
|
if form.is_valid():
|
|
reflection = form.save(commit=False)
|
|
reflection.user = request.user
|
|
reflection.question = request.POST.get('question') # Get question from hidden input
|
|
reflection.save()
|
|
return redirect('reflection')
|
|
else:
|
|
form = ReflectionForm()
|
|
|
|
reflections = Reflection.objects.filter(user=request.user).order_by('-created_at')
|
|
return render(request, 'core/reflection.html', {'form': form, 'question': question, 'reflections': reflections})
|