Dear {{ applicant_name }},
+Thank you for applying for the {{ job_title }} position at GNX!
+We have received your application and our team will review it carefully. We appreciate your interest in joining our team.
- -Application Details
--
-
- Position: {{ job_title }} -
- Location: {{ job_location }} -
- Applied on: {{ application_date|date:"F d, Y" }} +
- + Position: + {{ job_title }} + +
- + Location: + {{ job_location }} + +
- + Applied on: + {{ application_date|date:"F d, Y" }} +
-
+
What happens next?
-Our hiring team will review your application and resume. If your qualifications match our requirements, we will contact you within 1-2 weeks to discuss the next steps.
+What happens next?
+Our hiring team will review your application and resume. If your qualifications match our requirements, we will contact you within 1-2 weeks to discuss the next steps.
+If you have any questions, please don't hesitate to reach out to us.
+If you have any questions, please don't hesitate to reach out to us.
- -Best regards,
The GNX Team
+ The GNX Team +
This is an automated message. Please do not reply to this email.
++ For inquiries, please contact our HR department. +
🎯 New Job Application
-{{ job_title }}
+👤 Applicant Information
💼 Professional Information
{% if current_position %}📋 Application Details
Please log in to the admin panel to review the full application and update its status.
+Resume is attached to this email.
-Please log in to the admin panel to review the full application and update its status.
++ Please review the application in the admin panel. +
Project Overview
-A comprehensive 3D rendering project that showcases cutting-edge visualization techniques and photorealistic rendering capabilities. This project demonstrates our expertise in creating stunning visual content for modern digital platforms.
+Executive Summary
+GNX Soft developed a comprehensive telemedicine platform enabling healthcare providers to deliver remote consultations, manage patient records, and facilitate virtual care delivery. Built with Java backend and React frontend, the platform serves thousands of healthcare professionals and patients nationwide, ensuring HIPAA compliance and secure healthcare data management.
The Challenge
-Our client needed high-quality 3D visualizations that could accurately represent their products in a digital environment. The challenge was to create renders that were not only photorealistic but also optimized for various platforms and use cases.
+The client needed a scalable telemedicine solution that could handle high volumes of video consultations, integrate with existing Electronic Health Records (EHR) systems, and maintain strict HIPAA compliance. The platform required real-time video capabilities, secure messaging, prescription management, and comprehensive patient record management.
-Our Approach
-We employed advanced 3D modeling techniques combined with physically-based rendering (PBR) to achieve exceptional results. Our team utilized industry-standard tools and custom workflows to deliver renders that exceeded client expectations.
- -Key Features
+Our Solution
+We architected a robust telemedicine platform with the following key features:
-
-
- Photorealistic lighting and materials -
- High-resolution textures and details -
- Multiple viewing angles and perspectives -
- Optimized assets for web and print -
- Interactive 3D viewer integration +
- Real-time video consultation with HD quality and low latency +
- Secure patient portal with appointment scheduling and medical history access +
- HIPAA-compliant messaging and file sharing +
- Electronic prescription management and pharmacy integration +
- Integration with major EHR systems (Epic, Cerner, Allscripts) +
- Mobile-responsive design for patients and providers +
- Advanced analytics and reporting dashboard +
- Multi-tenant architecture supporting multiple healthcare organizations
Results
-The project resulted in a collection of stunning 3D renders that significantly enhanced the client's digital presence. The visualizations led to increased customer engagement and improved conversion rates across their digital channels.
+Key Results
+-
+
- 99.9% platform uptime ensuring reliable healthcare delivery +
- Support for 50,000+ monthly consultations +
- HIPAA and HITECH compliance certification +
- 60% reduction in no-show rates through automated reminders +
- Average consultation setup time under 30 seconds +
- 95% patient satisfaction score +
- Seamless integration with 15+ EHR systems +
Technology Stack
+Java (Spring Boot), React, WebRTC, PostgreSQL, Redis, RabbitMQ, Docker, Kubernetes, AWS, HIPAA-compliant infrastructure
''', - 'category': categories['3d-render'], - 'client': None, - 'thumbnail_url': '/images/case/two.png', - 'poster_image_url': '/images/case/poster.png', - 'project_image_url': '/images/case/project.png', - 'project_overview': 'Lorem ipsum dolor sit amet consectetur. Vestibulum malesuada amet sagittis urna. Mattis eget ultricies est morbi velit ultrices viverra elit facilisi.', - 'site_map_content': 'Lorem ipsum dolor sit amet consectetur. Vestibulum malesuada amet sagittis urna. Mattis eget ultricies est morbi velit ultrices viverra elit facilisi.', + 'category': categories['enterprise-software'], + 'client': clients['undisclosed-client'], + 'thumbnail_url': 'https://images.unsplash.com/photo-1576091160550-2173dba999ef?w=800&h=600&fit=crop', + 'featured_image_url': 'https://images.unsplash.com/photo-1576091160550-2173dba999ef?w=1920&h=1080&fit=crop', + 'poster_image_url': 'https://images.unsplash.com/photo-1559757148-5c350d0d3c56?w=1920&h=1080&fit=crop', + 'project_image_url': 'https://images.unsplash.com/photo-1559757148-5c350d0d3c56?w=1200&h=800&fit=crop', + 'project_overview': ''' +GNX Soft developed a comprehensive telemedicine platform that revolutionizes remote healthcare delivery. Built with Java Spring Boot backend and React frontend, the solution enables healthcare providers to conduct secure video consultations, manage patient records, and deliver virtual care services while maintaining strict HIPAA compliance.
+The platform features real-time video capabilities, secure messaging, prescription management, and seamless integration with major EHR systems. With support for thousands of concurrent consultations and multi-tenant architecture, the solution serves multiple healthcare organizations while ensuring data security and regulatory compliance.
+ ''', + 'site_map_content': ''' +Platform Architecture
+The telemedicine platform follows a modern microservices architecture:
+-
+
- Frontend Layer: React-based responsive web application with real-time video capabilities +
- API Gateway: Java Spring Boot RESTful APIs with authentication and authorization +
- Video Service: WebRTC-based real-time video consultation engine +
- Patient Management: Comprehensive patient record and appointment management system +
- EHR Integration: Secure integration layer for connecting with external EHR systems +
- Messaging Service: HIPAA-compliant secure messaging and file sharing +
- Prescription Management: Electronic prescription generation and pharmacy integration +
- Analytics Dashboard: Real-time analytics and reporting for healthcare administrators +
About the Project
-This artificial intelligence project demonstrates the power of machine learning and AI in solving complex business problems. We developed custom AI models that automate decision-making processes and provide predictive insights.
+Executive Summary
+GNX Soft developed a comprehensive hotel booking and management platform that enables hotels to manage reservations, inventory, pricing, and guest services. Built with FastAPI backend and Angular frontend, the platform processes millions of bookings annually across thousands of properties worldwide, providing real-time availability, dynamic pricing, and seamless payment processing.
-Technology Stack
-The project utilizes state-of-the-art AI technologies including neural networks, natural language processing, and computer vision. Our solution is built on a scalable cloud infrastructure that can handle large volumes of data processing.
+The Challenge
+The client required a high-performance booking platform capable of handling peak traffic during seasonal periods, managing complex inventory across multiple properties, implementing dynamic pricing strategies, and integrating with various payment gateways and third-party booking channels. The solution needed to support real-time availability updates, prevent overbooking, and provide comprehensive reporting and analytics.
-Implementation
-We worked closely with the client to understand their specific needs and challenges. The implementation phase involved data collection, model training, validation, and deployment to production environments.
- -Impact
-The AI solution has transformed the client's operations, reducing manual work by 60% and improving accuracy in decision-making processes. The system continues to learn and improve over time, providing increasing value to the organization.
- ''', - 'category': categories['ai'], - 'client': clients['tarapio'], - 'thumbnail_url': '/images/case/one.png', - 'poster_image_url': '/images/case/poster.png', - 'featured': True, - 'display_order': 2, - 'days_ago': 15 - }, - { - 'title': 'User experience (UX) design is the process design teams', - 'subtitle': 'Modern UX Design System', - 'description': ''' -Project Summary
-A comprehensive UX design project focused on creating intuitive and engaging user experiences. This case study showcases our approach to user-centered design and our ability to create interfaces that delight users.
- -Research and Discovery
-We conducted extensive user research including interviews, surveys, and usability testing to understand user needs and pain points. This research formed the foundation of our design decisions.
- -Design Process
-Our design process involved creating user personas, journey maps, wireframes, and high-fidelity prototypes. Each step was validated with real users to ensure we were on the right track.
- -Deliverables
+Our Solution
+We built a scalable hotel booking platform with the following capabilities:
-
-
- Comprehensive design system -
- Interactive prototypes -
- User flow diagrams -
- Accessibility guidelines -
- Component library +
- Real-time room availability and inventory management +
- Dynamic pricing engine with rule-based and AI-driven pricing strategies +
- Multi-property management with centralized administration +
- Channel manager integration (Booking.com, Expedia, Airbnb) +
- Secure payment processing with multiple gateway support +
- Guest management system with loyalty program integration +
- Advanced search and filtering with geolocation support +
- Mobile-responsive booking interface and admin dashboard +
- Comprehensive reporting and revenue analytics +
- API-first architecture for third-party integrations
Key Results
+-
+
- 99.95% platform uptime during peak booking seasons +
- Support for 5,000+ concurrent bookings per minute +
- 30% increase in direct bookings through improved user experience +
- 25% revenue growth through dynamic pricing optimization +
- Real-time synchronization across all booking channels +
- Zero overbooking incidents through intelligent inventory management +
- Average booking completion time under 2 minutes +
- Integration with 20+ third-party booking channels +
Technology Stack
+FastAPI (Python), Angular, PostgreSQL, Redis, Celery, RabbitMQ, Elasticsearch, Docker, Kubernetes, AWS, Stripe, PayPal
''', - 'category': categories['ui-ux'], - 'client': clients['melenpo'], - 'thumbnail_url': '/images/case/three.png', - 'poster_image_url': '/images/case/poster.png', - 'featured': False, + 'category': categories['enterprise-software'], + 'client': clients['undisclosed-client'], + 'thumbnail_url': 'https://images.unsplash.com/photo-1566073771259-6a8506099945?w=800&h=600&fit=crop', + 'featured_image_url': 'https://images.unsplash.com/photo-1566073771259-6a8506099945?w=1920&h=1080&fit=crop', + 'poster_image_url': 'https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1920&h=1080&fit=crop', + 'project_image_url': 'https://images.unsplash.com/photo-1564501049412-61c2a3083791?w=1200&h=800&fit=crop', + 'project_overview': ''' +GNX Soft developed a comprehensive hotel booking and management platform that revolutionizes hospitality operations. Built with FastAPI backend and Angular frontend, the solution enables hotels to manage reservations, inventory, pricing, and guest services while processing millions of bookings annually across thousands of properties worldwide.
+The platform features real-time availability management, dynamic pricing strategies, seamless channel manager integration, and comprehensive reporting capabilities. With support for high concurrent traffic and intelligent inventory management, the solution ensures optimal revenue generation while preventing overbooking and maintaining exceptional user experience.
+ ''', + 'site_map_content': ''' +Platform Architecture
+The hotel booking platform follows a modern microservices architecture:
+-
+
- Frontend Layer: Angular-based responsive web application with progressive web app capabilities +
- API Layer: FastAPI RESTful APIs with async processing and high performance +
- Booking Engine: Real-time availability checking and reservation management +
- Pricing Engine: Dynamic pricing algorithms with rule-based and AI-driven strategies +
- Channel Manager: Integration layer for synchronizing with third-party booking channels +
- Payment Gateway: Secure payment processing with multiple provider support +
- Inventory Management: Real-time room inventory tracking and allocation +
- Analytics Dashboard: Comprehensive reporting and revenue management tools +
Executive Summary
+GNX Soft developed an enterprise Point of Sale (POS) system integrated with national revenue authorities and multiple external systems. The solution handles millions of transactions daily across thousands of retail locations, ensuring compliance with tax regulations and seamless integration with payment processors, inventory systems, and government reporting platforms.
+ +The Challenge
+The client required a robust POS system that could integrate with national revenue authority systems for real-time tax reporting, connect with multiple payment gateways, synchronize with inventory management systems, and provide comprehensive reporting capabilities. The solution needed to handle high transaction volumes, ensure data security, maintain compliance with tax regulations, and support offline operations during network outages.
+ +Our Solution
+We built a comprehensive enterprise POS platform featuring:
+-
+
- Real-time transaction processing with offline capability +
- National revenue authority integration for automatic tax reporting +
- Multi-payment gateway support (credit cards, mobile payments, cash) +
- Inventory management with real-time stock synchronization +
- Customer relationship management (CRM) integration +
- Loyalty program and rewards management +
- Comprehensive sales reporting and analytics +
- Multi-store and multi-location support +
- Employee management and shift tracking +
- Receipt printing and digital receipt delivery +
- Barcode scanning and product lookup +
- Secure payment processing with PCI-DSS compliance +
Key Results
+-
+
- 99.9% system uptime with offline transaction support +
- Processing of 10+ million transactions monthly +
- 100% compliance with national tax reporting requirements +
- Real-time integration with national revenue authority systems +
- 50% reduction in manual tax reporting time +
- Seamless integration with 15+ external systems +
- 30% improvement in transaction processing speed +
- Zero data loss during network outages +
- Comprehensive audit trail for all transactions +
Technology Stack
+Java (Spring Boot), React, PostgreSQL, Redis, RabbitMQ, REST APIs, SOAP, Docker, Kubernetes, AWS, Payment Gateway APIs, National Revenue Authority APIs
+ ''', + 'category': categories['system-integration'], + 'client': clients['undisclosed-client'], + 'thumbnail_url': 'https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?w=800&h=600&fit=crop', + 'featured_image_url': 'https://images.unsplash.com/photo-1556742049-0cfed4f6a45d?w=1920&h=1080&fit=crop', + 'poster_image_url': 'https://images.unsplash.com/photo-1556740758-90de374c12ad?w=1920&h=1080&fit=crop', + 'project_image_url': 'https://images.unsplash.com/photo-1556740758-90de374c12ad?w=1200&h=800&fit=crop', + 'project_overview': ''' +GNX Soft developed an enterprise Point of Sale (POS) system that revolutionizes retail operations through seamless integration with national revenue authorities and multiple external systems. The solution processes millions of transactions daily across thousands of retail locations, ensuring real-time tax compliance, secure payment processing, and comprehensive business intelligence.
+Our platform features robust offline capabilities, ensuring business continuity during network outages. The system integrates with payment processors, inventory management systems, customer relationship management platforms, and government reporting systems, providing a unified solution for modern retail operations.
+ ''', + 'site_map_content': ''' +System Architecture
+The enterprise POS system follows a distributed architecture with comprehensive integration capabilities:
+-
+
- POS Terminal: React-based touchscreen interface for transaction processing +
- Backend Services: Java Spring Boot microservices for business logic and data processing +
- Payment Gateway Integration: Secure integration with multiple payment processors +
- National Revenue Authority: Real-time tax reporting and compliance integration +
- Inventory System: Real-time stock synchronization and product management +
- CRM Integration: Customer data synchronization and loyalty program management +
- Reporting Engine: Comprehensive analytics and business intelligence +
- Offline Mode: Local transaction storage with automatic synchronization +
About This Project
-A stunning photography project that captures the essence of modern visual storytelling. This portfolio demonstrates our expertise in various photography styles and techniques.
+Executive Summary
+GNX Soft executed a comprehensive cloud infrastructure migration for a major enterprise, migrating 1000+ applications and services from legacy on-premises infrastructure to a modern cloud-native architecture. The project involved zero-downtime migration strategies, containerization, and complete infrastructure modernization across multiple business units.
-Photography Style
-The project incorporates multiple photography styles including product photography, portrait photography, and architectural photography. Each image is carefully composed and post-processed to achieve the desired aesthetic.
+The Challenge
+The client operated a complex legacy infrastructure with thousands of applications running on outdated hardware and software. They needed to modernize their entire IT landscape while maintaining business continuity, ensuring security compliance, and achieving significant cost reductions. The migration required careful planning to avoid service disruptions and ensure seamless transition.
-Technical Excellence
-Using professional-grade equipment and advanced lighting techniques, we created images that stand out in quality and artistic vision.
+Our Solution
+We implemented a comprehensive cloud migration strategy including:
+-
+
- Complete infrastructure assessment and dependency mapping +
- Application containerization using Docker and Kubernetes +
- Microservices architecture transformation +
- Zero-downtime migration strategies with blue-green deployments +
- Automated CI/CD pipelines for continuous deployment +
- Cloud-native monitoring and observability +
- Security hardening and compliance validation +
- Disaster recovery and backup solutions +
- Cost optimization and resource management +
- Comprehensive staff training and knowledge transfer +
Key Results
+-
+
- 100% successful migration of 1000+ applications +
- Zero business disruption during migration +
- 60% reduction in infrastructure costs +
- 99.99% uptime maintained throughout migration +
- 70% improvement in application deployment speed +
- Complete security and compliance certification +
- Automated scaling and resource optimization +
- 24/7 monitoring and alerting capabilities +
Technology Stack
+Docker, Kubernetes, AWS, Azure, Terraform, Ansible, Jenkins, GitLab CI/CD, Prometheus, Grafana, ELK Stack, CloudWatch
''', - 'category': categories['photography'], - 'client': None, - 'thumbnail_url': '/images/case/four.png', - 'poster_image_url': '/images/case/poster.png', + 'category': categories['cloud-migration'], + 'client': clients['undisclosed-client'], + 'thumbnail_url': 'https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=800&h=600&fit=crop', + 'featured_image_url': 'https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=1920&h=1080&fit=crop', + 'poster_image_url': 'https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=1920&h=1080&fit=crop', + 'project_image_url': 'https://images.unsplash.com/photo-1558494949-ef010cbdcc31?w=1200&h=800&fit=crop', + 'project_overview': ''' +GNX Soft executed a comprehensive cloud infrastructure migration that transformed the entire IT landscape of a major enterprise. The project successfully migrated 1000+ applications and services from legacy on-premises infrastructure to a modern cloud-native architecture, achieving zero downtime and significant cost savings.
+Our team implemented containerization strategies, microservices architecture, and automated deployment pipelines to ensure scalability, reliability, and operational efficiency. The migration included comprehensive security hardening, compliance validation, and disaster recovery solutions, ensuring business continuity and regulatory compliance.
+ ''', + 'site_map_content': ''' +Migration Architecture
+The cloud migration followed a structured, phased approach:
+-
+
- Assessment Phase: Comprehensive infrastructure audit, application inventory, and dependency mapping +
- Planning Phase: Migration strategy development, risk assessment, and timeline planning +
- Pilot Phase: Small-scale migration of non-critical applications to validate approach +
- Migration Phase: Systematic migration of all applications using blue-green deployment strategies +
- Optimization Phase: Performance tuning, cost optimization, and continuous improvement +
- Operations Phase: 24/7 monitoring, automated scaling, and ongoing support +
Healthcare Design Challenge
-Designing for healthcare requires special attention to accessibility, security, and user trust. This medical app design project showcases our expertise in creating intuitive interfaces for complex healthcare workflows.
- -Compliance and Security
-The design adheres to HIPAA regulations and industry best practices for healthcare data security while maintaining an intuitive user experience.
- -User Research
-We conducted extensive research with healthcare professionals and patients to ensure the design meets the needs of all stakeholders.
- ''', - 'category': categories['ui-ux'], - 'client': clients['polax'], - 'thumbnail_url': '/images/case/five.png', - 'poster_image_url': '/images/case/poster.png', - 'featured': False, - 'display_order': 5, 'days_ago': 30 }, { - 'title': 'Make icon set for the educational project', - 'subtitle': 'Custom Educational Icon Set', + 'title': 'Enterprise Financial Management System', + 'slug': 'enterprise-financial-management-system', + 'subtitle': 'Comprehensive Financial Operations Platform', + 'excerpt': 'GNX Soft developed an enterprise financial management system that handles complex accounting, financial reporting, budgeting, and compliance requirements for large organizations. The platform integrates with banking systems, payment processors, and regulatory reporting platforms, ensuring real-time financial visibility and compliance.', 'description': ''' -Icon Design Project
-A comprehensive icon set designed specifically for educational platforms. This project demonstrates our ability to create cohesive, scalable, and meaningful iconography.
+Executive Summary
+GNX Soft developed an enterprise financial management system that handles complex accounting, financial reporting, budgeting, and compliance requirements for large organizations. The platform integrates with banking systems, payment processors, and regulatory reporting platforms, ensuring real-time financial visibility and compliance with international accounting standards.
-Design Principles
-The icons follow consistent design principles including size, style, and metaphor. Each icon is designed to be instantly recognizable and appropriate for educational contexts.
+The Challenge
+The client required a comprehensive financial management solution that could handle multi-currency transactions, complex accounting rules, regulatory compliance, and real-time financial reporting. The system needed to integrate with multiple banking systems, support various payment methods, and provide detailed audit trails for compliance purposes.
-Deliverables
-The final deliverable includes icons in multiple formats (SVG, PNG) and sizes, along with comprehensive usage guidelines.
+Our Solution
+We built a robust financial management platform featuring:
+-
+
- General ledger and chart of accounts management +
- Accounts payable and receivable processing +
- Multi-currency transaction handling +
- Financial reporting and analytics dashboards +
- Budget planning and variance analysis +
- Bank reconciliation and cash management +
- Tax calculation and compliance reporting +
- Integration with banking systems and payment gateways +
- Audit trail and compliance tracking +
- Role-based access control and security +
- Automated workflow approvals +
- Real-time financial dashboards +
Key Results
+-
+
- 99.9% system uptime ensuring continuous financial operations +
- 80% reduction in manual financial reporting time +
- 100% compliance with international accounting standards +
- Real-time financial visibility across all business units +
- Automated reconciliation reducing errors by 95% +
- Seamless integration with 20+ banking and payment systems +
- Comprehensive audit trail for regulatory compliance +
- Multi-currency support for global operations +
Technology Stack
+Java (Spring Boot), React, PostgreSQL, Redis, RabbitMQ, REST APIs, Docker, Kubernetes, AWS, Banking APIs, Payment Gateway APIs
''', - 'category': categories['icon-set'], - 'client': None, - 'thumbnail_url': '/images/case/six.png', - 'poster_image_url': '/images/case/poster.png', - 'featured': False, - 'display_order': 6, - 'days_ago': 35 - }, - { - 'title': 'AI-driven user experience design process', - 'subtitle': 'AI-Driven User Experience', - 'description': ''' -AI-Enhanced UX Design
-This project combines artificial intelligence with user experience design to create adaptive interfaces that learn from user behavior and preferences.
- -Innovation
-The design incorporates machine learning algorithms that personalize the user experience based on individual usage patterns and preferences.
+ 'category': categories['enterprise-software'], + 'client': clients['undisclosed-client'], + 'thumbnail_url': 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=800&h=600&fit=crop', + 'featured_image_url': 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1920&h=1080&fit=crop', + 'poster_image_url': 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1920&h=1080&fit=crop', + 'project_image_url': 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1200&h=800&fit=crop', + 'project_overview': ''' +GNX Soft developed an enterprise financial management system that revolutionizes financial operations for large organizations. The platform handles complex accounting, financial reporting, budgeting, and compliance requirements while integrating seamlessly with banking systems, payment processors, and regulatory reporting platforms.
+Our solution provides real-time financial visibility, automated reconciliation, and comprehensive compliance tracking. The system supports multi-currency transactions, complex accounting rules, and provides detailed audit trails, ensuring regulatory compliance and operational efficiency.
''', - 'category': categories['ai'], - 'client': clients['aina'], - 'thumbnail_url': '/images/case/seven.png', - 'poster_image_url': '/images/case/poster.png', - 'featured': False, - 'display_order': 7, - 'days_ago': 40 - }, - { - 'title': 'UX site rode map app product design system', - 'subtitle': 'Product Roadmap Visualization', - 'description': ''' -Product Roadmap Design
-A comprehensive product roadmap visualization system that helps teams plan, communicate, and execute their product strategy effectively.
- -Features
-The roadmap system includes timeline views, milestone tracking, dependency mapping, and collaboration tools for distributed teams.
- -Implementation
-Built with modern web technologies and optimized for performance and usability across all devices and platforms.
+ 'site_map_content': ''' +System Architecture
+The financial management system follows a modular architecture:
+-
+
- Accounting Module: General ledger, chart of accounts, and transaction processing +
- Payables & Receivables: Invoice management and payment processing +
- Financial Reporting: Real-time reporting and analytics dashboards +
- Budget Management: Budget planning, tracking, and variance analysis +
- Banking Integration: Real-time bank reconciliation and cash management +
- Compliance Engine: Tax calculation and regulatory reporting +
- Audit System: Comprehensive audit trail and compliance tracking +
Executive Summary
+GNX Soft developed a comprehensive Customer Relationship Management (CRM) platform that unifies customer data, sales processes, marketing automation, and customer service across all touchpoints. The solution provides 360-degree customer view, predictive analytics, and automated workflows to enhance customer engagement and drive revenue growth.
+ +The Challenge
+The client needed a unified CRM solution that could consolidate customer data from multiple sources, automate sales and marketing processes, provide comprehensive analytics, and integrate with various business systems. The platform needed to support large sales teams, handle complex customer journeys, and provide actionable insights for business growth.
+ +Our Solution
+We built an enterprise CRM platform with comprehensive capabilities:
+-
+
- 360-degree customer profile with unified data view +
- Sales pipeline management and opportunity tracking +
- Marketing automation and campaign management +
- Customer service ticketing and support management +
- Lead scoring and qualification automation +
- Email and communication tracking +
- Document management and collaboration +
- Predictive analytics and AI-powered insights +
- Workflow automation and process management +
- Integration with email, calendar, and communication tools +
- Mobile applications for field sales teams +
- Comprehensive reporting and analytics dashboards +
Key Results
+-
+
- 40% increase in sales productivity +
- 35% improvement in lead conversion rates +
- 50% reduction in customer response time +
- Unified view of all customer interactions +
- Automated workflows reducing manual tasks by 60% +
- Real-time analytics enabling data-driven decisions +
- Seamless integration with 30+ business systems +
- Mobile access enabling field sales effectiveness +
Technology Stack
+Python (Django), React, PostgreSQL, Redis, Celery, RabbitMQ, Elasticsearch, Docker, Kubernetes, AWS, Machine Learning APIs
+ ''', + 'category': categories['digital-transformation'], + 'client': clients['undisclosed-client'], + 'thumbnail_url': 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=800&h=600&fit=crop', + 'featured_image_url': 'https://images.unsplash.com/photo-1551288049-bebda4e38f71?w=1920&h=1080&fit=crop', + 'poster_image_url': 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1920&h=1080&fit=crop', + 'project_image_url': 'https://images.unsplash.com/photo-1460925895917-afdab827c52f?w=1200&h=800&fit=crop', + 'project_overview': ''' +GNX Soft developed a comprehensive Customer Relationship Management (CRM) platform that transforms how organizations engage with customers. The solution unifies customer data, sales processes, marketing automation, and customer service, providing a 360-degree view of customer interactions and enabling data-driven decision making.
+Our platform features predictive analytics, automated workflows, and seamless integrations with business systems. The solution enhances sales productivity, improves lead conversion, and enables personalized customer experiences through AI-powered insights and automation.
+ ''', + 'site_map_content': ''' +Platform Architecture
+The CRM platform consists of integrated modules:
+-
+
- Customer Data Hub: Unified customer profile with data from all touchpoints +
- Sales Management: Pipeline tracking, opportunity management, and sales forecasting +
- Marketing Automation: Campaign management, lead nurturing, and email marketing +
- Customer Service: Ticketing system, knowledge base, and support management +
- Analytics Engine: Predictive analytics, reporting, and business intelligence +
- Integration Layer: Connectors for email, calendar, communication, and business systems +
- Mobile Platform: Native mobile apps for sales and service teams +
Thank You for Contacting Us!
+We've Received Your Submission
+Your message has been successfully delivered to our team. We'll review your inquiry carefully and get back to you soon.
+Your Submission Details
+-
+
- + Submission ID: + #{{ submission.id }} + +
- + Company: + {{ submission.company }} + + {% if submission.project_type %} +
- + Project Type: + {{ submission.get_project_type_display }} + + {% else %} +
- + Project Type: + Not specified + + {% endif %} + {% if submission.timeline %} +
- + Timeline: + {{ submission.get_timeline_display }} + + {% else %} +
- + Timeline: + Not specified + + {% endif %} +
What Happens Next?
+Our team will contact you within 24 hours to discuss your project requirements and how we can help you achieve your goals. We'll review your submission and prepare a tailored response based on your needs.
+If you have any urgent questions or need immediate assistance, please don't hesitate to contact us directly using the information below.
+📧 Email: support@gnxsoft.com
+🌐 Website: {{ site_url }}
++ Best regards,
The GNX Team +
+ For inquiries, please contact us through our website or email. +
📧 New Contact Form Submission
-GNX Software Solutions
-📧 New Contact Form Submission
+
@@ -286,7 +312,7 @@
Priority:
-
+
{{ submission.get_priority_display }}
@@ -317,14 +343,14 @@
Email:
- {{ submission.email }}
+ {{ submission.email }}
{% if submission.phone %}
Phone:
- {{ submission.phone }}
+ {{ submission.phone }}
{% endif %}
@@ -423,9 +449,14 @@
{% endif %}
-
- 📧 This email was automatically generated from the GNX website contact form.
- ⏰ Please respond to the customer within 24 hours as per our service commitment.
+
+ GNX Software Solutions
+ Contact Form Notification
+
+
+ 📧 This email was automatically generated from the GNX website contact form.
+ ⏰ Please respond to the customer within 24 hours as per our service commitment.
+
GNX Software Solutions
diff --git a/backEnd/db.sqlite3 b/backEnd/db.sqlite3
index 2be9c5af..7fdd4407 100644
Binary files a/backEnd/db.sqlite3 and b/backEnd/db.sqlite3 differ
diff --git a/backEnd/gnx/__pycache__/settings.cpython-312.pyc b/backEnd/gnx/__pycache__/settings.cpython-312.pyc
index 9f804137..431ec15e 100644
Binary files a/backEnd/gnx/__pycache__/settings.cpython-312.pyc and b/backEnd/gnx/__pycache__/settings.cpython-312.pyc differ
diff --git a/backEnd/gnx/__pycache__/urls.cpython-312.pyc b/backEnd/gnx/__pycache__/urls.cpython-312.pyc
index f10e64c0..33139c13 100644
Binary files a/backEnd/gnx/__pycache__/urls.cpython-312.pyc and b/backEnd/gnx/__pycache__/urls.cpython-312.pyc differ
diff --git a/backEnd/gnx/settings.py b/backEnd/gnx/settings.py
index ef385508..4ab3907c 100644
--- a/backEnd/gnx/settings.py
+++ b/backEnd/gnx/settings.py
@@ -47,6 +47,7 @@ INSTALLED_APPS = [
'drf_yasg',
# Local apps
+ 'home',
'contact',
'services',
'about',
diff --git a/backEnd/gnx/urls.py b/backEnd/gnx/urls.py
index 85fd77b8..a8a89193 100644
--- a/backEnd/gnx/urls.py
+++ b/backEnd/gnx/urls.py
@@ -46,6 +46,7 @@ urlpatterns = [
# API Root - All API endpoints under /api/
path('api/', include([
+ path('home/', include('home.urls')),
path('contact/', include('contact.urls')),
path('services/', include('services.urls')),
path('about/', include('about.urls')),
diff --git a/backEnd/home/__init__.py b/backEnd/home/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/backEnd/home/__pycache__/__init__.cpython-312.pyc b/backEnd/home/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 00000000..90cb8794
Binary files /dev/null and b/backEnd/home/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backEnd/home/__pycache__/admin.cpython-312.pyc b/backEnd/home/__pycache__/admin.cpython-312.pyc
new file mode 100644
index 00000000..5ec480e6
Binary files /dev/null and b/backEnd/home/__pycache__/admin.cpython-312.pyc differ
diff --git a/backEnd/home/__pycache__/apps.cpython-312.pyc b/backEnd/home/__pycache__/apps.cpython-312.pyc
new file mode 100644
index 00000000..92da38df
Binary files /dev/null and b/backEnd/home/__pycache__/apps.cpython-312.pyc differ
diff --git a/backEnd/home/__pycache__/models.cpython-312.pyc b/backEnd/home/__pycache__/models.cpython-312.pyc
new file mode 100644
index 00000000..844b9119
Binary files /dev/null and b/backEnd/home/__pycache__/models.cpython-312.pyc differ
diff --git a/backEnd/home/__pycache__/serializers.cpython-312.pyc b/backEnd/home/__pycache__/serializers.cpython-312.pyc
new file mode 100644
index 00000000..a09015ee
Binary files /dev/null and b/backEnd/home/__pycache__/serializers.cpython-312.pyc differ
diff --git a/backEnd/home/__pycache__/urls.cpython-312.pyc b/backEnd/home/__pycache__/urls.cpython-312.pyc
new file mode 100644
index 00000000..f2b5ba73
Binary files /dev/null and b/backEnd/home/__pycache__/urls.cpython-312.pyc differ
diff --git a/backEnd/home/__pycache__/views.cpython-312.pyc b/backEnd/home/__pycache__/views.cpython-312.pyc
new file mode 100644
index 00000000..0d7876bb
Binary files /dev/null and b/backEnd/home/__pycache__/views.cpython-312.pyc differ
diff --git a/backEnd/home/admin.py b/backEnd/home/admin.py
new file mode 100644
index 00000000..c6f3688f
--- /dev/null
+++ b/backEnd/home/admin.py
@@ -0,0 +1,28 @@
+from django.contrib import admin
+from .models import HomeBanner
+
+
+@admin.register(HomeBanner)
+class HomeBannerAdmin(admin.ModelAdmin):
+ list_display = ['heading', 'highlight', 'badge', 'display_order', 'is_active', 'created_at']
+ list_filter = ['is_active', 'created_at']
+ search_fields = ['heading', 'highlight', 'badge', 'description']
+ ordering = ['display_order', 'created_at']
+ readonly_fields = ['created_at', 'updated_at']
+
+ fieldsets = (
+ ('Content', {
+ 'fields': ('icon', 'badge', 'heading', 'highlight', 'subheading', 'description')
+ }),
+ ('Call to Action', {
+ 'fields': ('button_text', 'button_url')
+ }),
+ ('Settings', {
+ 'fields': ('display_order', 'is_active')
+ }),
+ ('Timestamps', {
+ 'fields': ('created_at', 'updated_at'),
+ 'classes': ('collapse',)
+ }),
+ )
+
diff --git a/backEnd/home/apps.py b/backEnd/home/apps.py
new file mode 100644
index 00000000..b6e6617c
--- /dev/null
+++ b/backEnd/home/apps.py
@@ -0,0 +1,8 @@
+from django.apps import AppConfig
+
+
+class HomeConfig(AppConfig):
+ default_auto_field = 'django.db.models.BigAutoField'
+ name = 'home'
+ verbose_name = 'Home'
+
diff --git a/backEnd/home/management/__init__.py b/backEnd/home/management/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/backEnd/home/management/__pycache__/__init__.cpython-312.pyc b/backEnd/home/management/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 00000000..0051449e
Binary files /dev/null and b/backEnd/home/management/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backEnd/home/management/commands/__init__.py b/backEnd/home/management/commands/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/backEnd/home/management/commands/__pycache__/__init__.cpython-312.pyc b/backEnd/home/management/commands/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 00000000..6c534fe8
Binary files /dev/null and b/backEnd/home/management/commands/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backEnd/home/management/commands/__pycache__/populate_home_banners.cpython-312.pyc b/backEnd/home/management/commands/__pycache__/populate_home_banners.cpython-312.pyc
new file mode 100644
index 00000000..f1fc37da
Binary files /dev/null and b/backEnd/home/management/commands/__pycache__/populate_home_banners.cpython-312.pyc differ
diff --git a/backEnd/home/management/commands/populate_home_banners.py b/backEnd/home/management/commands/populate_home_banners.py
new file mode 100644
index 00000000..851852dd
--- /dev/null
+++ b/backEnd/home/management/commands/populate_home_banners.py
@@ -0,0 +1,86 @@
+from django.core.management.base import BaseCommand
+from home.models import HomeBanner
+
+
+class Command(BaseCommand):
+ help = 'Populate database with sample homepage banner data'
+
+ def handle(self, *args, **options):
+ self.stdout.write(self.style.SUCCESS('Starting to populate homepage banner data...'))
+
+ # Clear existing data
+ HomeBanner.objects.all().delete()
+
+ # Create Homepage Banners
+ banners_data = [
+ {
+ 'icon': 'fa-solid fa-rocket',
+ 'badge': 'Enterprise Software Solutions',
+ 'heading': 'Transform Your Business with',
+ 'highlight': 'Enterprise-Grade Technology',
+ 'subheading': 'Scalable, Secure, and Compliant Software Solutions',
+ 'description': 'GNX Soft delivers cutting-edge enterprise software solutions for mission-critical industries. We empower organizations in Defense & Aerospace, Healthcare, Banking, and more with innovative, secure, and scalable platforms that drive digital transformation.',
+ 'button_text': 'Explore Our Solutions',
+ 'button_url': '/services',
+ 'display_order': 1,
+ 'is_active': True
+ },
+ {
+ 'icon': 'fa-solid fa-shield-halved',
+ 'badge': 'Secure & Compliant',
+ 'heading': 'Defense-Grade Security for',
+ 'highlight': 'Mission-Critical Operations',
+ 'subheading': 'HIPAA, GDPR, and Industry Compliance Guaranteed',
+ 'description': 'Our enterprise solutions are built with security-first principles, ensuring HIPAA compliance for healthcare, GDPR adherence for EU operations, and defense-grade security for critical infrastructure. Trust GNX Soft for your most sensitive projects.',
+ 'button_text': 'View Case Studies',
+ 'button_url': '/case-studies',
+ 'display_order': 2,
+ 'is_active': True
+ },
+ {
+ 'icon': 'fa-solid fa-cloud',
+ 'badge': 'Cloud-Native Architecture',
+ 'heading': 'Scalable Infrastructure for',
+ 'highlight': 'Global Enterprise Operations',
+ 'subheading': 'EU-Based Infrastructure with 99.9% Uptime SLA',
+ 'description': 'Deploy on our EU-based cloud infrastructure across Bulgaria, Germany, and Netherlands. Experience enterprise-grade scalability, reliability, and performance with 24/7 monitoring and support. Perfect for organizations requiring data sovereignty and regulatory compliance.',
+ 'button_text': 'Contact Sales',
+ 'button_url': '/contact-us',
+ 'display_order': 3,
+ 'is_active': True
+ },
+ {
+ 'icon': 'fa-solid fa-code',
+ 'badge': 'Full-Stack Development',
+ 'heading': 'Expert Development Teams for',
+ 'highlight': 'Complex Enterprise Projects',
+ 'subheading': 'Java, Python, React, Angular, and Modern Tech Stack',
+ 'description': 'Our expert development teams specialize in enterprise software development using Java Spring Boot, Python FastAPI/Django, React, Angular, and modern cloud technologies. From microservices architecture to legacy system modernization, we deliver excellence.',
+ 'button_text': 'Learn More',
+ 'button_url': '/about',
+ 'display_order': 4,
+ 'is_active': True
+ },
+ {
+ 'icon': 'fa-solid fa-users',
+ 'badge': 'Trusted by Industry Leaders',
+ 'heading': 'Partner with GNX Soft for',
+ 'highlight': 'Digital Transformation Success',
+ 'subheading': '30+ Enterprise Clients | 8 Industry Verticals | 24/7 Support',
+ 'description': 'Join leading organizations across Defense & Aerospace, Healthcare & Medical, Banking & Finance, Telecommunications, Public Sector, E-commerce, Food & Beverages, and Oil & Energy. Experience the GNX Soft difference with dedicated enterprise support and proven methodologies.',
+ 'button_text': 'Get Started',
+ 'button_url': '/contact-us',
+ 'display_order': 5,
+ 'is_active': True
+ }
+ ]
+
+ created_banners = []
+ for banner_data in banners_data:
+ banner = HomeBanner.objects.create(**banner_data)
+ created_banners.append(banner)
+ self.stdout.write(f'Created banner: {banner.heading} - {banner.highlight}')
+
+ self.stdout.write(self.style.SUCCESS('\nSuccessfully populated homepage banner data!'))
+ self.stdout.write(f'Created {HomeBanner.objects.count()} homepage banners')
+
diff --git a/backEnd/home/migrations/0001_initial.py b/backEnd/home/migrations/0001_initial.py
new file mode 100644
index 00000000..e9b99644
--- /dev/null
+++ b/backEnd/home/migrations/0001_initial.py
@@ -0,0 +1,37 @@
+# Generated by Django 5.2.8 on 2025-11-24 04:24
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='HomeBanner',
+ fields=[
+ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('icon', models.CharField(help_text="Badge icon class (e.g., 'fa-solid fa-building')", max_length=50)),
+ ('badge', models.CharField(help_text='Badge text', max_length=100)),
+ ('heading', models.CharField(help_text='Main heading text', max_length=200)),
+ ('highlight', models.CharField(blank=True, help_text='Highlighted text (gradient text)', max_length=100)),
+ ('subheading', models.CharField(blank=True, help_text='Subheading text', max_length=200)),
+ ('description', models.TextField(help_text='Banner description')),
+ ('button_text', models.CharField(default='Learn More', help_text='Primary CTA button text', max_length=100)),
+ ('button_url', models.CharField(default='#', help_text='Primary CTA button URL', max_length=200)),
+ ('display_order', models.PositiveIntegerField(default=0, help_text='Order for displaying banners in carousel')),
+ ('is_active', models.BooleanField(default=True, help_text='Whether this banner is active')),
+ ('created_at', models.DateTimeField(auto_now_add=True)),
+ ('updated_at', models.DateTimeField(auto_now=True)),
+ ],
+ options={
+ 'verbose_name': 'Home Banner',
+ 'verbose_name_plural': 'Home Banners',
+ 'ordering': ['display_order', 'created_at'],
+ },
+ ),
+ ]
diff --git a/backEnd/home/migrations/__init__.py b/backEnd/home/migrations/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/backEnd/home/migrations/__pycache__/0001_initial.cpython-312.pyc b/backEnd/home/migrations/__pycache__/0001_initial.cpython-312.pyc
new file mode 100644
index 00000000..41d0795b
Binary files /dev/null and b/backEnd/home/migrations/__pycache__/0001_initial.cpython-312.pyc differ
diff --git a/backEnd/home/migrations/__pycache__/__init__.cpython-312.pyc b/backEnd/home/migrations/__pycache__/__init__.cpython-312.pyc
new file mode 100644
index 00000000..44799132
Binary files /dev/null and b/backEnd/home/migrations/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backEnd/home/models.py b/backEnd/home/models.py
new file mode 100644
index 00000000..c10eb859
--- /dev/null
+++ b/backEnd/home/models.py
@@ -0,0 +1,27 @@
+from django.db import models
+from django.utils import timezone
+
+
+class HomeBanner(models.Model):
+ """Model for Homepage banner section"""
+ icon = models.CharField(max_length=50, help_text="Badge icon class (e.g., 'fa-solid fa-building')")
+ badge = models.CharField(max_length=100, help_text="Badge text")
+ heading = models.CharField(max_length=200, help_text="Main heading text")
+ highlight = models.CharField(max_length=100, blank=True, help_text="Highlighted text (gradient text)")
+ subheading = models.CharField(max_length=200, blank=True, help_text="Subheading text")
+ description = models.TextField(help_text="Banner description")
+ button_text = models.CharField(max_length=100, default="Learn More", help_text="Primary CTA button text")
+ button_url = models.CharField(max_length=200, default="#", help_text="Primary CTA button URL")
+ display_order = models.PositiveIntegerField(default=0, help_text="Order for displaying banners in carousel")
+ is_active = models.BooleanField(default=True, help_text="Whether this banner is active")
+ created_at = models.DateTimeField(auto_now_add=True)
+ updated_at = models.DateTimeField(auto_now=True)
+
+ class Meta:
+ verbose_name = "Home Banner"
+ verbose_name_plural = "Home Banners"
+ ordering = ['display_order', 'created_at']
+
+ def __str__(self):
+ return f"{self.heading} - {self.badge}"
+
diff --git a/backEnd/home/serializers.py b/backEnd/home/serializers.py
new file mode 100644
index 00000000..59614afc
--- /dev/null
+++ b/backEnd/home/serializers.py
@@ -0,0 +1,13 @@
+from rest_framework import serializers
+from .models import HomeBanner
+
+
+class HomeBannerSerializer(serializers.ModelSerializer):
+ class Meta:
+ model = HomeBanner
+ fields = [
+ 'id', 'icon', 'badge', 'heading', 'highlight', 'subheading',
+ 'description', 'button_text', 'button_url', 'display_order',
+ 'is_active', 'created_at', 'updated_at'
+ ]
+
diff --git a/backEnd/home/urls.py b/backEnd/home/urls.py
new file mode 100644
index 00000000..bde2ef1c
--- /dev/null
+++ b/backEnd/home/urls.py
@@ -0,0 +1,11 @@
+from django.urls import path
+from . import views
+
+app_name = 'home'
+
+urlpatterns = [
+ # Banner endpoints
+ path('banner/', views.HomeBannerListAPIView.as_view(), name='home-banner-list'),
+ path('banner//', views.HomeBannerDetailAPIView.as_view(), name='home-banner-detail'),
+]
+
diff --git a/backEnd/home/views.py b/backEnd/home/views.py
new file mode 100644
index 00000000..a772d067
--- /dev/null
+++ b/backEnd/home/views.py
@@ -0,0 +1,19 @@
+from rest_framework import generics
+from rest_framework.permissions import AllowAny
+from .models import HomeBanner
+from .serializers import HomeBannerSerializer
+
+
+class HomeBannerListAPIView(generics.ListAPIView):
+ """API view to get all active home banners"""
+ queryset = HomeBanner.objects.filter(is_active=True).order_by('display_order', 'created_at')
+ serializer_class = HomeBannerSerializer
+ permission_classes = [AllowAny]
+
+
+class HomeBannerDetailAPIView(generics.RetrieveAPIView):
+ """API view to get a specific home banner"""
+ queryset = HomeBanner.objects.filter(is_active=True)
+ serializer_class = HomeBannerSerializer
+ permission_classes = [AllowAny]
+
diff --git a/backEnd/logs/django.log b/backEnd/logs/django.log
index cfe892ee..0bb9aa02 100644
--- a/backEnd/logs/django.log
+++ b/backEnd/logs/django.log
@@ -28516,3 +28516,4322 @@ INFO 2025-11-24 01:51:55,638 basehttp 11054 129435648915136 "GET /api/services/?
INFO 2025-11-24 01:51:55,646 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
INFO 2025-11-24 01:51:55,701 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
INFO 2025-11-24 01:51:55,761 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 01:52:46,595 basehttp 11054 129435640522432 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
+INFO 2025-11-24 01:52:46,597 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 01:52:46,606 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 01:52:46,624 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 01:52:46,633 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 01:52:46,633 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 01:52:46,644 basehttp 11054 129435640522432 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 01:52:46,651 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 01:52:46,722 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 01:52:46,724 basehttp 11054 129435640522432 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 01:52:46,817 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 01:52:46,829 basehttp 11054 129435407738560 "GET /media/about/journey/about-journey_84Z3xDH.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 01:52:46,840 basehttp 11054 129435640522432 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 01:52:46,841 basehttp 11054 129435632129728 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 01:52:46,857 basehttp 11054 129435390953152 "GET /media/about/process/about-process_iTrcHJc.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 01:52:46,857 basehttp 11054 129435399345856 "GET /media/about/services/about-service_pT4zF3K.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 02:02:10,026 basehttp 11054 129435407738560 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:02:10,026 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:10,027 basehttp 11054 129435399345856 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:02:10,031 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:02:10,043 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:10,117 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:02:10,119 basehttp 11054 129435407738560 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:02:10,130 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:10,130 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:10,135 basehttp 11054 129435399345856 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:02:10,144 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:10,180 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:02:12,855 log 11054 129435640522432 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 02:02:12,856 basehttp 11054 129435640522432 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+INFO 2025-11-24 02:02:21,580 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:02:21,589 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:21,606 basehttp 11054 129435399345856 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:02:21,614 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:21,616 basehttp 11054 129435632129728 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:02:21,634 basehttp 11054 129435632129728 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:02:21,672 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:21,680 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:02:21,701 basehttp 11054 129435632129728 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:02:21,768 basehttp 11054 129435416131264 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:02:21,790 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:02:21,807 basehttp 11054 129435632129728 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:03:32,319 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:03:32,323 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:03:32,336 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:03:32,349 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:03:32,377 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:03:32,378 basehttp 11054 129435632129728 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:30:54,464 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:30:54,470 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:30:54,483 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:30:54,487 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:30:54,537 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:30:54,587 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:16,512 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:31:16,520 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:16,532 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:31:16,541 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:31:16,541 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:16,574 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:31:16,582 basehttp 11054 129435399345856 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:31:16,604 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:16,623 basehttp 11054 129435399345856 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:31:16,713 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:16,723 basehttp 11054 129435632129728 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:31:16,731 basehttp 11054 129435648915136 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 02:31:35,378 basehttp 11054 129435399345856 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:31:35,379 basehttp 11054 129435632129728 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:31:35,387 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:31:35,387 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:35,404 basehttp 11054 129435399345856 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:35,404 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:35,480 basehttp 11054 129435399345856 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:35,483 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:31:35,483 basehttp 11054 129435632129728 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:31:35,487 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:31:35,534 basehttp 11054 129435399345856 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:31:35,590 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:32:04,013 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:32:04,021 basehttp 11054 129435399345856 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:32:04,031 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:32:04,036 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:32:04,040 basehttp 11054 129435399345856 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:32:04,048 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:36:57,645 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:36:57,646 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:36:57,653 basehttp 11054 129435416131264 "OPTIONS /api/policies/privacy/ HTTP/1.1" 200 0
+INFO 2025-11-24 02:36:57,657 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:36:57,714 basehttp 11054 129435416131264 "GET /api/policies/privacy/ HTTP/1.1" 200 59592
+INFO 2025-11-24 02:37:06,254 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:37:06,259 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:37:06,272 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:37:06,277 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:37:06,332 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:37:06,382 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:28,071 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:28,072 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:41:28,098 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:28,115 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:41:28,159 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:28,213 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:47,387 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:41:47,388 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:47,404 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:47,407 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:41:47,462 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:41:47,512 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:42:00,684 basehttp 11054 129435648915136 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 02:42:00,685 basehttp 11054 129435416131264 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 02:42:00,697 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:42:00,701 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:42:00,755 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:33,205 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:33,219 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:43:33,220 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:33,250 basehttp 11054 129435416131264 "OPTIONS /api/policies/support/ HTTP/1.1" 200 0
+INFO 2025-11-24 02:43:33,303 basehttp 11054 129435648915136 "GET /api/policies/support/ HTTP/1.1" 200 15004
+INFO 2025-11-24 02:43:36,353 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:43:36,354 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:36,373 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:43:36,377 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:36,427 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:36,478 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:52,570 basehttp 11054 129435648915136 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 02:43:52,570 basehttp 11054 129435416131264 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 02:43:52,583 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:43:52,589 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:43:52,638 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:28,523 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:28,537 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:28,546 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:35,615 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:35,619 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:35,632 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:35,637 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:35,688 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:35,744 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:45,029 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:45,039 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:45,049 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:45,054 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:45,102 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:45,106 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:52,755 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:52,760 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:52,773 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:52,777 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:52,844 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:52,848 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:59,417 basehttp 11054 129435632129728 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 02:44:59,418 basehttp 11054 129435648915136 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 02:44:59,432 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:44:59,443 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:44:59,487 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:45:35,932 basehttp 11054 129435416131264 "GET /api/services/ HTTP/1.1" 200 9191
+INFO 2025-11-24 02:45:36,040 basehttp 11054 129435416131264 "GET /api/services/enterprise-web-application-development/ HTTP/1.1" 200 4018
+INFO 2025-11-24 02:45:36,380 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:45:36,414 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:45:36,414 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:45:36,431 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:45:36,448 basehttp 11054 129435416131264 "GET /media/services/images/enterprise-web-application-development_93QetmC.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 02:45:36,469 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:45:36,473 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:46:07,850 log 11054 129435416131264 Not Found: /api/services/contact-us/
+WARNING 2025-11-24 02:46:07,850 basehttp 11054 129435416131264 "GET /api/services/contact-us/ HTTP/1.1" 404 48
+INFO 2025-11-24 02:46:08,492 basehttp 11054 129435407738560 "GET /api/services/ HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:12,530 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:12,565 basehttp 11054 129435640522432 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:46:12,565 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:12,590 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:12,590 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:12,615 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:46:33,197 basehttp 11054 129435632129728 "OPTIONS /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 02:46:33,198 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:33,210 basehttp 11054 129435632129728 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 02:46:33,220 basehttp 11054 129435640522432 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:46:33,220 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:46:33,224 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:33,233 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:33,256 basehttp 11054 129435416131264 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:46:33,293 basehttp 11054 129435632129728 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:46:33,297 basehttp 11054 129435640522432 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:46:33,303 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:33,305 basehttp 11054 129435416131264 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:46:33,367 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:46:33,368 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:46:35,485 log 11054 129435407738560 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 02:46:35,487 basehttp 11054 129435407738560 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+INFO 2025-11-24 02:47:31,629 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:39,556 basehttp 11054 129435407738560 "GET /api/services/enterprise-web-application-development/ HTTP/1.1" 200 4018
+INFO 2025-11-24 02:47:39,731 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:39,765 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:39,765 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:39,780 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:39,784 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:39,846 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:40,205 basehttp 11054 129435399345856 "GET /api/services/ HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:47,981 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:47,990 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:48,000 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:48,003 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:48,019 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:48,022 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:51,012 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:51,056 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:51,074 basehttp 11054 129435640522432 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:51,074 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:51,084 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:51,094 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:57,191 basehttp 11054 129435416131264 "OPTIONS /api/case-studies/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 02:47:57,192 basehttp 11054 129435648915136 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 02:47:57,202 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:57,208 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/ HTTP/1.1" 200 52
+INFO 2025-11-24 02:47:57,216 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:57,218 basehttp 11054 129435648915136 "GET /api/case-studies/clients/ HTTP/1.1" 200 189
+INFO 2025-11-24 02:47:57,228 basehttp 11054 129435407738560 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:57,232 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:57,238 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:47:57,244 basehttp 11054 129435407738560 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:47:57,256 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/ HTTP/1.1" 200 52
+INFO 2025-11-24 02:47:57,264 basehttp 11054 129435648915136 "GET /api/case-studies/clients/ HTTP/1.1" 200 189
+INFO 2025-11-24 02:48:03,852 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:48:03,852 basehttp 11054 129435407738560 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:48:03,854 basehttp 11054 129435632129728 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:48:03,862 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:48:03,870 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:48:03,879 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:48:03,907 basehttp 11054 129435632129728 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:48:03,914 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:48:03,914 basehttp 11054 129435407738560 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:48:03,935 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:48:03,938 basehttp 11054 129435640522432 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:48:03,958 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:49:32,074 basehttp 11054 129435416131264 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:49:32,082 basehttp 11054 129435640522432 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:49:32,082 basehttp 11054 129435407738560 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:49:32,089 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:49:32,100 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:49:32,112 basehttp 11054 129435416131264 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:49:40,980 basehttp 11054 129435640522432 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 02:49:40,982 basehttp 11054 129435648915136 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 02:49:40,986 basehttp 11054 129435416131264 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 02:49:40,989 basehttp 11054 129435640522432 "OPTIONS /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 02:49:40,997 basehttp 11054 129435648915136 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:49:41,003 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:49:41,005 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:49:41,014 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:49:41,057 basehttp 11054 129435648915136 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:49:41,070 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:51:11,592 log 11054 129435407738560 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 02:51:11,593 basehttp 11054 129435407738560 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+WARNING 2025-11-24 02:51:24,746 log 11054 129435407738560 Not Found: /media//images/case/two.png
+WARNING 2025-11-24 02:51:24,747 basehttp 11054 129435407738560 "GET /media//images/case/two.png HTTP/1.1" 404 3309
+INFO 2025-11-24 02:51:31,846 basehttp 11054 129435416131264 "OPTIONS /api/case-studies/case-studies/banking-system-modernization/ HTTP/1.1" 200 0
+INFO 2025-11-24 02:51:31,855 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+WARNING 2025-11-24 02:51:31,863 log 11054 129435416131264 Not Found: /api/case-studies/case-studies/banking-system-modernization/
+WARNING 2025-11-24 02:51:31,863 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/banking-system-modernization/ HTTP/1.1" 404 50
+INFO 2025-11-24 02:51:31,863 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:31,871 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:51:31,875 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:51:31,936 log 11054 129435407738560 Not Found: /api/case-studies/case-studies/banking-system-modernization/
+WARNING 2025-11-24 02:51:31,940 basehttp 11054 129435407738560 "GET /api/case-studies/case-studies/banking-system-modernization/ HTTP/1.1" 404 50
+WARNING 2025-11-24 02:51:31,943 log 11054 129435399345856 Not Found: /api/case-studies/case-studies/banking-system-modernization/
+WARNING 2025-11-24 02:51:31,945 log 11054 129435648915136 Not Found: /api/case-studies/case-studies/banking-system-modernization/
+WARNING 2025-11-24 02:51:31,946 log 11054 129435416131264 Not Found: /api/case-studies/case-studies/banking-system-modernization/
+WARNING 2025-11-24 02:51:31,948 basehttp 11054 129435648915136 "GET /api/case-studies/case-studies/banking-system-modernization/ HTTP/1.1" 404 50
+WARNING 2025-11-24 02:51:31,949 log 11054 129435640522432 Not Found: /api/case-studies/case-studies/banking-system-modernization/
+WARNING 2025-11-24 02:51:31,951 basehttp 11054 129435399345856 "GET /api/case-studies/case-studies/banking-system-modernization/ HTTP/1.1" 404 50
+WARNING 2025-11-24 02:51:31,952 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/banking-system-modernization/ HTTP/1.1" 404 50
+WARNING 2025-11-24 02:51:31,955 basehttp 11054 129435640522432 "GET /api/case-studies/case-studies/banking-system-modernization/ HTTP/1.1" 404 50
+INFO 2025-11-24 02:51:31,960 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:31,967 basehttp 11054 129435407738560 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:40,445 basehttp 11054 129435648915136 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:51:40,451 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:40,453 basehttp 11054 129435407738560 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:51:40,459 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:51:40,466 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:40,516 basehttp 11054 129435648915136 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:51:40,517 basehttp 11054 129435407738560 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:51:40,522 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:51:40,532 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:40,584 basehttp 11054 129435407738560 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:40,593 basehttp 11054 129435632129728 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:51:40,646 basehttp 11054 129435407738560 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:51:43,232 log 11054 129435390953152 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 02:51:43,232 basehttp 11054 129435390953152 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+WARNING 2025-11-24 02:51:47,226 log 11054 129435390953152 Not Found: /media//images/case/three.png
+WARNING 2025-11-24 02:51:47,226 basehttp 11054 129435390953152 "GET /media//images/case/three.png HTTP/1.1" 404 3317
+WARNING 2025-11-24 02:51:50,813 log 11054 129435390953152 Not Found: /media//images/case/two.png
+WARNING 2025-11-24 02:51:50,813 basehttp 11054 129435390953152 "GET /media//images/case/two.png HTTP/1.1" 404 3309
+INFO 2025-11-24 02:54:42,772 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:54:42,774 basehttp 11054 129435407738560 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:54:42,774 basehttp 11054 129435632129728 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:54:42,783 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:54:42,790 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:54:42,842 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:54:46,676 log 11054 129435640522432 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 02:54:46,676 basehttp 11054 129435640522432 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+INFO 2025-11-24 02:55:16,219 basehttp 11054 129435640522432 "GET /api/services/enterprise-api-development-integration/ HTTP/1.1" 200 3891
+INFO 2025-11-24 02:55:16,590 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:16,624 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:16,627 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:55:16,637 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:55:16,665 basehttp 11054 129435640522432 "GET /media/services/images/enterprise-api-development-integration_OcXmuaX.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 02:55:16,677 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:16,730 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:16,957 basehttp 11054 129435399345856 "GET /api/services/ HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:48,009 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:55:48,013 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:48,027 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:55:48,030 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:48,088 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:55:48,138 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:56:13,347 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:56:13,375 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:56:13,385 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:56:13,387 basehttp 11054 129435407738560 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:56:13,387 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:56:13,446 basehttp 11054 129435632129728 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 02:56:13,454 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 52
+INFO 2025-11-24 02:56:13,462 basehttp 11054 129435407738560 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 02:56:13,462 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:56:13,520 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:56:13,582 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 02:56:13,637 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 02:57:01,043 log 11054 129435640522432 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 02:57:01,044 basehttp 11054 129435640522432 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+INFO 2025-11-24 03:00:12,060 basehttp 11054 129435632129728 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:00:12,071 basehttp 11054 129435407738560 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:00:12,071 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:00:12,085 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4137
+INFO 2025-11-24 03:00:12,088 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:00:12,144 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:00:51,261 basehttp 11054 129435407738560 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:00:51,274 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:00:51,275 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:00:51,286 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4137
+INFO 2025-11-24 03:00:51,292 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:00:51,343 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:01:42,663 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:01:42,683 basehttp 11054 129435407738560 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:01:42,685 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:01:42,690 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:01:42,697 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4137
+INFO 2025-11-24 03:01:42,737 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:02:57,474 basehttp 11054 129435648915136 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:02:57,479 basehttp 11054 129435632129728 "OPTIONS /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:02:57,508 basehttp 11054 129435416131264 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:02:57,520 basehttp 11054 129435407738560 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:02:57,539 basehttp 11054 129435407738560 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:02:57,540 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:02:57,545 basehttp 11054 129435632129728 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4137
+INFO 2025-11-24 03:02:57,546 basehttp 11054 129435416131264 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:02:57,588 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:02:57,648 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:22,862 basehttp 11054 129435416131264 "OPTIONS /api/case-studies/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:03:22,863 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:22,863 basehttp 11054 129435407738560 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:03:22,877 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:03:22,886 basehttp 11054 129435407738560 "GET /api/case-studies/clients/ HTTP/1.1" 200 1452
+INFO 2025-11-24 03:03:22,892 basehttp 11054 129435390953152 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:22,901 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:22,913 basehttp 11054 129435632129728 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:03:22,924 basehttp 11054 129435390953152 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:22,934 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/ HTTP/1.1" 200 6391
+INFO 2025-11-24 03:03:22,936 basehttp 11054 129435407738560 "GET /api/case-studies/clients/ HTTP/1.1" 200 1452
+INFO 2025-11-24 03:03:23,000 basehttp 11054 129435648915136 "GET /api/case-studies/case-studies/ HTTP/1.1" 200 6391
+INFO 2025-11-24 03:03:39,843 basehttp 11054 129435416131264 "OPTIONS /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:03:39,854 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:03:39,860 basehttp 11054 129435390953152 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:39,874 basehttp 11054 129435648915136 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:03:39,884 basehttp 11054 129435390953152 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:39,888 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5629
+INFO 2025-11-24 03:03:39,982 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5629
+INFO 2025-11-24 03:03:39,983 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:39,992 basehttp 11054 129435390953152 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5629
+INFO 2025-11-24 03:03:40,049 basehttp 11054 129435648915136 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:03:40,095 basehttp 11054 129435632129728 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5629
+INFO 2025-11-24 03:03:40,095 basehttp 11054 129435416131264 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5629
+INFO 2025-11-24 03:03:40,100 basehttp 11054 129435390953152 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5629
+INFO 2025-11-24 03:07:23,211 autoreload 11054 129435716051072 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/serializers.py changed, reloading.
+INFO 2025-11-24 03:07:23,678 autoreload 41298 129535779061888 Watching for file changes with StatReloader
+INFO 2025-11-24 03:07:57,030 autoreload 41298 129535779061888 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/urls.py changed, reloading.
+INFO 2025-11-24 03:07:57,610 autoreload 41545 130130071564416 Watching for file changes with StatReloader
+INFO 2025-11-24 03:08:31,910 autoreload 41545 130130071564416 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/serializers.py changed, reloading.
+INFO 2025-11-24 03:08:32,407 autoreload 41782 125813782540416 Watching for file changes with StatReloader
+INFO 2025-11-24 03:08:43,614 autoreload 41859 137249144881280 Watching for file changes with StatReloader
+WARNING 2025-11-24 03:08:47,967 log 41859 137249069983424 Not Found: /api/case-studies/case-studies/supply-chain-management-system/
+WARNING 2025-11-24 03:08:47,970 basehttp 41859 137249069983424 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 404 17566
+WARNING 2025-11-24 03:08:47,988 log 41859 137249053198016 Not Found: /api/case-studies/case-studies/supply-chain-management-system/
+WARNING 2025-11-24 03:08:47,997 log 41859 137249069983424 Not Found: /api/case-studies/case-studies/supply-chain-management-system/
+INFO 2025-11-24 03:08:47,998 basehttp 41859 137249061590720 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:08:47,998 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 03:08:47,998 basehttp 41859 137249069983424 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 404 17566
+WARNING 2025-11-24 03:08:47,998 basehttp 41859 137249053198016 "GET /api/case-studies/case-studies/supply-chain-management-system/ HTTP/1.1" 404 17566
+INFO 2025-11-24 03:08:48,007 basehttp 41859 137249053198016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 03:08:51,784 log 41859 137249053198016 Not Found: /api/case-studies/case-studies/
+WARNING 2025-11-24 03:08:51,792 basehttp 41859 137249053198016 "GET /api/case-studies/case-studies/ HTTP/1.1" 404 50
+WARNING 2025-11-24 03:08:51,793 log 41859 137249078376128 Not Found: /api/case-studies/clients/
+INFO 2025-11-24 03:08:51,793 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 03:08:51,797 basehttp 41859 137249078376128 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:08:51,797 basehttp 41859 137249061590720 "GET /api/career/jobs HTTP/1.1" 200 392
+WARNING 2025-11-24 03:08:51,819 log 41859 137249053198016 Not Found: /api/case-studies/case-studies/
+WARNING 2025-11-24 03:08:51,825 basehttp 41859 137249053198016 "GET /api/case-studies/case-studies/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:08:51,826 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 03:08:51,827 log 41859 137249078376128 Not Found: /api/case-studies/clients/
+WARNING 2025-11-24 03:08:51,829 basehttp 41859 137249078376128 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:08:51,832 basehttp 41859 137249061590720 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:08:51,875 basehttp 41859 137249053198016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:08:51,931 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:08:57,399 basehttp 41859 137249053198016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:08:57,412 basehttp 41859 137249061590720 "GET /api/career/jobs HTTP/1.1" 200 392
+WARNING 2025-11-24 03:08:57,415 log 41859 137249069983424 Not Found: /api/case-studies/case-studies/
+INFO 2025-11-24 03:08:57,415 basehttp 41859 137249078376128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+WARNING 2025-11-24 03:08:57,418 basehttp 41859 137249069983424 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 404 50
+INFO 2025-11-24 03:08:57,422 basehttp 41859 137249053198016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:08:57,479 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:08:57,511 basehttp 41859 137249078376128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+WARNING 2025-11-24 03:08:57,515 log 41859 137249069983424 Not Found: /api/case-studies/case-studies/
+WARNING 2025-11-24 03:08:57,516 basehttp 41859 137249069983424 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 404 50
+INFO 2025-11-24 03:08:57,534 basehttp 41859 137249061590720 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:08:57,535 basehttp 41859 137249053198016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:08:57,614 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:08:57,671 basehttp 41859 137249053198016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 03:08:59,842 log 41859 137248699840192 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 03:08:59,843 basehttp 41859 137248699840192 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+WARNING 2025-11-24 03:09:03,293 log 41859 137248699840192 Not Found: /media//images/case/two.png
+WARNING 2025-11-24 03:09:03,293 basehttp 41859 137248699840192 "GET /media//images/case/two.png HTTP/1.1" 404 3309
+INFO 2025-11-24 03:16:18,305 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:18,305 basehttp 41859 137249061590720 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+WARNING 2025-11-24 03:16:18,307 log 41859 137249053198016 Not Found: /api/case-studies/case-studies/
+WARNING 2025-11-24 03:16:18,312 basehttp 41859 137249053198016 "GET /api/case-studies/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 404 50
+INFO 2025-11-24 03:16:18,312 basehttp 41859 137249069983424 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:18,318 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:18,375 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 03:16:21,487 log 41859 137248691447488 Not Found: /media//images/case/one.png
+WARNING 2025-11-24 03:16:21,487 basehttp 41859 137248691447488 "GET /media//images/case/one.png HTTP/1.1" 404 3309
+WARNING 2025-11-24 03:16:26,117 log 41859 137249061590720 Not Found: /media//images/case/two.png
+WARNING 2025-11-24 03:16:26,118 basehttp 41859 137249061590720 "GET /media//images/case/two.png HTTP/1.1" 404 3309
+INFO 2025-11-24 03:16:28,087 basehttp 41859 137249069983424 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:16:28,088 basehttp 41859 137249078376128 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:16:28,088 basehttp 41859 137249053198016 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:16:28,092 basehttp 41859 137248699840192 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:16:28,116 basehttp 41859 137249078376128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:16:28,116 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:28,137 basehttp 41859 137248699840192 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:28,142 basehttp 41859 137249053198016 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4124
+INFO 2025-11-24 03:16:28,177 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:28,178 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:34,907 basehttp 41859 137249053198016 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:16:34,907 basehttp 41859 137248699840192 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:16:34,921 basehttp 41859 137249069983424 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:34,926 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+WARNING 2025-11-24 03:16:34,926 log 41859 137248699840192 Not Found: /api/case-studies/clients/
+WARNING 2025-11-24 03:16:34,933 basehttp 41859 137248699840192 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:16:34,945 basehttp 41859 137249069983424 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:34,953 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:34,960 basehttp 41859 137249053198016 "GET /api/case-studies/ HTTP/1.1" 200 6391
+WARNING 2025-11-24 03:16:34,980 log 41859 137248699840192 Not Found: /api/case-studies/clients/
+WARNING 2025-11-24 03:16:34,980 basehttp 41859 137248699840192 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:16:35,001 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:35,025 basehttp 41859 137249078376128 "GET /api/case-studies/ HTTP/1.1" 200 6391
+INFO 2025-11-24 03:16:35,053 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:38,745 basehttp 41859 137249053198016 "OPTIONS /api/case-studies/hospital-management-system-modernization/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:16:38,758 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:38,761 basehttp 41859 137249069983424 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:38,778 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:38,789 basehttp 41859 137249069983424 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:38,794 basehttp 41859 137249053198016 "GET /api/case-studies/hospital-management-system-modernization/ HTTP/1.1" 200 4942
+INFO 2025-11-24 03:16:38,828 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:38,857 basehttp 41859 137249069983424 "GET /api/case-studies/hospital-management-system-modernization/ HTTP/1.1" 200 4942
+INFO 2025-11-24 03:16:38,880 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:38,915 basehttp 41859 137249069983424 "GET /api/case-studies/hospital-management-system-modernization/ HTTP/1.1" 200 4942
+INFO 2025-11-24 03:16:38,989 basehttp 41859 137249069983424 "GET /api/case-studies/hospital-management-system-modernization/ HTTP/1.1" 200 4942
+INFO 2025-11-24 03:16:38,990 basehttp 41859 137249078376128 "GET /api/case-studies/hospital-management-system-modernization/ HTTP/1.1" 200 4942
+INFO 2025-11-24 03:16:39,049 basehttp 41859 137249069983424 "GET /api/case-studies/hospital-management-system-modernization/ HTTP/1.1" 200 4942
+WARNING 2025-11-24 03:16:59,121 log 41859 137249061590720 Not Found: /api/case-studies/clients/
+WARNING 2025-11-24 03:16:59,122 log 41859 137249053198016 Not Found: /api/case-studies/clients/
+WARNING 2025-11-24 03:16:59,124 basehttp 41859 137249061590720 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+WARNING 2025-11-24 03:16:59,126 basehttp 41859 137249053198016 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:16:59,129 basehttp 41859 137248699840192 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:59,136 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:59,154 basehttp 41859 137249053198016 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:16:59,163 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:59,167 basehttp 41859 137249069983424 "GET /api/case-studies/ HTTP/1.1" 200 6391
+INFO 2025-11-24 03:16:59,187 basehttp 41859 137249069983424 "GET /api/case-studies/ HTTP/1.1" 200 6391
+INFO 2025-11-24 03:16:59,212 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:16:59,265 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:04,582 basehttp 41859 137249053198016 "OPTIONS /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:18:04,594 basehttp 41859 137249069983424 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:18:04,594 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:04,622 basehttp 41859 137249069983424 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:18:04,628 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:04,632 basehttp 41859 137249053198016 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:04,687 basehttp 41859 137249078376128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:04,692 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:04,702 basehttp 41859 137249053198016 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:04,776 basehttp 41859 137249078376128 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:04,777 basehttp 41859 137249069983424 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:04,849 basehttp 41859 137249069983424 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:04,850 basehttp 41859 137249078376128 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:58,489 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:58,497 basehttp 41859 137249053198016 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:18:58,512 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:58,531 basehttp 41859 137249078376128 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:58,535 basehttp 41859 137249053198016 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:18:58,607 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:58,612 basehttp 41859 137249078376128 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:58,658 basehttp 41859 137249069983424 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:18:58,680 basehttp 41859 137249078376128 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:58,738 basehttp 41859 137249069983424 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:58,801 basehttp 41859 137249078376128 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5062
+INFO 2025-11-24 03:18:58,821 basehttp 41859 137249069983424 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:19:55,736 autoreload 41859 137249144881280 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/serializers.py changed, reloading.
+INFO 2025-11-24 03:19:56,430 autoreload 46891 128976249352320 Watching for file changes with StatReloader
+INFO 2025-11-24 03:19:57,041 basehttp 46891 128976099989184 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:19:57,046 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:19:57,067 basehttp 46891 128976099989184 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:19:57,072 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:19:57,079 basehttp 46891 128976108381888 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:19:57,121 basehttp 46891 128976108381888 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:19:57,121 basehttp 46891 128976090547904 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:19:57,126 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:19:57,150 basehttp 46891 128976090547904 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:19:57,185 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:19:57,213 basehttp 46891 128976099989184 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:19:57,214 basehttp 46891 128976108381888 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:09,814 basehttp 46891 128976099989184 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:20:09,824 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:09,836 basehttp 46891 128976108381888 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:20:09,838 basehttp 46891 128976090547904 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:09,850 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:09,862 basehttp 46891 128976099989184 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:09,914 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:09,932 basehttp 46891 128976090547904 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:09,948 basehttp 46891 128976108381888 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:09,966 basehttp 46891 128976099989184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:09,975 basehttp 46891 128976116774592 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:10,035 basehttp 46891 128976099989184 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:16,372 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:16,373 basehttp 46891 128976090547904 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:20:16,414 basehttp 46891 128976099989184 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:16,421 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:16,426 basehttp 46891 128976108381888 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:20:16,449 basehttp 46891 128976099989184 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:16,489 basehttp 46891 128976090547904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:16,490 basehttp 46891 128976116774592 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:16,514 basehttp 46891 128976090547904 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:16,587 basehttp 46891 128976099989184 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:16,605 basehttp 46891 128976116774592 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:16,624 basehttp 46891 128976090547904 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:20:30,491 basehttp 46891 128976099989184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:30,492 basehttp 46891 128976090547904 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:20:30,510 basehttp 46891 128976108381888 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:20:30,524 basehttp 46891 128976099989184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:30,524 basehttp 46891 128976090547904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:30,527 basehttp 46891 128976116774592 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:20:30,557 basehttp 46891 128976108381888 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:20:30,573 basehttp 46891 128976080058048 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:20:30,591 basehttp 46891 128976090547904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:30,608 basehttp 46891 128976099989184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:30,609 basehttp 46891 128976071665344 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:20:30,610 basehttp 46891 128976116774592 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:21:22,024 basehttp 46891 128976071665344 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:22,029 basehttp 46891 128976099989184 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:21:22,039 basehttp 46891 128976116774592 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:21:22,048 basehttp 46891 128976108381888 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:22,064 basehttp 46891 128976090547904 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:21:22,064 basehttp 46891 128976071665344 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:28,236 autoreload 46891 128976249352320 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/serializers.py changed, reloading.
+INFO 2025-11-24 03:21:29,114 autoreload 48457 134813636280448 Watching for file changes with StatReloader
+WARNING 2025-11-24 03:21:37,884 log 48457 134813536204480 Not Found: /api/case-studies/clients/
+WARNING 2025-11-24 03:21:37,885 log 48457 134813552989888 Not Found: /api/case-studies/clients/
+WARNING 2025-11-24 03:21:37,895 basehttp 48457 134813536204480 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:21:37,895 basehttp 48457 134813544597184 "GET /api/career/jobs HTTP/1.1" 200 392
+WARNING 2025-11-24 03:21:37,895 basehttp 48457 134813552989888 "GET /api/case-studies/clients/ HTTP/1.1" 404 50
+INFO 2025-11-24 03:21:37,896 basehttp 48457 134813569775296 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:37,919 basehttp 48457 134813544597184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:37,924 basehttp 48457 134813569775296 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:21:37,933 basehttp 48457 134813561382592 "GET /api/case-studies/ HTTP/1.1" 200 6392
+INFO 2025-11-24 03:21:37,954 basehttp 48457 134813561382592 "GET /api/case-studies/ HTTP/1.1" 200 6392
+INFO 2025-11-24 03:21:37,969 basehttp 48457 134813544597184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:38,020 basehttp 48457 134813569775296 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:41,554 basehttp 48457 134813176555200 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:21:41,709 basehttp 48457 134813561382592 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:21:41,722 basehttp 48457 134813544597184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:41,724 basehttp 48457 134813569775296 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:21:41,747 basehttp 48457 134813544597184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:41,750 basehttp 48457 134813561382592 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:21:41,757 basehttp 48457 134813569775296 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:41,777 basehttp 48457 134813536204480 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:21:41,832 basehttp 48457 134813544597184 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:21:41,836 basehttp 48457 134813536204480 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:21:41,896 basehttp 48457 134813569775296 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:21:41,915 basehttp 48457 134813544597184 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:21:41,975 basehttp 48457 134813569775296 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:21:55,040 autoreload 48845 125911381921920 Watching for file changes with StatReloader
+INFO 2025-11-24 03:22:01,504 basehttp 48845 125911230830272 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:22:01,515 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:01,532 basehttp 48845 125911230830272 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:22:01,543 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:01,545 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:01,568 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:01,596 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:01,632 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:01,646 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:01,714 basehttp 48845 125911230830272 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:01,723 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:01,742 basehttp 48845 125911247615680 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:11,021 basehttp 48845 125911230830272 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:22:11,023 basehttp 48845 125911239222976 "OPTIONS /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:22:11,038 basehttp 48845 125911230830272 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:22:11,058 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:11,066 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:11,082 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:11,087 basehttp 48845 125911230830272 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:22:11,126 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:11,185 basehttp 48845 125911247615680 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:36,396 basehttp 48845 125911230830272 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:22:36,404 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:36,412 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:36,425 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:36,451 basehttp 48845 125911230830272 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:36,452 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:40,295 basehttp 48845 125911230830272 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:22:40,301 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:40,324 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:40,325 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:40,358 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:40,364 basehttp 48845 125911230830272 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:52,796 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:52,802 basehttp 48845 125911230830272 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:22:52,817 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:52,825 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:22:52,864 basehttp 48845 125911230830272 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:22:52,865 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:23:00,142 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:23:00,197 basehttp 48845 125911230830272 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:23:00,204 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:23:00,205 basehttp 48845 125911247615680 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:23:00,278 basehttp 48845 125911230830272 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:23:00,354 basehttp 48845 125911247615680 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:23:08,906 basehttp 48845 125911247615680 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:23:08,906 basehttp 48845 125911239222976 "OPTIONS /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:23:08,911 basehttp 48845 125911247615680 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:23:08,941 basehttp 48845 125911239222976 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:23:08,980 basehttp 48845 125911230830272 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:23:08,985 basehttp 48845 125911247615680 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:23:09,024 basehttp 48845 125911239222976 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:23:09,037 basehttp 48845 125911230830272 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:23:09,096 basehttp 48845 125911239222976 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:24:06,910 autoreload 48845 125911381921920 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:24:07,459 autoreload 50195 134009135140992 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:14,009 autoreload 50195 134009135140992 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:24:14,540 autoreload 50349 128453489012864 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:17,019 autoreload 50349 128453489012864 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:24:17,484 autoreload 50351 127723366793344 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:20,970 autoreload 50351 127723366793344 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:24:21,415 autoreload 50390 124437187498112 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:28,897 autoreload 50390 124437187498112 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:24:29,337 autoreload 50410 132762620551296 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:34,839 autoreload 50410 132762620551296 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:24:35,300 autoreload 50460 128577787060352 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:46,503 autoreload 50545 137039798665344 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:49,973 autoreload 50545 137039798665344 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:24:50,594 autoreload 50580 138890540810368 Watching for file changes with StatReloader
+INFO 2025-11-24 03:24:56,369 basehttp 50580 138890474157760 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:24:56,371 basehttp 50580 138890465765056 "OPTIONS /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:24:56,371 basehttp 50580 138890474157760 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:24:56,400 basehttp 50580 138890465765056 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:24:56,435 basehttp 50580 138890249762496 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:24:56,439 basehttp 50580 138890474157760 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:24:56,466 basehttp 50580 138890465765056 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:24:56,468 basehttp 50580 138890249762496 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:24:56,544 basehttp 50580 138890465765056 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:25:59,793 autoreload 50580 138890540810368 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:26:00,243 autoreload 51342 128634777698432 Watching for file changes with StatReloader
+INFO 2025-11-24 03:26:08,767 basehttp 51342 128634694129344 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:26:08,768 basehttp 51342 128634710914752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:26:08,803 basehttp 51342 128634710914752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:26:08,859 log 51342 128634702522048 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:26:08,866 basehttp 51342 128634702522048 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:26:08,998 log 51342 128634710914752 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:26:09,000 basehttp 51342 128634710914752 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:26:09,044 log 51342 128634702522048 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:26:09,048 basehttp 51342 128634702522048 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:26:11,518 log 51342 128634710914752 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:26:11,520 basehttp 51342 128634710914752 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+INFO 2025-11-24 03:26:21,336 autoreload 51568 132059073908864 Watching for file changes with StatReloader
+INFO 2025-11-24 03:26:39,140 autoreload 51568 132059073908864 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:26:39,625 autoreload 51681 133017754304640 Watching for file changes with StatReloader
+INFO 2025-11-24 03:26:53,034 autoreload 51808 123703763124352 Watching for file changes with StatReloader
+INFO 2025-11-24 03:26:57,504 autoreload 51808 123703763124352 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:26:58,222 autoreload 51937 138159182770304 Watching for file changes with StatReloader
+INFO 2025-11-24 03:26:58,910 basehttp 51937 138158880577216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:26:58,918 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:26:58,974 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:26:59,096 log 51937 138159109170880 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:26:59,096 log 51937 138158897362624 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:26:59,131 log 51937 138158888969920 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:26:59,136 basehttp 51937 138159109170880 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:26:59,139 basehttp 51937 138158888969920 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:26:59,140 basehttp 51937 138158897362624 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+INFO 2025-11-24 03:27:05,224 basehttp 51937 138159109170880 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:05,233 basehttp 51937 138158897362624 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:27:05,234 basehttp 51937 138159109170880 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:27:05,246 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:05,248 basehttp 51937 138158888969920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:27:05,256 basehttp 51937 138158897362624 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:27:05,262 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:05,277 basehttp 51937 138158888969920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:27:05,307 basehttp 51937 138159109170880 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:27:05,322 basehttp 51937 138158897362624 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:27:05,330 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:05,331 basehttp 51937 138158888969920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:27:05,335 basehttp 51937 138158880577216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:05,348 basehttp 51937 138158880577216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:11,068 basehttp 51937 138159109170880 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:11,095 basehttp 51937 138158880577216 "GET /api/career/jobs HTTP/1.1" 200 392
+ERROR 2025-11-24 03:27:11,406 log 51937 138158888969920 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:11,410 basehttp 51937 138158888969920 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:27:11,471 log 51937 138159117563584 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:11,480 log 51937 138158897362624 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:11,511 basehttp 51937 138159117563584 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:27:11,519 log 51937 138158870087360 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:11,523 basehttp 51937 138158897362624 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:27:11,545 basehttp 51937 138158870087360 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:27:11,567 log 51937 138158880577216 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:11,577 basehttp 51937 138158880577216 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+ERROR 2025-11-24 03:27:11,599 log 51937 138159109170880 Internal Server Error: /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:11,606 basehttp 51937 138159109170880 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 500 131559
+INFO 2025-11-24 03:27:11,606 basehttp 51937 138159117563584 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:27:11,611 basehttp 51937 138158888969920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:11,670 basehttp 51937 138158897362624 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:11,680 basehttp 51937 138158870087360 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:14,387 basehttp 51937 138159117563584 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:27:14,387 basehttp 51937 138158888969920 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:27:14,404 basehttp 51937 138159109170880 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:27:14,415 basehttp 51937 138158880577216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:14,440 basehttp 51937 138158897362624 "GET /api/case-studies/ HTTP/1.1" 200 6392
+INFO 2025-11-24 03:27:14,454 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:14,469 basehttp 51937 138158880577216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:27:14,475 basehttp 51937 138158888969920 "GET /api/case-studies/ HTTP/1.1" 200 6392
+ERROR 2025-11-24 03:27:14,505 log 51937 138158870087360 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:27:14,507 basehttp 51937 138158870087360 "GET /api/case-studies/clients/ HTTP/1.1" 500 107633
+INFO 2025-11-24 03:27:14,521 basehttp 51937 138158897362624 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:14,549 basehttp 51937 138158888969920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:27:14,593 log 51937 138159109170880 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:27:14,594 basehttp 51937 138159109170880 "GET /api/case-studies/clients/ HTTP/1.1" 500 107633
+ERROR 2025-11-24 03:27:18,119 log 51937 138158858548928 Internal Server Error: /api/case-studies/ai-powered-customer-service-platform/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:18,121 basehttp 51937 138158858548928 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 500 129697
+INFO 2025-11-24 03:27:18,165 basehttp 51937 138158880577216 "OPTIONS /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:27:18,178 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:18,185 basehttp 51937 138158870087360 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:27:18,206 basehttp 51937 138159109170880 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:27:18,210 basehttp 51937 138158888969920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:18,223 basehttp 51937 138158880577216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:27:18,238 basehttp 51937 138159117563584 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:27:18,269 log 51937 138158897362624 Internal Server Error: /api/case-studies/ai-powered-customer-service-platform/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:18,271 basehttp 51937 138158897362624 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 500 130478
+ERROR 2025-11-24 03:27:18,566 log 51937 138159109170880 Internal Server Error: /api/case-studies/ai-powered-customer-service-platform/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:18,570 basehttp 51937 138159109170880 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 500 130478
+ERROR 2025-11-24 03:27:18,606 log 51937 138158870087360 Internal Server Error: /api/case-studies/ai-powered-customer-service-platform/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:18,627 basehttp 51937 138158870087360 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 500 130478
+ERROR 2025-11-24 03:27:18,652 log 51937 138159117563584 Internal Server Error: /api/case-studies/ai-powered-customer-service-platform/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:18,657 basehttp 51937 138159117563584 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 500 130478
+ERROR 2025-11-24 03:27:18,704 log 51937 138158880577216 Internal Server Error: /api/case-studies/ai-powered-customer-service-platform/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:18,750 log 51937 138158888969920 Internal Server Error: /api/case-studies/ai-powered-customer-service-platform/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 101, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 631, in get
+ num = len(clone)
+ ^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 368, in __len__
+ self._fetch_all()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1956, in _fetch_all
+ self._prefetch_related_objects()
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 1330, in _prefetch_related_objects
+ prefetch_related_objects(self._result_cache, *self._prefetch_related_lookups)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 2328, in prefetch_related_objects
+ raise ValueError(
+ValueError: 'gallery_images' lookup was already seen with a different queryset. You may need to adjust the ordering of your lookups.
+ERROR 2025-11-24 03:27:18,752 basehttp 51937 138158880577216 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 500 130478
+ERROR 2025-11-24 03:27:18,754 basehttp 51937 138158888969920 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 500 130478
+INFO 2025-11-24 03:27:57,191 autoreload 51937 138159182770304 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:27:57,702 autoreload 52811 124982151938176 Watching for file changes with StatReloader
+INFO 2025-11-24 03:28:10,104 autoreload 52915 131754678255744 Watching for file changes with StatReloader
+INFO 2025-11-24 03:28:12,834 basehttp 52915 131754611439296 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:28:13,642 autoreload 52915 131754678255744 /home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py changed, reloading.
+INFO 2025-11-24 03:28:14,286 autoreload 52973 132315029819520 Watching for file changes with StatReloader
+INFO 2025-11-24 03:28:25,961 basehttp 52973 132314963113664 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:28:25,962 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:28:25,968 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:28:25,969 basehttp 52973 132314587723456 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:28:25,969 basehttp 52973 132314937935552 "OPTIONS /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:28:26,021 basehttp 52973 132314587723456 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:28:26,032 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:28:26,088 basehttp 52973 132314946328256 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:28:26,088 basehttp 52973 132314954720960 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:28:26,091 basehttp 52973 132314937935552 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:28:26,100 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:28:47,115 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:28:47,115 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:28:47,119 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:28:47,123 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:28:47,134 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:28:47,190 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:28:47,191 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:28:47,197 basehttp 52973 132314937935552 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:28:47,204 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:28:47,263 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:28:47,326 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:28:47,336 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:07,198 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:29:07,209 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:07,245 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 6392
+INFO 2025-11-24 03:29:07,254 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:29:07,307 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:07,315 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 6392
+ERROR 2025-11-24 03:29:07,376 log 52973 132314587723456 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:29:07,379 basehttp 52973 132314587723456 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:29:07,379 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:29:07,379 log 52973 132314954720960 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:29:07,383 basehttp 52973 132314954720960 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:29:07,441 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:10,399 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:29:10,419 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:29:10,419 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:10,429 basehttp 52973 132314587723456 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:29:10,443 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:10,462 basehttp 52973 132314587723456 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:29:10,467 basehttp 52973 132314963113664 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:29:10,496 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:10,530 basehttp 52973 132314587723456 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:29:10,559 basehttp 52973 132314946328256 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:29:10,564 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:29:10,564 basehttp 52973 132314963113664 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:30:51,221 basehttp 52973 132314587723456 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4909
+INFO 2025-11-24 03:30:54,812 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:30:54,817 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:30:54,817 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:30:54,824 basehttp 52973 132314587723456 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:30:54,834 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:30:54,838 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:30:54,859 basehttp 52973 132314963113664 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:30:54,866 basehttp 52973 132314587723456 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:30:54,870 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:30:54,889 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:30:54,898 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:30:54,902 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:09,860 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:31:09,861 basehttp 52973 132314937935552 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:31:09,861 basehttp 52973 132314587723456 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:31:09,862 basehttp 52973 132314946328256 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:31:09,880 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:31:09,883 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:31:09,888 basehttp 52973 132314587723456 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:31:09,892 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:09,950 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:10,004 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:19,586 basehttp 52973 132314587723456 "OPTIONS /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:31:19,587 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:19,616 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:31:19,618 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:19,707 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:31:19,712 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:31:19,713 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:19,777 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:19,793 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:31:19,860 basehttp 52973 132314587723456 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:31:19,921 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:31:19,954 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:31:19,956 basehttp 52973 132314587723456 "GET /api/case-studies/enterprise-cloud-migration-for-global-financial-institution/ HTTP/1.1" 200 5063
+INFO 2025-11-24 03:31:40,704 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:40,725 basehttp 52973 132314954720960 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:31:40,732 basehttp 52973 132314587723456 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:31:40,736 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:31:40,739 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:40,779 basehttp 52973 132314954720960 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:31:40,788 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:31:40,792 basehttp 52973 132314587723456 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4125
+INFO 2025-11-24 03:31:40,798 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:40,802 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:40,816 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:31:40,821 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:13,188 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:13,191 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:13,204 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:13,223 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:34:13,244 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:13,258 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:13,262 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:34:13,265 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+ERROR 2025-11-24 03:34:13,303 log 52973 132314587723456 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+INFO 2025-11-24 03:34:13,312 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:34:13,314 basehttp 52973 132314587723456 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:34:13,328 basehttp 52973 132314946328256 "GET /api/case-studies/ HTTP/1.1" 200 6734
+ERROR 2025-11-24 03:34:13,372 log 52973 132314587723456 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:34:13,373 basehttp 52973 132314587723456 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:34:22,755 basehttp 52973 132314579330752 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:22,841 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:22,851 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:34:22,855 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:22,876 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:34:22,878 basehttp 52973 132314946328256 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:22,910 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:22,914 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:22,927 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:22,946 basehttp 52973 132314954720960 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:23,007 basehttp 52973 132314587723456 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:23,074 basehttp 52973 132314587723456 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:23,134 basehttp 52973 132314587723456 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:23,196 basehttp 52973 132314587723456 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:35,056 basehttp 52973 132314954720960 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:35,064 basehttp 52973 132314587723456 "OPTIONS /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:35,065 basehttp 52973 132314937935552 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:35,087 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:35,094 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:34:35,112 basehttp 52973 132314587723456 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:35,144 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:35,176 basehttp 52973 132314587723456 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5669
+INFO 2025-11-24 03:34:35,239 basehttp 52973 132314954720960 "GET /api/case-studies/supply-chain-management-system/ HTTP/1.1" 200 5670
+INFO 2025-11-24 03:34:48,558 basehttp 52973 132314587723456 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:48,559 basehttp 52973 132314946328256 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:34:48,559 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:48,576 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:34:48,577 basehttp 52973 132314587723456 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:34:48,583 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:48,588 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:34:48,651 basehttp 52973 132314587723456 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:34:48,657 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:34:48,662 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:34:48,667 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:48,723 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:48,783 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:34:48,798 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:52,021 basehttp 52973 132314587723456 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:35:52,021 basehttp 52973 132314937935552 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:35:52,041 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:52,055 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:35:52,076 basehttp 52973 132314937935552 "GET /api/case-studies/ HTTP/1.1" 200 6735
+INFO 2025-11-24 03:35:52,081 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:35:52,085 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:35:52,125 log 52973 132314587723456 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:35:52,128 basehttp 52973 132314587723456 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:35:52,149 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:52,166 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:52,176 basehttp 52973 132314937935552 "GET /api/case-studies/ HTTP/1.1" 200 6735
+ERROR 2025-11-24 03:35:52,214 log 52973 132314587723456 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:35:52,216 basehttp 52973 132314587723456 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:35:56,305 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:35:56,314 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:56,318 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:35:56,338 basehttp 52973 132314954720960 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4992
+INFO 2025-11-24 03:35:56,338 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:35:56,367 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:56,419 basehttp 52973 132314954720960 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4992
+INFO 2025-11-24 03:35:56,426 basehttp 52973 132314937935552 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4992
+INFO 2025-11-24 03:35:56,438 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:56,457 basehttp 52973 132314946328256 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4992
+INFO 2025-11-24 03:35:56,511 basehttp 52973 132314946328256 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4992
+INFO 2025-11-24 03:35:56,516 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:35:56,525 basehttp 52973 132314954720960 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 4992
+INFO 2025-11-24 03:36:53,217 basehttp 52973 132314954720960 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:36:53,227 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:36:53,228 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:36:53,228 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:36:53,238 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:36:53,283 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:36:53,299 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:36:53,302 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:36:53,310 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:36:53,367 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:36:53,419 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:36:53,475 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:21,188 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:37:21,204 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:21,220 basehttp 52973 132314946328256 "GET /api/case-studies/ HTTP/1.1" 200 6735
+INFO 2025-11-24 03:37:21,223 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:37:21,246 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:21,246 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:21,258 basehttp 52973 132314946328256 "GET /api/case-studies/ HTTP/1.1" 200 6735
+INFO 2025-11-24 03:37:21,269 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:37:21,309 log 52973 132314954720960 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:37:21,311 basehttp 52973 132314954720960 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+ERROR 2025-11-24 03:37:21,333 log 52973 132314963113664 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:37:21,334 basehttp 52973 132314963113664 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:37:26,520 basehttp 52973 132314570938048 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 5799
+INFO 2025-11-24 03:37:26,653 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:37:26,654 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:26,661 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:37:26,694 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:37:26,703 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:26,722 basehttp 52973 132314963113664 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 5799
+INFO 2025-11-24 03:37:26,763 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:26,764 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:26,826 basehttp 52973 132314963113664 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 5799
+INFO 2025-11-24 03:37:26,891 basehttp 52973 132314954720960 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 5799
+INFO 2025-11-24 03:37:26,917 basehttp 52973 132314587723456 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 5799
+INFO 2025-11-24 03:37:26,936 basehttp 52973 132314963113664 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 5799
+INFO 2025-11-24 03:37:26,954 basehttp 52973 132314954720960 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 5799
+INFO 2025-11-24 03:37:43,508 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:43,512 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:37:43,538 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:37:43,540 basehttp 52973 132314963113664 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 7267
+INFO 2025-11-24 03:37:43,576 basehttp 52973 132314963113664 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 7267
+INFO 2025-11-24 03:37:43,579 basehttp 52973 132314954720960 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 7267
+INFO 2025-11-24 03:39:14,823 basehttp 52973 132314954720960 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:39:14,823 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:14,832 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:39:14,838 basehttp 52973 132314963113664 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:39:14,845 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:14,917 basehttp 52973 132314587723456 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:39:14,921 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:39:14,925 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:14,938 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:39:14,938 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:14,990 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:15,004 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:23,292 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:39:23,304 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:23,380 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:39:23,396 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:39:23,406 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:23,419 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 6734
+ERROR 2025-11-24 03:39:23,464 log 52973 132314587723456 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:39:23,476 basehttp 52973 132314587723456 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+ERROR 2025-11-24 03:39:23,508 log 52973 132314579330752 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:39:23,510 basehttp 52973 132314579330752 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:39:23,519 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:23,580 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:25,276 basehttp 52973 132314570938048 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 6611
+INFO 2025-11-24 03:39:25,482 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:39:25,483 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:25,500 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:39:25,514 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:25,523 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 6611
+INFO 2025-11-24 03:39:25,530 basehttp 52973 132314587723456 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:39:25,546 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 6611
+INFO 2025-11-24 03:39:25,565 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:25,608 basehttp 52973 132314954720960 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 6611
+INFO 2025-11-24 03:39:25,618 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:25,669 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 6611
+INFO 2025-11-24 03:39:25,693 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 6611
+INFO 2025-11-24 03:39:25,713 basehttp 52973 132314587723456 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 6611
+INFO 2025-11-24 03:39:53,262 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:39:53,276 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:53,283 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:39:53,303 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:39:53,323 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:39:53,324 basehttp 52973 132314954720960 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:00,281 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:00,281 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:00,291 basehttp 52973 132314587723456 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:00,308 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:00,329 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:00,390 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:06,828 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:06,853 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:06,862 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:06,863 basehttp 52973 132314954720960 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:40:06,889 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:06,899 basehttp 52973 132314954720960 "GET /api/case-studies/ HTTP/1.1" 200 6734
+ERROR 2025-11-24 03:40:06,938 log 52973 132314946328256 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:40:06,945 basehttp 52973 132314946328256 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+ERROR 2025-11-24 03:40:06,966 log 52973 132314963113664 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:40:06,969 basehttp 52973 132314963113664 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:40:06,976 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:07,031 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:08,540 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:08,540 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:08,571 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:08,571 basehttp 52973 132314946328256 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 5755
+INFO 2025-11-24 03:40:08,571 basehttp 52973 132314587723456 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:08,591 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:08,599 basehttp 52973 132314963113664 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 5755
+INFO 2025-11-24 03:40:08,646 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:08,662 basehttp 52973 132314587723456 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 5755
+INFO 2025-11-24 03:40:08,680 basehttp 52973 132314946328256 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 5755
+INFO 2025-11-24 03:40:08,712 basehttp 52973 132314963113664 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 5755
+INFO 2025-11-24 03:40:08,712 basehttp 52973 132314954720960 "GET /api/case-studies/ai-powered-customer-service-platform/ HTTP/1.1" 200 5755
+INFO 2025-11-24 03:40:14,209 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:14,218 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:14,219 basehttp 52973 132314587723456 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:40:14,260 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:14,267 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:14,280 basehttp 52973 132314587723456 "GET /api/case-studies/ HTTP/1.1" 200 6734
+ERROR 2025-11-24 03:40:14,326 log 52973 132314954720960 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:40:14,330 basehttp 52973 132314954720960 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+ERROR 2025-11-24 03:40:14,355 log 52973 132314946328256 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+INFO 2025-11-24 03:40:14,361 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:40:14,361 basehttp 52973 132314946328256 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:40:14,366 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:16,627 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:16,637 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:16,655 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:16,671 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:16,678 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:16,678 basehttp 52973 132314954720960 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:16,689 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:16,712 basehttp 52973 132314579330752 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:16,788 basehttp 52973 132314954720960 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:16,805 basehttp 52973 132314963113664 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:16,837 basehttp 52973 132314946328256 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:16,838 basehttp 52973 132314587723456 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:25,590 basehttp 52973 132314946328256 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:40:25,594 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:40:25,607 basehttp 52973 132314954720960 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:40:25,628 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:25,641 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:25,652 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:25,683 basehttp 52973 132314946328256 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:25,743 basehttp 52973 132314579330752 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:25,776 basehttp 52973 132314579330752 "GET /api/case-studies/e-commerce-platform-global-retail-chain/ HTTP/1.1" 200 6609
+INFO 2025-11-24 03:40:32,741 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:40:32,742 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:40:32,755 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:32,771 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:32,794 basehttp 52973 132314954720960 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:40:32,797 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:32,801 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:32,805 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:40:32,835 log 52973 132314937935552 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:40:32,840 basehttp 52973 132314937935552 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:40:32,856 basehttp 52973 132314954720960 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:40:32,870 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:40:32,905 log 52973 132314937935552 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:40:32,907 basehttp 52973 132314937935552 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:40:34,757 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:40:34,770 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:34,775 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:34,789 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:40:34,796 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:34,829 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:34,833 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:34,850 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:40:34,871 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:34,872 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:34,952 basehttp 52973 132314954720960 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:34,953 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:40:34,962 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-cloud-migration-global-financial-institution/ HTTP/1.1" 200 5953
+INFO 2025-11-24 03:41:45,823 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:41:45,824 basehttp 52973 132314579330752 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:41:45,829 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:41:45,832 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:41:45,848 basehttp 52973 132314954720960 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:41:45,857 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:41:45,862 basehttp 52973 132314937935552 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:41:45,908 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:41:45,930 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:41:45,939 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:41:45,943 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:41:45,947 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:41:46,001 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:41:46,053 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:10,751 basehttp 52973 132314963113664 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:42:10,759 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:42:10,760 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:10,767 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:42:10,788 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:10,793 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:42:10,802 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:42:10,803 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:10,810 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:42:10,843 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:10,849 basehttp 52973 132314963113664 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:10,855 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:17,795 basehttp 52973 132314937935552 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:42:17,801 basehttp 52973 132314937935552 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:42:17,802 basehttp 52973 132314579330752 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:42:17,802 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:42:17,817 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:17,841 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:42:17,843 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:42:17,855 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:42:17,862 basehttp 52973 132314937935552 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:42:17,963 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:43:30,673 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:43:39,795 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:44:19,511 basehttp 52973 132314937935552 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:44:19,512 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:44:19,524 basehttp 52973 132314954720960 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:44:19,524 basehttp 52973 132314579330752 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:44:19,541 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:44:19,545 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:44:19,555 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:44:19,557 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:44:19,621 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:44:19,678 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:44:59,987 basehttp 52973 132314946328256 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:00,003 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:00,012 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:00,037 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:00,045 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:00,058 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:00,069 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:00,070 basehttp 52973 132314946328256 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 03:45:00,131 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 03:45:00,196 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 03:45:00,219 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 03:45:00,277 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 03:45:00,311 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 03:45:13,880 basehttp 52973 132314946328256 "OPTIONS /api/blog/categories/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:13,880 basehttp 52973 132314954720960 "OPTIONS /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:13,891 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:13,904 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:13,905 basehttp 52973 132314954720960 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 03:45:13,928 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:13,930 basehttp 52973 132314946328256 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 03:45:13,933 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:13,954 basehttp 52973 132314954720960 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 03:45:13,986 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:13,992 basehttp 52973 132314946328256 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 03:45:14,037 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:16,282 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:16,298 basehttp 52973 132314579330752 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:16,303 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:16,313 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:16,326 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:16,338 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:16,357 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:16,371 basehttp 52973 132314579330752 "GET /api/case-studies/ HTTP/1.1" 200 6734
+ERROR 2025-11-24 03:45:16,453 log 52973 132314946328256 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+INFO 2025-11-24 03:45:16,461 basehttp 52973 132314954720960 "GET /api/case-studies/ HTTP/1.1" 200 6734
+ERROR 2025-11-24 03:45:16,463 basehttp 52973 132314946328256 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:45:16,472 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:45:16,522 log 52973 132314946328256 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:45:16,524 basehttp 52973 132314946328256 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:45:18,043 basehttp 52973 132314954720960 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:45:18,044 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:18,048 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:18,052 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:45:18,103 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:18,109 basehttp 52973 132314937935552 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:45:18,109 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:18,117 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:45:18,161 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:18,214 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:18,265 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:18,316 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:37,190 basehttp 52973 132314579330752 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:37,191 basehttp 52973 132314954720960 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:37,193 basehttp 52973 132314937935552 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:37,197 basehttp 52973 132314946328256 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:45:37,217 basehttp 52973 132314937935552 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:45:37,221 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:37,226 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:45:37,230 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:45:37,275 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:45:37,285 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:46:34,717 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:47:11,206 basehttp 52973 132314954720960 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 03:47:11,213 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 03:47:11,221 basehttp 52973 132314937935552 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 03:47:11,227 basehttp 52973 132314937935552 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 03:47:11,234 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:47:11,235 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4366
+INFO 2025-11-24 03:47:11,235 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:47:11,287 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:47:11,300 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:47:11,354 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:50:10,324 basehttp 52973 132314946328256 "GET /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 6743
+INFO 2025-11-24 03:50:10,650 basehttp 52973 132314579330752 "OPTIONS /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:50:10,661 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:50:10,679 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:50:10,684 basehttp 52973 132314954720960 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:50:10,698 basehttp 52973 132314963113664 "GET /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 6743
+INFO 2025-11-24 03:50:10,699 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:50:10,725 basehttp 52973 132314963113664 "GET /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 6743
+INFO 2025-11-24 03:50:10,757 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:50:10,763 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:50:10,808 basehttp 52973 132314963113664 "GET /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 6743
+INFO 2025-11-24 03:50:10,810 basehttp 52973 132314579330752 "GET /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 6743
+INFO 2025-11-24 03:50:10,834 basehttp 52973 132314937935552 "GET /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 6743
+INFO 2025-11-24 03:50:10,882 basehttp 52973 132314954720960 "GET /api/case-studies/manufacturing-iot-analytics-platform/ HTTP/1.1" 200 6743
+INFO 2025-11-24 03:56:14,162 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:56:14,163 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:56:14,177 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:56:14,183 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:56:14,211 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:56:14,221 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:56:14,225 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:56:14,263 log 52973 132314954720960 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:56:14,265 basehttp 52973 132314954720960 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:56:14,281 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 6734
+INFO 2025-11-24 03:56:14,296 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:56:14,328 log 52973 132314954720960 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:56:14,330 basehttp 52973 132314954720960 "GET /api/case-studies/clients/ HTTP/1.1" 500 108364
+INFO 2025-11-24 03:56:14,346 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:10,086 basehttp 52973 132314579330752 "GET /api/case-studies/ HTTP/1.1" 200 52
+INFO 2025-11-24 03:57:10,096 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:10,099 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+ERROR 2025-11-24 03:57:10,134 log 52973 132314963113664 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+INFO 2025-11-24 03:57:10,140 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:57:10,140 basehttp 52973 132314963113664 "GET /api/case-studies/clients/ HTTP/1.1" 500 107340
+INFO 2025-11-24 03:57:20,527 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:57:20,533 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:20,544 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 03:57:20,555 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 03:57:20,592 log 52973 132314579330752 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:57:20,594 basehttp 52973 132314579330752 "GET /api/case-studies/clients/ HTTP/1.1" 500 108114
+INFO 2025-11-24 03:57:33,508 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 6577
+INFO 2025-11-24 03:57:33,603 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:57:33,612 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:33,621 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:57:33,638 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:33,644 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 6577
+INFO 2025-11-24 03:57:33,650 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:57:33,654 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:33,663 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:33,707 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 6577
+INFO 2025-11-24 03:57:33,772 basehttp 52973 132314954720960 "GET /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 6577
+INFO 2025-11-24 03:57:33,802 basehttp 52973 132314954720960 "GET /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 6577
+INFO 2025-11-24 03:57:33,804 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 6577
+INFO 2025-11-24 03:57:33,821 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-customer-relationship-management-platform/ HTTP/1.1" 200 6577
+INFO 2025-11-24 03:57:45,014 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:57:45,032 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:45,043 basehttp 52973 132314579330752 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 03:57:45,051 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:57:45,070 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:45,080 basehttp 52973 132314579330752 "GET /api/case-studies/ HTTP/1.1" 200 5616
+ERROR 2025-11-24 03:57:45,115 log 52973 132314946328256 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:57:45,118 basehttp 52973 132314946328256 "GET /api/case-studies/clients/ HTTP/1.1" 500 108114
+ERROR 2025-11-24 03:57:45,145 log 52973 132314963113664 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 03:57:45,147 basehttp 52973 132314963113664 "GET /api/case-studies/clients/ HTTP/1.1" 500 108114
+INFO 2025-11-24 03:57:45,152 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:45,207 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:49,471 basehttp 52973 132314570938048 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 03:57:49,531 basehttp 52973 132314579330752 "OPTIONS /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 03:57:49,540 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:57:49,552 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:49,562 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:57:49,571 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:49,574 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 03:57:49,599 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 03:57:49,620 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:49,681 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 03:57:49,686 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:57:49,686 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 03:57:49,710 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 03:57:49,730 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 03:58:41,728 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:58:41,744 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4743
+INFO 2025-11-24 03:58:41,758 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:58:41,758 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:58:41,768 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:58:41,814 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:58:41,826 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4743
+INFO 2025-11-24 03:58:41,829 basehttp 52973 132314963113664 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 03:58:41,830 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 03:58:41,863 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:58:41,867 basehttp 52973 132314954720960 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:58:41,922 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 03:59:33,106 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4743
+INFO 2025-11-24 03:59:39,675 basehttp 52973 132314954720960 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4743
+INFO 2025-11-24 04:00:19,351 basehttp 52973 132314579330752 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 04:00:19,351 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 04:00:19,363 basehttp 52973 132314954720960 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 04:00:19,373 basehttp 52973 132314954720960 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 04:00:19,373 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:00:19,380 basehttp 52973 132314963113664 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:00:19,380 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4743
+INFO 2025-11-24 04:00:19,438 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:00:19,449 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:00:19,486 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:01:33,784 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4743
+INFO 2025-11-24 04:04:12,432 basehttp 52973 132314954720960 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:04:12,443 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/clients/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:04:12,447 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:04:12,451 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:04:12,483 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:04:12,485 basehttp 52973 132314937935552 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 04:04:12,489 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+ERROR 2025-11-24 04:04:12,535 log 52973 132314954720960 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+INFO 2025-11-24 04:04:12,535 basehttp 52973 132314937935552 "GET /api/case-studies/ HTTP/1.1" 200 5616
+ERROR 2025-11-24 04:04:12,537 basehttp 52973 132314954720960 "GET /api/case-studies/clients/ HTTP/1.1" 500 108114
+INFO 2025-11-24 04:04:12,550 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 04:04:12,595 log 52973 132314954720960 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 04:04:12,598 basehttp 52973 132314954720960 "GET /api/case-studies/clients/ HTTP/1.1" 500 108114
+INFO 2025-11-24 04:04:12,603 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:05:01,903 basehttp 52973 132314954720960 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 04:05:07,897 basehttp 52973 132314946328256 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 04:05:07,902 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:05:07,910 basehttp 52973 132314937935552 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 04:05:07,936 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:05:07,944 basehttp 52973 132314963113664 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 04:05:07,945 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:05:07,967 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+ERROR 2025-11-24 04:05:07,999 log 52973 132314946328256 Internal Server Error: /api/case-studies/clients/
+Traceback (most recent call last):
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/exception.py", line 55, in inner
+ response = get_response(request)
+ ^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/core/handlers/base.py", line 197, in _get_response
+ response = wrapped_callback(request, *callback_args, **callback_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper
+ return view_func(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/viewsets.py", line 125, in view
+ return self.dispatch(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 515, in dispatch
+ response = self.handle_exception(exc)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 475, in handle_exception
+ self.raise_uncaught_exception(exc)
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 486, in raise_uncaught_exception
+ raise exc
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/rest_framework/views.py", line 512, in dispatch
+ response = handler(request, *args, **kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/case_studies/views.py", line 92, in retrieve
+ instance = queryset.get(**filter_kwargs)
+ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ File "/home/gnx/Desktop/GNX-WEB/backEnd/venv/lib/python3.12/site-packages/django/db/models/query.py", line 635, in get
+ raise self.model.DoesNotExist(
+case_studies.models.CaseStudy.DoesNotExist: CaseStudy matching query does not exist.
+ERROR 2025-11-24 04:05:08,001 basehttp 52973 132314946328256 "GET /api/case-studies/clients/ HTTP/1.1" 500 108114
+INFO 2025-11-24 04:05:14,000 basehttp 52973 132314946328256 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 04:05:24,777 basehttp 52973 132314954720960 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:05:24,906 basehttp 52973 132314963113664 "OPTIONS /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:05:24,918 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:05:24,932 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:05:24,954 basehttp 52973 132314963113664 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:05:24,957 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:05:24,966 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:05:24,966 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:05:24,971 basehttp 52973 132314937935552 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:05:25,011 basehttp 52973 132314587723456 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:05:25,085 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:05:25,085 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:05:25,120 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:05:25,121 basehttp 52973 132314579330752 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:06:09,876 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-cloud-infrastructure-migration/ HTTP/1.1" 200 6549
+INFO 2025-11-24 04:06:59,684 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:06:59,688 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:06:59,699 basehttp 52973 132314587723456 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 04:06:59,711 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:06:59,714 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:06:59,721 basehttp 52973 132314937935552 "GET /api/case-studies/ HTTP/1.1" 200 5616
+INFO 2025-11-24 04:06:59,764 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:06:59,814 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:08,129 basehttp 52973 132314579330752 "OPTIONS /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:07:08,141 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:08,149 basehttp 52973 132314587723456 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:07:08,163 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:08,183 basehttp 52973 132314587723456 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:07:08,186 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:08,190 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 04:07:08,222 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 04:07:08,227 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:08,305 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 04:07:08,305 basehttp 52973 132314587723456 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8472
+INFO 2025-11-24 04:07:08,348 basehttp 52973 132314946328256 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8473
+INFO 2025-11-24 04:07:08,350 basehttp 52973 132314937935552 "GET /api/case-studies/enterprise-telemedicine-application-platform/ HTTP/1.1" 200 8473
+INFO 2025-11-24 04:07:27,522 basehttp 52973 132314587723456 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:07:27,525 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:07:27,537 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:27,545 basehttp 52973 132314587723456 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:07:27,564 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:07:27,576 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:27,594 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:07:27,617 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:07:27,628 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:27,678 basehttp 52973 132314587723456 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:07:27,685 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:27,712 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:07:27,729 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:07:35,608 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:35,629 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:35,631 basehttp 52973 132314587723456 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:07:35,632 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:07:35,637 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:07:35,700 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:35,713 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:07:35,721 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:07:35,730 basehttp 52973 132314587723456 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:07:35,739 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:35,804 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:07:35,813 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:13:21,049 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:13:49,967 basehttp 52973 132314946328256 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:14:33,688 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:14:33,691 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:14:33,707 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:14:33,713 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:14:33,714 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:14:33,732 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:14:33,733 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:14:33,743 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:14:33,754 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:14:33,784 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:14:33,834 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:14:33,884 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:19:35,280 basehttp 52973 132314946328256 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 04:19:35,282 basehttp 52973 132314946328256 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 04:19:35,300 basehttp 52973 132314579330752 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 04:19:35,315 basehttp 52973 132314587723456 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 04:19:35,332 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:19:35,338 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:19:35,351 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:19:35,367 basehttp 52973 132314937935552 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:19:35,388 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:19:35,440 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:19:44,697 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:19:44,700 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:19:44,708 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:19:44,714 basehttp 52973 132314937935552 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:19:44,725 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:19:44,779 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:26,874 basehttp 52973 132314937935552 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:20:26,885 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:26,894 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:26,906 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:26,914 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:20:26,961 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:26,962 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:20:26,962 basehttp 52973 132314946328256 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:20:26,966 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:26,984 basehttp 52973 132314946328256 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:20:27,027 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:27,061 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:20:27,061 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:20:32,732 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:32,737 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:32,752 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:32,759 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:32,765 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:32,775 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:32,807 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:32,857 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:43,119 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:43,119 basehttp 52973 132314579330752 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:20:43,124 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:43,132 basehttp 52973 132314937935552 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:20:43,136 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:43,175 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:20:43,184 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:20:43,189 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:20:43,193 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:43,243 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:43,300 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:20:43,358 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:34,607 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:34,611 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:21:34,611 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:21:34,638 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:21:34,646 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:34,660 basehttp 52973 132314946328256 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:21:34,703 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:34,735 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:21:34,761 basehttp 52973 132314937935552 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:21:34,772 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:34,793 basehttp 52973 132314946328256 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:21:34,806 basehttp 52973 132314579330752 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:21:37,639 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:21:37,639 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:37,645 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:21:37,654 basehttp 52973 132314937935552 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:21:37,667 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:21:37,671 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:37,678 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:21:37,683 basehttp 52973 132314937935552 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:21:37,727 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:37,736 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:37,793 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:37,797 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:56,183 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:56,192 basehttp 52973 132314579330752 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:21:56,210 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:56,211 basehttp 52973 132314946328256 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:21:56,219 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:56,270 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:21:59,811 basehttp 52973 132314587723456 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 1701
+INFO 2025-11-24 04:21:59,817 basehttp 52973 132314937935552 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 1195
+INFO 2025-11-24 04:21:59,823 basehttp 52973 132314946328256 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 1195
+INFO 2025-11-24 04:21:59,825 basehttp 52973 132314954720960 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 1701
+INFO 2025-11-24 04:21:59,834 basehttp 52973 132314963113664 "GET /api/support/knowledge-base/ HTTP/1.1" 200 2590
+INFO 2025-11-24 04:21:59,835 basehttp 52973 132314579330752 "GET /api/support/knowledge-base/ HTTP/1.1" 200 2590
+INFO 2025-11-24 04:22:04,391 basehttp 52973 132314587723456 "GET /api/support/knowledge-base/security-best-practices/ HTTP/1.1" 200 1184
+INFO 2025-11-24 04:22:04,397 basehttp 52973 132314946328256 "GET /api/support/knowledge-base/security-best-practices/ HTTP/1.1" 200 1184
+INFO 2025-11-24 04:22:10,482 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:22:10,485 basehttp 52973 132314946328256 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:22:10,493 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:22:10,494 basehttp 52973 132314587723456 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:22:10,510 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:22:10,545 basehttp 52973 132314587723456 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:22:10,548 basehttp 52973 132314937935552 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:22:10,560 basehttp 52973 132314579330752 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:22:10,570 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:22:10,623 basehttp 52973 132314587723456 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:22:10,674 basehttp 52973 132314579330752 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:22:10,694 basehttp 52973 132314946328256 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:24:07,175 autoreload 52973 132315029819520 /home/gnx/Desktop/GNX-WEB/backEnd/gnx/settings.py changed, reloading.
+INFO 2025-11-24 04:24:07,738 autoreload 83977 131338862956672 Watching for file changes with StatReloader
+INFO 2025-11-24 04:24:16,241 autoreload 83977 131338862956672 /home/gnx/Desktop/GNX-WEB/backEnd/home/admin.py changed, reloading.
+INFO 2025-11-24 04:24:16,788 autoreload 84045 132357143769216 Watching for file changes with StatReloader
+INFO 2025-11-24 04:24:33,983 autoreload 84099 135311184760960 Watching for file changes with StatReloader
+INFO 2025-11-24 04:25:10,382 basehttp 84099 135311101253312 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:25:10,384 basehttp 84099 135311092860608 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:25:10,389 basehttp 84099 135311118038720 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:25:10,393 basehttp 84099 135311109646016 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:25:10,410 basehttp 84099 135311092860608 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:25:10,415 basehttp 84099 135311118038720 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:25:18,598 basehttp 84099 135311109646016 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 04:25:18,612 basehttp 84099 135311092860608 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 04:25:18,623 basehttp 84099 135311092860608 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 04:25:18,623 basehttp 84099 135311101253312 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 04:25:18,632 basehttp 84099 135311109646016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:25:18,639 basehttp 84099 135311118038720 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:25:18,641 basehttp 84099 135311101253312 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:25:18,670 basehttp 84099 135311118038720 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:25:18,683 basehttp 84099 135311109646016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:25:18,734 basehttp 84099 135311109646016 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:25:51,385 autoreload 84099 135311184760960 /home/gnx/Desktop/GNX-WEB/backEnd/gnx/urls.py changed, reloading.
+INFO 2025-11-24 04:25:51,851 autoreload 84857 132282985349248 Watching for file changes with StatReloader
+INFO 2025-11-24 04:25:58,501 autoreload 85000 133819251503232 Watching for file changes with StatReloader
+INFO 2025-11-24 04:26:07,341 basehttp 85000 133819185231552 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:26:07,364 basehttp 85000 133819185231552 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:26:18,468 autoreload 85000 133819251503232 /home/gnx/Desktop/GNX-WEB/backEnd/gnx/urls.py changed, reloading.
+INFO 2025-11-24 04:26:19,196 autoreload 85174 127287963058304 Watching for file changes with StatReloader
+INFO 2025-11-24 04:29:34,220 autoreload 85174 127287963058304 /home/gnx/Desktop/GNX-WEB/backEnd/home/admin.py changed, reloading.
+INFO 2025-11-24 04:29:34,812 autoreload 86688 135398579466368 Watching for file changes with StatReloader
+INFO 2025-11-24 04:30:00,379 basehttp 86688 135398432958144 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:30:00,379 basehttp 86688 135398441350848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:30:00,396 basehttp 86688 135398432958144 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:30:00,396 basehttp 86688 135398441350848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:30:00,449 basehttp 86688 135398424565440 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:30:00,452 basehttp 86688 135398432958144 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:33:23,206 autoreload 86688 135398579466368 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:23,824 autoreload 88314 125284819845248 Watching for file changes with StatReloader
+INFO 2025-11-24 04:33:28,359 autoreload 88314 125284819845248 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:28,930 autoreload 88339 124892019871872 Watching for file changes with StatReloader
+INFO 2025-11-24 04:33:32,412 autoreload 88339 124892019871872 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:33,014 autoreload 88376 125040744599680 Watching for file changes with StatReloader
+INFO 2025-11-24 04:33:37,560 autoreload 88376 125040744599680 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:38,128 autoreload 88396 138172188668032 Watching for file changes with StatReloader
+INFO 2025-11-24 04:33:42,637 autoreload 88396 138172188668032 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:43,229 autoreload 88434 125791362052224 Watching for file changes with StatReloader
+INFO 2025-11-24 04:33:47,740 autoreload 88434 125791362052224 /home/gnx/Desktop/GNX-WEB/backEnd/support/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:48,386 autoreload 88455 130157430042752 Watching for file changes with StatReloader
+INFO 2025-11-24 04:33:52,900 autoreload 88455 130157430042752 /home/gnx/Desktop/GNX-WEB/backEnd/support/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:53,503 autoreload 88530 136663927410816 Watching for file changes with StatReloader
+INFO 2025-11-24 04:33:56,976 autoreload 88530 136663927410816 /home/gnx/Desktop/GNX-WEB/backEnd/support/email_service.py changed, reloading.
+INFO 2025-11-24 04:33:57,566 autoreload 88604 134067845795968 Watching for file changes with StatReloader
+INFO 2025-11-24 04:34:02,071 autoreload 88604 134067845795968 /home/gnx/Desktop/GNX-WEB/backEnd/support/email_service.py changed, reloading.
+INFO 2025-11-24 04:34:02,686 autoreload 88650 124723265736832 Watching for file changes with StatReloader
+INFO 2025-11-24 04:34:07,170 autoreload 88650 124723265736832 /home/gnx/Desktop/GNX-WEB/backEnd/support/email_service.py changed, reloading.
+INFO 2025-11-24 04:34:07,783 autoreload 88670 127930236620928 Watching for file changes with StatReloader
+INFO 2025-11-24 04:34:23,613 autoreload 88670 127930236620928 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 04:34:24,217 autoreload 88744 132719206400128 Watching for file changes with StatReloader
+INFO 2025-11-24 04:34:29,736 autoreload 88744 132719206400128 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 04:34:30,340 autoreload 88780 124666813874304 Watching for file changes with StatReloader
+INFO 2025-11-24 04:34:34,857 autoreload 88780 124666813874304 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 04:34:35,497 autoreload 88816 124753758490752 Watching for file changes with StatReloader
+INFO 2025-11-24 04:34:39,987 autoreload 88816 124753758490752 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 04:34:40,598 autoreload 88854 129916938145920 Watching for file changes with StatReloader
+INFO 2025-11-24 04:34:58,433 autoreload 88854 129916938145920 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 04:34:59,136 autoreload 89020 126851411910784 Watching for file changes with StatReloader
+INFO 2025-11-24 04:35:06,963 autoreload 89091 140305236639872 Watching for file changes with StatReloader
+INFO 2025-11-24 04:35:14,295 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:35:14,305 basehttp 89091 140305093355200 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:35:14,312 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:31,758 basehttp 89091 140305093355200 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:31,760 basehttp 89091 140305101747904 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:31,761 basehttp 89091 140305083913920 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:31,766 basehttp 89091 140305075521216 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:31,785 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:31,786 basehttp 89091 140305083913920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:36:31,792 basehttp 89091 140305093355200 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:36:31,794 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:36:31,847 basehttp 89091 140305083913920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:36:31,848 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:31,853 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:36:31,859 basehttp 89091 140305093355200 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:36:31,893 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:31,951 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:31,957 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:32,001 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:43,424 basehttp 89091 140305101747904 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:36:43,426 basehttp 89091 140305075521216 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:36:43,429 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:36:43,433 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:43,460 basehttp 89091 140305075521216 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:36:43,465 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:36:43,469 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:43,473 basehttp 89091 140305101747904 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:36:43,531 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:43,588 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:43,591 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:43,603 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:52,706 basehttp 89091 140305093355200 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:52,719 basehttp 89091 140305083913920 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:52,722 basehttp 89091 140305101747904 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:52,722 basehttp 89091 140305075521216 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:52,733 basehttp 89091 140305067128512 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 04:36:52,743 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:52,747 basehttp 89091 140305075521216 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:36:52,755 basehttp 89091 140305083913920 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:36:52,763 basehttp 89091 140305067128512 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:36:52,767 basehttp 89091 140305101747904 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:36:52,792 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:52,804 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:59,272 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:59,272 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:36:59,295 basehttp 89091 140305101747904 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:36:59,303 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:59,304 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:36:59,351 basehttp 89091 140305093355200 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:37:29,448 basehttp 89091 140305075521216 "OPTIONS /api/contact/submissions/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:37:29,545 email_service 89091 140305093355200 Contact submission notification sent for submission #8
+INFO 2025-11-24 04:37:29,546 email_service 89091 140305093355200 Contact submission confirmation sent to sales@gnxsoft.com for submission #8
+INFO 2025-11-24 04:37:29,546 basehttp 89091 140305093355200 "POST /api/contact/submissions/ HTTP/1.1" 201 116
+INFO 2025-11-24 04:39:37,176 basehttp 89091 140305067128512 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:39:37,181 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:39:37,184 basehttp 89091 140305093355200 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:39:37,191 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:37,192 basehttp 89091 140305101747904 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:39:37,205 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:37,228 basehttp 89091 140305101747904 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:39:37,229 basehttp 89091 140305083913920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:39:37,234 basehttp 89091 140305067128512 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:39:37,239 basehttp 89091 140305093355200 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:39:37,259 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:37,316 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:37,379 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:37,380 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:45,581 basehttp 89091 140305057687232 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 04:39:45,583 basehttp 89091 140304569071296 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 04:39:45,583 basehttp 89091 140305049294528 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:39:45,588 basehttp 89091 140304560678592 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 04:39:45,590 basehttp 89091 140305057687232 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 04:39:45,615 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:45,673 basehttp 89091 140304569071296 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:39:45,683 basehttp 89091 140304560678592 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:39:45,683 basehttp 89091 140305057687232 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:39:45,687 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:45,700 basehttp 89091 140304552285888 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:39:45,737 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:55,861 basehttp 89091 140304560678592 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:39:55,870 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:55,878 basehttp 89091 140304560678592 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:39:55,883 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:55,934 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:39:55,984 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:44:00,040 basehttp 89091 140305101747904 "GET /api/services/ HTTP/1.1" 200 9191
+INFO 2025-11-24 04:44:00,133 basehttp 89091 140305101747904 "GET /api/services/enterprise-cloud-migration-services/ HTTP/1.1" 200 3840
+INFO 2025-11-24 04:44:00,460 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:44:00,483 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:44:00,487 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:44:00,495 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:44:00,525 basehttp 89091 140305101747904 "GET /media/services/images/enterprise-cloud-migration-services_T1zGGOV.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 04:44:00,533 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:44:00,585 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:32,338 basehttp 89091 140305083913920 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:45:32,346 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:45:32,352 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:32,356 basehttp 89091 140305083913920 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 04:45:32,371 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:45:32,378 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:32,409 basehttp 89091 140305083913920 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 04:45:32,427 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:32,480 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:36,557 basehttp 89091 140305101747904 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:45:36,567 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:36,576 basehttp 89091 140305083913920 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:45:36,577 basehttp 89091 140305093355200 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:45:36,593 basehttp 89091 140305075521216 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:45:36,600 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:36,608 basehttp 89091 140305083913920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:45:36,619 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:45:36,619 basehttp 89091 140305093355200 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:45:36,626 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:36,631 basehttp 89091 140305075521216 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:45:36,701 basehttp 89091 140305057687232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:36,706 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:45:36,713 basehttp 89091 140305101747904 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:50:29,157 basehttp 89091 140305075521216 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
+INFO 2025-11-24 04:50:29,168 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:50:29,172 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:50:29,192 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:50:29,200 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:50:29,202 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:50:29,257 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:50:29,266 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:50:29,313 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:50:29,338 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:50:29,402 basehttp 89091 140305067128512 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:50:29,498 basehttp 89091 140305067128512 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:50:29,502 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 04:51:10,542 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:51:10,545 basehttp 89091 140305083913920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:51:10,555 basehttp 89091 140305101747904 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:51:10,559 basehttp 89091 140305075521216 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:51:10,560 basehttp 89091 140305057687232 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:51:10,566 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:51:10,599 basehttp 89091 140305075521216 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:51:10,600 basehttp 89091 140305101747904 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:51:10,607 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:51:10,615 basehttp 89091 140305057687232 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:51:10,620 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:51:10,678 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:51:10,733 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:51:10,796 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9191
+INFO 2025-11-24 04:57:34,243 basehttp 89091 140305057687232 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 04:57:34,244 basehttp 89091 140305075521216 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 04:57:34,251 basehttp 89091 140305083913920 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 04:57:34,251 basehttp 89091 140305101747904 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:57:34,256 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9664
+INFO 2025-11-24 04:57:34,269 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9664
+INFO 2025-11-24 04:57:34,322 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9664
+INFO 2025-11-24 04:57:45,257 basehttp 89091 140305093355200 "GET /api/services/replication-of-data/ HTTP/1.1" 200 3348
+INFO 2025-11-24 04:57:45,508 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9664
+INFO 2025-11-24 04:57:45,537 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:57:45,541 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9664
+INFO 2025-11-24 04:57:45,552 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 04:57:45,579 basehttp 89091 140305093355200 "GET /media/services/images/replication-of-data.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 04:57:45,593 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9664
+INFO 2025-11-24 04:57:45,648 basehttp 89091 140305067128512 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9664
+INFO 2025-11-24 04:57:45,893 basehttp 89091 140305049294528 "GET /api/services/ HTTP/1.1" 200 9664
+WARNING 2025-11-24 05:00:01,732 log 89091 140305067128512 Not Found: /api/services/replication-of-data/
+WARNING 2025-11-24 05:00:01,732 basehttp 89091 140305067128512 "GET /api/services/replication-of-data/ HTTP/1.1" 404 48
+INFO 2025-11-24 05:00:02,390 basehttp 89091 140305083913920 "GET /api/services/ HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:05,304 basehttp 89091 140305075521216 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:00:05,308 basehttp 89091 140305057687232 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:00:05,312 basehttp 89091 140305049294528 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:00:05,320 basehttp 89091 140305101747904 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:00:05,321 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:05,331 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:05,384 basehttp 89091 140305049294528 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:00:05,385 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:00:05,391 basehttp 89091 140305075521216 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:00:05,395 basehttp 89091 140305101747904 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:00:05,402 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:05,458 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:05,525 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:05,532 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:35,169 basehttp 89091 140305067128512 "GET /api/services/enterprise-api-integration-services/ HTTP/1.1" 200 3231
+INFO 2025-11-24 05:00:35,428 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:35,461 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:00:35,466 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:35,477 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:35,502 basehttp 89091 140305067128512 "GET /media/services/images/enterprise-api-integration-services.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 05:00:35,511 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:00:35,528 basehttp 89091 140305083913920 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:00:35,855 basehttp 89091 140304569071296 "GET /api/services/ HTTP/1.1" 200 10594
+INFO 2025-11-24 05:02:39,898 basehttp 89091 140305083913920 "GET /api/services/enterprise-api-integration-services/ HTTP/1.1" 200 3231
+INFO 2025-11-24 05:02:40,600 basehttp 89091 140305075521216 "GET /api/services/ HTTP/1.1" 200 10594
+INFO 2025-11-24 05:02:41,204 basehttp 89091 140305075521216 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 05:02:41,210 basehttp 89091 140305057687232 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 05:02:41,220 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:02:41,227 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:02:41,281 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:02:41,888 basehttp 89091 140305083913920 "GET /media/services/images/enterprise-api-integration-services.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 05:03:02,725 basehttp 89091 140305083913920 "GET /api/services/enterprise-data-replication-synchronization-services/ HTTP/1.1" 200 3482
+INFO 2025-11-24 05:03:02,965 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:02,999 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:03,004 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:03,018 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:03,035 basehttp 89091 140305083913920 "GET /media/services/images/enterprise-data-replication-synchronization-services.jpg HTTP/1.1" 200 111096
+INFO 2025-11-24 05:03:03,056 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:03,109 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:03,481 basehttp 89091 140305101747904 "GET /api/services/ HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:27,716 basehttp 89091 140305057687232 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:03:27,716 basehttp 89091 140305049294528 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 05:03:27,725 basehttp 89091 140305101747904 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 05:03:27,731 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:27,739 basehttp 89091 140305057687232 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:03:27,739 basehttp 89091 140305101747904 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:03:27,745 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:27,750 basehttp 89091 140305049294528 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:03:27,760 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:27,791 basehttp 89091 140305101747904 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:03:27,791 basehttp 89091 140305057687232 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:03:27,798 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:27,807 basehttp 89091 140305049294528 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:03:27,812 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:27,862 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:27,914 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:27,969 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:33,053 basehttp 89091 140305049294528 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:03:33,059 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:33,070 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:33,084 basehttp 89091 140305057687232 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:33,089 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:33,098 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:03:33,164 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:33,171 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:03:33,213 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:33,253 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:03:33,315 basehttp 89091 140305049294528 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:03:33,338 basehttp 89091 140305075521216 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:03:33,397 basehttp 89091 140305049294528 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:03:39,056 basehttp 89091 140305057687232 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:03:39,072 basehttp 89091 140305049294528 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:39,081 basehttp 89091 140305057687232 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 05:03:39,085 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:39,099 basehttp 89091 140305049294528 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:39,104 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:39,132 basehttp 89091 140305057687232 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 05:03:39,154 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:39,205 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:43,114 basehttp 89091 140305075521216 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:03:43,125 basehttp 89091 140305083913920 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:03:43,128 basehttp 89091 140305101747904 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:43,129 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:43,129 basehttp 89091 140305057687232 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:03:43,190 basehttp 89091 140305049294528 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:03:43,190 basehttp 89091 140305083913920 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:03:43,192 basehttp 89091 140305101747904 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:03:43,192 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:43,198 basehttp 89091 140305057687232 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:03:43,235 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:43,305 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:43,313 basehttp 89091 140305075521216 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:03:43,363 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:06:01,671 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:06:01,672 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:06:01,687 basehttp 89091 140305075521216 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:06:01,691 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:06:01,770 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:06:01,850 basehttp 89091 140305049294528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:07:18,012 autoreload 101823 134826554716288 Watching for file changes with StatReloader
+INFO 2025-11-24 05:07:47,862 basehttp 101823 134826488231616 "OPTIONS /api/contact/submissions/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:07:54,842 email_service 101823 134826488231616 Contact submission notification sent for submission #9
+INFO 2025-11-24 05:08:00,020 email_service 101823 134826488231616 Contact submission confirmation sent to sales@gnxsoft.com for submission #9
+INFO 2025-11-24 05:08:00,024 basehttp 101823 134826488231616 "POST /api/contact/submissions/ HTTP/1.1" 201 116
+INFO 2025-11-24 05:08:33,710 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:08:33,711 basehttp 101823 134826388608704 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:08:33,717 basehttp 101823 134826380216000 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:08:33,724 basehttp 101823 134826405394112 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:08:33,729 basehttp 101823 134826397001408 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:08:33,737 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:08:33,760 basehttp 101823 134826397001408 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:08:33,765 basehttp 101823 134826380216000 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:08:33,772 basehttp 101823 134826405394112 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:08:33,773 basehttp 101823 134826388608704 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:08:33,788 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:08:33,840 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:08:33,901 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:08:33,902 basehttp 101823 134826397001408 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10594
+INFO 2025-11-24 05:08:38,427 basehttp 101823 134826363430592 "GET /api/services/enterprise-backend-development-services/ HTTP/1.1" 200 3489
+INFO 2025-11-24 05:08:38,634 basehttp 101823 134826397001408 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9618
+INFO 2025-11-24 05:08:38,670 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9618
+INFO 2025-11-24 05:08:38,670 basehttp 101823 134826397001408 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:08:38,686 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9618
+INFO 2025-11-24 05:08:38,718 basehttp 101823 134826397001408 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:08:38,738 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9618
+INFO 2025-11-24 05:08:39,201 basehttp 101823 134826371823296 "GET /api/services/ HTTP/1.1" 200 9618
+INFO 2025-11-24 05:08:43,174 basehttp 101823 134826363430592 "GET /api/services/enterprise-backend-development-services/ HTTP/1.1" 200 3489
+INFO 2025-11-24 05:08:43,844 basehttp 101823 134826371823296 "GET /api/services/ HTTP/1.1" 200 9618
+INFO 2025-11-24 05:08:44,331 basehttp 101823 134826397001408 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9618
+INFO 2025-11-24 05:08:44,381 basehttp 101823 134826397001408 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:08:44,385 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 9618
+INFO 2025-11-24 05:09:13,395 basehttp 101823 134826363430592 "GET /api/services/enterprise-backend-development-services/ HTTP/1.1" 200 3654
+INFO 2025-11-24 05:09:14,147 basehttp 101823 134826371823296 "GET /api/services/ HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:14,782 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:14,823 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:14,826 basehttp 101823 134826397001408 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:09:15,498 basehttp 101823 134826363430592 "GET /media/services/images/enterprise-backend-development-services_VzGwXp3.jpg HTTP/1.1" 200 89797
+INFO 2025-11-24 05:09:24,630 basehttp 101823 134826363430592 "GET /api/services/enterprise-data-replication-synchronization-services/ HTTP/1.1" 200 3501
+INFO 2025-11-24 05:09:24,827 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:24,842 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:24,845 basehttp 101823 134826397001408 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:09:24,855 basehttp 101823 134826405394112 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:24,862 basehttp 101823 134826397001408 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:09:24,873 basehttp 101823 134826405394112 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:24,887 basehttp 101823 134826363430592 "GET /media/services/images/enterprise-data-replication-synchronization-services_5Ul87if.jpg HTTP/1.1" 200 146813
+INFO 2025-11-24 05:09:25,334 basehttp 101823 134826371823296 "GET /api/services/ HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:33,163 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:33,164 basehttp 101823 134826405394112 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:09:33,166 basehttp 101823 134826380216000 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:09:33,169 basehttp 101823 134826388608704 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:09:33,181 basehttp 101823 134826397001408 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:09:33,191 basehttp 101823 134826380216000 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:09:33,200 basehttp 101823 134826405394112 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:09:33,208 basehttp 101823 134826388608704 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:09:33,208 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:33,213 basehttp 101823 134826397001408 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:09:33,260 basehttp 101823 134826405394112 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:33,319 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:33,331 basehttp 101823 134826405394112 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:09:33,381 basehttp 101823 134826488231616 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:10:38,355 autoreload 101823 134826554716288 /home/gnx/Desktop/GNX-WEB/backEnd/support/email_service.py changed, reloading.
+INFO 2025-11-24 05:10:39,001 autoreload 103796 130533291876480 Watching for file changes with StatReloader
+INFO 2025-11-24 05:10:42,598 autoreload 103796 130533291876480 /home/gnx/Desktop/GNX-WEB/backEnd/support/email_service.py changed, reloading.
+INFO 2025-11-24 05:10:43,249 autoreload 103816 138762698199168 Watching for file changes with StatReloader
+INFO 2025-11-24 05:10:45,692 autoreload 103816 138762698199168 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 05:10:46,311 autoreload 103858 125854608879744 Watching for file changes with StatReloader
+INFO 2025-11-24 05:10:50,781 autoreload 103858 125854608879744 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 05:10:51,434 autoreload 103880 135018995429504 Watching for file changes with StatReloader
+INFO 2025-11-24 05:10:55,928 autoreload 103880 135018995429504 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 05:10:56,646 autoreload 104010 138074250317952 Watching for file changes with StatReloader
+INFO 2025-11-24 05:11:02,199 autoreload 104010 138074250317952 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 05:11:02,849 autoreload 104030 128894296150144 Watching for file changes with StatReloader
+INFO 2025-11-24 05:11:07,351 autoreload 104030 128894296150144 /home/gnx/Desktop/GNX-WEB/backEnd/career/email_service.py changed, reloading.
+INFO 2025-11-24 05:11:07,922 autoreload 104300 132201516687488 Watching for file changes with StatReloader
+INFO 2025-11-24 05:11:13,463 autoreload 104300 132201516687488 /home/gnx/Desktop/GNX-WEB/backEnd/contact/email_service.py changed, reloading.
+INFO 2025-11-24 05:11:14,069 autoreload 104321 125997705937024 Watching for file changes with StatReloader
+INFO 2025-11-24 05:11:16,978 basehttp 104321 125997546460864 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 05:11:16,979 basehttp 104321 125997538068160 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 05:11:17,015 basehttp 104321 125997554853568 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:11:17,019 basehttp 104321 125997538068160 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:11:17,032 basehttp 104321 125997639792320 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:11:17,033 basehttp 104321 125997554853568 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:11:17,037 basehttp 104321 125997563246272 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:11:17,037 basehttp 104321 125997546460864 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:17,050 basehttp 104321 125997639792320 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:11:17,054 basehttp 104321 125997563246272 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:11:17,069 basehttp 104321 125997538068160 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:11:17,090 basehttp 104321 125997546460864 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:17,097 basehttp 104321 125997554853568 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:17,138 basehttp 104321 125997546460864 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:17,156 basehttp 104321 125997554853568 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:17,157 basehttp 104321 125997563246272 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:18,701 autoreload 104321 125997705937024 /home/gnx/Desktop/GNX-WEB/backEnd/contact/email_service.py changed, reloading.
+INFO 2025-11-24 05:11:19,342 autoreload 104429 129629494931584 Watching for file changes with StatReloader
+INFO 2025-11-24 05:11:22,827 basehttp 104429 129629360748224 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:22,830 basehttp 104429 129629352355520 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:11:22,846 basehttp 104429 129629352355520 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:22,856 basehttp 104429 129629343962816 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:11:22,862 basehttp 104429 129629360748224 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:22,899 basehttp 104429 129629352355520 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:11:24,865 basehttp 104429 129629360748224 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 1195
+INFO 2025-11-24 05:11:24,890 basehttp 104429 129629317736128 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 1702
+INFO 2025-11-24 05:11:24,892 basehttp 104429 129629343962816 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 1702
+INFO 2025-11-24 05:11:24,895 basehttp 104429 129629326128832 "GET /api/support/knowledge-base/ HTTP/1.1" 200 2591
+INFO 2025-11-24 05:11:24,897 basehttp 104429 129629352355520 "GET /api/support/knowledge-base/ HTTP/1.1" 200 2591
+INFO 2025-11-24 05:11:24,898 basehttp 104429 129629334521536 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 1195
+INFO 2025-11-24 05:13:41,992 autoreload 105151 130178928046208 Watching for file changes with StatReloader
+INFO 2025-11-24 05:15:37,901 autoreload 105604 140341654843520 Watching for file changes with StatReloader
+INFO 2025-11-24 05:15:39,318 autoreload 105604 140341654843520 /home/gnx/Desktop/GNX-WEB/backEnd/support/signals.py changed, reloading.
+INFO 2025-11-24 05:15:39,842 autoreload 105622 129914650697856 Watching for file changes with StatReloader
+INFO 2025-11-24 05:15:44,555 basehttp 105622 129914583905984 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:15:44,555 basehttp 105622 129914506311360 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:15:44,572 basehttp 105622 129914506311360 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:15:44,576 basehttp 105622 129914583905984 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:15:44,637 basehttp 105622 129914583905984 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:15:44,687 basehttp 105622 129914583905984 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:16:13,093 email_service 105622 129914583905984 Contact submission notification sent for submission #10
+INFO 2025-11-24 05:16:18,209 email_service 105622 129914583905984 Contact submission confirmation sent to sales@gnxsoft.com for submission #10
+INFO 2025-11-24 05:16:18,216 basehttp 105622 129914583905984 "POST /api/contact/submissions/ HTTP/1.1" 201 117
+INFO 2025-11-24 05:19:08,823 autoreload 105622 129914650697856 /home/gnx/Desktop/GNX-WEB/backEnd/contact/email_service.py changed, reloading.
+INFO 2025-11-24 05:19:09,359 autoreload 106782 138261160657024 Watching for file changes with StatReloader
+INFO 2025-11-24 05:19:29,356 autoreload 106782 138261160657024 /home/gnx/Desktop/GNX-WEB/backEnd/contact/email_service.py changed, reloading.
+INFO 2025-11-24 05:19:29,952 autoreload 106858 132773243768960 Watching for file changes with StatReloader
+INFO 2025-11-24 05:21:46,473 basehttp 106858 132773152016064 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:21:46,483 basehttp 106858 132773168801472 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:21:46,486 basehttp 106858 132772807046848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:21:46,495 basehttp 106858 132773160408768 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:21:46,495 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:46,520 basehttp 106858 132773160408768 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:21:46,523 basehttp 106858 132772807046848 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:21:46,527 basehttp 106858 132773152016064 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:21:46,532 basehttp 106858 132773168801472 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:21:46,536 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:46,596 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:46,661 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:46,671 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:46,682 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:48,831 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:48,841 basehttp 106858 132773168801472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:21:48,866 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:48,869 basehttp 106858 132773160408768 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:21:48,873 basehttp 106858 132773168801472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:21:48,895 basehttp 106858 132773160408768 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:21:48,925 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:48,925 basehttp 106858 132772807046848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:48,954 basehttp 106858 132772807046848 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:21:49,021 basehttp 106858 132773160408768 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:21:49,037 basehttp 106858 132773177194176 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:21:49,054 basehttp 106858 132772807046848 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:21:57,210 basehttp 106858 132772807046848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:21:57,210 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:57,222 basehttp 106858 132773177194176 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 05:21:57,234 basehttp 106858 132772807046848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:21:57,240 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:57,244 basehttp 106858 132773177194176 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 05:21:57,296 basehttp 106858 132772807046848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:21:57,301 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:02,298 basehttp 106858 132773160408768 "OPTIONS /api/blog/categories/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:22:02,299 basehttp 106858 132773168801472 "OPTIONS /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 0
+INFO 2025-11-24 05:22:02,322 basehttp 106858 132772807046848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:22:02,331 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:02,335 basehttp 106858 132773168801472 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 05:22:02,351 basehttp 106858 132773160408768 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 05:22:02,355 basehttp 106858 132772807046848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:22:02,360 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:02,387 basehttp 106858 132773168801472 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 05:22:02,408 basehttp 106858 132773160408768 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 05:22:02,419 basehttp 106858 132772807046848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:02,426 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:05,431 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:05,439 basehttp 106858 132772807046848 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:22:05,442 basehttp 106858 132773168801472 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:22:05,448 basehttp 106858 132773152016064 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:22:05,462 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:05,462 basehttp 106858 132773177194176 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:22:05,475 basehttp 106858 132772807046848 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:22:05,484 basehttp 106858 132773168801472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:22:05,487 basehttp 106858 132773177194176 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:22:05,488 basehttp 106858 132773152016064 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:22:05,513 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:05,565 basehttp 106858 132772807046848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:05,574 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:05,583 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:55,822 basehttp 106858 132773177194176 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:22:55,823 basehttp 106858 132772807046848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:55,838 basehttp 106858 132773160408768 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:22:55,844 basehttp 106858 132773177194176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:55,903 basehttp 106858 132773160408768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:22:55,904 basehttp 106858 132772807046848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:23:24,162 autoreload 106858 132773243768960 /home/gnx/Desktop/GNX-WEB/backEnd/contact/email_service.py changed, reloading.
+INFO 2025-11-24 05:23:24,951 autoreload 108393 126550715764864 Watching for file changes with StatReloader
+INFO 2025-11-24 05:23:52,818 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:23:52,818 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:23:52,834 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:23:52,841 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:23:52,881 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:23:52,896 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:23:52,932 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:23:52,950 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:25:13,219 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:25:13,226 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:25:13,233 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:25:13,238 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:25:13,292 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:25:13,347 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:25:16,565 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 1702
+INFO 2025-11-24 05:25:16,587 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 1702
+INFO 2025-11-24 05:25:16,589 basehttp 108393 126550623110848 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 1195
+INFO 2025-11-24 05:25:16,594 basehttp 108393 126550649337536 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 1195
+INFO 2025-11-24 05:25:16,602 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/ HTTP/1.1" 200 2591
+INFO 2025-11-24 05:25:16,602 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/ HTTP/1.1" 200 2591
+INFO 2025-11-24 05:26:14,981 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/security-best-practices/ HTTP/1.1" 200 1184
+INFO 2025-11-24 05:26:14,989 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/security-best-practices/ HTTP/1.1" 200 1184
+INFO 2025-11-24 05:26:17,356 basehttp 108393 126550649337536 "OPTIONS /api/support/knowledge-base/security-best-practices/mark-helpful/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:26:17,372 basehttp 108393 126550649337536 "POST /api/support/knowledge-base/security-best-practices/mark-helpful/ HTTP/1.1" 200 41
+INFO 2025-11-24 05:26:26,566 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:26:26,570 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:26:26,579 basehttp 108393 126550640944832 "OPTIONS /api/policies/terms/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:26:26,584 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:26:26,629 basehttp 108393 126550640944832 "GET /api/policies/terms/ HTTP/1.1" 200 13058
+INFO 2025-11-24 05:26:37,647 basehttp 108393 126550271850176 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:26:37,651 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:26:37,655 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:26:37,661 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:26:37,677 basehttp 108393 126550263457472 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:26:37,677 basehttp 108393 126550271850176 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:26:37,685 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:26:37,688 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:26:37,698 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:26:37,702 basehttp 108393 126550263457472 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:26:37,749 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:26:37,800 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:26:37,852 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:26:37,906 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:29:21,740 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:29:21,748 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:29:21,756 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:29:21,762 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:29:21,812 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:29:21,862 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:29:25,040 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:29:25,041 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:29:25,053 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:29:25,059 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:29:25,065 basehttp 108393 126550632552128 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:29:25,071 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:29:35,244 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/enterprise-billing-guide/ HTTP/1.1" 200 1938
+INFO 2025-11-24 05:29:35,249 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/enterprise-billing-guide/ HTTP/1.1" 200 1938
+INFO 2025-11-24 05:30:04,972 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/ai-machine-learning-implementation/ HTTP/1.1" 200 2301
+INFO 2025-11-24 05:30:04,978 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/ai-machine-learning-implementation/ HTTP/1.1" 200 2301
+INFO 2025-11-24 05:31:48,062 basehttp 108393 126550263457472 "GET /api/support/categories/ HTTP/1.1" 200 2883
+INFO 2025-11-24 05:31:48,065 basehttp 108393 126550649337536 "GET /api/support/categories/ HTTP/1.1" 200 2883
+INFO 2025-11-24 05:32:16,288 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:32:16,299 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:32:16,317 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:32:16,326 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:32:16,328 basehttp 108393 126550271850176 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:32:16,328 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:32:30,458 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:32:30,459 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:32:30,476 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:32:30,480 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:32:30,526 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:32:30,578 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:32:58,123 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:32:58,131 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:32:58,143 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:32:58,148 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:32:58,207 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:32:58,213 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:33:04,838 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:33:04,850 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:33:04,854 basehttp 108393 126550632552128 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:33:04,857 basehttp 108393 126550640944832 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:33:04,870 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:33:04,872 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:34:11,849 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:34:11,863 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:34:11,878 basehttp 108393 126550632552128 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:34:11,902 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:34:11,906 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:34:11,908 basehttp 108393 126550623110848 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:34:18,691 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:34:18,695 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:34:18,699 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:34:24,844 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:34:24,846 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:34:24,854 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:35:23,726 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:35:23,731 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:35:23,740 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:35:25,891 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:35:25,900 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:35:25,901 basehttp 108393 126550632552128 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:35:25,918 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:35:25,918 basehttp 108393 126550649337536 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:35:25,918 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:36:29,542 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:36:29,543 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:36:29,552 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:36:45,005 basehttp 108393 126550263457472 "GET /api/support/categories/ HTTP/1.1" 200 2883
+INFO 2025-11-24 05:36:45,009 basehttp 108393 126550632552128 "GET /api/support/categories/ HTTP/1.1" 200 2883
+INFO 2025-11-24 05:37:08,086 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:37:08,105 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:37:08,109 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:37:08,113 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:37:08,120 basehttp 108393 126550623110848 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:37:08,123 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:37:12,455 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:37:12,458 basehttp 108393 126550632552128 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:37:12,463 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:37:37,044 basehttp 108393 126550632552128 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:37:37,049 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:37:37,050 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:38:13,699 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:38:13,700 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:38:13,710 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:38:22,595 basehttp 108393 126550649337536 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 05:38:22,599 basehttp 108393 126550263457472 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 05:38:22,610 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:38:22,623 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:38:22,674 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:38:25,454 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:38:25,480 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:38:25,487 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:38:25,489 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:38:25,494 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:38:25,496 basehttp 108393 126550623110848 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:38:40,235 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:38:40,266 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:38:40,278 basehttp 108393 126550632552128 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:38:40,281 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:38:40,282 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:38:40,288 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:38:56,273 basehttp 108393 126550632552128 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 05:38:56,274 basehttp 108393 126550632552128 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 05:38:56,283 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:38:56,292 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:38:56,327 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:38:58,797 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:38:58,828 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:38:58,840 basehttp 108393 126550640944832 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:38:58,844 basehttp 108393 126550271850176 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:38:58,847 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:38:58,847 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:39:59,306 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:39:59,307 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:39:59,324 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:00,741 basehttp 108393 126550271850176 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:40:00,756 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:40:00,769 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:40:00,771 basehttp 108393 126550640944832 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:40:00,781 basehttp 108393 126550649337536 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:40:00,783 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:40:10,125 basehttp 108393 126550271850176 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 05:40:10,126 basehttp 108393 126550640944832 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 05:40:10,143 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:40:10,147 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:10,202 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:12,580 basehttp 108393 126550263457472 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:40:12,582 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:40:12,601 basehttp 108393 126550271850176 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:40:12,606 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:40:12,621 basehttp 108393 126550623110848 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:40:12,621 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:40:40,453 basehttp 108393 126550623110848 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:40:40,455 basehttp 108393 126550271850176 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:40:40,466 basehttp 108393 126550649337536 "GET /api/support/knowledge-base/featured/ HTTP/1.1" 200 2824
+INFO 2025-11-24 05:40:40,475 basehttp 108393 126550640944832 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:40:40,483 basehttp 108393 126550263457472 "GET /api/support/knowledge-base-categories/ HTTP/1.1" 200 2361
+INFO 2025-11-24 05:40:40,486 basehttp 108393 126550632552128 "GET /api/support/knowledge-base/ HTTP/1.1" 200 4627
+INFO 2025-11-24 05:40:46,553 basehttp 108393 126550632552128 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 05:40:46,553 basehttp 108393 126550649337536 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:40:46,554 basehttp 108393 126550640944832 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 05:40:46,567 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:46,575 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:40:46,578 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:40:46,585 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:40:46,588 basehttp 108393 126550632552128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:40:46,599 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:40:46,599 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:46,632 basehttp 108393 126550632552128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:40:46,643 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:40:46,653 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:40:46,659 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:46,714 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:46,777 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:40:46,836 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:41:00,187 basehttp 108393 126550632552128 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 05:41:00,191 basehttp 108393 126550632552128 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:41:00,194 basehttp 108393 126550623110848 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 05:41:00,195 basehttp 108393 126550649337536 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 05:41:00,204 basehttp 108393 126550263457472 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 05:41:00,223 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:41:00,230 basehttp 108393 126550623110848 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:41:00,240 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:41:00,241 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:41:00,255 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:41:00,274 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:41:00,324 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:38,831 basehttp 108393 126550263457472 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:42:38,835 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:38,841 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:42:38,846 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:42:38,846 basehttp 108393 126550623110848 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:42:38,861 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:38,913 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:45,623 basehttp 108393 126550263457472 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:42:45,633 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:42:45,633 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:42:45,638 basehttp 108393 126550623110848 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:42:45,643 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:45,662 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:45,717 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:53,822 basehttp 108393 126550640944832 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:42:53,823 basehttp 108393 126550623110848 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 05:42:53,823 basehttp 108393 126550263457472 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 05:42:53,826 basehttp 108393 126550649337536 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 05:42:53,830 basehttp 108393 126550632552128 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 05:42:53,837 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:42:53,843 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:53,856 basehttp 108393 126550623110848 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:42:53,862 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:42:53,891 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:42:53,903 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:53,956 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:57,442 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:42:57,452 basehttp 108393 126550623110848 "OPTIONS /api/policies/privacy/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:42:57,452 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:57,464 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:42:57,505 basehttp 108393 126550623110848 "GET /api/policies/privacy/ HTTP/1.1" 200 59592
+INFO 2025-11-24 05:43:37,172 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:43:37,179 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:43:37,187 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:43:37,192 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:43:37,249 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:43:37,253 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:43:49,332 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:43:49,356 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:44:44,321 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:44:44,324 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:44:44,338 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:44:44,339 basehttp 108393 126550263457472 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:44:44,343 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:44:44,351 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:44:44,384 basehttp 108393 126550263457472 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:44:44,389 basehttp 108393 126550632552128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:44:44,390 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:44:44,397 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:44:44,404 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:44:44,455 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:44:44,515 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:44:44,515 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:45:17,745 basehttp 108393 126550640944832 "OPTIONS /api/blog/categories/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:45:17,745 basehttp 108393 126550649337536 "OPTIONS /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 0
+INFO 2025-11-24 05:45:17,765 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:45:17,768 basehttp 108393 126550640944832 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 05:45:17,771 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:45:17,791 basehttp 108393 126550632552128 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 05:45:17,796 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:45:17,801 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:45:17,825 basehttp 108393 126550640944832 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 05:45:17,829 basehttp 108393 126550632552128 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 05:45:17,849 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:45:17,911 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:21,519 basehttp 108393 126550263457472 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 05:52:21,528 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:21,540 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:21,551 basehttp 108393 126550263457472 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 52
+INFO 2025-11-24 05:52:21,555 basehttp 108393 126550649337536 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 05:52:21,560 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:21,566 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:21,575 basehttp 108393 126550649337536 "GET /api/blog/categories/ HTTP/1.1" 200 1007
+INFO 2025-11-24 05:52:21,624 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:21,674 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:39,342 basehttp 108393 126550263457472 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:52:39,345 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:52:39,347 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:39,352 basehttp 108393 126550649337536 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:52:39,356 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:39,365 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:39,402 basehttp 108393 126550623110848 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:52:39,406 basehttp 108393 126550632552128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 2
+INFO 2025-11-24 05:52:39,412 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:39,424 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:39,425 basehttp 108393 126550649337536 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:52:39,433 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:39,471 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:39,489 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:49,631 basehttp 108393 126550623110848 "OPTIONS /api/about/page/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:52:49,639 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:49,645 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:49,669 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:49,676 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:49,694 basehttp 108393 126550623110848 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:52:49,731 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:49,758 basehttp 108393 126550632552128 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:52:49,782 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:49,820 basehttp 108393 126550640944832 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:52:49,898 basehttp 108393 126550632552128 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:52:49,900 basehttp 108393 126550623110848 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:52:49,921 basehttp 108393 126550640944832 "GET /api/about/page/ HTTP/1.1" 200 8597
+INFO 2025-11-24 05:52:52,536 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:52,555 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:52,560 basehttp 108393 126550623110848 "GET /api/blog/categories/ HTTP/1.1" 200 1418
+INFO 2025-11-24 05:52:52,564 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:52:52,585 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:52,601 basehttp 108393 126550623110848 "GET /api/blog/categories/ HTTP/1.1" 200 1418
+INFO 2025-11-24 05:52:52,601 basehttp 108393 126550640944832 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 5121
+INFO 2025-11-24 05:52:52,630 basehttp 108393 126550640944832 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 5121
+INFO 2025-11-24 05:52:52,637 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:52:52,692 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:00,748 basehttp 108393 126550649337536 "OPTIONS /api/blog/posts/latest/?limit=8 HTTP/1.1" 200 0
+INFO 2025-11-24 05:53:00,754 basehttp 108393 126550623110848 "OPTIONS /api/blog/posts/digital-transformation-strategies-for-success/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:53:00,762 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:00,768 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:00,795 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:00,796 basehttp 108393 126550623110848 "GET /api/blog/posts/digital-transformation-strategies-for-success/ HTTP/1.1" 200 3537
+INFO 2025-11-24 05:53:00,805 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:00,815 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=8 HTTP/1.1" 200 6678
+INFO 2025-11-24 05:53:00,857 basehttp 108393 126550632552128 "GET /api/blog/posts/digital-transformation-strategies-for-success/ HTTP/1.1" 200 3537
+INFO 2025-11-24 05:53:00,863 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:00,885 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=8 HTTP/1.1" 200 6678
+INFO 2025-11-24 05:53:00,914 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:17,293 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:17,295 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:53:17,315 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:17,324 basehttp 108393 126550632552128 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:53:17,335 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:17,344 basehttp 108393 126550263457472 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:53:17,364 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:17,368 basehttp 108393 126550632552128 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:53:17,381 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 05:53:17,420 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 05:53:17,426 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:17,488 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:17,507 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:17,567 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:24,911 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:24,919 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:24,938 basehttp 108393 126550640944832 "GET /api/blog/categories/ HTTP/1.1" 200 1418
+INFO 2025-11-24 05:53:24,945 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:24,951 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:24,971 basehttp 108393 126550640944832 "GET /api/blog/categories/ HTTP/1.1" 200 1418
+INFO 2025-11-24 05:53:24,972 basehttp 108393 126550623110848 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 5121
+INFO 2025-11-24 05:53:25,001 basehttp 108393 126550623110848 "GET /api/blog/posts/?page=1&page_size=6 HTTP/1.1" 200 5121
+INFO 2025-11-24 05:53:25,004 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:25,060 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:28,890 basehttp 108393 126550623110848 "OPTIONS /api/blog/posts/?category=enterprise-software&page=1&page_size=6 HTTP/1.1" 200 0
+INFO 2025-11-24 05:53:28,904 basehttp 108393 126550632552128 "GET /api/blog/posts/?category=enterprise-software&page=1&page_size=6 HTTP/1.1" 200 932
+INFO 2025-11-24 05:53:30,085 basehttp 108393 126550640944832 "OPTIONS /api/blog/posts/?category=best-practices&page=1&page_size=6 HTTP/1.1" 200 0
+INFO 2025-11-24 05:53:30,103 basehttp 108393 126550623110848 "GET /api/blog/posts/?category=best-practices&page=1&page_size=6 HTTP/1.1" 200 1734
+INFO 2025-11-24 05:53:30,968 basehttp 108393 126550632552128 "OPTIONS /api/blog/posts/?category=technology-trends&page=1&page_size=6 HTTP/1.1" 200 0
+INFO 2025-11-24 05:53:30,992 basehttp 108393 126550640944832 "GET /api/blog/posts/?category=technology-trends&page=1&page_size=6 HTTP/1.1" 200 905
+INFO 2025-11-24 05:53:31,602 basehttp 108393 126550623110848 "OPTIONS /api/blog/posts/?category=security-compliance&page=1&page_size=6 HTTP/1.1" 200 0
+INFO 2025-11-24 05:53:31,627 basehttp 108393 126550632552128 "GET /api/blog/posts/?category=security-compliance&page=1&page_size=6 HTTP/1.1" 200 891
+INFO 2025-11-24 05:53:33,921 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:33,922 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:33,938 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:33,946 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:33,958 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:33,960 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 392
+INFO 2025-11-24 05:53:34,001 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:53:34,053 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:56:53,373 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:56:53,390 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:56:53,394 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:56:53,409 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:56:53,448 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:56:53,460 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:56:53,499 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:56:53,550 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:57:04,578 basehttp 108393 126550623110848 "OPTIONS /api/career/jobs/sales-development-representative HTTP/1.1" 200 0
+INFO 2025-11-24 05:57:04,607 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:57:04,608 basehttp 108393 126550649337536 "GET /api/career/jobs/sales-development-representative HTTP/1.1" 200 1882
+INFO 2025-11-24 05:57:04,609 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:57:04,635 basehttp 108393 126550632552128 "GET /api/career/jobs/sales-development-representative HTTP/1.1" 200 1882
+INFO 2025-11-24 05:57:04,641 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:57:04,645 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:57:04,697 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:57:04,702 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:31,276 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:31,281 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:31,295 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:31,300 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:31,353 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:31,358 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:31,410 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:31,417 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:37,412 basehttp 108393 126550649337536 "OPTIONS /api/career/jobs/backend-developer-python-django HTTP/1.1" 200 0
+INFO 2025-11-24 05:58:37,424 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:37,433 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:37,433 basehttp 108393 126550649337536 "GET /api/career/jobs/backend-developer-python-django HTTP/1.1" 200 2223
+INFO 2025-11-24 05:58:37,452 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:37,457 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:37,483 basehttp 108393 126550649337536 "GET /api/career/jobs/backend-developer-python-django HTTP/1.1" 200 2223
+INFO 2025-11-24 05:58:37,505 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:37,558 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:49,268 basehttp 108393 126550649337536 "OPTIONS /api/case-studies/ HTTP/1.1" 200 0
+INFO 2025-11-24 05:58:49,280 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:49,288 basehttp 108393 126550649337536 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 05:58:49,292 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:49,301 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:49,306 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:49,337 basehttp 108393 126550649337536 "GET /api/case-studies/ HTTP/1.1" 200 5617
+INFO 2025-11-24 05:58:49,362 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:49,362 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:59,009 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:59,018 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:59,033 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:59,033 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:59,059 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:58:59,081 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:59,095 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:58:59,112 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:59:01,452 basehttp 108393 126550640944832 "OPTIONS /api/career/jobs/devops-engineer HTTP/1.1" 200 0
+INFO 2025-11-24 05:59:01,464 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:01,467 basehttp 108393 126550640944832 "GET /api/career/jobs/devops-engineer HTTP/1.1" 200 2187
+INFO 2025-11-24 05:59:01,475 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:59:01,486 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:01,492 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:59:01,518 basehttp 108393 126550640944832 "GET /api/career/jobs/devops-engineer HTTP/1.1" 200 2187
+INFO 2025-11-24 05:59:01,538 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:01,599 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:36,950 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:36,962 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:59:36,982 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:36,987 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:59:46,178 basehttp 108393 126550623110848 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:59:46,189 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:59:46,206 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:59:46,217 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:46,230 basehttp 108393 126550623110848 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 05:59:46,248 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 05:59:46,255 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 05:59:46,260 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:46,268 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 05:59:46,295 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 05:59:46,314 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:46,323 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:46,368 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 05:59:46,376 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,480 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,493 basehttp 108393 126550632552128 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:00:46,508 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:00:46,518 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:00:46,532 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,545 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,555 basehttp 108393 126550632552128 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:00:46,577 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:00:46,578 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:00:46,584 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,610 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,623 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:00:46,624 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,637 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,642 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,647 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,657 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:00:46,672 basehttp 108393 126550632552128 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:00:46,690 basehttp 108393 126550623110848 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:00:46,702 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:00:46,709 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,721 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:00:46,741 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,749 basehttp 108393 126550623110848 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:00:46,761 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:46,779 basehttp 108393 126550263457472 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:00:46,850 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:00:46,878 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:00:47,954 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:47,991 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:00:48,078 basehttp 108393 126550255064768 "GET /media/services/images/enterprise-backend-development-services_VzGwXp3.jpg HTTP/1.1" 200 89797
+INFO 2025-11-24 06:00:48,836 basehttp 108393 126550255064768 "GET /media/services/images/enterprise-frontend-development-services_gKqfkLg.jpg HTTP/1.1" 200 72507
+INFO 2025-11-24 06:00:49,059 basehttp 108393 126550255064768 "GET /media/services/images/enterprise-data-replication-synchronization-services_5Ul87if.jpg HTTP/1.1" 200 146813
+INFO 2025-11-24 06:00:49,326 basehttp 108393 126550255064768 "GET /media/services/images/it-infrastructure-management-support-services_9n65syH.jpg HTTP/1.1" 200 92096
+INFO 2025-11-24 06:00:49,525 basehttp 108393 126550255064768 "GET /media/services/images/enterprise-server-management-administration-services_CX2eP9j.jpg HTTP/1.1" 200 168907
+INFO 2025-11-24 06:01:01,950 basehttp 108393 126550255064768 "GET /api/services/enterprise-backend-development-services/ HTTP/1.1" 200 3654
+INFO 2025-11-24 06:01:02,181 basehttp 108393 126550255064768 "GET /media/services/images/enterprise-backend-development-services_VzGwXp3.jpg HTTP/1.1" 200 89797
+INFO 2025-11-24 06:01:02,325 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:02,368 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:02,378 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:01:02,386 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:02,400 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:01:02,406 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:02,662 basehttp 108393 126550246672064 "GET /api/services/ HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:15,212 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:15,223 basehttp 108393 126550649337536 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:01:15,224 basehttp 108393 126550263457472 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:01:15,295 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:01:15,309 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:15,321 basehttp 108393 126550271850176 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:01:15,327 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:01:15,348 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:15,358 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:01:15,369 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:01:15,402 basehttp 108393 126550623110848 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:01:15,406 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:15,464 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:01:15,470 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,535 basehttp 108393 126550632552128 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:02:00,544 basehttp 108393 126550623110848 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:02:00,557 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,568 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:02:00,585 basehttp 108393 126550632552128 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:02:00,591 basehttp 108393 126550263457472 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:02:00,602 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,613 basehttp 108393 126550640944832 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:02:00,616 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:02:00,630 basehttp 108393 126550271850176 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:02:00,639 basehttp 108393 126550263457472 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:02:00,658 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,678 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:02:00,694 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:02:00,714 basehttp 108393 126550649337536 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:02:00,717 basehttp 108393 126550632552128 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:02:00,721 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,747 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:02:00,783 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,791 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,808 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:02:00,842 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,868 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,868 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,877 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,877 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,883 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:00,909 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:02:04,443 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:04,476 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:22,941 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:22,955 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:40,795 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:02:40,796 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:02:40,798 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:40,802 basehttp 108393 126550263457472 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:02:40,871 basehttp 108393 126550632552128 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:02:40,875 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:40,877 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:02:40,878 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:02:40,886 basehttp 108393 126550271850176 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:02:40,928 basehttp 108393 126550623110848 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:40,932 basehttp 108393 126550263457472 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:02:40,981 basehttp 108393 126550271850176 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:40,992 basehttp 108393 126550649337536 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:41,002 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:50,430 basehttp 108393 126550271850176 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 06:02:50,431 basehttp 108393 126550640944832 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 06:02:50,433 basehttp 108393 126550632552128 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 06:02:50,440 basehttp 108393 126550623110848 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 06:02:50,441 basehttp 108393 126550649337536 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 06:02:50,471 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:50,482 basehttp 108393 126550632552128 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:02:50,495 basehttp 108393 126550649337536 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:02:50,496 basehttp 108393 126550271850176 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:02:50,541 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:02:50,541 basehttp 108393 126550623110848 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:02:50,598 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:03:36,209 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:03:36,229 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:03:42,503 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:03:42,526 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:01,158 basehttp 108393 126550623110848 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:01,161 basehttp 108393 126550632552128 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:01,162 basehttp 108393 126550649337536 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:01,162 basehttp 108393 126550623110848 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:01,163 basehttp 108393 126550271850176 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:01,188 basehttp 108393 126550649337536 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:04:01,204 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:04:01,204 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:01,204 basehttp 108393 126550632552128 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:04:01,266 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:01,283 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:04:01,317 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:17,719 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:19,291 basehttp 108393 126550640944832 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:04:19,304 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:19,321 basehttp 108393 126550271850176 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:04:19,321 basehttp 108393 126550623110848 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:04:19,331 basehttp 108393 126550640944832 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:19,348 basehttp 108393 126550649337536 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:04:19,389 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:27,064 basehttp 108393 126550271850176 "OPTIONS /api/home/banner/ HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:27,064 basehttp 108393 126550649337536 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:27,065 basehttp 108393 126550623110848 "OPTIONS /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:27,071 basehttp 108393 126550640944832 "OPTIONS /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:27,076 basehttp 108393 126550649337536 "OPTIONS /api/career/jobs HTTP/1.1" 200 0
+INFO 2025-11-24 06:04:27,090 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:27,093 basehttp 108393 126550271850176 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:04:27,116 basehttp 108393 126550623110848 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:04:27,132 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:27,133 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:04:27,163 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:04:27,171 basehttp 108393 126550640944832 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:05:11,446 basehttp 108393 126550640944832 "OPTIONS /api/career/jobs/senior-full-stack-developer HTTP/1.1" 200 0
+INFO 2025-11-24 06:05:11,459 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:05:11,459 basehttp 108393 126550640944832 "GET /api/career/jobs/senior-full-stack-developer HTTP/1.1" 200 2444
+INFO 2025-11-24 06:05:11,469 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:11,479 basehttp 108393 126550263457472 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:05:11,485 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:11,507 basehttp 108393 126550640944832 "GET /api/career/jobs/senior-full-stack-developer HTTP/1.1" 200 2444
+INFO 2025-11-24 06:05:11,541 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:11,548 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:22,480 basehttp 108393 126550263457472 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:05:22,481 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:05:22,486 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:22,503 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:05:22,504 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:22,537 basehttp 108393 126550632552128 "GET /api/home/banner/ HTTP/1.1" 200 3438
+INFO 2025-11-24 06:05:22,554 basehttp 108393 126550271850176 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:05:22,556 basehttp 108393 126550640944832 "GET /api/case-studies/?ordering=display_order&page_size=5 HTTP/1.1" 200 4744
+INFO 2025-11-24 06:05:22,560 basehttp 108393 126550623110848 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:05:22,565 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:22,602 basehttp 108393 126550623110848 "GET /api/blog/posts/latest/?limit=12 HTTP/1.1" 200 8374
+INFO 2025-11-24 06:05:22,622 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:22,629 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:22,674 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:53,013 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:05:53,024 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:53,035 basehttp 108393 126550632552128 "GET /api/career/jobs HTTP/1.1" 200 4675
+INFO 2025-11-24 06:05:53,040 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:53,100 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:05:53,154 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:06:35,603 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:06:35,673 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:06:49,203 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:06:49,243 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:07:01,785 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:07:01,838 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:07:09,042 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:07:09,078 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:08:53,441 basehttp 108393 126550632552128 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:08:53,489 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:12:16,803 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:12:16,840 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:13:09,003 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
+INFO 2025-11-24 06:13:09,043 basehttp 108393 126550263457472 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 10722
diff --git a/backEnd/media/services/images/ai.jpg b/backEnd/media/services/images/ai.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/ai.jpg differ
diff --git a/backEnd/media/services/images/api-integrations.jpg b/backEnd/media/services/images/api-integrations.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/api-integrations.jpg differ
diff --git a/backEnd/media/services/images/artificial-intelligence-machine-learning-solutions.jpg b/backEnd/media/services/images/artificial-intelligence-machine-learning-solutions.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/artificial-intelligence-machine-learning-solutions.jpg differ
diff --git a/backEnd/media/services/images/artificial-intelligence-machine-learning-solutions_k2ns35k.jpg b/backEnd/media/services/images/artificial-intelligence-machine-learning-solutions_k2ns35k.jpg
new file mode 100644
index 00000000..330b2a3d
Binary files /dev/null and b/backEnd/media/services/images/artificial-intelligence-machine-learning-solutions_k2ns35k.jpg differ
diff --git a/backEnd/media/services/images/backend-engineering_jdxflin.jpg b/backEnd/media/services/images/backend-engineering_jdxflin.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/backend-engineering_jdxflin.jpg differ
diff --git a/backEnd/media/services/images/devops-engineering-infrastructure-automation-services.jpg b/backEnd/media/services/images/devops-engineering-infrastructure-automation-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/devops-engineering-infrastructure-automation-services.jpg differ
diff --git a/backEnd/media/services/images/devops-engineering-infrastructure-automation-services_OYGpGto.jpg b/backEnd/media/services/images/devops-engineering-infrastructure-automation-services_OYGpGto.jpg
new file mode 100644
index 00000000..a8b5a7c4
Binary files /dev/null and b/backEnd/media/services/images/devops-engineering-infrastructure-automation-services_OYGpGto.jpg differ
diff --git a/backEnd/media/services/images/devops-services.jpg b/backEnd/media/services/images/devops-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/devops-services.jpg differ
diff --git a/backEnd/media/services/images/enterprise-api-integration-services.jpg b/backEnd/media/services/images/enterprise-api-integration-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/enterprise-api-integration-services.jpg differ
diff --git a/backEnd/media/services/images/enterprise-api-integration-services_VCRRrC6.jpg b/backEnd/media/services/images/enterprise-api-integration-services_VCRRrC6.jpg
new file mode 100644
index 00000000..2d9cd8db
Binary files /dev/null and b/backEnd/media/services/images/enterprise-api-integration-services_VCRRrC6.jpg differ
diff --git a/backEnd/media/services/images/enterprise-api-integration-services_cNmdpRu.jpg b/backEnd/media/services/images/enterprise-api-integration-services_cNmdpRu.jpg
new file mode 100644
index 00000000..e67cac68
Binary files /dev/null and b/backEnd/media/services/images/enterprise-api-integration-services_cNmdpRu.jpg differ
diff --git a/backEnd/media/services/images/enterprise-backend-development-services.jpg b/backEnd/media/services/images/enterprise-backend-development-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/enterprise-backend-development-services.jpg differ
diff --git a/backEnd/media/services/images/enterprise-backend-development-services_VzGwXp3.jpg b/backEnd/media/services/images/enterprise-backend-development-services_VzGwXp3.jpg
new file mode 100644
index 00000000..7eb03150
Binary files /dev/null and b/backEnd/media/services/images/enterprise-backend-development-services_VzGwXp3.jpg differ
diff --git a/backEnd/media/services/images/enterprise-data-replication-synchronization-services.jpg b/backEnd/media/services/images/enterprise-data-replication-synchronization-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/enterprise-data-replication-synchronization-services.jpg differ
diff --git a/backEnd/media/services/images/enterprise-data-replication-synchronization-services_5Ul87if.jpg b/backEnd/media/services/images/enterprise-data-replication-synchronization-services_5Ul87if.jpg
new file mode 100644
index 00000000..fc126836
Binary files /dev/null and b/backEnd/media/services/images/enterprise-data-replication-synchronization-services_5Ul87if.jpg differ
diff --git a/backEnd/media/services/images/enterprise-frontend-development-services.jpg b/backEnd/media/services/images/enterprise-frontend-development-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/enterprise-frontend-development-services.jpg differ
diff --git a/backEnd/media/services/images/enterprise-frontend-development-services_cQqQE5R.jpg b/backEnd/media/services/images/enterprise-frontend-development-services_cQqQE5R.jpg
new file mode 100644
index 00000000..e67cac68
Binary files /dev/null and b/backEnd/media/services/images/enterprise-frontend-development-services_cQqQE5R.jpg differ
diff --git a/backEnd/media/services/images/enterprise-frontend-development-services_gKqfkLg.jpg b/backEnd/media/services/images/enterprise-frontend-development-services_gKqfkLg.jpg
new file mode 100644
index 00000000..15b74c35
Binary files /dev/null and b/backEnd/media/services/images/enterprise-frontend-development-services_gKqfkLg.jpg differ
diff --git a/backEnd/media/services/images/enterprise-server-management-administration-services.jpg b/backEnd/media/services/images/enterprise-server-management-administration-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/enterprise-server-management-administration-services.jpg differ
diff --git a/backEnd/media/services/images/enterprise-server-management-administration-services_CX2eP9j.jpg b/backEnd/media/services/images/enterprise-server-management-administration-services_CX2eP9j.jpg
new file mode 100644
index 00000000..778da294
Binary files /dev/null and b/backEnd/media/services/images/enterprise-server-management-administration-services_CX2eP9j.jpg differ
diff --git a/backEnd/media/services/images/frontend-engineering_vbwN78Z.jpg b/backEnd/media/services/images/frontend-engineering_vbwN78Z.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/frontend-engineering_vbwN78Z.jpg differ
diff --git a/backEnd/media/services/images/infrastructure-support.jpg b/backEnd/media/services/images/infrastructure-support.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/infrastructure-support.jpg differ
diff --git a/backEnd/media/services/images/it-infrastructure-management-support-services.jpg b/backEnd/media/services/images/it-infrastructure-management-support-services.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/it-infrastructure-management-support-services.jpg differ
diff --git a/backEnd/media/services/images/it-infrastructure-management-support-services_9n65syH.jpg b/backEnd/media/services/images/it-infrastructure-management-support-services_9n65syH.jpg
new file mode 100644
index 00000000..253432d4
Binary files /dev/null and b/backEnd/media/services/images/it-infrastructure-management-support-services_9n65syH.jpg differ
diff --git a/backEnd/media/services/images/replication-of-data.jpg b/backEnd/media/services/images/replication-of-data.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/replication-of-data.jpg differ
diff --git a/backEnd/media/services/images/servers-service.jpg b/backEnd/media/services/images/servers-service.jpg
new file mode 100644
index 00000000..d3e27ad7
Binary files /dev/null and b/backEnd/media/services/images/servers-service.jpg differ
diff --git a/backEnd/policies/management/__pycache__/__init__.cpython-312.pyc b/backEnd/policies/management/__pycache__/__init__.cpython-312.pyc
index 69c14f81..b2757028 100644
Binary files a/backEnd/policies/management/__pycache__/__init__.cpython-312.pyc and b/backEnd/policies/management/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backEnd/policies/management/commands/populate_policies.py b/backEnd/policies/management/commands/populate_policies.py
index 33ea54ae..59f9c595 100644
--- a/backEnd/policies/management/commands/populate_policies.py
+++ b/backEnd/policies/management/commands/populate_policies.py
@@ -72,7 +72,7 @@ class Command(BaseCommand):
},
{
'heading': '8. Data Subject Rights - Full GDPR Chapter III Implementation',
- 'content': 'As a data subject under GDPR and Bulgarian Personal Data Protection Act, you have comprehensive rights regarding your personal data. We provide mechanisms to exercise these rights free of charge, and we respond within one month (extendable to three months for complex requests with explanation): (a) Right of Access (Article 15 GDPR): Right to obtain confirmation of whether we process your personal data, access to your personal data, information about: processing purposes, data categories, recipients, retention periods, rights (rectification, erasure, restriction, objection, complaint), data source, existence of automated decision-making including profiling, safeguards for international transfers. We provide data in commonly used electronic format via secure portal; (b) Right to Rectification (Article 16 GDPR): Right to obtain rectification of inaccurate personal data without undue delay, right to complete incomplete personal data, including via supplementary statement. We notify all recipients of rectifications unless impossible or disproportionate effort; (c) Right to Erasure - "Right to be Forgotten" (Article 17 GDPR): Right to obtain erasure of personal data without undue delay when: data no longer necessary for purposes, consent withdrawn (and no other legal basis), objection to processing (Article 21), data unlawfully processed, erasure required for legal compliance, data collected for information society services (children). Exceptions: freedom of expression, legal compliance, public interest, establishment/exercise/defense of legal claims. We notify all recipients and processors of erasure; (d) Right to Restriction of Processing (Article 18 GDPR): Right to restrict processing when: accuracy is contested (during verification), processing is unlawful but you oppose erasure, we no longer need data but you need it for legal claims, objection to processing (pending verification). Restricted data marked and processed only with consent or for legal claims; (e) Right to Data Portability (Article 20 GDPR): Right to receive personal data in structured, commonly used, machine-readable format (JSON, XML, CSV), right to transmit data to another controller without hindrance, right to have data transmitted directly to another controller where technically feasible. Applies to data processed by automated means based on consent or contract; (f) Right to Object (Article 21 GDPR): Right to object to processing based on legitimate interests (Article 6(1)(f)) or public interest (Article 6(1)(e)), we cease processing unless we demonstrate compelling legitimate grounds overriding your interests, absolute right to object to direct marketing (we cease immediately), right to object to profiling related to direct marketing; (g) Rights Related to Automated Decision-Making and Profiling (Article 22 GDPR): Right not to be subject to automated decisions producing legal or similarly significant effects, including profiling, exceptions: necessary for contract, authorized by EU/Member State law, based on explicit consent. Where automated decisions used, we provide: information about logic involved, significance and envisaged consequences, right to human intervention, right to express point of view, right to contest decision; (h) Right to Withdraw Consent (Article 7(3) GDPR): Where processing based on consent, right to withdraw at any time (as easy as giving consent), withdrawal does not affect lawfulness of prior processing, clear "withdraw consent" mechanism provided; (i) Right to Lodge Complaint with Supervisory Authority (Article 77 GDPR): Right to lodge complaint with Bulgarian Commission for Personal Data Protection (CPDP): Address: 2 Prof. Tsvetan Lazarov Blvd., Sofia 1592, Bulgaria, Phone: +359 2 915 3518, Email: kzld@cpdp.bg, Website: www.cpdp.bg. Right to lodge with supervisory authority of your habitual residence, place of work, or place of alleged infringement; (j) Right to Effective Judicial Remedy (Article 79 GDPR): Right to judicial remedy against CPDP decisions, right to judicial remedy against GNX Soft Ltd for GDPR violations (Bulgarian courts). How to Exercise Your Rights: Online: Secure data subject rights portal at https://gnxsoft.com/privacy-rights, Email: privacy@gnxsoft.com or dpo@gnxsoft.com, Phone: +359897338147, Mail: GNX Soft Ltd, Data Protection Officer, Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria. We verify your identity before processing requests using secure authentication. Enterprise customers have dedicated portals with self-service rights management. We maintain logs of all data subject rights requests and responses for GDPR accountability.',
+ 'content': 'As a data subject under GDPR and Bulgarian Personal Data Protection Act, you have comprehensive rights regarding your personal data. We provide mechanisms to exercise these rights free of charge, and we respond within one month (extendable to three months for complex requests with explanation): (a) Right of Access (Article 15 GDPR): Right to obtain confirmation of whether we process your personal data, access to your personal data, information about: processing purposes, data categories, recipients, retention periods, rights (rectification, erasure, restriction, objection, complaint), data source, existence of automated decision-making including profiling, safeguards for international transfers. We provide data in commonly used electronic format via secure portal; (b) Right to Rectification (Article 16 GDPR): Right to obtain rectification of inaccurate personal data without undue delay, right to complete incomplete personal data, including via supplementary statement. We notify all recipients of rectifications unless impossible or disproportionate effort; (c) Right to Erasure - "Right to be Forgotten" (Article 17 GDPR): Right to obtain erasure of personal data without undue delay when: data no longer necessary for purposes, consent withdrawn (and no other legal basis), objection to processing (Article 21), data unlawfully processed, erasure required for legal compliance, data collected for information society services (children). Exceptions: freedom of expression, legal compliance, public interest, establishment/exercise/defense of legal claims. We notify all recipients and processors of erasure; (d) Right to Restriction of Processing (Article 18 GDPR): Right to restrict processing when: accuracy is contested (during verification), processing is unlawful but you oppose erasure, we no longer need data but you need it for legal claims, objection to processing (pending verification). Restricted data marked and processed only with consent or for legal claims; (e) Right to Data Portability (Article 20 GDPR): Right to receive personal data in structured, commonly used, machine-readable format (JSON, XML, CSV), right to transmit data to another controller without hindrance, right to have data transmitted directly to another controller where technically feasible. Applies to data processed by automated means based on consent or contract; (f) Right to Object (Article 21 GDPR): Right to object to processing based on legitimate interests (Article 6(1)(f)) or public interest (Article 6(1)(e)), we cease processing unless we demonstrate compelling legitimate grounds overriding your interests, absolute right to object to direct marketing (we cease immediately), right to object to profiling related to direct marketing; (g) Rights Related to Automated Decision-Making and Profiling (Article 22 GDPR): Right not to be subject to automated decisions producing legal or similarly significant effects, including profiling, exceptions: necessary for contract, authorized by EU/Member State law, based on explicit consent. Where automated decisions used, we provide: information about logic involved, significance and envisaged consequences, right to human intervention, right to express point of view, right to contest decision; (h) Right to Withdraw Consent (Article 7(3) GDPR): Where processing based on consent, right to withdraw at any time (as easy as giving consent), withdrawal does not affect lawfulness of prior processing, clear "withdraw consent" mechanism provided; (i) Right to Lodge Complaint with Supervisory Authority (Article 77 GDPR): Right to lodge complaint with Bulgarian Commission for Personal Data Protection (CPDP): Address: 2 Prof. Tsvetan Lazarov Blvd., Sofia 1592, Bulgaria, Phone: +359 2 915 3518, Email: kzld@cpdp.bg, Website: www.cpdp.bg. Right to lodge with supervisory authority of your habitual residence, place of work, or place of alleged infringement; (j) Right to Effective Judicial Remedy (Article 79 GDPR): Right to judicial remedy against CPDP decisions, right to judicial remedy against GNX Soft Ltd for GDPR violations (Bulgarian courts). How to Exercise Your Rights: Online: Secure data subject rights portal at https://gnxsoft.com/privacy-rights, Email: privacy@gnxsoft.com or dpo@gnxsoft.com, Phone: +359 896 13 80 30, Mail: GNX Soft Ltd, Data Protection Officer, Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria. We verify your identity before processing requests using secure authentication. Enterprise customers have dedicated portals with self-service rights management. We maintain logs of all data subject rights requests and responses for GDPR accountability.',
'order': 8
},
{
@@ -92,7 +92,7 @@ class Command(BaseCommand):
},
{
'heading': '12. Data Breach Notification Procedures (Articles 33-34 GDPR)',
- 'content': 'GNX Soft Ltd maintains comprehensive data breach preparedness and response procedures in strict compliance with GDPR Articles 33 (notification to supervisory authority) and 34 (communication to data subjects): (a) Breach Detection and Monitoring: 24/7 security monitoring and incident detection, automated anomaly detection systems, security information and event management (SIEM), intrusion detection and prevention systems (IDS/IPS), log analysis and correlation, threat intelligence integration, user behavior analytics, and regular security assessments; (b) Incident Classification: We classify incidents based on GDPR risk criteria: Confirmed Personal Data Breach: unauthorized or unlawful processing, accidental loss, destruction, alteration of personal data, unauthorized disclosure or access; Risk Assessment: likelihood and severity of impact on rights and freedoms, data sensitivity, number of affected data subjects, ease of identification, special category data involvement, and potential consequences; (c) Internal Breach Response (Immediate): Incident response team activation, breach containment and mitigation, forensic investigation, affected systems isolation, root cause analysis, evidence preservation, documentation of breach timeline and impact, and preliminary risk assessment; (d) Notification to Supervisory Authority (Article 33 - Within 72 Hours): We notify the Bulgarian Commission for Personal Data Protection (CPDP) within 72 hours of breach awareness, including: nature of personal data breach (categories and approximate number of data subjects, categories and approximate number of records), contact details of DPO or contact point, description of likely consequences, measures taken or proposed to address breach and mitigate adverse effects. If notification exceeds 72 hours, we provide reasons for delay. Breach register maintained with all breach details; (e) Communication to Data Subjects (Article 34 - Without Undue Delay): When breach likely to result in high risk to rights and freedoms, we communicate to affected data subjects in clear and plain language, including: nature of personal data breach, contact details of DPO, likely consequences of breach, measures taken or proposed to address and mitigate adverse effects. Exemptions from data subject notification: appropriate technical and organizational protection measures applied (e.g., encryption), subsequent measures ensure high risk unlikely, or notification requires disproportionate effort (public communication alternative); (f) Exceptions to Notification: Data rendered unintelligible (strong encryption with keys secured), risk mitigated by immediate remedial action, notification would cause disproportionate harm, subject to supervisory authority approval; (g) Cross-Border Breach Coordination: Lead supervisory authority identified (Bulgaria), cooperation with concerned supervisory authorities, one-stop-shop mechanism application, consistent breach response across EU, and coordination for cross-border notifications; (h) Breach Documentation and Register: We maintain comprehensive records of all breaches (regardless of notification requirement), including: facts of breach, effects and consequences, remedial action taken, breach register available for CPDP inspection; (i) Post-Breach Activities: Lessons learned analysis, security measures enhancement, updated risk assessments, staff training updates, policy and procedure improvements, and supervisory authority cooperation; (j) Enterprise Client Notification: Contractual notification obligations to enterprise clients, processor breach notification to controllers without undue delay (within 24 hours), joint breach response coordination, and client support for controller obligations; (k) Communication Channels: Dedicated breach hotline: breach@gnxsoft.com (24/7 monitored), emergency phone: +359897338147, web portal: https://gnxsoft.com/security-incident, and CPDP notification portal; (l) Transparency: Public breach notifications for high-impact incidents (subject to law enforcement and security considerations), transparency reports (annual breach statistics), and continuous improvement commitment. We maintain cyber insurance and engage specialized incident response firms for major breaches. Regular breach simulation exercises ensure preparedness.',
+ 'content': 'GNX Soft Ltd maintains comprehensive data breach preparedness and response procedures in strict compliance with GDPR Articles 33 (notification to supervisory authority) and 34 (communication to data subjects): (a) Breach Detection and Monitoring: 24/7 security monitoring and incident detection, automated anomaly detection systems, security information and event management (SIEM), intrusion detection and prevention systems (IDS/IPS), log analysis and correlation, threat intelligence integration, user behavior analytics, and regular security assessments; (b) Incident Classification: We classify incidents based on GDPR risk criteria: Confirmed Personal Data Breach: unauthorized or unlawful processing, accidental loss, destruction, alteration of personal data, unauthorized disclosure or access; Risk Assessment: likelihood and severity of impact on rights and freedoms, data sensitivity, number of affected data subjects, ease of identification, special category data involvement, and potential consequences; (c) Internal Breach Response (Immediate): Incident response team activation, breach containment and mitigation, forensic investigation, affected systems isolation, root cause analysis, evidence preservation, documentation of breach timeline and impact, and preliminary risk assessment; (d) Notification to Supervisory Authority (Article 33 - Within 72 Hours): We notify the Bulgarian Commission for Personal Data Protection (CPDP) within 72 hours of breach awareness, including: nature of personal data breach (categories and approximate number of data subjects, categories and approximate number of records), contact details of DPO or contact point, description of likely consequences, measures taken or proposed to address breach and mitigate adverse effects. If notification exceeds 72 hours, we provide reasons for delay. Breach register maintained with all breach details; (e) Communication to Data Subjects (Article 34 - Without Undue Delay): When breach likely to result in high risk to rights and freedoms, we communicate to affected data subjects in clear and plain language, including: nature of personal data breach, contact details of DPO, likely consequences of breach, measures taken or proposed to address and mitigate adverse effects. Exemptions from data subject notification: appropriate technical and organizational protection measures applied (e.g., encryption), subsequent measures ensure high risk unlikely, or notification requires disproportionate effort (public communication alternative); (f) Exceptions to Notification: Data rendered unintelligible (strong encryption with keys secured), risk mitigated by immediate remedial action, notification would cause disproportionate harm, subject to supervisory authority approval; (g) Cross-Border Breach Coordination: Lead supervisory authority identified (Bulgaria), cooperation with concerned supervisory authorities, one-stop-shop mechanism application, consistent breach response across EU, and coordination for cross-border notifications; (h) Breach Documentation and Register: We maintain comprehensive records of all breaches (regardless of notification requirement), including: facts of breach, effects and consequences, remedial action taken, breach register available for CPDP inspection; (i) Post-Breach Activities: Lessons learned analysis, security measures enhancement, updated risk assessments, staff training updates, policy and procedure improvements, and supervisory authority cooperation; (j) Enterprise Client Notification: Contractual notification obligations to enterprise clients, processor breach notification to controllers without undue delay (within 24 hours), joint breach response coordination, and client support for controller obligations; (k) Communication Channels: Dedicated breach hotline: breach@gnxsoft.com (24/7 monitored), emergency phone: +359 896 13 80 30, web portal: https://gnxsoft.com/security-incident, and CPDP notification portal; (l) Transparency: Public breach notifications for high-impact incidents (subject to law enforcement and security considerations), transparency reports (annual breach statistics), and continuous improvement commitment. We maintain cyber insurance and engage specialized incident response firms for major breaches. Regular breach simulation exercises ensure preparedness.',
'order': 12
},
{
@@ -107,12 +107,12 @@ class Command(BaseCommand):
},
{
'heading': '15. Records of Processing Activities (Article 30 GDPR)',
- 'content': 'As a Data Controller under GDPR Article 30, GNX Soft Ltd maintains comprehensive written records of all processing activities under our responsibility, available to the Bulgarian Commission for Personal Data Protection (CPDP) upon request: (a) Controller Records (Article 30(1)): Our records contain: Organization Details: Name and contact details of controller (GNX Soft Ltd, Company Registration: 207803200, Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria), contact details of Data Protection Officer (dpo@gnxsoft.com, +359897338147), where applicable, representative in the EU; Processing Purposes: Purposes of processing for each category, detailed purpose descriptions, legitimate interests where applicable, lawful basis for processing (Article 6 GDPR); Data Categories: Categories of data subjects (customers, employees, enterprise users, website visitors, support contacts), categories of personal data (identification, contact, financial, technical, usage, communications, professional), special category data processed (health, biometric, etc. - Article 9), criminal convictions data (if any - Article 10); Recipients: Categories of recipients (processors, sub-processors, business partners, authorities), specific recipients where relevant, recipients in third countries, safeguards for transfers; International Transfers: Third countries or international organizations receiving data, documentation of appropriate safeguards (SCCs, adequacy decisions, BCRs), Transfer Impact Assessments (TIAs), derogations applied (Article 49); Retention Periods: Time limits for erasure of data categories, retention schedules by data type, legal retention requirements, deletion procedures; Security Measures: General description of technical and organizational security measures (Article 32), encryption methods, access controls, monitoring systems, incident response procedures; (b) Processor Records (Article 30(2)) - Where We Act as Processor: Name and contact details of processor and controllers, Data Protection Officer contact details, categories of processing on behalf of each controller, international transfers and safeguards, security measures description; (c) Record Format and Maintenance: Written records (electronic format), structured and searchable database, regular updates reflecting processing changes, version control and audit trail, annual comprehensive review, accessible to authorized personnel, immediately available for CPDP requests; (d) Processing Activity Inventory: We maintain detailed records for each processing activity: Activity identifier and name, business function/department, processing description, data subjects categories, personal data categories, lawful basis (specific Article 6/9 GDPR provision), legitimate interests assessment (where applicable), consent records (where applicable), purpose specification, data sources, recipients and disclosure, retention period and deletion, security measures, DPIA reference (if conducted), DPA reference (for processors), transfer mechanisms (for international), last review date; (e) Industry-Specific Processing Records: Defense & Aerospace: Classified data processing, security clearance processing, defense contractor data; Healthcare & Medical: Patient data, health records, medical device data, clinical trial data; Banking & Finance: Customer financial data, transaction processing, AML/KYC data; Public Sector: Citizen data, administrative processing, public services data; Telecommunication: Traffic data, location data, communications metadata; E-commerce: Customer data, transaction data, marketing data; Food & Beverages: Supply chain data, food safety data, customer data; Oil & Energy: Operational data, employee data, contractor data. Sector-specific retention and security documented; (f) Special Category Data Processing (Article 9): Explicit documentation of lawful basis for special category processing: explicit consent (Article 9(2)(a)), employment/social security law (Article 9(2)(b)), vital interests (Article 9(2)(c)), legitimate activities of foundation/association (Article 9(2)(d)), data manifestly made public (Article 9(2)(e)), legal claims (Article 9(2)(f)), substantial public interest (Article 9(2)(g)), healthcare (Article 9(2)(h)), public health (Article 9(2)(i)), archiving/research/statistics (Article 9(2)(j)). Additional safeguards documented for each special category processing activity; (g) Joint Controller Records (Article 26): Where joint controllership exists: arrangement with other controller(s), essence of arrangement made available to data subjects, respective responsibilities documented, single point of contact designated, coordinated records maintenance; (h) Record Review and Updates: Continuous updates as processing activities change, quarterly review of records accuracy, annual comprehensive audit, updates following DPIAs, updates following supervisory authority guidance, version history maintained; (i) Accountability and Availability: Records demonstrating GDPR compliance, immediately available for CPDP inspection, accessible to DPO at all times, integrated with compliance management system, referenced in internal audits, supporting evidence maintained (DPIAs, DPAs, consent forms, policies); (j) Enterprise Client Transparency: Relevant processing records shared with enterprise clients, transparency in processor activities, annual processing activity reports, changes communicated promptly, audit rights facilitated. Our comprehensive Records of Processing Activities demonstrate our accountability under GDPR Article 5(2) and enable effective supervisory authority oversight. We maintain these records as living documents, continuously updated to reflect our actual processing operations and ensure full transparency and compliance.',
+ 'content': 'As a Data Controller under GDPR Article 30, GNX Soft Ltd maintains comprehensive written records of all processing activities under our responsibility, available to the Bulgarian Commission for Personal Data Protection (CPDP) upon request: (a) Controller Records (Article 30(1)): Our records contain: Organization Details: Name and contact details of controller (GNX Soft Ltd, Company Registration: 207803200, Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria), contact details of Data Protection Officer (dpo@gnxsoft.com, +359 896 13 80 30), where applicable, representative in the EU; Processing Purposes: Purposes of processing for each category, detailed purpose descriptions, legitimate interests where applicable, lawful basis for processing (Article 6 GDPR); Data Categories: Categories of data subjects (customers, employees, enterprise users, website visitors, support contacts), categories of personal data (identification, contact, financial, technical, usage, communications, professional), special category data processed (health, biometric, etc. - Article 9), criminal convictions data (if any - Article 10); Recipients: Categories of recipients (processors, sub-processors, business partners, authorities), specific recipients where relevant, recipients in third countries, safeguards for transfers; International Transfers: Third countries or international organizations receiving data, documentation of appropriate safeguards (SCCs, adequacy decisions, BCRs), Transfer Impact Assessments (TIAs), derogations applied (Article 49); Retention Periods: Time limits for erasure of data categories, retention schedules by data type, legal retention requirements, deletion procedures; Security Measures: General description of technical and organizational security measures (Article 32), encryption methods, access controls, monitoring systems, incident response procedures; (b) Processor Records (Article 30(2)) - Where We Act as Processor: Name and contact details of processor and controllers, Data Protection Officer contact details, categories of processing on behalf of each controller, international transfers and safeguards, security measures description; (c) Record Format and Maintenance: Written records (electronic format), structured and searchable database, regular updates reflecting processing changes, version control and audit trail, annual comprehensive review, accessible to authorized personnel, immediately available for CPDP requests; (d) Processing Activity Inventory: We maintain detailed records for each processing activity: Activity identifier and name, business function/department, processing description, data subjects categories, personal data categories, lawful basis (specific Article 6/9 GDPR provision), legitimate interests assessment (where applicable), consent records (where applicable), purpose specification, data sources, recipients and disclosure, retention period and deletion, security measures, DPIA reference (if conducted), DPA reference (for processors), transfer mechanisms (for international), last review date; (e) Industry-Specific Processing Records: Defense & Aerospace: Classified data processing, security clearance processing, defense contractor data; Healthcare & Medical: Patient data, health records, medical device data, clinical trial data; Banking & Finance: Customer financial data, transaction processing, AML/KYC data; Public Sector: Citizen data, administrative processing, public services data; Telecommunication: Traffic data, location data, communications metadata; E-commerce: Customer data, transaction data, marketing data; Food & Beverages: Supply chain data, food safety data, customer data; Oil & Energy: Operational data, employee data, contractor data. Sector-specific retention and security documented; (f) Special Category Data Processing (Article 9): Explicit documentation of lawful basis for special category processing: explicit consent (Article 9(2)(a)), employment/social security law (Article 9(2)(b)), vital interests (Article 9(2)(c)), legitimate activities of foundation/association (Article 9(2)(d)), data manifestly made public (Article 9(2)(e)), legal claims (Article 9(2)(f)), substantial public interest (Article 9(2)(g)), healthcare (Article 9(2)(h)), public health (Article 9(2)(i)), archiving/research/statistics (Article 9(2)(j)). Additional safeguards documented for each special category processing activity; (g) Joint Controller Records (Article 26): Where joint controllership exists: arrangement with other controller(s), essence of arrangement made available to data subjects, respective responsibilities documented, single point of contact designated, coordinated records maintenance; (h) Record Review and Updates: Continuous updates as processing activities change, quarterly review of records accuracy, annual comprehensive audit, updates following DPIAs, updates following supervisory authority guidance, version history maintained; (i) Accountability and Availability: Records demonstrating GDPR compliance, immediately available for CPDP inspection, accessible to DPO at all times, integrated with compliance management system, referenced in internal audits, supporting evidence maintained (DPIAs, DPAs, consent forms, policies); (j) Enterprise Client Transparency: Relevant processing records shared with enterprise clients, transparency in processor activities, annual processing activity reports, changes communicated promptly, audit rights facilitated. Our comprehensive Records of Processing Activities demonstrate our accountability under GDPR Article 5(2) and enable effective supervisory authority oversight. We maintain these records as living documents, continuously updated to reflect our actual processing operations and ensure full transparency and compliance.',
'order': 15
},
{
'heading': '16. Children\'s Privacy (GDPR Article 8)',
- 'content': 'Our Services are designed for business and enterprise use and are not directed to individuals under 16 years of age (the minimum age for information society services consent under GDPR Article 8(1)). We do not knowingly collect personal data from children under 16 without parental consent. Age Verification: We implement age verification mechanisms where appropriate; Parental Consent: For any processing of children\'s data (e.g., educational services), we obtain verifiable parental or guardian consent; Immediate Deletion: If we discover inadvertent collection of data from children under 16 without proper consent, we delete it immediately; Reporting: Parents or guardians who believe we have collected information from a child under 16 should contact us at privacy@gnxsoft.com, dpo@gnxsoft.com, or +359897338147. We will investigate and take appropriate action within 72 hours; Special Protections: Where children\'s data is processed with consent (e.g., educational programs), we apply enhanced protections: age-appropriate privacy notices, strict access controls, no profiling or automated decision-making, no marketing to children, parental access rights to children\'s data, enhanced security measures, shorter retention periods, child-safe design principles. Industry-Specific Children Protections: Healthcare & Medical: pediatric patient data subject to enhanced confidentiality; Public Sector: student data in educational services strictly protected; E-commerce: no marketing or sales to children. We are committed to protecting children\'s privacy rights and ensuring GDPR Article 8 compliance.',
+ 'content': 'Our Services are designed for business and enterprise use and are not directed to individuals under 16 years of age (the minimum age for information society services consent under GDPR Article 8(1)). We do not knowingly collect personal data from children under 16 without parental consent. Age Verification: We implement age verification mechanisms where appropriate; Parental Consent: For any processing of children\'s data (e.g., educational services), we obtain verifiable parental or guardian consent; Immediate Deletion: If we discover inadvertent collection of data from children under 16 without proper consent, we delete it immediately; Reporting: Parents or guardians who believe we have collected information from a child under 16 should contact us at privacy@gnxsoft.com, dpo@gnxsoft.com, or +359 896 13 80 30. We will investigate and take appropriate action within 72 hours; Special Protections: Where children\'s data is processed with consent (e.g., educational programs), we apply enhanced protections: age-appropriate privacy notices, strict access controls, no profiling or automated decision-making, no marketing to children, parental access rights to children\'s data, enhanced security measures, shorter retention periods, child-safe design principles. Industry-Specific Children Protections: Healthcare & Medical: pediatric patient data subject to enhanced confidentiality; Public Sector: student data in educational services strictly protected; E-commerce: no marketing or sales to children. We are committed to protecting children\'s privacy rights and ensuring GDPR Article 8 compliance.',
'order': 16
},
{
@@ -122,7 +122,7 @@ class Command(BaseCommand):
},
{
'heading': '18. Data Protection Officer and Contact Information',
- 'content': 'In accordance with Article 37 GDPR, GNX Soft Ltd has appointed a Data Protection Officer (DPO) to oversee GDPR compliance, data protection strategy, and serve as point of contact for data subjects and supervisory authorities. Contact Information: GNX Soft Ltd | Legal Entity: GNX Soft Ltd (Bulgarian Company) | Company Registration: 207803200 | Registered Office: Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria | General Inquiries: privacy@gnxsoft.com | Phone: +359897338147 | Data Protection Officer (DPO): GNX Data Protection Team, Email: dpo@gnxsoft.com (monitored 24/7), Phone: +359897338147 (DPO line), Address: GNX Soft Ltd, Attn: Data Protection Officer, Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria. The DPO: monitors GDPR compliance (Article 39), advises on Data Protection Impact Assessments, serves as contact point for Bulgarian CPDP and EU supervisory authorities, handles data subject rights requests, conducts staff training on data protection, maintains Records of Processing Activities (Article 30), reviews data processing agreements, investigates data breaches, coordinates incident response. Additional Contacts: Data Subject Rights Requests: privacy@gnxsoft.com, dpo@gnxsoft.com | Security Incidents: security@gnxsoft.com | Data Breach Reporting: breach@gnxsoft.com (24/7 monitored) | Enterprise DPAs: legal@gnxsoft.com | Business Inquiries: sales@gnxsoft.com | Technical Support: support@gnxsoft.com | Support Center Portal: https://gnxsoft.com/support-center | Data Subject Rights Portal: https://gnxsoft.com/privacy-rights | Website: https://gnxsoft.com | Business Hours: Monday-Friday, 9:00 AM - 6:00 PM EET (DPO available outside hours for urgent matters). Response Times: Data subject rights requests: 30 days (maximum, usually faster), complex requests: up to 90 days with explanation, urgent privacy matters: 24-48 hours, data breach inquiries: immediate response, general inquiries: 5 business days. Supervisory Authority: Bulgarian Commission for Personal Data Protection (CPDP) | Address: 2 Prof. Tsvetan Lazarov Blvd., Sofia 1592, Bulgaria | Phone: +359 2 915 3518 | Email: kzld@cpdp.bg | Website: www.cpdp.bg. European Data Protection Board (EDPB): www.edpb.europa.eu. We welcome all privacy inquiries and are committed to transparency, accountability, and GDPR compliance.',
+ 'content': 'In accordance with Article 37 GDPR, GNX Soft Ltd has appointed a Data Protection Officer (DPO) to oversee GDPR compliance, data protection strategy, and serve as point of contact for data subjects and supervisory authorities. Contact Information: GNX Soft Ltd | Legal Entity: GNX Soft Ltd (Bulgarian Company) | Company Registration: 207803200 | Registered Office: Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria | General Inquiries: privacy@gnxsoft.com | Phone: +359 896 13 80 30 | Data Protection Officer (DPO): GNX Data Protection Team, Email: dpo@gnxsoft.com (monitored 24/7), Phone: +359 896 13 80 30 (DPO line), Address: GNX Soft Ltd, Attn: Data Protection Officer, Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria. The DPO: monitors GDPR compliance (Article 39), advises on Data Protection Impact Assessments, serves as contact point for Bulgarian CPDP and EU supervisory authorities, handles data subject rights requests, conducts staff training on data protection, maintains Records of Processing Activities (Article 30), reviews data processing agreements, investigates data breaches, coordinates incident response. Additional Contacts: Data Subject Rights Requests: privacy@gnxsoft.com, dpo@gnxsoft.com | Security Incidents: security@gnxsoft.com | Data Breach Reporting: breach@gnxsoft.com (24/7 monitored) | Enterprise DPAs: legal@gnxsoft.com | Business Inquiries: sales@gnxsoft.com | Technical Support: support@gnxsoft.com | Support Center Portal: https://gnxsoft.com/support-center | Data Subject Rights Portal: https://gnxsoft.com/privacy-rights | Website: https://gnxsoft.com | Business Hours: Monday-Friday, 9:00 AM - 6:00 PM EET (DPO available outside hours for urgent matters). Response Times: Data subject rights requests: 30 days (maximum, usually faster), complex requests: up to 90 days with explanation, urgent privacy matters: 24-48 hours, data breach inquiries: immediate response, general inquiries: 5 business days. Supervisory Authority: Bulgarian Commission for Personal Data Protection (CPDP) | Address: 2 Prof. Tsvetan Lazarov Blvd., Sofia 1592, Bulgaria | Phone: +359 2 915 3518 | Email: kzld@cpdp.bg | Website: www.cpdp.bg. European Data Protection Board (EDPB): www.edpb.europa.eu. We welcome all privacy inquiries and are committed to transparency, accountability, and GDPR compliance.',
'order': 18
},
]
@@ -214,7 +214,7 @@ class Command(BaseCommand):
},
{
'heading': '14. Contact Information',
- 'content': 'For questions regarding these Terms, contact us: GNX Soft Ltd | Registered Address: Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria | Email: legal@gnxsoft.com | Phone: +359897338147 | Business Inquiries: sales@gnxsoft.com | Support: support@gnxsoft.com | Website: https://gnxsoft.com | Business Hours: Monday-Friday, 9:00 AM - 6:00 PM EET. We will respond to inquiries within 5 business days.',
+ 'content': 'For questions regarding these Terms, contact us: GNX Soft Ltd | Registered Address: Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria | Email: legal@gnxsoft.com | Phone: +359 896 13 80 30 | Business Inquiries: sales@gnxsoft.com | Support: support@gnxsoft.com | Website: https://gnxsoft.com | Business Hours: Monday-Friday, 9:00 AM - 6:00 PM EET. We will respond to inquiries within 5 business days.',
'order': 14
},
]
@@ -251,7 +251,7 @@ class Command(BaseCommand):
},
{
'heading': '3. Support Channels and Access Methods',
- 'content': 'We offer multiple channels for accessing support services: (a) Support Center: Primary channel via our web-based support portal (https://gnxsoft.com/support-center) for ticket submission, tracking, and knowledge base access; (b) Email Support: Available at support@gnxsoft.com for all support tiers; (c) Phone Support: Direct hotline access at +359897338147 for Premium and Enterprise customers; (d) Live Chat: Real-time chat support during business hours for active issues; (e) Emergency Hotline: 24/7 emergency support for Critical issues (Enterprise only); (f) On-Site Support: Available for Enterprise customers per service agreement; (g) Remote Access: Secure remote assistance with customer authorization; (h) Community Forums: Peer-to-peer support and discussions. We recommend using the Support Center as the primary channel for optimal tracking and documentation.',
+ 'content': 'We offer multiple channels for accessing support services: (a) Support Center: Primary channel via our web-based support portal (https://gnxsoft.com/support-center) for ticket submission, tracking, and knowledge base access; (b) Email Support: Available at support@gnxsoft.com for all support tiers; (c) Phone Support: Direct hotline access at +359 896 13 80 30 for Premium and Enterprise customers; (d) Live Chat: Real-time chat support during business hours for active issues; (e) Emergency Hotline: 24/7 emergency support for Critical issues (Enterprise only); (f) On-Site Support: Available for Enterprise customers per service agreement; (g) Remote Access: Secure remote assistance with customer authorization; (h) Community Forums: Peer-to-peer support and discussions. We recommend using the Support Center as the primary channel for optimal tracking and documentation.',
'order': 3
},
{
@@ -311,7 +311,7 @@ class Command(BaseCommand):
},
{
'heading': '15. Contact Information and Resources',
- 'content': 'Support Contact Information: GNX Soft Ltd | Company Address: Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria | Support Portal: https://gnxsoft.com/support-center (preferred method) | Email: support@gnxsoft.com | Phone (Premium/Enterprise): +359897338147 | Emergency Hotline (Enterprise): Available in your service agreement | Live Chat: Available in support portal during business hours | Business Hours: Monday-Friday, 9:00 AM - 6:00 PM EET. Enterprise Account Managers: Contact information provided in welcome materials. Additional Resources: Knowledge Base: kb.gnxsoft.com | Developer Portal: developers.gnxsoft.com | Community Forums: community.gnxsoft.com | System Status: status.gnxsoft.com | Training: training.gnxsoft.com. For industry-specific support inquiries (Defense & Aerospace, Healthcare & Medical, Telecommunication, E-commerce, Banking, Public Sector, Food & Beverages, Oil & Energy), please mention your industry sector when contacting support.',
+ 'content': 'Support Contact Information: GNX Soft Ltd | Company Address: Tsar Simeon I, 56, Burgas, Burgas 8000, Bulgaria | Support Portal: https://gnxsoft.com/support-center (preferred method) | Email: support@gnxsoft.com | Phone (Premium/Enterprise): +359 896 13 80 30 | Emergency Hotline (Enterprise): Available in your service agreement | Live Chat: Available in support portal during business hours | Business Hours: Monday-Friday, 9:00 AM - 6:00 PM EET. Enterprise Account Managers: Contact information provided in welcome materials. Additional Resources: Knowledge Base: kb.gnxsoft.com | Developer Portal: developers.gnxsoft.com | Community Forums: community.gnxsoft.com | System Status: status.gnxsoft.com | Training: training.gnxsoft.com. For industry-specific support inquiries (Defense & Aerospace, Healthcare & Medical, Telecommunication, E-commerce, Banking, Public Sector, Food & Beverages, Oil & Energy), please mention your industry sector when contacting support.',
'order': 15
},
]
diff --git a/backEnd/services/management/commands/__pycache__/import_enterprise_data.cpython-312.pyc b/backEnd/services/management/commands/__pycache__/import_enterprise_data.cpython-312.pyc
index 15c97310..a0a67203 100644
Binary files a/backEnd/services/management/commands/__pycache__/import_enterprise_data.cpython-312.pyc and b/backEnd/services/management/commands/__pycache__/import_enterprise_data.cpython-312.pyc differ
diff --git a/backEnd/services/management/commands/import_enterprise_data.py b/backEnd/services/management/commands/import_enterprise_data.py
index 96ad6b80..003ded89 100644
--- a/backEnd/services/management/commands/import_enterprise_data.py
+++ b/backEnd/services/management/commands/import_enterprise_data.py
@@ -39,15 +39,16 @@ class Command(BaseCommand):
help='Update existing services instead of skipping them',
)
- def download_image_from_unsplash(self, keyword, width=1200, height=800, api_key=None):
+ def download_image_from_unsplash(self, keyword, width=1200, height=800, api_key=None, photo_id=None):
"""
- Download an image from Unsplash based on keyword.
+ Download an image from Unsplash based on keyword or photo ID.
Args:
keyword: Search keyword for the image
width: Image width in pixels
height: Image height in pixels
api_key: Optional Unsplash API access key
+ photo_id: Optional specific Unsplash photo ID
Returns:
BytesIO object containing the image data, or None if download fails
@@ -55,27 +56,37 @@ class Command(BaseCommand):
try:
if api_key:
# Use Unsplash API (requires API key)
- url = "https://api.unsplash.com/photos/random"
- params = {
- 'query': keyword,
- 'orientation': 'landscape',
- 'w': width,
- 'h': height,
- 'client_id': api_key
- }
- query_string = urllib.parse.urlencode(params)
- full_url = f"{url}?{query_string}"
-
- req = urllib.request.Request(full_url)
- with urllib.request.urlopen(req, timeout=30) as response:
- data = json.loads(response.read().decode())
- image_url = data['urls']['regular']
+ if photo_id:
+ # Get specific photo by ID
+ url = f"https://api.unsplash.com/photos/{photo_id}"
+ req = urllib.request.Request(url)
+ req.add_header('Authorization', f'Client-ID {api_key}')
+ with urllib.request.urlopen(req, timeout=30) as response:
+ data = json.loads(response.read().decode())
+ image_url = data['urls']['regular']
+ else:
+ # Get random photo by keyword
+ url = "https://api.unsplash.com/photos/random"
+ params = {
+ 'query': keyword,
+ 'orientation': 'landscape',
+ 'w': width,
+ 'h': height,
+ 'client_id': api_key
+ }
+ query_string = urllib.parse.urlencode(params)
+ full_url = f"{url}?{query_string}"
+
+ req = urllib.request.Request(full_url)
+ with urllib.request.urlopen(req, timeout=30) as response:
+ data = json.loads(response.read().decode())
+ image_url = data['urls']['regular']
else:
- # Use Unsplash's direct image service (no key required)
- # Using a curated collection of enterprise/business images
- # For better results with specific keywords, use --unsplash-key option
- # Using placeholder service that provides high-quality images
- image_url = f"https://images.unsplash.com/photo-1552664730-d307ca884978?w={width}&h={height}&fit=crop"
+ # Use Picsum Photos (Lorem Picsum) for reliable, unique images (no key required)
+ # Create a unique seed based on keyword hash to get different images for each service
+ keyword_hash = abs(hash(keyword)) % 1000
+ # Picsum Photos provides random images with seeds - each seed gives a unique image
+ image_url = f"https://picsum.photos/seed/{keyword_hash}/{width}/{height}"
# Download the actual image
req = urllib.request.Request(image_url)
@@ -100,39 +111,40 @@ class Command(BaseCommand):
self.stdout.write(self.style.SUCCESS('Starting enterprise data import...'))
with transaction.atomic():
+ # Delete all existing services (this will cascade delete features and expertise items)
+ deleted_count = Service.objects.count()
+ Service.objects.all().delete()
+ self.stdout.write(
+ self.style.WARNING(f'Deleted {deleted_count} existing service(s)')
+ )
+
# Create or get categories
categories = {}
category_data = [
{
- 'slug': 'web-development',
- 'name': 'Web Development',
- 'description': 'Custom web applications and enterprise websites',
+ 'slug': 'development',
+ 'name': 'Development',
+ 'description': 'Software development services',
'display_order': 1,
},
{
- 'slug': 'mobile-development',
- 'name': 'Mobile Development',
- 'description': 'Native and cross-platform mobile applications',
+ 'slug': 'infrastructure',
+ 'name': 'Infrastructure',
+ 'description': 'Infrastructure and DevOps services',
'display_order': 2,
},
{
- 'slug': 'api-development',
- 'name': 'API Development',
- 'description': 'RESTful APIs and microservices architecture',
+ 'slug': 'integration',
+ 'name': 'Integration',
+ 'description': 'API and data integration services',
'display_order': 3,
},
{
- 'slug': 'cloud-services',
- 'name': 'Cloud Services',
- 'description': 'Cloud migration and infrastructure services',
+ 'slug': 'ai-services',
+ 'name': 'AI Services',
+ 'description': 'Artificial Intelligence and machine learning services',
'display_order': 4,
},
- {
- 'slug': 'enterprise-solutions',
- 'name': 'Enterprise Solutions',
- 'description': 'Enterprise-grade software solutions',
- 'display_order': 5,
- },
]
for cat_data in category_data:
@@ -146,146 +158,199 @@ class Command(BaseCommand):
self.style.SUCCESS(f'Created category: {category.name}')
)
- # Enterprise services data
+ # New services data
services_data = [
{
- 'title': 'Enterprise Web Application Development',
- 'description': 'Build powerful, scalable enterprise web applications tailored to your business needs. Our expert developers use modern frameworks and technologies to create solutions that drive growth, efficiency, and competitive advantage. We deliver robust applications that handle high traffic, complex business logic, and integrate seamlessly with your existing systems.',
- 'short_description': 'Scalable enterprise web applications built with cutting-edge technologies for optimal performance and reliability.',
- 'slug': 'enterprise-web-application-development',
- 'icon': 'code',
+ 'title': 'Enterprise Backend Development Services',
+ 'description': 'Expert backend engineering services to build robust, scalable server-side applications. We design and develop high-performance APIs, microservices, and database architectures that power your applications. Our backend solutions ensure reliability, security, and optimal performance for enterprise-scale systems.',
+ 'short_description': 'Robust backend engineering services for scalable server-side applications and APIs.',
+ 'slug': 'enterprise-backend-development-services',
+ 'icon': 'server',
'price': '25000.00',
- 'category_slug': 'web-development',
- 'duration': '12-24 weeks',
- 'deliverables': 'Enterprise Web Application, Admin Dashboard, User Management System, Role-Based Access Control, Database Design & Optimization, API Integration, Third-party Service Integration, Automated Testing Suite, CI/CD Pipeline, Documentation, Training & Support',
- 'technologies': 'React, Next.js, TypeScript, Node.js, PostgreSQL, Redis, AWS, Docker, Kubernetes, GraphQL, Microservices Architecture',
- 'process_steps': 'Requirements Analysis & Planning, System Architecture Design, Development Sprint Planning, Agile Development, Code Review & Quality Assurance, Testing & QA, Deployment & DevOps, Training & Knowledge Transfer, Ongoing Support',
- 'features_description': 'Our enterprise web applications come with advanced features including real-time collaboration, advanced analytics, comprehensive reporting, automated workflows, and seamless third-party integrations.',
- 'deliverables_description': 'You will receive a fully functional enterprise web application with comprehensive documentation, deployment scripts, testing suite, and ongoing support for maintenance and updates.',
- 'process_description': 'We follow an agile development methodology with regular sprints, continuous integration, and transparent communication throughout the project lifecycle.',
- 'why_choose_description': 'Choose us for our proven track record in enterprise development, deep technical expertise, commitment to quality, and dedication to delivering solutions that exceed expectations.',
- 'expertise_description': 'Our team brings years of experience in enterprise software development, with expertise in modern frameworks, cloud technologies, and best practices for scalable applications.',
- 'image_keyword': 'enterprise web development business technology',
+ 'category_slug': 'development',
+ 'duration': '8-16 weeks',
+ 'deliverables': 'Backend API Development, Database Design & Optimization, Microservices Architecture, Authentication & Authorization, API Documentation, Testing Suite, Deployment Configuration, Performance Optimization, Security Implementation, Documentation',
+ 'technologies': 'Node.js, Python, Django, FastAPI, PostgreSQL, MongoDB, Redis, GraphQL, REST APIs, Docker, Kubernetes, AWS, Microservices',
+ 'process_steps': 'Requirements Analysis, Architecture Design, Database Design, API Development, Testing & QA, Security Audit, Deployment, Documentation, Training, Ongoing Support',
+ 'features_description': 'Enterprise-grade backend solutions with scalable architecture, secure authentication, optimized database performance, and comprehensive API documentation.',
+ 'deliverables_description': 'Complete backend infrastructure with APIs, databases, authentication systems, and comprehensive documentation for seamless integration.',
+ 'process_description': 'We follow agile development practices with iterative development, continuous testing, and regular code reviews to ensure quality.',
+ 'why_choose_description': 'Our backend engineering expertise ensures your applications are built on solid foundations with scalability, security, and performance in mind.',
+ 'expertise_description': 'Experienced backend engineers with deep knowledge of modern frameworks, database optimization, and cloud-native architectures.',
+ 'image_keyword': 'server backend code programming database',
+ 'unsplash_photo_id': '1558497419-80c43fea0fbe', # Backend/server technology
'featured': True,
'display_order': 1,
'is_active': True,
},
{
- 'title': 'Enterprise Mobile App Development',
- 'description': 'Create stunning, high-performance mobile applications for iOS and Android platforms. We deliver native and cross-platform solutions that provide exceptional user experiences, drive engagement, and scale with your business. Our mobile apps are built with enterprise-grade security, offline capabilities, and seamless backend integration.',
- 'short_description': 'Enterprise mobile applications for iOS and Android with native performance and advanced features.',
- 'slug': 'enterprise-mobile-app-development',
- 'icon': 'mobile',
- 'price': '35000.00',
- 'category_slug': 'mobile-development',
- 'duration': '16-32 weeks',
- 'deliverables': 'Native Mobile Applications (iOS & Android), Cross-platform App (React Native/Flutter), App Store Deployment, Enterprise App Distribution, Push Notification System, Offline Support & Sync, Analytics Integration, Crash Reporting, Performance Monitoring, Security Implementation, Testing Suite, Documentation',
- 'technologies': 'React Native, Flutter, Swift, Kotlin, Firebase, AWS Amplify, App Store Connect, Google Play Console, Fastlane, CodePush',
- 'process_steps': 'Discovery & Planning, UI/UX Design, Architecture Design, Development Sprints, Testing & QA, Beta Testing, App Store Submission, Launch & Marketing Support, Post-Launch Support',
- 'features_description': 'Enterprise mobile apps with features like biometric authentication, offline-first architecture, real-time synchronization, advanced analytics, push notifications, and enterprise security compliance.',
- 'deliverables_description': 'Complete mobile application solution including source code, deployment to app stores, enterprise distribution setup, analytics dashboard, and comprehensive documentation.',
- 'process_description': 'We use agile methodologies with continuous testing, regular stakeholder reviews, and iterative improvements based on user feedback.',
- 'why_choose_description': 'Our mobile development expertise, combined with enterprise-grade practices, ensures your app performs flawlessly, scales efficiently, and provides exceptional user experiences.',
- 'expertise_description': 'Specialized in both native and cross-platform development, with deep knowledge of mobile architecture patterns, performance optimization, and platform-specific best practices.',
- 'image_keyword': 'enterprise mobile app development smartphone business',
+ 'title': 'Enterprise Frontend Development Services',
+ 'description': 'Create stunning, responsive user interfaces with our frontend engineering services. We build modern, performant web applications using the latest frameworks and technologies. Our frontend solutions deliver exceptional user experiences across all devices and platforms.',
+ 'short_description': 'Modern frontend engineering services for responsive and performant web applications.',
+ 'slug': 'enterprise-frontend-development-services',
+ 'icon': 'code',
+ 'price': '22000.00',
+ 'category_slug': 'development',
+ 'duration': '8-16 weeks',
+ 'deliverables': 'Responsive Web Application, Component Library, State Management, API Integration, Performance Optimization, Cross-browser Compatibility, Accessibility Implementation, Testing Suite, Build Configuration, Documentation',
+ 'technologies': 'React, Next.js, Vue.js, TypeScript, JavaScript, HTML5, CSS3, Tailwind CSS, Redux, GraphQL, Webpack, Vite',
+ 'process_steps': 'UI/UX Design Review, Component Architecture, Development, State Management, API Integration, Testing, Performance Optimization, Browser Testing, Deployment, Documentation',
+ 'features_description': 'Modern frontend applications with responsive design, optimized performance, accessibility compliance, and seamless user experiences.',
+ 'deliverables_description': 'Complete frontend application with reusable components, optimized performance, and comprehensive documentation for maintenance.',
+ 'process_description': 'We use modern development practices with component-based architecture, automated testing, and continuous integration.',
+ 'why_choose_description': 'Our frontend engineering expertise ensures your applications are fast, accessible, and provide exceptional user experiences.',
+ 'expertise_description': 'Skilled frontend developers with expertise in modern frameworks, performance optimization, and user experience design.',
+ 'image_keyword': 'web design user interface frontend development',
+ 'unsplash_photo_id': '1460925895917-afdab827c52f', # Web design/UI
'featured': True,
'display_order': 2,
'is_active': True,
},
{
- 'title': 'Enterprise API Development & Integration',
- 'description': 'Build robust, scalable APIs that power your applications and enable seamless integration with third-party services. Our APIs are designed for performance, security, maintainability, and enterprise-scale usage. We create comprehensive API ecosystems that support microservices architecture and enable digital transformation.',
- 'short_description': 'Enterprise-grade RESTful APIs and microservices for seamless system integration and digital transformation.',
- 'slug': 'enterprise-api-development-integration',
- 'icon': 'api',
- 'price': '20000.00',
- 'category_slug': 'api-development',
- 'duration': '8-16 weeks',
- 'deliverables': 'RESTful API Suite, GraphQL API (optional), API Gateway Configuration, Authentication & Authorization System, Rate Limiting & Throttling, API Documentation (OpenAPI/Swagger), SDK Development, Integration Testing Suite, Monitoring & Analytics, API Versioning Strategy, Developer Portal, Support & Maintenance',
- 'technologies': 'Node.js, Python, FastAPI, Django REST Framework, PostgreSQL, MongoDB, Redis, AWS API Gateway, Kong, Apigee, GraphQL, WebSockets, OAuth 2.0, JWT',
- 'process_steps': 'API Planning & Design, Architecture Design, Development & Implementation, Documentation, Testing & QA, Security Audit, Deployment, Integration Support, Monitoring Setup, Ongoing Maintenance',
- 'features_description': 'Enterprise APIs with advanced features including OAuth 2.0 authentication, rate limiting, request/response caching, webhook support, comprehensive logging, and real-time monitoring.',
- 'deliverables_description': 'Complete API solution with comprehensive documentation, SDKs for multiple languages, developer portal, testing tools, and integration support.',
- 'process_description': 'We follow API-first design principles with thorough documentation, versioning strategies, and comprehensive testing throughout the development lifecycle.',
- 'why_choose_description': 'Our API development expertise ensures your APIs are secure, performant, well-documented, and designed for long-term maintainability and scalability.',
- 'expertise_description': 'Deep expertise in API design patterns, microservices architecture, security best practices, and integration with enterprise systems.',
- 'image_keyword': 'api development integration enterprise technology',
- 'featured': True,
+ 'title': 'Enterprise Data Replication & Synchronization Services',
+ 'description': 'Comprehensive data replication services to ensure data consistency, availability, and disaster recovery. We implement robust data replication strategies across multiple systems and locations, ensuring your data is always available and synchronized.',
+ 'short_description': 'Reliable data replication services for data consistency and disaster recovery.',
+ 'slug': 'enterprise-data-replication-synchronization-services',
+ 'icon': 'database',
+ 'price': '18000.00',
+ 'category_slug': 'infrastructure',
+ 'duration': '4-8 weeks',
+ 'deliverables': 'Data Replication Strategy, Replication Setup, Monitoring & Alerting, Disaster Recovery Plan, Data Synchronization, Backup Systems, Documentation, Training, Ongoing Support',
+ 'technologies': 'PostgreSQL, MySQL, MongoDB, Redis, AWS RDS, Azure SQL, Data Sync Tools, ETL Pipelines, Change Data Capture',
+ 'process_steps': 'Data Assessment, Replication Strategy, Setup & Configuration, Testing, Monitoring Setup, Disaster Recovery Planning, Documentation, Training, Go-Live, Ongoing Support',
+ 'features_description': 'Robust data replication with real-time synchronization, automated failover, monitoring, and comprehensive disaster recovery capabilities.',
+ 'deliverables_description': 'Complete data replication solution with monitoring, backup systems, and disaster recovery plans for business continuity.',
+ 'process_description': 'We implement data replication with careful planning, thorough testing, and continuous monitoring to ensure reliability.',
+ 'why_choose_description': 'Our data replication expertise ensures your data is always available, synchronized, and protected against data loss.',
+ 'expertise_description': 'Data engineers with extensive experience in database replication, data synchronization, and disaster recovery solutions.',
+ 'image_keyword': 'database data center server backup storage',
+ 'unsplash_photo_id': '1557804506-2a27b1fb0947', # Database/data center
+ 'featured': False,
'display_order': 3,
'is_active': True,
},
{
- 'title': 'Enterprise Cloud Migration Services',
- 'description': 'Migrate your existing infrastructure to the cloud with minimal downtime and maximum efficiency. We help you leverage cloud technologies for improved scalability, security, cost efficiency, and business agility. Our migration services ensure a smooth transition with comprehensive planning, execution, and optimization.',
- 'short_description': 'Seamless enterprise cloud migration with enhanced security, scalability, and cost optimization.',
- 'slug': 'enterprise-cloud-migration-services',
- 'icon': 'cloud',
- 'price': '50000.00',
- 'category_slug': 'cloud-services',
- 'duration': '16-32 weeks',
- 'deliverables': 'Cloud Architecture Design, Infrastructure as Code (IaC), Data Migration Plan & Execution, Security Configuration & Compliance, Monitoring & Alerting Setup, Disaster Recovery Plan, Cost Optimization Strategy, Performance Tuning, Training & Documentation, Ongoing Support & Optimization',
- 'technologies': 'AWS, Azure, Google Cloud Platform, Docker, Kubernetes, Terraform, Ansible, CloudFormation, CI/CD Pipelines, Monitoring Tools (CloudWatch, Datadog, New Relic)',
- 'process_steps': 'Assessment & Planning, Architecture Design, Proof of Concept, Migration Strategy, Phased Migration Execution, Testing & Validation, Optimization, Training, Go-Live Support, Ongoing Management',
- 'features_description': 'Comprehensive cloud migration with features including automated infrastructure provisioning, multi-region deployment, auto-scaling, disaster recovery, and cost optimization.',
- 'deliverables_description': 'Complete cloud infrastructure with automated deployment, monitoring, security hardening, documentation, and ongoing optimization support.',
- 'process_description': 'We follow a phased migration approach with thorough testing, minimal downtime, and comprehensive rollback plans to ensure business continuity.',
- 'why_choose_description': 'Our cloud migration expertise, combined with proven methodologies, ensures a smooth transition with minimal risk and maximum value realization.',
- 'expertise_description': 'Certified cloud architects with extensive experience in AWS, Azure, and GCP, specializing in enterprise migrations and cloud-native architectures.',
- 'image_keyword': 'cloud migration enterprise infrastructure technology',
+ 'title': 'IT Infrastructure Management & Support Services',
+ 'description': 'Comprehensive infrastructure support services to maintain, monitor, and optimize your IT infrastructure. We provide 24/7 support, proactive monitoring, and infrastructure management to ensure your systems run smoothly and efficiently.',
+ 'short_description': 'Complete infrastructure support services for reliable and optimized IT systems.',
+ 'slug': 'it-infrastructure-management-support-services',
+ 'icon': 'settings',
+ 'price': '30000.00',
+ 'category_slug': 'infrastructure',
+ 'duration': 'Ongoing',
+ 'deliverables': '24/7 Monitoring, Incident Response, Performance Optimization, Security Updates, Backup Management, Capacity Planning, Documentation, Regular Reports, Proactive Maintenance, Support',
+ 'technologies': 'AWS, Azure, GCP, Docker, Kubernetes, Terraform, Ansible, Monitoring Tools, Logging Systems, CI/CD',
+ 'process_steps': 'Infrastructure Assessment, Monitoring Setup, Support Process, Incident Response Plan, Regular Maintenance, Performance Optimization, Security Updates, Reporting, Continuous Improvement',
+ 'features_description': 'Comprehensive infrastructure support with 24/7 monitoring, proactive maintenance, rapid incident response, and continuous optimization.',
+ 'deliverables_description': 'Complete infrastructure support package with monitoring, maintenance, and optimization services for reliable operations.',
+ 'process_description': 'We provide ongoing support with proactive monitoring, regular maintenance, and continuous optimization of your infrastructure.',
+ 'why_choose_description': 'Our infrastructure support ensures your systems are always running optimally with minimal downtime and maximum reliability.',
+ 'expertise_description': 'Infrastructure specialists with expertise in cloud platforms, containerization, and infrastructure automation.',
+ 'image_keyword': 'cloud infrastructure network technology data center',
+ 'unsplash_photo_id': '1557804506-2a27b1fb0947', # Cloud infrastructure
'featured': True,
'display_order': 4,
'is_active': True,
},
{
- 'title': 'Enterprise DevOps & CI/CD Solutions',
- 'description': 'Implement enterprise-grade DevOps practices and CI/CD pipelines to accelerate software delivery, improve quality, and reduce operational overhead. We design and implement comprehensive DevOps solutions that enable continuous integration, continuous deployment, and infrastructure automation.',
- 'short_description': 'Enterprise DevOps and CI/CD solutions for automated software delivery and infrastructure management.',
- 'slug': 'enterprise-devops-cicd-solutions',
- 'icon': 'settings',
- 'price': '30000.00',
- 'category_slug': 'enterprise-solutions',
- 'duration': '8-16 weeks',
- 'deliverables': 'CI/CD Pipeline Setup, Infrastructure as Code, Automated Testing Integration, Deployment Automation, Monitoring & Logging Setup, Security Scanning Integration, Documentation, Team Training, Best Practices Guide, Ongoing Support',
- 'technologies': 'Jenkins, GitLab CI, GitHub Actions, Azure DevOps, Docker, Kubernetes, Terraform, Ansible, Prometheus, Grafana, ELK Stack, SonarQube',
- 'process_steps': 'Assessment & Planning, Tool Selection, Pipeline Design, Implementation, Testing, Documentation, Training, Go-Live, Optimization, Ongoing Support',
- 'features_description': 'Comprehensive DevOps solutions with automated builds, testing, security scanning, deployment pipelines, infrastructure provisioning, and monitoring.',
- 'deliverables_description': 'Complete DevOps infrastructure with automated pipelines, monitoring dashboards, documentation, and team training for sustainable operations.',
- 'process_description': 'We implement DevOps best practices with a focus on automation, quality gates, security, and continuous improvement.',
- 'why_choose_description': 'Our DevOps expertise helps you achieve faster time-to-market, improved quality, reduced costs, and enhanced team productivity.',
- 'expertise_description': 'Experienced DevOps engineers with deep knowledge of CI/CD tools, containerization, orchestration, and infrastructure automation.',
- 'image_keyword': 'devops cicd automation enterprise technology',
+ 'title': 'Enterprise Server Management & Administration Services',
+ 'description': 'Complete server management and configuration services for optimal performance and reliability. We handle server setup, configuration, optimization, and maintenance to ensure your servers run efficiently and securely.',
+ 'short_description': 'Professional server management and configuration services for optimal performance.',
+ 'slug': 'enterprise-server-management-administration-services',
+ 'icon': 'server',
+ 'price': '20000.00',
+ 'category_slug': 'infrastructure',
+ 'duration': 'Ongoing',
+ 'deliverables': 'Server Setup & Configuration, Performance Optimization, Security Hardening, Monitoring Setup, Backup Configuration, Maintenance Plans, Documentation, Training, Support',
+ 'technologies': 'Linux, Windows Server, Nginx, Apache, Docker, Kubernetes, Cloud Servers, Monitoring Tools, Backup Solutions',
+ 'process_steps': 'Server Assessment, Setup & Configuration, Security Hardening, Performance Tuning, Monitoring Setup, Backup Configuration, Documentation, Training, Ongoing Maintenance',
+ 'features_description': 'Comprehensive server services with optimized configuration, security hardening, performance tuning, and proactive monitoring.',
+ 'deliverables_description': 'Fully configured and optimized servers with monitoring, backups, and maintenance plans for reliable operations.',
+ 'process_description': 'We provide complete server management with careful configuration, security hardening, and ongoing optimization.',
+ 'why_choose_description': 'Our server services ensure your servers are configured optimally, secure, and running at peak performance.',
+ 'expertise_description': 'Server administrators with deep knowledge of server configuration, optimization, and security best practices.',
+ 'image_keyword': 'server rack data center hardware technology',
+ 'unsplash_photo_id': '1558497419-80c43fea0fbe', # Server rack
'featured': False,
'display_order': 5,
'is_active': True,
},
{
- 'title': 'Enterprise Data Analytics & Business Intelligence',
- 'description': 'Transform your data into actionable insights with enterprise-grade analytics and business intelligence solutions. We build comprehensive data pipelines, analytics platforms, and visualization dashboards that enable data-driven decision making across your organization.',
- 'short_description': 'Enterprise data analytics and BI solutions for data-driven decision making and business insights.',
- 'slug': 'enterprise-data-analytics-business-intelligence',
- 'icon': 'analytics',
- 'price': '40000.00',
- 'category_slug': 'enterprise-solutions',
- 'duration': '12-24 weeks',
- 'deliverables': 'Data Pipeline Architecture, ETL/ELT Processes, Data Warehouse Setup, Analytics Platform, BI Dashboards, Custom Reports, Data Visualization, Predictive Analytics Models, Documentation, Training',
- 'technologies': 'Python, R, SQL, Apache Spark, Airflow, Snowflake, BigQuery, Redshift, Tableau, Power BI, Looker, Jupyter Notebooks, ML Models',
- 'process_steps': 'Data Assessment, Architecture Design, Pipeline Development, Data Integration, Analytics Development, Dashboard Creation, Testing, Training, Deployment, Ongoing Support',
- 'features_description': 'Advanced analytics with real-time data processing, predictive modeling, interactive dashboards, automated reporting, and machine learning capabilities.',
- 'deliverables_description': 'Complete analytics solution with data pipelines, warehouses, dashboards, reports, and training for your team.',
- 'process_description': 'We follow a data-driven approach with iterative development, stakeholder feedback, and continuous refinement of analytics models.',
- 'why_choose_description': 'Our analytics expertise helps you unlock the value in your data, make informed decisions, and gain competitive advantages through insights.',
- 'expertise_description': 'Data scientists and engineers with expertise in big data technologies, machine learning, and business intelligence platforms.',
- 'image_keyword': 'data analytics business intelligence enterprise dashboard',
- 'featured': False,
+ 'title': 'DevOps Engineering & Infrastructure Automation Services',
+ 'description': 'Comprehensive DevOps services to streamline your software delivery pipeline. We implement CI/CD pipelines, infrastructure automation, and DevOps best practices to accelerate development and improve deployment reliability.',
+ 'short_description': 'Complete DevOps services for automated software delivery and infrastructure management.',
+ 'slug': 'devops-engineering-infrastructure-automation-services',
+ 'icon': 'settings',
+ 'price': '28000.00',
+ 'category_slug': 'infrastructure',
+ 'duration': '8-16 weeks',
+ 'deliverables': 'CI/CD Pipeline, Infrastructure as Code, Automated Testing, Deployment Automation, Monitoring & Logging, Security Scanning, Documentation, Team Training, Best Practices, Support',
+ 'technologies': 'Jenkins, GitLab CI, GitHub Actions, Docker, Kubernetes, Terraform, Ansible, Prometheus, Grafana, ELK Stack',
+ 'process_steps': 'DevOps Assessment, Tool Selection, Pipeline Design, Implementation, Testing, Documentation, Training, Go-Live, Optimization, Ongoing Support',
+ 'features_description': 'Complete DevOps solutions with automated pipelines, infrastructure automation, comprehensive monitoring, and security integration.',
+ 'deliverables_description': 'Full DevOps infrastructure with automated pipelines, monitoring dashboards, and team training for sustainable operations.',
+ 'process_description': 'We implement DevOps best practices with automation, quality gates, and continuous improvement.',
+ 'why_choose_description': 'Our DevOps services help you achieve faster deployments, improved quality, and reduced operational overhead.',
+ 'expertise_description': 'DevOps engineers with expertise in CI/CD tools, containerization, and infrastructure automation.',
+ 'image_keyword': 'devops automation deployment pipeline technology',
+ 'unsplash_photo_id': '1558497419-80c43fea0fbe', # DevOps/automation
+ 'featured': True,
'display_order': 6,
'is_active': True,
},
+ {
+ 'title': 'Enterprise API Integration Services',
+ 'description': 'Seamless API integration services to connect your applications with third-party services and systems. We handle complex integrations, data transformation, and API management to enable smooth communication between different systems.',
+ 'short_description': 'Professional API integration services for seamless system connectivity.',
+ 'slug': 'enterprise-api-integration-services',
+ 'icon': 'api',
+ 'price': '15000.00',
+ 'category_slug': 'integration',
+ 'duration': '4-12 weeks',
+ 'deliverables': 'API Integration Setup, Data Transformation, Error Handling, Authentication Configuration, Testing Suite, Documentation, Monitoring, Support',
+ 'technologies': 'REST APIs, GraphQL, Webhooks, OAuth 2.0, JWT, Postman, API Gateway, Middleware, ETL Tools',
+ 'process_steps': 'API Analysis, Integration Design, Development, Authentication Setup, Testing, Error Handling, Documentation, Deployment, Monitoring, Support',
+ 'features_description': 'Comprehensive API integrations with secure authentication, error handling, data transformation, and monitoring capabilities.',
+ 'deliverables_description': 'Complete API integration solution with documentation, testing, and monitoring for reliable connectivity.',
+ 'process_description': 'We implement API integrations with careful design, thorough testing, and comprehensive error handling.',
+ 'why_choose_description': 'Our API integration expertise ensures seamless connectivity between your systems and third-party services.',
+ 'expertise_description': 'Integration specialists with experience in various APIs, authentication methods, and data transformation.',
+ 'image_keyword': 'api integration network connection technology',
+ 'unsplash_photo_id': '1460925895917-afdab827c52f', # API/network
+ 'featured': False,
+ 'display_order': 7,
+ 'is_active': True,
+ },
+ {
+ 'title': 'Artificial Intelligence & Machine Learning Solutions',
+ 'description': 'Cutting-edge AI and machine learning services to transform your business with intelligent automation and insights. We develop custom AI solutions, implement machine learning models, and integrate AI capabilities into your applications.',
+ 'short_description': 'Advanced AI and machine learning services for intelligent business solutions.',
+ 'slug': 'artificial-intelligence-machine-learning-solutions',
+ 'icon': 'brain',
+ 'price': '40000.00',
+ 'category_slug': 'ai-services',
+ 'duration': '12-24 weeks',
+ 'deliverables': 'AI Strategy, Machine Learning Models, Model Training & Deployment, AI Integration, Data Pipeline, Model Monitoring, Documentation, Training, Support',
+ 'technologies': 'Python, TensorFlow, PyTorch, Scikit-learn, OpenAI API, LangChain, MLflow, AWS SageMaker, Azure ML, Google AI',
+ 'process_steps': 'AI Strategy, Data Preparation, Model Development, Training & Validation, Deployment, Integration, Monitoring, Optimization, Documentation, Training',
+ 'features_description': 'Advanced AI solutions with custom machine learning models, intelligent automation, and seamless integration into your applications.',
+ 'deliverables_description': 'Complete AI solution with trained models, deployment infrastructure, and monitoring systems for continuous improvement.',
+ 'process_description': 'We develop AI solutions with iterative model development, thorough validation, and continuous monitoring for optimal performance.',
+ 'why_choose_description': 'Our AI expertise helps you leverage cutting-edge technology to automate processes and gain valuable insights from your data.',
+ 'expertise_description': 'AI specialists with deep knowledge of machine learning, deep learning, and AI integration into business applications.',
+ 'image_keyword': 'artificial intelligence machine learning neural network',
+ 'unsplash_photo_id': '1558497419-80c43fea0fbe', # AI/ML technology
+ 'featured': True,
+ 'display_order': 8,
+ 'is_active': True,
+ },
]
# Process each service
for service_data in services_data:
category_slug = service_data.pop('category_slug')
image_keyword = service_data.pop('image_keyword')
+ photo_id = service_data.pop('unsplash_photo_id', None)
category = categories.get(category_slug)
if not category:
@@ -296,31 +361,12 @@ class Command(BaseCommand):
service_data['category'] = category
- # Check if service exists
- service, created = Service.objects.get_or_create(
- slug=service_data['slug'],
- defaults=service_data
+ # Create service (we already deleted all, so this will always create new)
+ service = Service.objects.create(**service_data)
+ self.stdout.write(
+ self.style.SUCCESS(f'Created service: {service.title}')
)
- if not created and not update_existing:
- self.stdout.write(
- self.style.WARNING(f'Service already exists (skipping): {service.title}')
- )
- continue
-
- if not created and update_existing:
- # Update existing service
- for key, value in service_data.items():
- setattr(service, key, value)
- service.save()
- self.stdout.write(
- self.style.SUCCESS(f'Updated service: {service.title}')
- )
- else:
- self.stdout.write(
- self.style.SUCCESS(f'Created service: {service.title}')
- )
-
# Download and set image
if service:
self.stdout.write(f'Downloading image for: {service.title}...')
@@ -328,7 +374,8 @@ class Command(BaseCommand):
image_keyword,
width=width,
height=height,
- api_key=unsplash_key
+ api_key=unsplash_key,
+ photo_id=photo_id
)
if image_data:
@@ -354,84 +401,79 @@ class Command(BaseCommand):
self.style.WARNING(f' ⚠ No image downloaded for: {service.title}')
)
- # Add features for enterprise services
- if created or update_existing:
- # Clear existing features if updating
- if update_existing and not created:
- ServiceFeature.objects.filter(service=service).delete()
+ # Add features for services
+ features_data = [
+ {
+ 'title': 'Enterprise-Grade Security',
+ 'description': 'Bank-level security with encryption, authentication, and compliance standards',
+ 'icon': 'shield',
+ 'display_order': 1
+ },
+ {
+ 'title': 'Scalable Architecture',
+ 'description': 'Built to handle growth with horizontal scaling and load balancing',
+ 'icon': 'trending-up',
+ 'display_order': 2
+ },
+ {
+ 'title': '24/7 Support',
+ 'description': 'Round-the-clock support and monitoring for mission-critical systems',
+ 'icon': 'headphones',
+ 'display_order': 3
+ },
+ {
+ 'title': 'Comprehensive Documentation',
+ 'description': 'Detailed documentation for developers, administrators, and end users',
+ 'icon': 'book',
+ 'display_order': 4
+ },
+ ]
- # Add enterprise features
- features_data = [
- {
- 'title': 'Enterprise-Grade Security',
- 'description': 'Bank-level security with encryption, authentication, and compliance standards',
- 'icon': 'shield',
- 'display_order': 1
- },
- {
- 'title': 'Scalable Architecture',
- 'description': 'Built to handle growth with horizontal scaling and load balancing',
- 'icon': 'trending-up',
- 'display_order': 2
- },
- {
- 'title': '24/7 Support',
- 'description': 'Round-the-clock support and monitoring for mission-critical systems',
- 'icon': 'headphones',
- 'display_order': 3
- },
- {
- 'title': 'Comprehensive Documentation',
- 'description': 'Detailed documentation for developers, administrators, and end users',
- 'icon': 'book',
- 'display_order': 4
- },
- ]
+ for feature_data in features_data:
+ ServiceFeature.objects.get_or_create(
+ service=service,
+ title=feature_data['title'],
+ defaults=feature_data
+ )
- for feature_data in features_data:
- ServiceFeature.objects.get_or_create(
- service=service,
- title=feature_data['title'],
- defaults=feature_data
- )
+ # Add expertise items
+ expertise_data = [
+ {
+ 'title': 'Industry Expertise',
+ 'description': 'Deep understanding of enterprise requirements and industry best practices',
+ 'icon': 'award',
+ 'display_order': 1
+ },
+ {
+ 'title': 'Proven Methodology',
+ 'description': 'Agile development with proven processes and quality assurance',
+ 'icon': 'check-circle',
+ 'display_order': 2
+ },
+ {
+ 'title': 'Technology Leadership',
+ 'description': 'Cutting-edge technologies and modern development practices',
+ 'icon': 'code',
+ 'display_order': 3
+ },
+ ]
- # Add expertise items
- expertise_data = [
- {
- 'title': 'Industry Expertise',
- 'description': 'Deep understanding of enterprise requirements and industry best practices',
- 'icon': 'award',
- 'display_order': 1
- },
- {
- 'title': 'Proven Methodology',
- 'description': 'Agile development with proven processes and quality assurance',
- 'icon': 'check-circle',
- 'display_order': 2
- },
- {
- 'title': 'Technology Leadership',
- 'description': 'Cutting-edge technologies and modern development practices',
- 'icon': 'code',
- 'display_order': 3
- },
- ]
-
- for expertise_data_item in expertise_data:
- ServiceExpertise.objects.get_or_create(
- service=service,
- title=expertise_data_item['title'],
- defaults=expertise_data_item
- )
+ for expertise_data_item in expertise_data:
+ ServiceExpertise.objects.get_or_create(
+ service=service,
+ title=expertise_data_item['title'],
+ defaults=expertise_data_item
+ )
self.stdout.write(
- self.style.SUCCESS('\n✓ Successfully imported enterprise sample data!')
+ self.style.SUCCESS('\n✓ Successfully deleted all existing services and imported new services!')
)
if not unsplash_key:
self.stdout.write(
self.style.WARNING(
- '\nNote: Using Unsplash Source API (no key required). '
- 'For better reliability, consider using --unsplash-key with an API key from https://unsplash.com/developers'
+ '\nNote: Using Picsum Photos for images (no key required). '
+ 'Each service gets a unique image based on its keyword. '
+ 'For service-specific images, consider using --unsplash-key with an API key from https://unsplash.com/developers'
)
)
diff --git a/backEnd/support/README.md b/backEnd/support/README.md
deleted file mode 100644
index 6db8179b..00000000
--- a/backEnd/support/README.md
+++ /dev/null
@@ -1,193 +0,0 @@
-# Support Center Module
-
-Enterprise Support Center for handling customer support tickets, knowledge base articles, and support settings.
-
-## Features
-
-- **Ticket Management**
- - Create and track support tickets
- - Multiple ticket types (technical, billing, feature requests, etc.)
- - Priority and status management
- - Ticket categories and tags
- - SLA deadline tracking
- - Message and activity history
-
-- **Knowledge Base**
- - Categorized articles
- - Search functionality
- - Featured articles
- - Article feedback (helpful/not helpful)
- - View count tracking
- - Rich content support
-
-- **Public API**
- - Create tickets without authentication
- - Check ticket status by ticket number
- - Browse knowledge base articles
- - Search articles
-
-## Setup
-
-### 1. Run Migrations
-
-```bash
-python manage.py migrate
-```
-
-### 2. Populate Initial Data
-
-```bash
-python manage.py populate_support_data
-```
-
-This will create:
-- 5 ticket statuses (Open, In Progress, Pending Response, Resolved, Closed)
-- 4 ticket priorities (Low, Medium, High, Critical)
-- 6 ticket categories
-- 6 knowledge base categories
-- 6 sample knowledge base articles
-
-### 3. Admin Access
-
-Access the Django admin panel to manage:
-- Support tickets
-- Ticket categories, statuses, and priorities
-- Knowledge base categories and articles
-- Support settings
-
-## API Endpoints
-
-### Tickets
-
-- `GET /api/support/tickets/` - List all tickets
-- `POST /api/support/tickets/` - Create a new ticket
-- `GET /api/support/tickets/{id}/` - Get ticket details
-- `POST /api/support/tickets/check-status/` - Check ticket status by ticket number
-- `POST /api/support/tickets/{id}/add-message/` - Add a message to a ticket
-
-### Categories
-
-- `GET /api/support/categories/` - List all ticket categories
-- `GET /api/support/statuses/` - List all ticket statuses
-- `GET /api/support/priorities/` - List all ticket priorities
-
-### Knowledge Base
-
-- `GET /api/support/knowledge-base/` - List all published articles
-- `GET /api/support/knowledge-base/{slug}/` - Get article details
-- `GET /api/support/knowledge-base/featured/` - Get featured articles
-- `GET /api/support/knowledge-base/by-category/{category_slug}/` - Get articles by category
-- `POST /api/support/knowledge-base/{slug}/mark-helpful/` - Mark article as helpful/not helpful
-- `GET /api/support/knowledge-base-categories/` - List all KB categories
-
-### Settings
-
-- `GET /api/support/settings/` - List all active support settings
-- `GET /api/support/settings/{setting_name}/` - Get specific setting
-
-## Models
-
-### SupportTicket
-Main model for support tickets with full tracking capabilities.
-
-### TicketStatus
-Ticket status options (Open, In Progress, Resolved, etc.)
-
-### TicketPriority
-Priority levels with SLA hours (Low, Medium, High, Critical)
-
-### TicketCategory
-Categorize tickets for better organization
-
-### TicketMessage
-Messages and updates on tickets
-
-### TicketActivity
-Audit trail of all ticket changes
-
-### KnowledgeBaseCategory
-Categories for knowledge base articles
-
-### KnowledgeBaseArticle
-Knowledge base articles with rich content
-
-### SupportSettings
-Configurable support center settings
-
-## Usage Examples
-
-### Create a Ticket
-
-```python
-import requests
-
-data = {
- "title": "Cannot login to my account",
- "description": "I've been trying to login but getting error 500",
- "ticket_type": "technical",
- "user_name": "John Doe",
- "user_email": "john@example.com",
- "user_phone": "+1234567890",
- "company": "Acme Corp",
- "category": 1 # Technical Support category ID
-}
-
-response = requests.post('http://localhost:8000/api/support/tickets/', json=data)
-ticket = response.json()
-print(f"Ticket created: {ticket['ticket_number']}")
-```
-
-### Check Ticket Status
-
-```python
-import requests
-
-data = {
- "ticket_number": "TKT-20231015-ABCDE"
-}
-
-response = requests.post('http://localhost:8000/api/support/tickets/check-status/', json=data)
-ticket = response.json()
-print(f"Status: {ticket['status_name']}")
-```
-
-### Search Knowledge Base
-
-```python
-import requests
-
-response = requests.get('http://localhost:8000/api/support/knowledge-base/', params={'search': 'login'})
-articles = response.json()
-for article in articles:
- print(f"- {article['title']}")
-```
-
-## Frontend Integration
-
-The support center is integrated with the Next.js frontend at `/support-center` with:
-- Ticket submission form
-- Knowledge base browser with search
-- Ticket status checker
-- Modern, responsive UI
-
-## Email Notifications
-
-To enable email notifications for tickets, configure email settings in `settings.py` and implement email templates in `support/templates/support/`.
-
-## Security
-
-- All endpoints are public (AllowAny permission)
-- Ticket numbers are randomly generated and hard to guess
-- Internal notes and messages are hidden from public API
-- Rate limiting recommended for production
-
-## Future Enhancements
-
-- [ ] Live chat integration
-- [ ] File attachments for tickets
-- [ ] Email notifications
-- [ ] Ticket assignment and routing
-- [ ] SLA breach alerts
-- [ ] Advanced analytics dashboard
-- [ ] Webhook notifications
-
diff --git a/backEnd/support/__pycache__/email_service.cpython-312.pyc b/backEnd/support/__pycache__/email_service.cpython-312.pyc
index 7573f4de..9c2bbf8b 100644
Binary files a/backEnd/support/__pycache__/email_service.cpython-312.pyc and b/backEnd/support/__pycache__/email_service.cpython-312.pyc differ
diff --git a/backEnd/support/__pycache__/signals.cpython-312.pyc b/backEnd/support/__pycache__/signals.cpython-312.pyc
index 21733406..c5146b98 100644
Binary files a/backEnd/support/__pycache__/signals.cpython-312.pyc and b/backEnd/support/__pycache__/signals.cpython-312.pyc differ
diff --git a/backEnd/support/email_service.py b/backEnd/support/email_service.py
index b65ea964..ea2bd30d 100644
--- a/backEnd/support/email_service.py
+++ b/backEnd/support/email_service.py
@@ -3,15 +3,53 @@ Email Service for Support Tickets
Handles sending email notifications for ticket creation and updates
"""
-from django.core.mail import EmailMultiAlternatives
+from django.core.mail import EmailMultiAlternatives, get_connection
from django.template.loader import render_to_string
from django.conf import settings
from django.utils.html import strip_tags
import logging
+import time
logger = logging.getLogger(__name__)
+def _send_email_with_retry(email_message, max_retries: int = 3, delay: float = 1.0) -> bool:
+ """
+ Send email with retry logic for production reliability.
+ Uses Django settings from .env file.
+
+ Args:
+ email_message: EmailMultiAlternatives instance
+ max_retries: Maximum number of retry attempts
+ delay: Delay between retries in seconds
+
+ Returns:
+ bool: True if email was sent successfully, False otherwise
+ """
+ for attempt in range(max_retries + 1):
+ try:
+ # Test connection before sending (uses EMAIL_BACKEND from settings)
+ connection = get_connection()
+ connection.open()
+ connection.close()
+
+ # Send the email (uses EMAIL_BACKEND and credentials from settings)
+ email_message.send()
+ return True
+
+ except Exception as e:
+ logger.warning(f"Email send attempt {attempt + 1} failed: {str(e)}")
+
+ if attempt < max_retries:
+ time.sleep(delay * (2 ** attempt)) # Exponential backoff
+ continue
+ else:
+ logger.error(f"Failed to send email after {max_retries + 1} attempts: {str(e)}")
+ return False
+
+ return False
+
+
class SupportEmailService:
"""Service for sending support ticket related emails"""
@@ -39,6 +77,8 @@ class SupportEmailService:
'status': ticket.status.name if ticket.status else 'Open',
'created_at': ticket.created_at.strftime('%B %d, %Y at %I:%M %p'),
'support_url': f'{settings.SITE_URL}/support-center',
+ 'logo_url': f'{settings.SITE_URL}/images/logo.png',
+ 'site_url': settings.SITE_URL,
}
# Render HTML email
@@ -53,22 +93,25 @@ class SupportEmailService:
context
)
- # Create email
+ # Create email (uses DEFAULT_FROM_EMAIL from settings)
email = EmailMultiAlternatives(
subject=subject,
body=text_message,
- from_email=settings.DEFAULT_FROM_EMAIL,
+ from_email=settings.DEFAULT_FROM_EMAIL, # From .env file
to=[ticket.user_email],
)
# Attach HTML version
email.attach_alternative(html_message, "text/html")
- # Send email
- email.send(fail_silently=False)
+ # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings)
+ success = _send_email_with_retry(email)
- logger.info(f'Ticket confirmation email sent to user: {ticket.user_email} for ticket {ticket.ticket_number}')
- return True
+ if success:
+ logger.info(f'Ticket confirmation email sent to user: {ticket.user_email} for ticket {ticket.ticket_number}')
+ else:
+ logger.error(f'Failed to send ticket confirmation email to user: {ticket.user_email} for ticket {ticket.ticket_number} after retries')
+ return success
except Exception as e:
logger.error(f'Failed to send ticket confirmation email to user: {str(e)}')
@@ -104,6 +147,8 @@ class SupportEmailService:
'status': ticket.status.name if ticket.status else 'Open',
'created_at': ticket.created_at.strftime('%B %d, %Y at %I:%M %p'),
'admin_url': f'{settings.SITE_URL}/admin/support/supportticket/{ticket.id}/change/',
+ 'logo_url': f'{settings.SITE_URL}/images/logo.png',
+ 'site_url': settings.SITE_URL,
}
# Render HTML email
@@ -118,23 +163,26 @@ class SupportEmailService:
context
)
- # Create email
+ # Create email (uses DEFAULT_FROM_EMAIL and SUPPORT_EMAIL from settings)
email = EmailMultiAlternatives(
subject=subject,
body=text_message,
- from_email=settings.DEFAULT_FROM_EMAIL,
- to=[company_email],
+ from_email=settings.DEFAULT_FROM_EMAIL, # From .env file
+ to=[company_email], # Uses settings.SUPPORT_EMAIL or settings.DEFAULT_FROM_EMAIL
reply_to=[ticket.user_email],
)
# Attach HTML version
email.attach_alternative(html_message, "text/html")
- # Send email
- email.send(fail_silently=False)
+ # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings)
+ success = _send_email_with_retry(email)
- logger.info(f'Ticket notification email sent to company: {company_email} for ticket {ticket.ticket_number}')
- return True
+ if success:
+ logger.info(f'Ticket notification email sent to company: {company_email} for ticket {ticket.ticket_number}')
+ else:
+ logger.error(f'Failed to send ticket notification email to company: {company_email} for ticket {ticket.ticket_number} after retries')
+ return success
except Exception as e:
logger.error(f'Failed to send ticket notification email to company: {str(e)}')
diff --git a/backEnd/support/management/__pycache__/__init__.cpython-312.pyc b/backEnd/support/management/__pycache__/__init__.cpython-312.pyc
index 40d890f6..20be214d 100644
Binary files a/backEnd/support/management/__pycache__/__init__.cpython-312.pyc and b/backEnd/support/management/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backEnd/support/management/commands/__pycache__/__init__.cpython-312.pyc b/backEnd/support/management/commands/__pycache__/__init__.cpython-312.pyc
index 56776c72..cb608464 100644
Binary files a/backEnd/support/management/commands/__pycache__/__init__.cpython-312.pyc and b/backEnd/support/management/commands/__pycache__/__init__.cpython-312.pyc differ
diff --git a/backEnd/support/management/commands/__pycache__/populate_support_data.cpython-312.pyc b/backEnd/support/management/commands/__pycache__/populate_support_data.cpython-312.pyc
index 0bfbfeda..f0c3fadf 100644
Binary files a/backEnd/support/management/commands/__pycache__/populate_support_data.cpython-312.pyc and b/backEnd/support/management/commands/__pycache__/populate_support_data.cpython-312.pyc differ
diff --git a/backEnd/support/management/commands/populate_support_data.py b/backEnd/support/management/commands/populate_support_data.py
index 772326e4..28aad87c 100644
--- a/backEnd/support/management/commands/populate_support_data.py
+++ b/backEnd/support/management/commands/populate_support_data.py
@@ -1,43 +1,87 @@
from django.core.management.base import BaseCommand
from django.utils.text import slugify
+from django.db import transaction
from support.models import (
TicketStatus, TicketPriority, TicketCategory,
KnowledgeBaseCategory, KnowledgeBaseArticle
)
+from services.models import Service
class Command(BaseCommand):
- help = 'Populate support center with initial data'
+ help = 'Populate support center with enterprise support data based on services'
+
+ def add_arguments(self, parser):
+ parser.add_argument(
+ '--delete-old',
+ action='store_true',
+ help='Delete all existing support data before populating',
+ )
def handle(self, *args, **kwargs):
- self.stdout.write(self.style.SUCCESS('Starting to populate support data...'))
+ delete_old = kwargs.get('delete_old', False)
+
+ self.stdout.write(self.style.SUCCESS('Starting to populate enterprise support data...'))
- # Create Ticket Statuses
- self.create_ticket_statuses()
-
- # Create Ticket Priorities
- self.create_ticket_priorities()
-
- # Create Ticket Categories
- self.create_ticket_categories()
-
- # Create Knowledge Base Categories
- self.create_kb_categories()
-
- # Create Knowledge Base Articles
- self.create_kb_articles()
+ with transaction.atomic():
+ # Delete old data if requested
+ if delete_old:
+ self.delete_old_data()
+
+ # Create Ticket Statuses
+ self.create_ticket_statuses()
+
+ # Create Ticket Priorities
+ self.create_ticket_priorities()
+
+ # Create Ticket Categories based on services
+ self.create_ticket_categories()
+
+ # Create Knowledge Base Categories
+ self.create_kb_categories()
+
+ # Create Knowledge Base Articles
+ self.create_kb_articles()
- self.stdout.write(self.style.SUCCESS('Successfully populated support data!'))
+ self.stdout.write(self.style.SUCCESS('Successfully populated enterprise support data!'))
+
+ def delete_old_data(self):
+ """Delete all existing support data"""
+ self.stdout.write(self.style.WARNING('Deleting old support data...'))
+
+ # Delete in reverse order of dependencies
+ kb_articles_count = KnowledgeBaseArticle.objects.count()
+ KnowledgeBaseArticle.objects.all().delete()
+ self.stdout.write(f' ✓ Deleted {kb_articles_count} knowledge base articles')
+
+ kb_categories_count = KnowledgeBaseCategory.objects.count()
+ KnowledgeBaseCategory.objects.all().delete()
+ self.stdout.write(f' ✓ Deleted {kb_categories_count} knowledge base categories')
+
+ ticket_categories_count = TicketCategory.objects.count()
+ TicketCategory.objects.all().delete()
+ self.stdout.write(f' ✓ Deleted {ticket_categories_count} ticket categories')
+
+ ticket_priorities_count = TicketPriority.objects.count()
+ TicketPriority.objects.all().delete()
+ self.stdout.write(f' ✓ Deleted {ticket_priorities_count} ticket priorities')
+
+ ticket_statuses_count = TicketStatus.objects.count()
+ TicketStatus.objects.all().delete()
+ self.stdout.write(f' ✓ Deleted {ticket_statuses_count} ticket statuses')
+
+ self.stdout.write(self.style.SUCCESS('Old data deleted successfully!'))
def create_ticket_statuses(self):
self.stdout.write('Creating ticket statuses...')
statuses = [
- {'name': 'Open', 'color': '#3b82f6', 'description': 'Ticket has been opened', 'is_closed': False, 'display_order': 1},
- {'name': 'In Progress', 'color': '#f59e0b', 'description': 'Ticket is being worked on', 'is_closed': False, 'display_order': 2},
- {'name': 'Pending Response', 'color': '#8b5cf6', 'description': 'Waiting for customer response', 'is_closed': False, 'display_order': 3},
- {'name': 'Resolved', 'color': '#10b981', 'description': 'Ticket has been resolved', 'is_closed': True, 'display_order': 4},
- {'name': 'Closed', 'color': '#6b7280', 'description': 'Ticket has been closed', 'is_closed': True, 'display_order': 5},
+ {'name': 'Open', 'color': '#3b82f6', 'description': 'Ticket has been opened and is awaiting assignment', 'is_closed': False, 'display_order': 1},
+ {'name': 'In Progress', 'color': '#f59e0b', 'description': 'Ticket is being actively worked on by support team', 'is_closed': False, 'display_order': 2},
+ {'name': 'Pending Response', 'color': '#8b5cf6', 'description': 'Waiting for customer response or additional information', 'is_closed': False, 'display_order': 3},
+ {'name': 'On Hold', 'color': '#6b7280', 'description': 'Ticket is temporarily on hold', 'is_closed': False, 'display_order': 4},
+ {'name': 'Resolved', 'color': '#10b981', 'description': 'Ticket has been resolved and is awaiting customer confirmation', 'is_closed': True, 'display_order': 5},
+ {'name': 'Closed', 'color': '#6b7280', 'description': 'Ticket has been closed', 'is_closed': True, 'display_order': 6},
]
for status_data in statuses:
@@ -54,10 +98,10 @@ class Command(BaseCommand):
self.stdout.write('Creating ticket priorities...')
priorities = [
- {'name': 'Low', 'level': 4, 'color': '#6b7280', 'description': 'Low priority issue', 'sla_hours': 72},
- {'name': 'Medium', 'level': 3, 'color': '#3b82f6', 'description': 'Medium priority issue', 'sla_hours': 48},
- {'name': 'High', 'level': 2, 'color': '#f59e0b', 'description': 'High priority issue', 'sla_hours': 24},
- {'name': 'Critical', 'level': 1, 'color': '#ef4444', 'description': 'Critical issue requiring immediate attention', 'sla_hours': 4},
+ {'name': 'Low', 'level': 4, 'color': '#6b7280', 'description': 'Low priority issue - non-urgent', 'sla_hours': 72},
+ {'name': 'Medium', 'level': 3, 'color': '#3b82f6', 'description': 'Medium priority issue - standard response', 'sla_hours': 48},
+ {'name': 'High', 'level': 2, 'color': '#f59e0b', 'description': 'High priority issue - requires prompt attention', 'sla_hours': 24},
+ {'name': 'Critical', 'level': 1, 'color': '#ef4444', 'description': 'Critical issue requiring immediate attention - production down', 'sla_hours': 4},
]
for priority_data in priorities:
@@ -71,37 +115,108 @@ class Command(BaseCommand):
self.stdout.write(f' - Priority already exists: {priority.name}')
def create_ticket_categories(self):
- self.stdout.write('Creating ticket categories...')
+ self.stdout.write('Creating ticket categories based on services...')
- categories = [
- {'name': 'Technical Support', 'description': 'Technical issues and troubleshooting', 'color': '#3b82f6', 'icon': 'fa-wrench', 'display_order': 1},
+ # Get all active services
+ services = Service.objects.filter(is_active=True).order_by('display_order')
+
+ # Service-based categories with icons and colors
+ service_category_mapping = {
+ 'backend': {'icon': 'fa-server', 'color': '#3b82f6', 'description': 'Backend development, APIs, and server-side issues'},
+ 'frontend': {'icon': 'fa-code', 'color': '#10b981', 'description': 'Frontend development, UI/UX, and client-side issues'},
+ 'data': {'icon': 'fa-database', 'color': '#8b5cf6', 'description': 'Data replication, synchronization, and database issues'},
+ 'infrastructure': {'icon': 'fa-cloud', 'color': '#f59e0b', 'description': 'Infrastructure management, cloud services, and system administration'},
+ 'server': {'icon': 'fa-server', 'color': '#ef4444', 'description': 'Server management, configuration, and administration'},
+ 'devops': {'icon': 'fa-cogs', 'color': '#06b6d4', 'description': 'DevOps, CI/CD, automation, and deployment issues'},
+ 'api': {'icon': 'fa-plug', 'color': '#ec4899', 'description': 'API integration, connectivity, and third-party service issues'},
+ 'ai': {'icon': 'fa-brain', 'color': '#daa520', 'description': 'AI/ML solutions, model training, and machine learning issues'},
+ }
+
+ # Base categories that apply to all services
+ base_categories = [
+ {'name': 'Technical Support', 'description': 'General technical issues and troubleshooting', 'color': '#3b82f6', 'icon': 'fa-wrench', 'display_order': 1},
{'name': 'Billing & Payments', 'description': 'Billing questions and payment issues', 'color': '#10b981', 'icon': 'fa-credit-card', 'display_order': 2},
{'name': 'Account Management', 'description': 'Account settings and access issues', 'color': '#8b5cf6', 'icon': 'fa-user-cog', 'display_order': 3},
- {'name': 'Product Inquiry', 'description': 'Questions about products and features', 'color': '#f59e0b', 'icon': 'fa-box', 'display_order': 4},
+ {'name': 'Feature Requests', 'description': 'Request new features or improvements', 'color': '#06b6d4', 'icon': 'fa-lightbulb', 'display_order': 4},
{'name': 'Bug Reports', 'description': 'Report software bugs and issues', 'color': '#ef4444', 'icon': 'fa-bug', 'display_order': 5},
- {'name': 'Feature Requests', 'description': 'Request new features or improvements', 'color': '#06b6d4', 'icon': 'fa-lightbulb', 'display_order': 6},
]
-
- for category_data in categories:
+
+ # Create base categories
+ display_order = 1
+ for category_data in base_categories:
category, created = TicketCategory.objects.get_or_create(
name=category_data['name'],
- defaults=category_data
+ defaults={**category_data, 'display_order': display_order}
)
if created:
self.stdout.write(self.style.SUCCESS(f' ✓ Created category: {category.name}'))
else:
self.stdout.write(f' - Category already exists: {category.name}')
+ display_order += 1
+
+ # Create service-specific categories
+ for service in services:
+ service_title_lower = service.title.lower()
+ category_name = None
+ category_config = None
+
+ # Map service to category
+ if 'backend' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['backend']
+ elif 'frontend' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['frontend']
+ elif 'data replication' in service_title_lower or 'synchronization' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['data']
+ elif 'infrastructure management' in service_title_lower or 'infrastructure support' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['infrastructure']
+ elif 'server management' in service_title_lower or 'server administration' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['server']
+ elif 'devops' in service_title_lower or 'automation' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['devops']
+ elif 'api integration' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['api']
+ elif 'artificial intelligence' in service_title_lower or 'machine learning' in service_title_lower or 'ai' in service_title_lower:
+ category_name = f'{service.title} Support'
+ category_config = service_category_mapping['ai']
+
+ if category_name and category_config:
+ category, created = TicketCategory.objects.get_or_create(
+ name=category_name,
+ defaults={
+ 'description': f'Support for {service.title}. {category_config["description"]}',
+ 'color': category_config['color'],
+ 'icon': category_config['icon'],
+ 'display_order': display_order
+ }
+ )
+ if created:
+ self.stdout.write(self.style.SUCCESS(f' ✓ Created category: {category.name}'))
+ else:
+ self.stdout.write(f' - Category already exists: {category.name}')
+ display_order += 1
def create_kb_categories(self):
self.stdout.write('Creating knowledge base categories...')
categories = [
- {'name': 'Getting Started', 'slug': 'getting-started', 'description': 'Learn the basics and get started quickly', 'icon': 'fa-rocket', 'color': '#3b82f6', 'display_order': 1},
- {'name': 'Account & Billing', 'slug': 'account-billing', 'description': 'Manage your account and billing information', 'icon': 'fa-user-circle', 'color': '#10b981', 'display_order': 2},
- {'name': 'Technical Documentation', 'slug': 'technical-docs', 'description': 'Technical guides and API documentation', 'icon': 'fa-code', 'color': '#8b5cf6', 'display_order': 3},
- {'name': 'Troubleshooting', 'slug': 'troubleshooting', 'description': 'Common issues and how to resolve them', 'icon': 'fa-tools', 'color': '#f59e0b', 'display_order': 4},
- {'name': 'Security & Privacy', 'slug': 'security-privacy', 'description': 'Security features and privacy settings', 'icon': 'fa-shield-alt', 'color': '#ef4444', 'display_order': 5},
- {'name': 'Best Practices', 'slug': 'best-practices', 'description': 'Tips and best practices for optimal use', 'icon': 'fa-star', 'color': '#daa520', 'display_order': 6},
+ {'name': 'Getting Started', 'slug': 'getting-started', 'description': 'Learn the basics and get started with our enterprise services', 'icon': 'fa-rocket', 'color': '#3b82f6', 'display_order': 1},
+ {'name': 'Backend Development', 'slug': 'backend-development', 'description': 'Backend development guides, APIs, and server-side documentation', 'icon': 'fa-server', 'color': '#3b82f6', 'display_order': 2},
+ {'name': 'Frontend Development', 'slug': 'frontend-development', 'description': 'Frontend development guides, UI/UX, and client-side documentation', 'icon': 'fa-code', 'color': '#10b981', 'display_order': 3},
+ {'name': 'Infrastructure & DevOps', 'slug': 'infrastructure-devops', 'description': 'Infrastructure management, DevOps, and deployment guides', 'icon': 'fa-cloud', 'color': '#f59e0b', 'display_order': 4},
+ {'name': 'Data Management', 'slug': 'data-management', 'description': 'Data replication, synchronization, and database management', 'icon': 'fa-database', 'color': '#8b5cf6', 'display_order': 5},
+ {'name': 'API Integration', 'slug': 'api-integration', 'description': 'API integration guides and third-party service connectivity', 'icon': 'fa-plug', 'color': '#ec4899', 'display_order': 6},
+ {'name': 'AI & Machine Learning', 'slug': 'ai-machine-learning', 'description': 'AI/ML solutions, model training, and machine learning guides', 'icon': 'fa-brain', 'color': '#daa520', 'display_order': 7},
+ {'name': 'Troubleshooting', 'slug': 'troubleshooting', 'description': 'Common issues and how to resolve them', 'icon': 'fa-tools', 'color': '#ef4444', 'display_order': 8},
+ {'name': 'Security & Privacy', 'slug': 'security-privacy', 'description': 'Security features, best practices, and privacy settings', 'icon': 'fa-shield-alt', 'color': '#ef4444', 'display_order': 9},
+ {'name': 'Account & Billing', 'slug': 'account-billing', 'description': 'Manage your account and billing information', 'icon': 'fa-user-circle', 'color': '#10b981', 'display_order': 10},
+ {'name': 'Best Practices', 'slug': 'best-practices', 'description': 'Tips and best practices for optimal use of our services', 'icon': 'fa-star', 'color': '#daa520', 'display_order': 11},
]
for category_data in categories:
@@ -119,140 +234,455 @@ class Command(BaseCommand):
# Get categories
getting_started = KnowledgeBaseCategory.objects.filter(slug='getting-started').first()
- account_billing = KnowledgeBaseCategory.objects.filter(slug='account-billing').first()
- technical = KnowledgeBaseCategory.objects.filter(slug='technical-docs').first()
+ backend_dev = KnowledgeBaseCategory.objects.filter(slug='backend-development').first()
+ frontend_dev = KnowledgeBaseCategory.objects.filter(slug='frontend-development').first()
+ infrastructure = KnowledgeBaseCategory.objects.filter(slug='infrastructure-devops').first()
+ data_mgmt = KnowledgeBaseCategory.objects.filter(slug='data-management').first()
+ api_integration = KnowledgeBaseCategory.objects.filter(slug='api-integration').first()
+ ai_ml = KnowledgeBaseCategory.objects.filter(slug='ai-machine-learning').first()
troubleshooting = KnowledgeBaseCategory.objects.filter(slug='troubleshooting').first()
+ security = KnowledgeBaseCategory.objects.filter(slug='security-privacy').first()
+ account_billing = KnowledgeBaseCategory.objects.filter(slug='account-billing').first()
+ best_practices = KnowledgeBaseCategory.objects.filter(slug='best-practices').first()
articles = [
{
- 'title': 'How to Get Started with Our Platform',
- 'slug': 'how-to-get-started',
+ 'title': 'Getting Started with Enterprise Services',
+ 'slug': 'getting-started-enterprise-services',
'category': getting_started,
- 'summary': 'A comprehensive guide to help you get started with our platform quickly and easily.',
- 'content': '''Welcome to Our Platform!
- This guide will help you get started with our platform in just a few simple steps.
+ 'summary': 'A comprehensive guide to help you get started with our enterprise services quickly and efficiently.',
+ 'content': '''Welcome to GNX Enterprise Services!
+ This guide will help you get started with our enterprise services in just a few simple steps.
- Step 1: Create Your Account
- Visit our sign-up page and create your account using your email address or social login.
+ Step 1: Understand Your Service Package
+ Review your service agreement and understand what services are included in your package. Each service comes with specific deliverables, timelines, and support options.
- Step 2: Complete Your Profile
- Add your company information and customize your profile settings.
+ Step 2: Access Your Service Portal
+ Log in to your enterprise portal to access service documentation, support tickets, and project management tools.
- Step 3: Explore the Dashboard
- Familiarize yourself with the main dashboard and available features.
+ Step 3: Set Up Your Development Environment
+ Follow the setup guides for your specific services. We provide detailed documentation for backend, frontend, infrastructure, and integration services.
- Step 4: Start Using Our Services
- Begin using our services and tools to achieve your business goals.
+ Step 4: Connect with Your Support Team
+ Your dedicated support team is available 24/7. Use the support ticket system for technical issues or contact your account manager for service-related questions.
- If you need any help, our support team is always here to assist you!
''',
+ Step 5: Explore Knowledge Base
+ Browse our comprehensive knowledge base for detailed guides, API documentation, troubleshooting tips, and best practices.
+
+ If you need any help, our enterprise support team is always here to assist you!
''',
'is_published': True,
'is_featured': True,
},
{
- 'title': 'Understanding Your Billing Cycle',
- 'slug': 'understanding-billing-cycle',
- 'category': account_billing,
- 'summary': 'Learn how our billing cycle works and how to manage your payments.',
- 'content': '''Billing Cycle Overview
- Understanding your billing cycle is important for managing your subscription effectively.
+ 'title': 'Enterprise Backend Development Best Practices',
+ 'slug': 'backend-development-best-practices',
+ 'category': backend_dev,
+ 'summary': 'Learn best practices for enterprise backend development including API design, database optimization, and security.',
+ 'content': '''Backend Development Best Practices
+ Follow these best practices to ensure your backend applications are robust, scalable, and secure.
- Monthly Billing
- For monthly subscriptions, you'll be charged on the same date each month.
+ API Design Principles
+
+ - Use RESTful conventions for API endpoints
+ - Implement proper versioning (e.g., /api/v1/)
+ - Use consistent naming conventions
+ - Return appropriate HTTP status codes
+ - Implement pagination for large datasets
+
- Annual Billing
- Annual subscriptions offer a discount and are billed once per year.
+ Database Optimization
+
+ - Use proper indexing for frequently queried fields
+ - Implement connection pooling
+ - Use database transactions appropriately
+ - Optimize queries to avoid N+1 problems
+ - Implement caching strategies
+
- Managing Your Subscription
- You can upgrade, downgrade, or cancel your subscription at any time from your account settings.
''',
+ Security Best Practices
+
+ - Implement authentication and authorization
+ - Use HTTPS for all API communications
+ - Validate and sanitize all inputs
+ - Implement rate limiting
+ - Keep dependencies updated
+
+
+ Performance Optimization
+
+ - Implement caching at multiple levels
+ - Use async processing for long-running tasks
+ - Optimize database queries
+ - Implement proper logging and monitoring
+ - Use CDN for static assets
+
''',
'is_published': True,
'is_featured': True,
},
{
- 'title': 'API Documentation Overview',
- 'slug': 'api-documentation-overview',
- 'category': technical,
- 'summary': 'Complete guide to our API endpoints and authentication.',
- 'content': '''API Documentation
- Our API provides programmatic access to all platform features.
+ 'title': 'Frontend Development Guidelines',
+ 'slug': 'frontend-development-guidelines',
+ 'category': frontend_dev,
+ 'summary': 'Comprehensive guidelines for building modern, responsive frontend applications.',
+ 'content': '''Frontend Development Guidelines
+ Build modern, performant, and accessible frontend applications with these guidelines.
- Authentication
- All API requests require authentication using an API key.
- Authorization: Bearer YOUR_API_KEY
+ Component Architecture
+
+ - Use component-based architecture (React, Vue, etc.)
+ - Keep components small and focused
+ - Implement proper state management
+ - Use reusable component libraries
+ - Follow consistent naming conventions
+
- Rate Limits
- Standard accounts are limited to 1000 requests per hour.
+ Performance Optimization
+
+ - Implement code splitting and lazy loading
+ - Optimize images and assets
+ - Use efficient rendering techniques
+ - Minimize bundle size
+ - Implement proper caching strategies
+
- Response Format
- All responses are returned in JSON format.
''',
+ Responsive Design
+
+ - Use mobile-first approach
+ - Test on multiple devices and browsers
+ - Implement flexible layouts
+ - Optimize touch interactions
+ - Ensure proper viewport settings
+
+
+ Accessibility
+
+ - Use semantic HTML
+ - Implement proper ARIA labels
+ - Ensure keyboard navigation
+ - Maintain proper color contrast
+ - Test with screen readers
+
''',
'is_published': True,
'is_featured': True,
},
{
- 'title': 'Common Login Issues and Solutions',
- 'slug': 'common-login-issues',
+ 'title': 'DevOps and Infrastructure Setup Guide',
+ 'slug': 'devops-infrastructure-setup',
+ 'category': infrastructure,
+ 'summary': 'Complete guide to setting up DevOps pipelines and infrastructure automation.',
+ 'content': '''DevOps and Infrastructure Setup
+ Set up robust DevOps pipelines and infrastructure automation for your enterprise applications.
+
+ CI/CD Pipeline Setup
+
+ - Configure automated testing in your pipeline
+ - Implement code quality checks
+ - Set up automated deployments
+ - Configure environment-specific deployments
+ - Implement rollback strategies
+
+
+ Infrastructure as Code
+
+ - Use Terraform or CloudFormation for infrastructure
+ - Version control your infrastructure code
+ - Implement infrastructure testing
+ - Use configuration management tools
+ - Document infrastructure changes
+
+
+ Containerization
+
+ - Containerize your applications with Docker
+ - Use Kubernetes for orchestration
+ - Implement proper health checks
+ - Configure resource limits
+ - Set up container registries
+
+
+ Monitoring and Logging
+
+ - Implement comprehensive monitoring
+ - Set up centralized logging
+ - Configure alerting systems
+ - Use APM tools for performance monitoring
+ - Implement log aggregation
+
''',
+ 'is_published': True,
+ 'is_featured': True,
+ },
+ {
+ 'title': 'Data Replication and Synchronization Guide',
+ 'slug': 'data-replication-synchronization',
+ 'category': data_mgmt,
+ 'summary': 'Complete guide to setting up and managing data replication and synchronization.',
+ 'content': '''Data Replication and Synchronization
+ Ensure data consistency and availability with proper replication and synchronization strategies.
+
+ Replication Strategies
+
+ - Master-Slave replication for read scaling
+ - Master-Master replication for high availability
+ - Multi-region replication for disaster recovery
+ - Real-time vs. batch replication
+ - Conflict resolution strategies
+
+
+ Synchronization Best Practices
+
+ - Implement change data capture (CDC)
+ - Use transaction logs for consistency
+ - Monitor replication lag
+ - Implement data validation
+ - Set up automated failover
+
+
+ Disaster Recovery
+
+ - Regular backup schedules
+ - Test recovery procedures
+ - Maintain multiple backup copies
+ - Document recovery processes
+ - Monitor backup health
+
+
+ Troubleshooting Common Issues
+
+ - Replication lag issues
+ - Data inconsistency problems
+ - Network connectivity issues
+ - Storage capacity management
+ - Performance optimization
+
''',
+ 'is_published': True,
+ 'is_featured': False,
+ },
+ {
+ 'title': 'API Integration Best Practices',
+ 'slug': 'api-integration-best-practices',
+ 'category': api_integration,
+ 'summary': 'Best practices for integrating with third-party APIs and services.',
+ 'content': '''API Integration Best Practices
+ Integrate seamlessly with third-party APIs using these best practices.
+
+ Authentication and Security
+
+ - Use OAuth 2.0 for secure authentication
+ - Store API keys securely
+ - Implement token refresh mechanisms
+ - Use HTTPS for all API calls
+ - Validate API responses
+
+
+ Error Handling
+
+ - Implement retry logic with exponential backoff
+ - Handle rate limiting gracefully
+ - Log all API errors
+ - Implement circuit breakers
+ - Provide meaningful error messages
+
+
+ Performance Optimization
+
+ - Implement request caching
+ - Use batch requests when possible
+ - Implement connection pooling
+ - Monitor API response times
+ - Optimize payload sizes
+
+
+ Testing and Monitoring
+
+ - Test with sandbox environments
+ - Monitor API usage and costs
+ - Set up alerts for failures
+ - Document integration patterns
+ - Version your integrations
+
''',
+ 'is_published': True,
+ 'is_featured': False,
+ },
+ {
+ 'title': 'AI and Machine Learning Implementation Guide',
+ 'slug': 'ai-machine-learning-implementation',
+ 'category': ai_ml,
+ 'summary': 'Guide to implementing AI and machine learning solutions in your applications.',
+ 'content': '''AI and Machine Learning Implementation
+ Integrate AI and machine learning capabilities into your enterprise applications.
+
+ Model Development
+
+ - Define clear use cases and objectives
+ - Prepare and clean your data
+ - Choose appropriate algorithms
+ - Train and validate models
+ - Evaluate model performance
+
+
+ Model Deployment
+
+ - Containerize models for deployment
+ - Implement model versioning
+ - Set up model serving infrastructure
+ - Implement A/B testing
+ - Monitor model performance
+
+
+ Integration Best Practices
+
+ - Use API gateways for model access
+ - Implement proper authentication
+ - Handle model inference errors
+ - Optimize inference latency
+ - Implement caching strategies
+
+
+ Monitoring and Maintenance
+
+ - Monitor model accuracy over time
+ - Track data drift
+ - Implement model retraining pipelines
+ - Set up performance alerts
+ - Document model behavior
+
''',
+ 'is_published': True,
+ 'is_featured': True,
+ },
+ {
+ 'title': 'Common Troubleshooting Issues',
+ 'slug': 'common-troubleshooting-issues',
'category': troubleshooting,
- 'summary': 'Troubleshoot common login problems and learn how to resolve them.',
- 'content': '''Login Troubleshooting
- Having trouble logging in? Here are some common issues and solutions.
+ 'summary': 'Common issues and their solutions for enterprise services.',
+ 'content': '''Common Troubleshooting Issues
+ Resolve common issues quickly with these troubleshooting guides.
- Forgot Password
- Click "Forgot Password" on the login page to reset your password via email.
+ Connection Issues
+
+ - Check network connectivity
+ - Verify firewall settings
+ - Test DNS resolution
+ - Check SSL/TLS certificates
+ - Review connection timeouts
+
- Account Locked
- After multiple failed login attempts, your account may be temporarily locked for security.
+ Performance Issues
+
+ - Check server resource usage
+ - Review database query performance
+ - Analyze application logs
+ - Check for memory leaks
+ - Review caching strategies
+
- Browser Issues
- Clear your browser cache and cookies, or try a different browser.
+ Authentication Problems
+
+ - Verify credentials
+ - Check token expiration
+ - Review permission settings
+ - Test with different accounts
+ - Check session management
+
- Still Having Issues?
- Contact our support team for personalized assistance.
''',
+ Data Issues
+
+ - Verify data integrity
+ - Check replication status
+ - Review data validation rules
+ - Check for data corruption
+ - Verify backup integrity
+
+
+ If you continue to experience issues, please contact our support team.
''',
'is_published': True,
'is_featured': False,
},
{
- 'title': 'How to Update Your Payment Method',
- 'slug': 'update-payment-method',
- 'category': account_billing,
- 'summary': 'Step-by-step guide to updating your payment information.',
- 'content': '''Updating Payment Information
- Keep your payment method up to date to avoid service interruptions.
+ 'title': 'Enterprise Security Best Practices',
+ 'slug': 'enterprise-security-best-practices',
+ 'category': security,
+ 'summary': 'Essential security practices for enterprise applications and infrastructure.',
+ 'content': '''Enterprise Security Best Practices
+ Protect your enterprise applications and data with these security best practices.
- Steps to Update
-
- - Go to Account Settings
- - Click on "Billing & Payments"
- - Select "Update Payment Method"
- - Enter your new payment details
- - Click "Save Changes"
-
+ Authentication and Authorization
+
+ - Implement multi-factor authentication (MFA)
+ - Use strong password policies
+ - Implement role-based access control (RBAC)
+ - Regularly review user permissions
+ - Use OAuth 2.0 for API authentication
+
- Supported Payment Methods
- We accept all major credit cards, PayPal, and bank transfers.
''',
- 'is_published': True,
- 'is_featured': False,
- },
- {
- 'title': 'Security Best Practices',
- 'slug': 'security-best-practices',
- 'category': KnowledgeBaseCategory.objects.filter(slug='security-privacy').first(),
- 'summary': 'Essential security practices to keep your account safe.',
- 'content': '''Account Security
- Follow these best practices to keep your account secure.
+ Data Protection
+
+ - Encrypt data at rest and in transit
+ - Implement proper key management
+ - Use secure communication protocols
+ - Implement data masking for sensitive information
+ - Regularly backup critical data
+
- Use Strong Passwords
- Create complex passwords with a mix of letters, numbers, and symbols.
+ Network Security
+
+ - Use firewalls and network segmentation
+ - Implement DDoS protection
+ - Use VPNs for remote access
+ - Monitor network traffic
+ - Implement intrusion detection systems
+
- Enable Two-Factor Authentication
- Add an extra layer of security with 2FA.
-
- Regular Security Audits
- Review your account activity regularly for any suspicious behavior.
-
- Keep Software Updated
- Always use the latest version of our software for the best security.
''',
+ Compliance and Auditing
+
+ - Maintain security audit logs
+ - Regularly review access logs
+ - Conduct security assessments
+ - Stay compliant with regulations
+ - Document security procedures
+
''',
'is_published': True,
'is_featured': True,
},
+ {
+ 'title': 'Understanding Your Enterprise Billing',
+ 'slug': 'enterprise-billing-guide',
+ 'category': account_billing,
+ 'summary': 'Learn how enterprise billing works and how to manage your account.',
+ 'content': '''Enterprise Billing Guide
+ Understand your enterprise billing and manage your account effectively.
+
+ Billing Structure
+
+ - Service-based pricing models
+ - Monthly vs. annual billing options
+ - Usage-based charges
+ - Support tier pricing
+ - Additional service add-ons
+
+
+ Payment Methods
+
+ - Credit card payments
+ - Bank transfers
+ - Purchase orders
+ - Invoice-based billing
+ - Payment terms and schedules
+
+
+ Managing Your Account
+
+ - Update payment information
+ - View billing history
+ - Download invoices
+ - Manage service subscriptions
+ - Contact billing support
+
+
+ Billing Support
+ For billing questions or issues, contact our billing team through the support portal or email billing@gnxsoft.com.
''',
+ 'is_published': True,
+ 'is_featured': False,
+ },
]
for article_data in articles:
@@ -265,4 +695,3 @@ class Command(BaseCommand):
self.stdout.write(self.style.SUCCESS(f' ✓ Created article: {article.title}'))
else:
self.stdout.write(f' - Article already exists: {article.title}')
-
diff --git a/backEnd/support/signals.py b/backEnd/support/signals.py
index 3682e62a..c9e4b312 100644
--- a/backEnd/support/signals.py
+++ b/backEnd/support/signals.py
@@ -5,16 +5,54 @@ Handles automatic notifications when tickets are updated
from django.db.models.signals import post_save, pre_save
from django.dispatch import receiver
-from django.core.mail import EmailMultiAlternatives
+from django.core.mail import EmailMultiAlternatives, get_connection
from django.template.loader import render_to_string
from django.conf import settings
import logging
+import time
from .models import SupportTicket, TicketMessage, TicketActivity
logger = logging.getLogger(__name__)
+def _send_email_with_retry(email_message, max_retries: int = 3, delay: float = 1.0) -> bool:
+ """
+ Send email with retry logic for production reliability.
+ Uses Django settings from .env file.
+
+ Args:
+ email_message: EmailMultiAlternatives instance
+ max_retries: Maximum number of retry attempts
+ delay: Delay between retries in seconds
+
+ Returns:
+ bool: True if email was sent successfully, False otherwise
+ """
+ for attempt in range(max_retries + 1):
+ try:
+ # Test connection before sending (uses EMAIL_BACKEND from settings)
+ connection = get_connection()
+ connection.open()
+ connection.close()
+
+ # Send the email (uses EMAIL_BACKEND and credentials from settings)
+ email_message.send()
+ return True
+
+ except Exception as e:
+ logger.warning(f"Email send attempt {attempt + 1} failed: {str(e)}")
+
+ if attempt < max_retries:
+ time.sleep(delay * (2 ** attempt)) # Exponential backoff
+ continue
+ else:
+ logger.error(f"Failed to send email after {max_retries + 1} attempts: {str(e)}")
+ return False
+
+ return False
+
+
class TicketUpdateNotifier:
"""Service for sending ticket update notifications"""
@@ -34,6 +72,8 @@ class TicketUpdateNotifier:
'status_color': ticket.status.color if ticket.status else '#3b82f6',
'updated_at': ticket.updated_at.strftime('%B %d, %Y at %I:%M %p'),
'support_url': f'{settings.SITE_URL}/support-center',
+ 'logo_url': f'{settings.SITE_URL}/images/logo.png',
+ 'site_url': settings.SITE_URL,
}
# Render HTML email
@@ -48,19 +88,24 @@ class TicketUpdateNotifier:
context
)
- # Create email
+ # Create email (uses DEFAULT_FROM_EMAIL from settings)
email = EmailMultiAlternatives(
subject=subject,
body=text_message,
- from_email=settings.DEFAULT_FROM_EMAIL,
+ from_email=settings.DEFAULT_FROM_EMAIL, # From .env file
to=[ticket.user_email],
)
email.attach_alternative(html_message, "text/html")
- email.send(fail_silently=False)
- logger.info(f'Status change notification sent for ticket {ticket.ticket_number}')
- return True
+ # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings)
+ success = _send_email_with_retry(email)
+
+ if success:
+ logger.info(f'Status change notification sent for ticket {ticket.ticket_number}')
+ else:
+ logger.error(f'Failed to send status change notification for ticket {ticket.ticket_number} after retries')
+ return success
except Exception as e:
logger.error(f'Failed to send status change notification: {str(e)}')
@@ -85,6 +130,8 @@ class TicketUpdateNotifier:
'message_author': message.author_name or 'Support Team',
'created_at': message.created_at.strftime('%B %d, %Y at %I:%M %p'),
'support_url': f'{settings.SITE_URL}/support-center',
+ 'logo_url': f'{settings.SITE_URL}/images/logo.png',
+ 'site_url': settings.SITE_URL,
}
# Render HTML email
@@ -99,19 +146,24 @@ class TicketUpdateNotifier:
context
)
- # Create email
+ # Create email (uses DEFAULT_FROM_EMAIL from settings)
email = EmailMultiAlternatives(
subject=subject,
body=text_message,
- from_email=settings.DEFAULT_FROM_EMAIL,
+ from_email=settings.DEFAULT_FROM_EMAIL, # From .env file
to=[ticket.user_email],
)
email.attach_alternative(html_message, "text/html")
- email.send(fail_silently=False)
- logger.info(f'Message notification sent for ticket {ticket.ticket_number}')
- return True
+ # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings)
+ success = _send_email_with_retry(email)
+
+ if success:
+ logger.info(f'Message notification sent for ticket {ticket.ticket_number}')
+ else:
+ logger.error(f'Failed to send message notification for ticket {ticket.ticket_number} after retries')
+ return success
except Exception as e:
logger.error(f'Failed to send message notification: {str(e)}')
@@ -131,6 +183,8 @@ class TicketUpdateNotifier:
'assigned_to': assigned_to.get_full_name() or assigned_to.username,
'updated_at': ticket.updated_at.strftime('%B %d, %Y at %I:%M %p'),
'support_url': f'{settings.SITE_URL}/support-center',
+ 'logo_url': f'{settings.SITE_URL}/images/logo.png',
+ 'site_url': settings.SITE_URL,
}
# Render HTML email
@@ -145,19 +199,24 @@ class TicketUpdateNotifier:
context
)
- # Create email
+ # Create email (uses DEFAULT_FROM_EMAIL from settings)
email = EmailMultiAlternatives(
subject=subject,
body=text_message,
- from_email=settings.DEFAULT_FROM_EMAIL,
+ from_email=settings.DEFAULT_FROM_EMAIL, # From .env file
to=[ticket.user_email],
)
email.attach_alternative(html_message, "text/html")
- email.send(fail_silently=False)
- logger.info(f'Assignment notification sent for ticket {ticket.ticket_number}')
- return True
+ # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings)
+ success = _send_email_with_retry(email)
+
+ if success:
+ logger.info(f'Assignment notification sent for ticket {ticket.ticket_number}')
+ else:
+ logger.error(f'Failed to send assignment notification for ticket {ticket.ticket_number} after retries')
+ return success
except Exception as e:
logger.error(f'Failed to send assignment notification: {str(e)}')
diff --git a/backEnd/support/templates/support/ticket_assigned_notification.html b/backEnd/support/templates/support/ticket_assigned_notification.html
index 59febd77..a590edad 100644
--- a/backEnd/support/templates/support/ticket_assigned_notification.html
+++ b/backEnd/support/templates/support/ticket_assigned_notification.html
@@ -5,111 +5,294 @@
Ticket Assigned
-
+
👤 Ticket Assigned
- Dear {{ user_name }},
+ Dear {{ user_name }},
- Your support ticket has been assigned to a team member who will be assisting you.
+
+ Your support ticket has been assigned to a team member who will be assisting you with your request.
+
- Ticket: {{ ticket_number }}
- Subject: {{ title }}
+ Ticket Number
+ {{ ticket_number }}
+
+ Subject
+ {{ title }}
- Assigned To
- {{ assigned_to }}
- {{ updated_at }}
+ Assigned To
+ {{ assigned_to }}
+ {{ updated_at }}
-
+
-
+
Your assigned support agent will review your ticket and respond as soon as possible.
-
+
-
-
- GNX Software Solutions
- Enterprise Support Center
-
-
+
+ GNX Software Solutions
+ Enterprise Support Center
+
+
+
+
This is an automated notification. For assistance, visit our Support Center
-
+
-
diff --git a/backEnd/support/templates/support/ticket_confirmation_user.html b/backEnd/support/templates/support/ticket_confirmation_user.html
index e72e5274..572d123b 100644
--- a/backEnd/support/templates/support/ticket_confirmation_user.html
+++ b/backEnd/support/templates/support/ticket_confirmation_user.html
@@ -5,121 +5,357 @@
Support Ticket Confirmation
-
+
- ✓ Support Ticket Created
+ ✓ Ticket Created Successfully
+ Your support request has been received
- Dear {{ user_name }},
+ Dear {{ user_name }},
- Thank you for contacting our support team. We've received your support request and our team will respond as soon as possible.
+
+ Thank you for contacting our support team. We've received your support request and our team will respond as soon as possible. Your ticket has been created and assigned a unique reference number.
+
- Your Ticket Number
+ Your Ticket Number
{{ ticket_number }}
- Please save this number for future reference
+ Please save this number for future reference
- Ticket Details
+ Ticket Details
Subject:
@@ -143,7 +379,7 @@
Status:
- {{ status }}
+ {{ status }}
@@ -154,33 +390,36 @@
- Description
- {{ description }}
+ Description
+ {{ description }}
-
- Check Ticket Status
+
-
- What happens next?
- Our support team will review your ticket and respond within our standard SLA timeframe. You'll receive an email notification when there's an update.
-
+
+
+ What happens next?
+ Our support team will review your ticket and respond within our standard SLA timeframe. You'll receive an email notification when there's an update on your ticket.
+
-
-
- GNX Software Solutions
- Enterprise Support Center
-
-
+
+ GNX Software Solutions
+ Enterprise Support Center
+
+
+
+
This is an automated message. Please do not reply directly to this email.
For assistance, please visit our Support Center
-
+
📧 This email was automatically generated from the GNX website contact form.
-⏰ Please respond to the customer within 24 hours as per our service commitment.
++ ⏰ Please respond to the customer within 24 hours as per our service commitment. +
GNX Software Solutions
diff --git a/backEnd/db.sqlite3 b/backEnd/db.sqlite3 index 2be9c5af..7fdd4407 100644 Binary files a/backEnd/db.sqlite3 and b/backEnd/db.sqlite3 differ diff --git a/backEnd/gnx/__pycache__/settings.cpython-312.pyc b/backEnd/gnx/__pycache__/settings.cpython-312.pyc index 9f804137..431ec15e 100644 Binary files a/backEnd/gnx/__pycache__/settings.cpython-312.pyc and b/backEnd/gnx/__pycache__/settings.cpython-312.pyc differ diff --git a/backEnd/gnx/__pycache__/urls.cpython-312.pyc b/backEnd/gnx/__pycache__/urls.cpython-312.pyc index f10e64c0..33139c13 100644 Binary files a/backEnd/gnx/__pycache__/urls.cpython-312.pyc and b/backEnd/gnx/__pycache__/urls.cpython-312.pyc differ diff --git a/backEnd/gnx/settings.py b/backEnd/gnx/settings.py index ef385508..4ab3907c 100644 --- a/backEnd/gnx/settings.py +++ b/backEnd/gnx/settings.py @@ -47,6 +47,7 @@ INSTALLED_APPS = [ 'drf_yasg', # Local apps + 'home', 'contact', 'services', 'about', diff --git a/backEnd/gnx/urls.py b/backEnd/gnx/urls.py index 85fd77b8..a8a89193 100644 --- a/backEnd/gnx/urls.py +++ b/backEnd/gnx/urls.py @@ -46,6 +46,7 @@ urlpatterns = [ # API Root - All API endpoints under /api/ path('api/', include([ + path('home/', include('home.urls')), path('contact/', include('contact.urls')), path('services/', include('services.urls')), path('about/', include('about.urls')), diff --git a/backEnd/home/__init__.py b/backEnd/home/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backEnd/home/__pycache__/__init__.cpython-312.pyc b/backEnd/home/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..90cb8794 Binary files /dev/null and b/backEnd/home/__pycache__/__init__.cpython-312.pyc differ diff --git a/backEnd/home/__pycache__/admin.cpython-312.pyc b/backEnd/home/__pycache__/admin.cpython-312.pyc new file mode 100644 index 00000000..5ec480e6 Binary files /dev/null and b/backEnd/home/__pycache__/admin.cpython-312.pyc differ diff --git a/backEnd/home/__pycache__/apps.cpython-312.pyc b/backEnd/home/__pycache__/apps.cpython-312.pyc new file mode 100644 index 00000000..92da38df Binary files /dev/null and b/backEnd/home/__pycache__/apps.cpython-312.pyc differ diff --git a/backEnd/home/__pycache__/models.cpython-312.pyc b/backEnd/home/__pycache__/models.cpython-312.pyc new file mode 100644 index 00000000..844b9119 Binary files /dev/null and b/backEnd/home/__pycache__/models.cpython-312.pyc differ diff --git a/backEnd/home/__pycache__/serializers.cpython-312.pyc b/backEnd/home/__pycache__/serializers.cpython-312.pyc new file mode 100644 index 00000000..a09015ee Binary files /dev/null and b/backEnd/home/__pycache__/serializers.cpython-312.pyc differ diff --git a/backEnd/home/__pycache__/urls.cpython-312.pyc b/backEnd/home/__pycache__/urls.cpython-312.pyc new file mode 100644 index 00000000..f2b5ba73 Binary files /dev/null and b/backEnd/home/__pycache__/urls.cpython-312.pyc differ diff --git a/backEnd/home/__pycache__/views.cpython-312.pyc b/backEnd/home/__pycache__/views.cpython-312.pyc new file mode 100644 index 00000000..0d7876bb Binary files /dev/null and b/backEnd/home/__pycache__/views.cpython-312.pyc differ diff --git a/backEnd/home/admin.py b/backEnd/home/admin.py new file mode 100644 index 00000000..c6f3688f --- /dev/null +++ b/backEnd/home/admin.py @@ -0,0 +1,28 @@ +from django.contrib import admin +from .models import HomeBanner + + +@admin.register(HomeBanner) +class HomeBannerAdmin(admin.ModelAdmin): + list_display = ['heading', 'highlight', 'badge', 'display_order', 'is_active', 'created_at'] + list_filter = ['is_active', 'created_at'] + search_fields = ['heading', 'highlight', 'badge', 'description'] + ordering = ['display_order', 'created_at'] + readonly_fields = ['created_at', 'updated_at'] + + fieldsets = ( + ('Content', { + 'fields': ('icon', 'badge', 'heading', 'highlight', 'subheading', 'description') + }), + ('Call to Action', { + 'fields': ('button_text', 'button_url') + }), + ('Settings', { + 'fields': ('display_order', 'is_active') + }), + ('Timestamps', { + 'fields': ('created_at', 'updated_at'), + 'classes': ('collapse',) + }), + ) + diff --git a/backEnd/home/apps.py b/backEnd/home/apps.py new file mode 100644 index 00000000..b6e6617c --- /dev/null +++ b/backEnd/home/apps.py @@ -0,0 +1,8 @@ +from django.apps import AppConfig + + +class HomeConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'home' + verbose_name = 'Home' + diff --git a/backEnd/home/management/__init__.py b/backEnd/home/management/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backEnd/home/management/__pycache__/__init__.cpython-312.pyc b/backEnd/home/management/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..0051449e Binary files /dev/null and b/backEnd/home/management/__pycache__/__init__.cpython-312.pyc differ diff --git a/backEnd/home/management/commands/__init__.py b/backEnd/home/management/commands/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backEnd/home/management/commands/__pycache__/__init__.cpython-312.pyc b/backEnd/home/management/commands/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..6c534fe8 Binary files /dev/null and b/backEnd/home/management/commands/__pycache__/__init__.cpython-312.pyc differ diff --git a/backEnd/home/management/commands/__pycache__/populate_home_banners.cpython-312.pyc b/backEnd/home/management/commands/__pycache__/populate_home_banners.cpython-312.pyc new file mode 100644 index 00000000..f1fc37da Binary files /dev/null and b/backEnd/home/management/commands/__pycache__/populate_home_banners.cpython-312.pyc differ diff --git a/backEnd/home/management/commands/populate_home_banners.py b/backEnd/home/management/commands/populate_home_banners.py new file mode 100644 index 00000000..851852dd --- /dev/null +++ b/backEnd/home/management/commands/populate_home_banners.py @@ -0,0 +1,86 @@ +from django.core.management.base import BaseCommand +from home.models import HomeBanner + + +class Command(BaseCommand): + help = 'Populate database with sample homepage banner data' + + def handle(self, *args, **options): + self.stdout.write(self.style.SUCCESS('Starting to populate homepage banner data...')) + + # Clear existing data + HomeBanner.objects.all().delete() + + # Create Homepage Banners + banners_data = [ + { + 'icon': 'fa-solid fa-rocket', + 'badge': 'Enterprise Software Solutions', + 'heading': 'Transform Your Business with', + 'highlight': 'Enterprise-Grade Technology', + 'subheading': 'Scalable, Secure, and Compliant Software Solutions', + 'description': 'GNX Soft delivers cutting-edge enterprise software solutions for mission-critical industries. We empower organizations in Defense & Aerospace, Healthcare, Banking, and more with innovative, secure, and scalable platforms that drive digital transformation.', + 'button_text': 'Explore Our Solutions', + 'button_url': '/services', + 'display_order': 1, + 'is_active': True + }, + { + 'icon': 'fa-solid fa-shield-halved', + 'badge': 'Secure & Compliant', + 'heading': 'Defense-Grade Security for', + 'highlight': 'Mission-Critical Operations', + 'subheading': 'HIPAA, GDPR, and Industry Compliance Guaranteed', + 'description': 'Our enterprise solutions are built with security-first principles, ensuring HIPAA compliance for healthcare, GDPR adherence for EU operations, and defense-grade security for critical infrastructure. Trust GNX Soft for your most sensitive projects.', + 'button_text': 'View Case Studies', + 'button_url': '/case-studies', + 'display_order': 2, + 'is_active': True + }, + { + 'icon': 'fa-solid fa-cloud', + 'badge': 'Cloud-Native Architecture', + 'heading': 'Scalable Infrastructure for', + 'highlight': 'Global Enterprise Operations', + 'subheading': 'EU-Based Infrastructure with 99.9% Uptime SLA', + 'description': 'Deploy on our EU-based cloud infrastructure across Bulgaria, Germany, and Netherlands. Experience enterprise-grade scalability, reliability, and performance with 24/7 monitoring and support. Perfect for organizations requiring data sovereignty and regulatory compliance.', + 'button_text': 'Contact Sales', + 'button_url': '/contact-us', + 'display_order': 3, + 'is_active': True + }, + { + 'icon': 'fa-solid fa-code', + 'badge': 'Full-Stack Development', + 'heading': 'Expert Development Teams for', + 'highlight': 'Complex Enterprise Projects', + 'subheading': 'Java, Python, React, Angular, and Modern Tech Stack', + 'description': 'Our expert development teams specialize in enterprise software development using Java Spring Boot, Python FastAPI/Django, React, Angular, and modern cloud technologies. From microservices architecture to legacy system modernization, we deliver excellence.', + 'button_text': 'Learn More', + 'button_url': '/about', + 'display_order': 4, + 'is_active': True + }, + { + 'icon': 'fa-solid fa-users', + 'badge': 'Trusted by Industry Leaders', + 'heading': 'Partner with GNX Soft for', + 'highlight': 'Digital Transformation Success', + 'subheading': '30+ Enterprise Clients | 8 Industry Verticals | 24/7 Support', + 'description': 'Join leading organizations across Defense & Aerospace, Healthcare & Medical, Banking & Finance, Telecommunications, Public Sector, E-commerce, Food & Beverages, and Oil & Energy. Experience the GNX Soft difference with dedicated enterprise support and proven methodologies.', + 'button_text': 'Get Started', + 'button_url': '/contact-us', + 'display_order': 5, + 'is_active': True + } + ] + + created_banners = [] + for banner_data in banners_data: + banner = HomeBanner.objects.create(**banner_data) + created_banners.append(banner) + self.stdout.write(f'Created banner: {banner.heading} - {banner.highlight}') + + self.stdout.write(self.style.SUCCESS('\nSuccessfully populated homepage banner data!')) + self.stdout.write(f'Created {HomeBanner.objects.count()} homepage banners') + diff --git a/backEnd/home/migrations/0001_initial.py b/backEnd/home/migrations/0001_initial.py new file mode 100644 index 00000000..e9b99644 --- /dev/null +++ b/backEnd/home/migrations/0001_initial.py @@ -0,0 +1,37 @@ +# Generated by Django 5.2.8 on 2025-11-24 04:24 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='HomeBanner', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('icon', models.CharField(help_text="Badge icon class (e.g., 'fa-solid fa-building')", max_length=50)), + ('badge', models.CharField(help_text='Badge text', max_length=100)), + ('heading', models.CharField(help_text='Main heading text', max_length=200)), + ('highlight', models.CharField(blank=True, help_text='Highlighted text (gradient text)', max_length=100)), + ('subheading', models.CharField(blank=True, help_text='Subheading text', max_length=200)), + ('description', models.TextField(help_text='Banner description')), + ('button_text', models.CharField(default='Learn More', help_text='Primary CTA button text', max_length=100)), + ('button_url', models.CharField(default='#', help_text='Primary CTA button URL', max_length=200)), + ('display_order', models.PositiveIntegerField(default=0, help_text='Order for displaying banners in carousel')), + ('is_active', models.BooleanField(default=True, help_text='Whether this banner is active')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ], + options={ + 'verbose_name': 'Home Banner', + 'verbose_name_plural': 'Home Banners', + 'ordering': ['display_order', 'created_at'], + }, + ), + ] diff --git a/backEnd/home/migrations/__init__.py b/backEnd/home/migrations/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/backEnd/home/migrations/__pycache__/0001_initial.cpython-312.pyc b/backEnd/home/migrations/__pycache__/0001_initial.cpython-312.pyc new file mode 100644 index 00000000..41d0795b Binary files /dev/null and b/backEnd/home/migrations/__pycache__/0001_initial.cpython-312.pyc differ diff --git a/backEnd/home/migrations/__pycache__/__init__.cpython-312.pyc b/backEnd/home/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 00000000..44799132 Binary files /dev/null and b/backEnd/home/migrations/__pycache__/__init__.cpython-312.pyc differ diff --git a/backEnd/home/models.py b/backEnd/home/models.py new file mode 100644 index 00000000..c10eb859 --- /dev/null +++ b/backEnd/home/models.py @@ -0,0 +1,27 @@ +from django.db import models +from django.utils import timezone + + +class HomeBanner(models.Model): + """Model for Homepage banner section""" + icon = models.CharField(max_length=50, help_text="Badge icon class (e.g., 'fa-solid fa-building')") + badge = models.CharField(max_length=100, help_text="Badge text") + heading = models.CharField(max_length=200, help_text="Main heading text") + highlight = models.CharField(max_length=100, blank=True, help_text="Highlighted text (gradient text)") + subheading = models.CharField(max_length=200, blank=True, help_text="Subheading text") + description = models.TextField(help_text="Banner description") + button_text = models.CharField(max_length=100, default="Learn More", help_text="Primary CTA button text") + button_url = models.CharField(max_length=200, default="#", help_text="Primary CTA button URL") + display_order = models.PositiveIntegerField(default=0, help_text="Order for displaying banners in carousel") + is_active = models.BooleanField(default=True, help_text="Whether this banner is active") + created_at = models.DateTimeField(auto_now_add=True) + updated_at = models.DateTimeField(auto_now=True) + + class Meta: + verbose_name = "Home Banner" + verbose_name_plural = "Home Banners" + ordering = ['display_order', 'created_at'] + + def __str__(self): + return f"{self.heading} - {self.badge}" + diff --git a/backEnd/home/serializers.py b/backEnd/home/serializers.py new file mode 100644 index 00000000..59614afc --- /dev/null +++ b/backEnd/home/serializers.py @@ -0,0 +1,13 @@ +from rest_framework import serializers +from .models import HomeBanner + + +class HomeBannerSerializer(serializers.ModelSerializer): + class Meta: + model = HomeBanner + fields = [ + 'id', 'icon', 'badge', 'heading', 'highlight', 'subheading', + 'description', 'button_text', 'button_url', 'display_order', + 'is_active', 'created_at', 'updated_at' + ] + diff --git a/backEnd/home/urls.py b/backEnd/home/urls.py new file mode 100644 index 00000000..bde2ef1c --- /dev/null +++ b/backEnd/home/urls.py @@ -0,0 +1,11 @@ +from django.urls import path +from . import views + +app_name = 'home' + +urlpatterns = [ + # Banner endpoints + path('banner/', views.HomeBannerListAPIView.as_view(), name='home-banner-list'), + path('banner/Welcome to Our Platform!
-This guide will help you get started with our platform in just a few simple steps.
+ 'summary': 'A comprehensive guide to help you get started with our enterprise services quickly and efficiently.', + 'content': '''Welcome to GNX Enterprise Services!
+This guide will help you get started with our enterprise services in just a few simple steps.
-Step 1: Create Your Account
-Visit our sign-up page and create your account using your email address or social login.
+Step 1: Understand Your Service Package
+Review your service agreement and understand what services are included in your package. Each service comes with specific deliverables, timelines, and support options.
-Step 2: Complete Your Profile
-Add your company information and customize your profile settings.
+Step 2: Access Your Service Portal
+Log in to your enterprise portal to access service documentation, support tickets, and project management tools.
-Step 3: Explore the Dashboard
-Familiarize yourself with the main dashboard and available features.
+Step 3: Set Up Your Development Environment
+Follow the setup guides for your specific services. We provide detailed documentation for backend, frontend, infrastructure, and integration services.
-Step 4: Start Using Our Services
-Begin using our services and tools to achieve your business goals.
+Step 4: Connect with Your Support Team
+Your dedicated support team is available 24/7. Use the support ticket system for technical issues or contact your account manager for service-related questions.
-If you need any help, our support team is always here to assist you!
''', +Step 5: Explore Knowledge Base
+Browse our comprehensive knowledge base for detailed guides, API documentation, troubleshooting tips, and best practices.
+ +If you need any help, our enterprise support team is always here to assist you!
''', 'is_published': True, 'is_featured': True, }, { - 'title': 'Understanding Your Billing Cycle', - 'slug': 'understanding-billing-cycle', - 'category': account_billing, - 'summary': 'Learn how our billing cycle works and how to manage your payments.', - 'content': '''Billing Cycle Overview
-Understanding your billing cycle is important for managing your subscription effectively.
+ 'title': 'Enterprise Backend Development Best Practices', + 'slug': 'backend-development-best-practices', + 'category': backend_dev, + 'summary': 'Learn best practices for enterprise backend development including API design, database optimization, and security.', + 'content': '''Backend Development Best Practices
+Follow these best practices to ensure your backend applications are robust, scalable, and secure.
-Monthly Billing
-For monthly subscriptions, you'll be charged on the same date each month.
+API Design Principles
+-
+
- Use RESTful conventions for API endpoints +
- Implement proper versioning (e.g., /api/v1/) +
- Use consistent naming conventions +
- Return appropriate HTTP status codes +
- Implement pagination for large datasets +
Annual Billing
-Annual subscriptions offer a discount and are billed once per year.
+Database Optimization
+-
+
- Use proper indexing for frequently queried fields +
- Implement connection pooling +
- Use database transactions appropriately +
- Optimize queries to avoid N+1 problems +
- Implement caching strategies +
Managing Your Subscription
-You can upgrade, downgrade, or cancel your subscription at any time from your account settings.
''', +Security Best Practices
+-
+
- Implement authentication and authorization +
- Use HTTPS for all API communications +
- Validate and sanitize all inputs +
- Implement rate limiting +
- Keep dependencies updated +
Performance Optimization
+-
+
- Implement caching at multiple levels +
- Use async processing for long-running tasks +
- Optimize database queries +
- Implement proper logging and monitoring +
- Use CDN for static assets +
API Documentation
-Our API provides programmatic access to all platform features.
+ 'title': 'Frontend Development Guidelines', + 'slug': 'frontend-development-guidelines', + 'category': frontend_dev, + 'summary': 'Comprehensive guidelines for building modern, responsive frontend applications.', + 'content': '''Frontend Development Guidelines
+Build modern, performant, and accessible frontend applications with these guidelines.
-Authentication
-All API requests require authentication using an API key.
-Authorization: Bearer YOUR_API_KEY
+ Component Architecture
+-
+
- Use component-based architecture (React, Vue, etc.) +
- Keep components small and focused +
- Implement proper state management +
- Use reusable component libraries +
- Follow consistent naming conventions +
Rate Limits
-Standard accounts are limited to 1000 requests per hour.
+Performance Optimization
+-
+
- Implement code splitting and lazy loading +
- Optimize images and assets +
- Use efficient rendering techniques +
- Minimize bundle size +
- Implement proper caching strategies +
Response Format
-All responses are returned in JSON format.
''', +Responsive Design
+-
+
- Use mobile-first approach +
- Test on multiple devices and browsers +
- Implement flexible layouts +
- Optimize touch interactions +
- Ensure proper viewport settings +
Accessibility
+-
+
- Use semantic HTML +
- Implement proper ARIA labels +
- Ensure keyboard navigation +
- Maintain proper color contrast +
- Test with screen readers +
DevOps and Infrastructure Setup
+Set up robust DevOps pipelines and infrastructure automation for your enterprise applications.
+ +CI/CD Pipeline Setup
+-
+
- Configure automated testing in your pipeline +
- Implement code quality checks +
- Set up automated deployments +
- Configure environment-specific deployments +
- Implement rollback strategies +
Infrastructure as Code
+-
+
- Use Terraform or CloudFormation for infrastructure +
- Version control your infrastructure code +
- Implement infrastructure testing +
- Use configuration management tools +
- Document infrastructure changes +
Containerization
+-
+
- Containerize your applications with Docker +
- Use Kubernetes for orchestration +
- Implement proper health checks +
- Configure resource limits +
- Set up container registries +
Monitoring and Logging
+-
+
- Implement comprehensive monitoring +
- Set up centralized logging +
- Configure alerting systems +
- Use APM tools for performance monitoring +
- Implement log aggregation +
Data Replication and Synchronization
+Ensure data consistency and availability with proper replication and synchronization strategies.
+ +Replication Strategies
+-
+
- Master-Slave replication for read scaling +
- Master-Master replication for high availability +
- Multi-region replication for disaster recovery +
- Real-time vs. batch replication +
- Conflict resolution strategies +
Synchronization Best Practices
+-
+
- Implement change data capture (CDC) +
- Use transaction logs for consistency +
- Monitor replication lag +
- Implement data validation +
- Set up automated failover +
Disaster Recovery
+-
+
- Regular backup schedules +
- Test recovery procedures +
- Maintain multiple backup copies +
- Document recovery processes +
- Monitor backup health +
Troubleshooting Common Issues
+-
+
- Replication lag issues +
- Data inconsistency problems +
- Network connectivity issues +
- Storage capacity management +
- Performance optimization +
API Integration Best Practices
+Integrate seamlessly with third-party APIs using these best practices.
+ +Authentication and Security
+-
+
- Use OAuth 2.0 for secure authentication +
- Store API keys securely +
- Implement token refresh mechanisms +
- Use HTTPS for all API calls +
- Validate API responses +
Error Handling
+-
+
- Implement retry logic with exponential backoff +
- Handle rate limiting gracefully +
- Log all API errors +
- Implement circuit breakers +
- Provide meaningful error messages +
Performance Optimization
+-
+
- Implement request caching +
- Use batch requests when possible +
- Implement connection pooling +
- Monitor API response times +
- Optimize payload sizes +
Testing and Monitoring
+-
+
- Test with sandbox environments +
- Monitor API usage and costs +
- Set up alerts for failures +
- Document integration patterns +
- Version your integrations +
AI and Machine Learning Implementation
+Integrate AI and machine learning capabilities into your enterprise applications.
+ +Model Development
+-
+
- Define clear use cases and objectives +
- Prepare and clean your data +
- Choose appropriate algorithms +
- Train and validate models +
- Evaluate model performance +
Model Deployment
+-
+
- Containerize models for deployment +
- Implement model versioning +
- Set up model serving infrastructure +
- Implement A/B testing +
- Monitor model performance +
Integration Best Practices
+-
+
- Use API gateways for model access +
- Implement proper authentication +
- Handle model inference errors +
- Optimize inference latency +
- Implement caching strategies +
Monitoring and Maintenance
+-
+
- Monitor model accuracy over time +
- Track data drift +
- Implement model retraining pipelines +
- Set up performance alerts +
- Document model behavior +
Login Troubleshooting
-Having trouble logging in? Here are some common issues and solutions.
+ 'summary': 'Common issues and their solutions for enterprise services.', + 'content': '''Common Troubleshooting Issues
+Resolve common issues quickly with these troubleshooting guides.
-Forgot Password
-Click "Forgot Password" on the login page to reset your password via email.
+Connection Issues
+-
+
- Check network connectivity +
- Verify firewall settings +
- Test DNS resolution +
- Check SSL/TLS certificates +
- Review connection timeouts +
Account Locked
-After multiple failed login attempts, your account may be temporarily locked for security.
+Performance Issues
+-
+
- Check server resource usage +
- Review database query performance +
- Analyze application logs +
- Check for memory leaks +
- Review caching strategies +
Browser Issues
-Clear your browser cache and cookies, or try a different browser.
+Authentication Problems
+-
+
- Verify credentials +
- Check token expiration +
- Review permission settings +
- Test with different accounts +
- Check session management +
Still Having Issues?
-Contact our support team for personalized assistance.
''', +Data Issues
+-
+
- Verify data integrity +
- Check replication status +
- Review data validation rules +
- Check for data corruption +
- Verify backup integrity +
If you continue to experience issues, please contact our support team.
''', 'is_published': True, 'is_featured': False, }, { - 'title': 'How to Update Your Payment Method', - 'slug': 'update-payment-method', - 'category': account_billing, - 'summary': 'Step-by-step guide to updating your payment information.', - 'content': '''Updating Payment Information
-Keep your payment method up to date to avoid service interruptions.
+ 'title': 'Enterprise Security Best Practices', + 'slug': 'enterprise-security-best-practices', + 'category': security, + 'summary': 'Essential security practices for enterprise applications and infrastructure.', + 'content': '''Enterprise Security Best Practices
+Protect your enterprise applications and data with these security best practices.
-Steps to Update
--
-
- Go to Account Settings -
- Click on "Billing & Payments" -
- Select "Update Payment Method" -
- Enter your new payment details -
- Click "Save Changes" -
Authentication and Authorization
+-
+
- Implement multi-factor authentication (MFA) +
- Use strong password policies +
- Implement role-based access control (RBAC) +
- Regularly review user permissions +
- Use OAuth 2.0 for API authentication +
Supported Payment Methods
-We accept all major credit cards, PayPal, and bank transfers.
''', - 'is_published': True, - 'is_featured': False, - }, - { - 'title': 'Security Best Practices', - 'slug': 'security-best-practices', - 'category': KnowledgeBaseCategory.objects.filter(slug='security-privacy').first(), - 'summary': 'Essential security practices to keep your account safe.', - 'content': '''Account Security
-Follow these best practices to keep your account secure.
+Data Protection
+-
+
- Encrypt data at rest and in transit +
- Implement proper key management +
- Use secure communication protocols +
- Implement data masking for sensitive information +
- Regularly backup critical data +
Use Strong Passwords
-Create complex passwords with a mix of letters, numbers, and symbols.
+Network Security
+-
+
- Use firewalls and network segmentation +
- Implement DDoS protection +
- Use VPNs for remote access +
- Monitor network traffic +
- Implement intrusion detection systems +
Enable Two-Factor Authentication
-Add an extra layer of security with 2FA.
- -Regular Security Audits
-Review your account activity regularly for any suspicious behavior.
- -Keep Software Updated
-Always use the latest version of our software for the best security.
''', +Compliance and Auditing
+-
+
- Maintain security audit logs +
- Regularly review access logs +
- Conduct security assessments +
- Stay compliant with regulations +
- Document security procedures +
Enterprise Billing Guide
+Understand your enterprise billing and manage your account effectively.
+ +Billing Structure
+-
+
- Service-based pricing models +
- Monthly vs. annual billing options +
- Usage-based charges +
- Support tier pricing +
- Additional service add-ons +
Payment Methods
+-
+
- Credit card payments +
- Bank transfers +
- Purchase orders +
- Invoice-based billing +
- Payment terms and schedules +
Managing Your Account
+-
+
- Update payment information +
- View billing history +
- Download invoices +
- Manage service subscriptions +
- Contact billing support +
Billing Support
+For billing questions or issues, contact our billing team through the support portal or email billing@gnxsoft.com.
''', + 'is_published': True, + 'is_featured': False, + }, ] for article_data in articles: @@ -265,4 +695,3 @@ class Command(BaseCommand): self.stdout.write(self.style.SUCCESS(f' ✓ Created article: {article.title}')) else: self.stdout.write(f' - Article already exists: {article.title}') - diff --git a/backEnd/support/signals.py b/backEnd/support/signals.py index 3682e62a..c9e4b312 100644 --- a/backEnd/support/signals.py +++ b/backEnd/support/signals.py @@ -5,16 +5,54 @@ Handles automatic notifications when tickets are updated from django.db.models.signals import post_save, pre_save from django.dispatch import receiver -from django.core.mail import EmailMultiAlternatives +from django.core.mail import EmailMultiAlternatives, get_connection from django.template.loader import render_to_string from django.conf import settings import logging +import time from .models import SupportTicket, TicketMessage, TicketActivity logger = logging.getLogger(__name__) +def _send_email_with_retry(email_message, max_retries: int = 3, delay: float = 1.0) -> bool: + """ + Send email with retry logic for production reliability. + Uses Django settings from .env file. + + Args: + email_message: EmailMultiAlternatives instance + max_retries: Maximum number of retry attempts + delay: Delay between retries in seconds + + Returns: + bool: True if email was sent successfully, False otherwise + """ + for attempt in range(max_retries + 1): + try: + # Test connection before sending (uses EMAIL_BACKEND from settings) + connection = get_connection() + connection.open() + connection.close() + + # Send the email (uses EMAIL_BACKEND and credentials from settings) + email_message.send() + return True + + except Exception as e: + logger.warning(f"Email send attempt {attempt + 1} failed: {str(e)}") + + if attempt < max_retries: + time.sleep(delay * (2 ** attempt)) # Exponential backoff + continue + else: + logger.error(f"Failed to send email after {max_retries + 1} attempts: {str(e)}") + return False + + return False + + class TicketUpdateNotifier: """Service for sending ticket update notifications""" @@ -34,6 +72,8 @@ class TicketUpdateNotifier: 'status_color': ticket.status.color if ticket.status else '#3b82f6', 'updated_at': ticket.updated_at.strftime('%B %d, %Y at %I:%M %p'), 'support_url': f'{settings.SITE_URL}/support-center', + 'logo_url': f'{settings.SITE_URL}/images/logo.png', + 'site_url': settings.SITE_URL, } # Render HTML email @@ -48,19 +88,24 @@ class TicketUpdateNotifier: context ) - # Create email + # Create email (uses DEFAULT_FROM_EMAIL from settings) email = EmailMultiAlternatives( subject=subject, body=text_message, - from_email=settings.DEFAULT_FROM_EMAIL, + from_email=settings.DEFAULT_FROM_EMAIL, # From .env file to=[ticket.user_email], ) email.attach_alternative(html_message, "text/html") - email.send(fail_silently=False) - logger.info(f'Status change notification sent for ticket {ticket.ticket_number}') - return True + # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings) + success = _send_email_with_retry(email) + + if success: + logger.info(f'Status change notification sent for ticket {ticket.ticket_number}') + else: + logger.error(f'Failed to send status change notification for ticket {ticket.ticket_number} after retries') + return success except Exception as e: logger.error(f'Failed to send status change notification: {str(e)}') @@ -85,6 +130,8 @@ class TicketUpdateNotifier: 'message_author': message.author_name or 'Support Team', 'created_at': message.created_at.strftime('%B %d, %Y at %I:%M %p'), 'support_url': f'{settings.SITE_URL}/support-center', + 'logo_url': f'{settings.SITE_URL}/images/logo.png', + 'site_url': settings.SITE_URL, } # Render HTML email @@ -99,19 +146,24 @@ class TicketUpdateNotifier: context ) - # Create email + # Create email (uses DEFAULT_FROM_EMAIL from settings) email = EmailMultiAlternatives( subject=subject, body=text_message, - from_email=settings.DEFAULT_FROM_EMAIL, + from_email=settings.DEFAULT_FROM_EMAIL, # From .env file to=[ticket.user_email], ) email.attach_alternative(html_message, "text/html") - email.send(fail_silently=False) - logger.info(f'Message notification sent for ticket {ticket.ticket_number}') - return True + # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings) + success = _send_email_with_retry(email) + + if success: + logger.info(f'Message notification sent for ticket {ticket.ticket_number}') + else: + logger.error(f'Failed to send message notification for ticket {ticket.ticket_number} after retries') + return success except Exception as e: logger.error(f'Failed to send message notification: {str(e)}') @@ -131,6 +183,8 @@ class TicketUpdateNotifier: 'assigned_to': assigned_to.get_full_name() or assigned_to.username, 'updated_at': ticket.updated_at.strftime('%B %d, %Y at %I:%M %p'), 'support_url': f'{settings.SITE_URL}/support-center', + 'logo_url': f'{settings.SITE_URL}/images/logo.png', + 'site_url': settings.SITE_URL, } # Render HTML email @@ -145,19 +199,24 @@ class TicketUpdateNotifier: context ) - # Create email + # Create email (uses DEFAULT_FROM_EMAIL from settings) email = EmailMultiAlternatives( subject=subject, body=text_message, - from_email=settings.DEFAULT_FROM_EMAIL, + from_email=settings.DEFAULT_FROM_EMAIL, # From .env file to=[ticket.user_email], ) email.attach_alternative(html_message, "text/html") - email.send(fail_silently=False) - logger.info(f'Assignment notification sent for ticket {ticket.ticket_number}') - return True + # Send email with retry logic (uses EMAIL_BACKEND and credentials from settings) + success = _send_email_with_retry(email) + + if success: + logger.info(f'Assignment notification sent for ticket {ticket.ticket_number}') + else: + logger.error(f'Failed to send assignment notification for ticket {ticket.ticket_number} after retries') + return success except Exception as e: logger.error(f'Failed to send assignment notification: {str(e)}') diff --git a/backEnd/support/templates/support/ticket_assigned_notification.html b/backEnd/support/templates/support/ticket_assigned_notification.html index 59febd77..a590edad 100644 --- a/backEnd/support/templates/support/ticket_assigned_notification.html +++ b/backEnd/support/templates/support/ticket_assigned_notification.html @@ -5,111 +5,294 @@👤 Ticket Assigned
Dear {{ user_name }},
+Your support ticket has been assigned to a team member who will be assisting you.
+- Subject: {{ title }} + Ticket Number + {{ ticket_number }} +
+ Subject + {{ title }}
Assigned To
-{{ updated_at }}
+Assigned To
++
- GNX Software Solutions
- Enterprise Support Center
-
+
✓ Support Ticket Created
+✓ Ticket Created Successfully
+Dear {{ user_name }},
+Thank you for contacting our support team. We've received your support request and our team will respond as soon as possible.
+Ticket Details
+Ticket Details
Description
-Description
+
- What happens next?
- Our support team will review your ticket and respond within our standard SLA timeframe. You'll receive an email notification when there's an update.
-
Our support team will review your ticket and respond within our standard SLA timeframe. You'll receive an email notification when there's an update on your ticket.
+
- GNX Software Solutions
- Enterprise Support Center
-
+
For assistance, please visit our Support Center - +