You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							165 lines
						
					
					
						
							7.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							165 lines
						
					
					
						
							7.3 KiB
						
					
					
				
								# -*- coding: utf-8 -*-
							 | 
						|
								#############################################################################
							 | 
						|
								#
							 | 
						|
								#    Cybrosys Technologies Pvt. Ltd.
							 | 
						|
								#
							 | 
						|
								#    Copyright (C) 2024-TODAY Cybrosys Technologies(<https://www.cybrosys.com>)
							 | 
						|
								#    Author: Cybrosys Techno Solutions(<https://www.cybrosys.com>)
							 | 
						|
								#
							 | 
						|
								#    You can modify it under the terms of the GNU LESSER
							 | 
						|
								#    GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
							 | 
						|
								#
							 | 
						|
								#    This program is distributed in the hope that it will be useful,
							 | 
						|
								#    but WITHOUT ANY WARRANTY; without even the implied warranty of
							 | 
						|
								#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
							 | 
						|
								#    GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
							 | 
						|
								#
							 | 
						|
								#    You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
							 | 
						|
								#    (LGPL v3) along with this program.
							 | 
						|
								#    If not, see <http://www.gnu.org/licenses/>.
							 | 
						|
								#
							 | 
						|
								#############################################################################
							 | 
						|
								from odoo import http
							 | 
						|
								from odoo.http import request
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								class WebsiteAutoFly(http.Controller):
							 | 
						|
								    """Controller used to fetch product related data and also for about page,
							 | 
						|
								     portfolio page, team page, service page."""
							 | 
						|
								
							 | 
						|
								    @http.route('/about', website=True, type='http', auth='public',
							 | 
						|
								                csrf=False)
							 | 
						|
								    def about_page(self):
							 | 
						|
								        """Render the about page."""
							 | 
						|
								        return request.render('theme_autofly.about_page')
							 | 
						|
								
							 | 
						|
								    @http.route('/portfolio', website=True, type='http', auth='public',
							 | 
						|
								                csrf=False)
							 | 
						|
								    def portfolio_page(self):
							 | 
						|
								        """Render the portfolio page."""
							 | 
						|
								        return request.render('theme_autofly.portfolio_page')
							 | 
						|
								
							 | 
						|
								    @http.route('/team', website=True, type='http', auth='public',
							 | 
						|
								                csrf=False)
							 | 
						|
								    def team_page(self):
							 | 
						|
								        """Render the team page."""
							 | 
						|
								        return request.render('theme_autofly.team_page')
							 | 
						|
								
							 | 
						|
								    @http.route('/service', website=True, type='http', auth='public',
							 | 
						|
								                csrf=False)
							 | 
						|
								    def service_page(self):
							 | 
						|
								        """Render the service page."""
							 | 
						|
								        return request.render('theme_autofly.service_page')
							 | 
						|
								
							 | 
						|
								    @http.route('/blog_snippet', auth="public", type='json')
							 | 
						|
								    def latest_blog(self):
							 | 
						|
								        """Return the data for dynamic blog snippet."""
							 | 
						|
								        return request.env['blog.post'].sudo().search_read(
							 | 
						|
								            [], ['name', 'blog_id', 'subtitle', 'published_date'],
							 | 
						|
								            order='id desc', limit=3)
							 | 
						|
								
							 | 
						|
								    @http.route('/get_testimonial', auth="public", type='json')
							 | 
						|
								    def get_testimonial(self):
							 | 
						|
								        """Return the data for testimonial snippet."""
							 | 
						|
								        testimonial = request.env['autofly.testimonial'].sudo().search(
							 | 
						|
								            [], order='id desc', limit=12)
							 | 
						|
								        values = {
							 | 
						|
								            f'slide{i + 1}': [{'id': record.id,
							 | 
						|
								                               'name': record.display_name,
							 | 
						|
								                               'partner_id': record.partner_id.id,
							 | 
						|
								                               'rating': record.rating,
							 | 
						|
								                               'review': record.review,
							 | 
						|
								                               } for record in testimonial[i * 3:(i + 1) * 3]]
							 | 
						|
								            for i in range((len(testimonial) + 2) // 3)
							 | 
						|
								        }
							 | 
						|
								        return values
							 | 
						|
								
							 | 
						|
								    @http.route('/autofly/service', type='http', website=True, auth='public',
							 | 
						|
								                csrf=False)
							 | 
						|
								    def service_booking(self, **kwargs):
							 | 
						|
								        """Render the service page."""
							 | 
						|
								        request.env['service.booking'].sudo().create({
							 | 
						|
								            'name': kwargs.get('usr1'),
							 | 
						|
								            'email': kwargs.get('email'),
							 | 
						|
								            'description': kwargs.get('text')
							 | 
						|
								        })
							 | 
						|
								        return request.render('theme_autofly.service_page')
							 | 
						|
								
							 | 
						|
								    @http.route('/cars-search', website=True, type='http', auth='public',
							 | 
						|
								                csrf=False)
							 | 
						|
								    def car_search(self, **kwargs):
							 | 
						|
								        """Used for searching particular cars."""
							 | 
						|
								        domain = []
							 | 
						|
								        if kwargs.get('car-selection'):
							 | 
						|
								            domain.append(
							 | 
						|
								                ('car_brand_id', '=', int(kwargs.get('car-selection'))))
							 | 
						|
								        if kwargs.get('car-type-selection'):
							 | 
						|
								            domain.append(('car_type_id', '=', int(kwargs.get(
							 | 
						|
								                'car-type-selection'))))
							 | 
						|
								        if kwargs.get('car-price'):
							 | 
						|
								            domain.append(('list_price', '=', float(kwargs.get('car-price'))))
							 | 
						|
								        if kwargs.get('car-model'):
							 | 
						|
								            domain.append(
							 | 
						|
								                ('car_model', '=', int(float(kwargs.get('car-model')))))
							 | 
						|
								        if kwargs.get('car-location'):
							 | 
						|
								            domain.append(('location', 'ilike', kwargs.get('car-location')))
							 | 
						|
								        result = request.env['product.template'].sudo().search(domain)
							 | 
						|
								        return request.render('theme_autofly.specific_car',
							 | 
						|
								                              qcontext={'hot_deals': result})
							 | 
						|
								
							 | 
						|
								    @http.route('/get_product_tab', auth="public", type='json')
							 | 
						|
								    def get_product_tab(self):
							 | 
						|
								        """Controller used to Fetch popular products."""
							 | 
						|
								        hot_deals = request.env['product.template'].sudo().search([
							 | 
						|
								            ('website_published', '=', True),
							 | 
						|
								            ('popular_product', '=', True)])
							 | 
						|
								        response = http.Response(template='theme_autofly.popular_modal',
							 | 
						|
								                                 qcontext={'hot_deals': hot_deals})
							 | 
						|
								        return response.render()
							 | 
						|
								
							 | 
						|
								    @http.route('/find_car', auth="public", type='json')
							 | 
						|
								    def get_find_car(self):
							 | 
						|
								        """Controller used to fetch car types."""
							 | 
						|
								        hot_deals = request.env['car.types'].sudo().search([],
							 | 
						|
								                                                           order='id desc',
							 | 
						|
								                                                           limit=6)
							 | 
						|
								        response = http.Response(template='theme_autofly.autofly_find_car',
							 | 
						|
								                                 qcontext={'hot_deals': hot_deals})
							 | 
						|
								        return response.render()
							 | 
						|
								
							 | 
						|
								    @http.route('/get_searched_car', auth="public", type='json')
							 | 
						|
								    def get_search_car(self):
							 | 
						|
								        """Controller used to fetch car brands."""
							 | 
						|
								        brands = request.env['car.brand'].sudo().search([])
							 | 
						|
								        types = request.env['car.types'].sudo().search([])
							 | 
						|
								        brand = [{'id': record.id, 'name': record.name} for record in brands]
							 | 
						|
								        car_type = [{'id': record.id, 'name': record.name} for record in types]
							 | 
						|
								        return {'type': car_type, 'brand': brand}
							 | 
						|
								
							 | 
						|
								    @http.route('/get_service_product', auth="public", type='json')
							 | 
						|
								    def get_service_product(self):
							 | 
						|
								        """Controller used to fetch service products."""
							 | 
						|
								        hot_deals = request.env['product.template'].sudo().search([
							 | 
						|
								            ('website_published', '=', True),
							 | 
						|
								            ('detailed_type', '=', 'service')])
							 | 
						|
								        response = http.Response(template='theme_autofly.service_products',
							 | 
						|
								                                 qcontext={'hot_deals': hot_deals})
							 | 
						|
								        return response.render()
							 | 
						|
								
							 | 
						|
								    @http.route('/get_garage_car', auth="public", type='json')
							 | 
						|
								    def get_garage_car(self):
							 | 
						|
								        """Controller used to fetch garages."""
							 | 
						|
								        hot_deals = request.env['car.garage'].sudo().search([])
							 | 
						|
								        car_types = request.env['car.types'].sudo().search([])
							 | 
						|
								        values = {'hot_deals': hot_deals, 'car_types': car_types}
							 | 
						|
								        response = http.Response(template='theme_autofly.portfolio_garage_page',
							 | 
						|
								                                 qcontext=values)
							 | 
						|
								        return response.render()
							 | 
						|
								
							 | 
						|
								    @http.route('/get_all_type', auth="public", type='json')
							 | 
						|
								    def get_all_type(self):
							 | 
						|
								        """Controller used to fetch car types."""
							 | 
						|
								        hot_deals = request.env['car.types'].sudo().search([])
							 | 
						|
								        response = http.Response(template='theme_autofly.portfolio_type_page',
							 | 
						|
								                                 qcontext={'hot_deals': hot_deals})
							 | 
						|
								        return response.render()
							 | 
						|
								
							 |