Tenhal/landing_page/models.py
2025-12-29 04:50:49 +03:00

120 lines
4.9 KiB
Python

from django.db import models
class LandingPageSettings(models.Model):
logo = models.ImageField(upload_to='logos/')
company_address_en = models.TextField()
company_address_ar = models.TextField()
company_email = models.JSONField(help_text="Save as a list of emails as JSON i.e. [\"<email1>\", \"<email2>\"]",default=list)
company_phone = models.JSONField(help_text="Save as a list of phone numbers as JSON i.e. [\"<phone1>\", \"<phone2>\"]",default=list)
facebook_url = models.URLField(blank=True, null=True)
twitter_url = models.URLField(blank=True, null=True)
linkedin_url = models.URLField(blank=True, null=True)
instagram_url = models.URLField(blank=True, null=True)
hero_image = models.ImageField(upload_to='hero_images/')
def __str__(self):
return "Landing Page Settings"
class Meta:
verbose_name_plural = "Landing Page Settings"
class Partners(models.Model):
name_en = models.CharField(max_length=100, blank=True, null=True)
name_ar = models.CharField(max_length=100, blank=True, null=True)
logo = models.ImageField(upload_to='partners/', blank=True, null=True)
order = models.IntegerField(default=0)
class Meta:
ordering = ['order']
verbose_name_plural = "Partners"
def __str__(self):
return self.name_en or "Partner"
class Expertise(models.Model):
title_en = models.CharField(max_length=100, blank=True, null=True)
title_ar = models.CharField(max_length=100, blank=True, null=True)
description_en = models.TextField(blank=True, null=True)
description_ar = models.TextField(blank=True, null=True)
icon_svg = models.TextField(help_text="Paste SVG code here")
order = models.IntegerField(default=0)
class Meta:
ordering = ['order']
verbose_name_plural = "Expertise Areas"
def __str__(self):
return self.title_en or "Expertise"
class Product(models.Model):
name_en = models.CharField(max_length=100, blank=True, null=True)
name_ar = models.CharField(max_length=100, blank=True, null=True)
description_en = models.TextField(blank=True, null=True)
description_ar = models.TextField(blank=True, null=True)
features_en = models.JSONField(help_text="English features list as JSON array i.e. [\"Feature 1\", \"Feature 2\"]",default=list)
features_ar = models.JSONField(help_text="Arabic features list as JSON array i.e. [\"الميزة 1\", \"الميزة 2\"]",default=list)
order = models.IntegerField(default=0)
image = models.ImageField(upload_to='products/', blank=True, null=True)
link = models.URLField(blank=True, null=True)
class Meta:
ordering = ['order']
verbose_name_plural = "Products"
def __str__(self):
return self.name_en or "Product"
class Inquiry(models.Model):
name = models.CharField(max_length=100)
email = models.EmailField()
message = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"{self.email} - {self.message[:20]}"
class Meta:
ordering = ['-created_at']
verbose_name_plural = "Inquiries"
class Testimonial(models.Model):
client_name_en = models.CharField(max_length=100, blank=True, null=True)
client_name_ar = models.CharField(max_length=100, blank=True, null=True)
feedback_en = models.TextField(null=True, blank=True)
feedback_ar = models.TextField(null=True, blank=True)
client_photo = models.ImageField(upload_to='testimonials/', blank=True, null=True)
order = models.IntegerField(default=0)
class Meta:
ordering = ['order']
verbose_name_plural = "Testimonials"
def __str__(self):
return self.client_name_en or "Client"
class TeamMember(models.Model):
name_en = models.CharField(max_length=100, blank=True, null=True)
name_ar = models.CharField(max_length=100, blank=True, null=True)
role_en = models.CharField(max_length=100, blank=True, null=True)
role_ar = models.CharField(max_length=100, blank=True, null=True)
photo = models.ImageField(upload_to='team_members/')
bio_en = models.TextField(null=True, blank=True)
bio_ar = models.TextField(null=True, blank=True)
order = models.IntegerField(default=0)
class Meta:
ordering = ['order']
verbose_name_plural = "Team Members"
def __str__(self):
return self.name_en or "Team Member"
# models.py
class VisitorLog(models.Model):
ip_address = models.GenericIPAddressField()
country = models.CharField(max_length=100, null=True, blank=True)
region = models.CharField(max_length=100, null=True, blank=True) # State/Province
city = models.CharField(max_length=100, null=True, blank=True)
timestamp = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-timestamp']
verbose_name_plural = "Visitor Logs"
def __str__(self):
return f"{self.ip_address} from {self.city}, {self.country}"