feat: admin panel enrichment

This commit is contained in:
mohamad
2026-07-19 14:31:28 +03:30
parent d8d7819eca
commit 1042fba121
77 changed files with 4616 additions and 2 deletions
+2
View File
@@ -16,6 +16,8 @@ RESERVED_PAGE_SLUGS = frozenset({
"faq",
"home",
"products",
"projects",
"accounts",
"static",
"media",
})
+76
View File
@@ -1,3 +1,5 @@
from datetime import date
from django.test import TestCase
from django.urls import reverse
@@ -41,6 +43,80 @@ class HomeViewTest(TestCase):
self.assertIn("the Way in Development", content)
self.assertIn('data-project-filter="all"', content)
def test_home_renders_published_project_briefs(self):
from django.contrib.auth.models import User
from apps.accounts.models import ClientProfile
from apps.pages.models import HomepageSection
from apps.projects.models import ProjectBrief
user = User.objects.create_user(username="client", email="c@example.com", password="x")
ClientProfile.objects.create(user=user, timezone="UTC")
HomepageSection.objects.create(
section_type=HomepageSection.TYPE_PROJECTS,
title="Showcase",
order=1,
is_active=True,
)
ProjectBrief.objects.create(
client=user,
title="Private title",
category=ProjectBrief.CATEGORY_WEB,
description="Full description for the project.",
budget_range=ProjectBrief.BUDGET_5K_15K,
show_on_website=True,
public_title="Public showcase title",
public_summary="A curated summary for the website.",
public_project_status="new",
public_tags="Django, Portal",
show_category_on_website=False,
)
response = self.client.get(reverse("pages:home"))
self.assertContains(response, "Public showcase title")
self.assertContains(response, "A curated summary for the website.")
self.assertContains(response, "Django")
self.assertNotContains(response, "Private title")
def test_home_respects_per_field_website_visibility(self):
from django.contrib.auth.models import User
from apps.accounts.models import ClientProfile
from apps.pages.models import HomepageSection
from apps.projects.models import ProjectBrief
user = User.objects.create_user(username="c2", email="c2@example.com", password="x")
ClientProfile.objects.create(user=user, timezone="UTC")
HomepageSection.objects.create(
section_type=HomepageSection.TYPE_PROJECTS,
title="Showcase",
order=1,
is_active=True,
)
ProjectBrief.objects.create(
client=user,
title="Visible project",
category=ProjectBrief.CATEGORY_DATA,
description="Secret internal description.",
budget_range=ProjectBrief.BUDGET_15K_50K,
desired_deadline=date(2026, 12, 1),
reference_links="https://example.com/spec",
show_on_website=True,
public_summary="Public summary.",
show_budget_on_website=True,
show_deadline_on_website=True,
show_references_on_website=True,
show_description_on_website=False,
show_category_on_website=False,
)
response = self.client.get(reverse("pages:home"))
content = response.content.decode()
self.assertIn("$15,000", content)
self.assertIn("Dec 1, 2026", content)
self.assertIn("https://example.com/spec", content)
self.assertNotIn("Secret internal description.", content)
class AboutViewTest(TestCase):
def test_about_returns_200(self):
+5
View File
@@ -7,6 +7,7 @@ from django.views import View
from django.views.generic import DetailView, ListView, TemplateView
from apps.products.models import MainProduct, SubProduct
from apps.projects.models import ProjectBrief
from .forms import ContactForm
from .models import (
@@ -50,6 +51,10 @@ class HomeView(TemplateView):
.order_by("homepage_order", "order")
)
ctx["homepage_products_catalog"] = _homepage_products_catalog_queryset()
ctx["website_project_briefs"] = (
ProjectBrief.objects.filter(show_on_website=True)
.order_by("-submitted_at")
)
return ctx