From 6f83ca7c8fe23270fc75fa48652c17675d6e4545 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Mon, 24 Nov 2025 17:15:30 +0000 Subject: [PATCH] v1 --- .../context_processors.cpython-311.pyc | Bin 629 -> 763 bytes core/__pycache__/forms.cpython-311.pyc | Bin 0 -> 807 bytes core/__pycache__/models.cpython-311.pyc | Bin 209 -> 1150 bytes core/__pycache__/urls.cpython-311.pyc | Bin 347 -> 456 bytes core/__pycache__/views.cpython-311.pyc | Bin 1364 -> 1238 bytes core/context_processors.py | 2 + core/forms.py | 7 + core/migrations/0001_initial.py | 25 +++ .../__pycache__/0001_initial.cpython-311.pyc | Bin 0 -> 1402 bytes core/models.py | 16 +- core/templates/base.html | 4 +- core/templates/core/index.html | 167 +++--------------- core/templates/core/ticket_success.html | 12 ++ core/urls.py | 8 +- core/views.py | 32 ++-- static/css/custom.css | 87 ++++++++- staticfiles/css/custom.css | 96 ++++++++-- 17 files changed, 274 insertions(+), 182 deletions(-) create mode 100644 core/__pycache__/forms.cpython-311.pyc create mode 100644 core/forms.py create mode 100644 core/migrations/0001_initial.py create mode 100644 core/migrations/__pycache__/0001_initial.cpython-311.pyc create mode 100644 core/templates/core/ticket_success.html diff --git a/core/__pycache__/context_processors.cpython-311.pyc b/core/__pycache__/context_processors.cpython-311.pyc index 8c0db3a1785d2e0afa45f13340668f8975564dba..007e591fe2dbf65f6949f9f1eb768c364214c0af 100644 GIT binary patch delta 376 zcmey$@|%@+IWI340}xD}q>`C5kyp}Q2FRJtkiw9{n8OeSp&6qXQo>4>pmPkr!K~8>UZfaghd`V_*YH>+oZhF3x0o~Y zN^Y@$WG9z0#&Zb(O=bb&VwcJH7}e|VDkv{?S>n0Sdx`f&1%oRJ1|Qg2c-THLKnPa0 z&mf0rG8ciup@yKUaoFVM or=?u!eu4$r2ig*-WizzGu}?2^YV;Y z%m0ujd#Xxoti_gS{tWFCP!KT*k<%n&n9MnKFaa(r5tkejxTbHp-Xed8uZ^6qb@&vI z++F;!?+iokFbULomVzd?bW=V)qoGT$r zUx>Vrbw>J4AwJb{W<8p^X*_hQ%=kO0%4GQy=2ZRSdHAu&RakG=qpA+o7nRgip~KIG z-Yds(qQa!mDr{P|KHfJjRi&5lBypCH5f1*3>Fo!H-t^9kNiz?98u}iF=v9QRz|{jX zZV{}s+xjkPP1JqTdM(f`lp6?_31*Jty_~^SIH$dfYaEuCIH^~@9LA&FLetwYe$$WA zHfMR0nnO2d3+NWLSlY0ieXSqiQF=P1K$vmH*c2X4x^oI^lkS|koMGWt;b`^SlXKd? JxW?HO{})REx848% literal 0 HcmV?d00001 diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc index 9aa598b9d5171b2bb0d207f045e07f9fbbb95a64..a9cc0d159915c2a905ebf646dfd28d90032e71e7 100644 GIT binary patch literal 1150 zcmZuwzfaph6h6m}^V6Y8Tb4pW6p*qcODkolDpeFHt$<3n3{lmS@g3mc*y-686ftCA zU|^sV>e_))!NA|psbeB}h`e@UsFaFMEbTixp(^y*e)qoj-re`!-TAYkq!GxY597uU z0io|4^d;UiE-GLgB7%ruqPkEO1QbKFh{Sdg5vfp%^(P#O2%W$eNmV4$5-P^eIV=i+ zT(=1|9laM0hbxM&01pvGRe_*tYz?SB2~{zMs8s9c0O6^41Vx^}7fDqPGZKA#1jb1p zplULVruvR+(e$;|B`T8mseG-8OqiAJuR#*0$!j$zB(;mGIg*BEGl8rc`UZ82Vlfs- zc7s}hvAJRsO=_*V>*sgC z#boXm880VD=`kl@qF-$k+)v zjrTzUW5;C}Z|9=DDD^NWcKCH`qRznW{he0w-UTmUp*RpEF}Aci#W+Y~3`=iOc_)btYL-2|zrb&bs!)FiABVwG;WAr3NxIyy5Nu3=k2db+L| zW)z51ZU?gCYOd!5$}`QSs!^v=G_5lV4uUn8-GwE;AT|gC3lD%_M#dE%`uT~ohpl|2ov--$O7lfm65>N$ zbW=rD^I8{*Qjj7w&04cdWF^|S_&om`!&cY>$obpjW%6-!08iK?1o$0r=0SBuK@d7< asP*sLm2v{`-&A|c`)_`7|F8c9L%Kf$tQyn+ literal 209 zcmZ3^%ge<81S>LrWmp2~#~=<2FhLogg@BCd3@HpLj5!Rsj8Tk?3@J>(44TX@K?*b( zZ?Wa(r=;c-`)M-W;!Md(%uCPLOGzqX21>4E_zY6>OHV%|KQ~psG^sSNq*On(A~m_R zB)>?%JijQrxF9h(RX;huC{-U~j9x+IFAf_ZyEG@&u80Guoe_wOWr4&8W=2NF8w@fR Ku%RM0pb7xTsWln^ diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 1f807fae1897c89361c99c5e868a26d00799b73f..7d0ada69ce4e0f912b4eed4d9719c2720fa2e681 100644 GIT binary patch literal 456 zcmZ8cy-or_5T3o;g9Cyl8XIG2LM}0!4`7HS);5L)3v=FX;NX79?wz0&C544n`UD!I ziLY`b6y#bfIubf6X9WtJot>Te=9`_F_j0)iD7EKf?;GDA6>KE8b`~9UUVs53J_Mvm z2r!N5z82_Boqz_MFv|4~-4rt8EBB@YeBxcnA199-V}mgBKc}TNbF6R$R&l0C7RhMO ziQ6->3XD6C_hkl|;f0J3R62A5{$R?)b-9#wwiA19m&Z42;L^%xCDw7mR#Z)dFNK;$ zsHKFOLgbYxpvg*@##S*Gq5OaaLa;os+fl&nhRwlGE hr6!_>PmRfem7bobv_7Ww39Zi!eODWn)DdND^a}}qb724g delta 251 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 F{{<1Idzt_M literal 0 HcmV?d00001 diff --git a/core/models.py b/core/models.py index 71a8362..38ef411 100644 --- a/core/models.py +++ b/core/models.py @@ -1,3 +1,17 @@ from django.db import models -# Create your models here. +class Ticket(models.Model): + STATUS_CHOICES = [ + ('open', 'Open'), + ('in_progress', 'In Progress'), + ('closed', 'Closed'), + ] + + subject = models.CharField(max_length=255) + description = models.TextField() + email = models.EmailField() + status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='open') + created_at = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return self.subject \ No newline at end of file diff --git a/core/templates/base.html b/core/templates/base.html index f712934..02e9899 100644 --- a/core/templates/base.html +++ b/core/templates/base.html @@ -13,9 +13,9 @@ {% endif %} + {% load static %} - - {% block head %}{% endblock %} + diff --git a/core/templates/core/index.html b/core/templates/core/index.html index faec813..023be5a 100644 --- a/core/templates/core/index.html +++ b/core/templates/core/index.html @@ -1,145 +1,32 @@ -{% extends "base.html" %} +{% extends 'base.html' %} +{% load static %} -{% block title %}{{ project_name }}{% endblock %} - -{% block head %} - - - - -{% endblock %} +{% block title %}Support Center{% endblock %} {% block content %} -
-
-

Analyzing your requirements and generating your app…

-
- Loading… +
+
+

Support Center

+

Submit a ticket and we'll get back to you shortly.

+ +
+ {% csrf_token %} +
+
+ {{ form.subject.label_tag }} + {{ form.subject }} +
+
+ {{ form.email.label_tag }} + {{ form.email }} +
+
+
+ {{ form.description.label_tag }} + {{ form.description }} +
+ +
-

AppWizzy AI is collecting your requirements and applying the first changes.

-

This page will refresh automatically as the plan is implemented.

-

- Runtime: Django {{ django_version }} · Python {{ python_version }} - — UTC {{ current_time|date:"Y-m-d H:i:s" }} -

-
-
-
- Page updated: {{ current_time|date:"Y-m-d H:i:s" }} (UTC) -
+ {% endblock %} \ No newline at end of file diff --git a/core/templates/core/ticket_success.html b/core/templates/core/ticket_success.html new file mode 100644 index 0000000..c2358cb --- /dev/null +++ b/core/templates/core/ticket_success.html @@ -0,0 +1,12 @@ +{% extends 'base.html' %} +{% load static %} + +{% block title %}Ticket Submitted Successfully{% endblock %} + +{% block content %} +
+

Ticket Submitted!

+

Thank you for contacting us. We will get back to you shortly.

+ Submit another ticket +
+{% endblock %} diff --git a/core/urls.py b/core/urls.py index 6299e3d..a877698 100644 --- a/core/urls.py +++ b/core/urls.py @@ -1,7 +1,7 @@ from django.urls import path - -from .views import home +from . import views urlpatterns = [ - path("", home, name="home"), -] + path('', views.index, name='index'), + path('success/', views.ticket_success, name='ticket_success'), +] \ No newline at end of file diff --git a/core/views.py b/core/views.py index c9aed12..538f341 100644 --- a/core/views.py +++ b/core/views.py @@ -2,24 +2,20 @@ import os import platform from django import get_version as django_version -from django.shortcuts import render -from django.utils import timezone +from django.shortcuts import render, redirect +from django.views.generic import TemplateView +from .forms import TicketForm +def index(request): + if request.method == 'POST': + form = TicketForm(request.POST) + if form.is_valid(): + form.save() + return redirect('ticket_success') + else: + form = TicketForm() + return render(request, 'core/index.html', {'form': form}) -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() +def ticket_success(request): + return render(request, 'core/ticket_success.html') - 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) diff --git a/static/css/custom.css b/static/css/custom.css index 925f6ed..2a85403 100644 --- a/static/css/custom.css +++ b/static/css/custom.css @@ -1,4 +1,87 @@ -/* Custom styles for the application */ +/* Custom Styles */ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&family=Inter:wght@400;500;600;700&display=swap'); + body { - font-family: system-ui, -apple-system, sans-serif; + font-family: 'Inter', sans-serif; + background: linear-gradient(120deg, #89f7fe 0%, #66a6ff 100%); + color: #fff; + height: 100vh; + display: flex; + align-items: center; + justify-content: center; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Poppins', sans-serif; + font-weight: 600; +} + +.glass-container { + background: rgba(255, 255, 255, 0.1); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-radius: 20px; + border: 1px solid rgba(255, 255, 255, 0.18); + box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); + padding: 40px 50px; + max-width: 800px; + width: 100%; +} + +.display-4 { + color: #fff; + font-weight: 700; +} + +.lead { + color: rgba(255, 255, 255, 0.8); + font-size: 1.2rem; +} + +form { + margin-top: 30px; +} + +form label { + font-weight: 500; + margin-bottom: 8px; + display: block; + color: rgba(255, 255, 255, 0.9); +} + +form input[type="text"], +form input[type="email"], +form textarea { + width: 100%; + padding: 12px 15px; + border-radius: 10px; + border: 1px solid rgba(255, 255, 255, 0.2); + background: rgba(255, 255, 255, 0.08); + color: #fff; + font-family: 'Inter', sans-serif; + font-size: 1rem; + margin-bottom: 15px; +} + +form input[type="text"]::placeholder, +form input[type="email"]::placeholder, +form textarea::placeholder { + color: rgba(255, 255, 255, 0.5); +} + +.btn-primary { + background-color: #4299e1; + border-color: #4299e1; + padding: 12px 30px; + font-weight: 600; + border-radius: 10px; + transition: all 0.3s ease; +} + +.btn-primary:hover { + background-color: #fff; + color: #4299e1; + border-color: #fff; + transform: translateY(-2px); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); } diff --git a/staticfiles/css/custom.css b/staticfiles/css/custom.css index 108056f..2a85403 100644 --- a/staticfiles/css/custom.css +++ b/staticfiles/css/custom.css @@ -1,21 +1,87 @@ +/* Custom Styles */ +@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@400;600;700&family=Inter:wght@400;500;600;700&display=swap'); -:root { - --bg-color-start: #6a11cb; - --bg-color-end: #2575fc; - --text-color: #ffffff; - --card-bg-color: rgba(255, 255, 255, 0.01); - --card-border-color: rgba(255, 255, 255, 0.1); -} body { - margin: 0; font-family: 'Inter', sans-serif; - background: linear-gradient(45deg, var(--bg-color-start), var(--bg-color-end)); - color: var(--text-color); + background: linear-gradient(120deg, #89f7fe 0%, #66a6ff 100%); + color: #fff; + height: 100vh; display: flex; - justify-content: center; align-items: center; - min-height: 100vh; - text-align: center; - overflow: hidden; - position: relative; + justify-content: center; +} + +h1, h2, h3, h4, h5, h6 { + font-family: 'Poppins', sans-serif; + font-weight: 600; +} + +.glass-container { + background: rgba(255, 255, 255, 0.1); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border-radius: 20px; + border: 1px solid rgba(255, 255, 255, 0.18); + box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); + padding: 40px 50px; + max-width: 800px; + width: 100%; +} + +.display-4 { + color: #fff; + font-weight: 700; +} + +.lead { + color: rgba(255, 255, 255, 0.8); + font-size: 1.2rem; +} + +form { + margin-top: 30px; +} + +form label { + font-weight: 500; + margin-bottom: 8px; + display: block; + color: rgba(255, 255, 255, 0.9); +} + +form input[type="text"], +form input[type="email"], +form textarea { + width: 100%; + padding: 12px 15px; + border-radius: 10px; + border: 1px solid rgba(255, 255, 255, 0.2); + background: rgba(255, 255, 255, 0.08); + color: #fff; + font-family: 'Inter', sans-serif; + font-size: 1rem; + margin-bottom: 15px; +} + +form input[type="text"]::placeholder, +form input[type="email"]::placeholder, +form textarea::placeholder { + color: rgba(255, 255, 255, 0.5); +} + +.btn-primary { + background-color: #4299e1; + border-color: #4299e1; + padding: 12px 30px; + font-weight: 600; + border-radius: 10px; + transition: all 0.3s ease; +} + +.btn-primary:hover { + background-color: #fff; + color: #4299e1; + border-color: #fff; + transform: translateY(-2px); + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); }