120 lines
4.9 KiB
Python
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}" |