@ -0,0 +1,46 @@ | 
				
			|||||
 | 
					.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg | 
				
			||||
 | 
					    :target: https://www.gnu.org/licenses/agpl-3.0-standalone.html | 
				
			||||
 | 
					    :alt: License: AGPL-3 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					User Weather Notification | 
				
			||||
 | 
					========================= | 
				
			||||
 | 
					A weather notification app providing users with timely weather updates and alerts. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Configuration | 
				
			||||
 | 
					============= | 
				
			||||
 | 
					- Required OpenWeatherMap API. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Company | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					* `Cybrosys Techno Solutions <https://cybrosys.com/>`__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					License | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					General Public License, Version 3 (AGPL v3). | 
				
			||||
 | 
					(https://www.gnu.org/licenses/agpl-3.0-standalone.html) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Credits | 
				
			||||
 | 
					------- | 
				
			||||
 | 
					Developer: (V14) Mohamed Muzammil VP, Contact : odoo@cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Contacts | 
				
			||||
 | 
					-------- | 
				
			||||
 | 
					* Mail Contact : odoo@cybrosys.com | 
				
			||||
 | 
					* Website : https://cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Bug Tracker | 
				
			||||
 | 
					----------- | 
				
			||||
 | 
					Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Maintainer | 
				
			||||
 | 
					========== | 
				
			||||
 | 
					.. image:: https://cybrosys.com/images/logo.png | 
				
			||||
 | 
					   :target: https://cybrosys.com | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					This module is maintained by Cybrosys Technologies. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					For support and more information, please visit `Our Website <https://cybrosys.com/>`__ | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					Further information | 
				
			||||
 | 
					=================== | 
				
			||||
 | 
					HTML Description: `<static/description/index.html>`__ | 
				
			||||
@ -0,0 +1,23 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Mohamed Muzammil VP (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from . import controllers | 
				
			||||
 | 
					from . import models | 
				
			||||
@ -0,0 +1,50 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Mohamed Muzammil VP (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					{ | 
				
			||||
 | 
					    'name': 'User Weather Notification', | 
				
			||||
 | 
					    'version': '14.0.1.0.0', | 
				
			||||
 | 
					    'category': 'Extra Tools', | 
				
			||||
 | 
					    'summary': """A weather notification app providing users with timely | 
				
			||||
 | 
					     weather updates and alerts.""", | 
				
			||||
 | 
					    'description': """Users can see Weather Notification by using | 
				
			||||
 | 
					     OpenWeatherMap API""", | 
				
			||||
 | 
					    'author': "Cybrosys Techno Solutions", | 
				
			||||
 | 
					    'company': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'maintainer': 'Cybrosys Techno Solutions', | 
				
			||||
 | 
					    'website': "https://www.cybrosys.com", | 
				
			||||
 | 
					    'depends': ['web'], | 
				
			||||
 | 
					    'data': [ | 
				
			||||
 | 
					        'views/res_users_views.xml', | 
				
			||||
 | 
					        'views/assets.xml', | 
				
			||||
 | 
					             ], | 
				
			||||
 | 
					    'qweb': [ | 
				
			||||
 | 
					        'static/src/xml/weather_notification_templates.xml', | 
				
			||||
 | 
					    ], | 
				
			||||
 | 
					    'external_dependencies': { | 
				
			||||
 | 
					        'python': ['geocoder'], | 
				
			||||
 | 
					    }, | 
				
			||||
 | 
					    'images': ['static/description/banner.png'], | 
				
			||||
 | 
					    'license': 'AGPL-3', | 
				
			||||
 | 
					    'installable': True, | 
				
			||||
 | 
					    'auto_install': False, | 
				
			||||
 | 
					    'application': False, | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Mohamed Muzammil VP (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from . import user_weather_notification | 
				
			||||
@ -0,0 +1,72 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					############################################################################### | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Mohamed Muzammil VP (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					############################################################################### | 
				
			||||
 | 
					import geocoder | 
				
			||||
 | 
					import requests | 
				
			||||
 | 
					from requests.exceptions import ConnectionError, Timeout | 
				
			||||
 | 
					from odoo import http | 
				
			||||
 | 
					from odoo.http import request | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class WeatherNotification(http.Controller): | 
				
			||||
 | 
					    """Class defined to fetch weather details based on location""" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @http.route('/weather/notification/check', type='json', auth="public", | 
				
			||||
 | 
					                methods=['POST']) | 
				
			||||
 | 
					    def weather_notification(self): | 
				
			||||
 | 
					        """Controller for fetching weather data""" | 
				
			||||
 | 
					        try: | 
				
			||||
 | 
					            if request.env.user.location_set == 'auto' \ | 
				
			||||
 | 
					                    and request.env.user.api_key: | 
				
			||||
 | 
					                if geocoder.ip('me').status_code == 200: | 
				
			||||
 | 
					                    lat = round(geocoder.ip('me').latlng[0], 2) | 
				
			||||
 | 
					                    lng = round(geocoder.ip('me').latlng[1], 2) | 
				
			||||
 | 
					                    url = f'https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lng}&appid={request.env.user.api_key}' | 
				
			||||
 | 
					                    try: | 
				
			||||
 | 
					                        # Set timeout to 5 seconds | 
				
			||||
 | 
					                        response = requests.get(url, timeout=5) | 
				
			||||
 | 
					                        if response.status_code == 200: | 
				
			||||
 | 
					                            return response.json() | 
				
			||||
 | 
					                        else: | 
				
			||||
 | 
					                            return {'data': False} | 
				
			||||
 | 
					                    except Timeout: | 
				
			||||
 | 
					                        return {'data': False, 'message': 'Request timed out.'} | 
				
			||||
 | 
					                else: | 
				
			||||
 | 
					                    return {'data': False, | 
				
			||||
 | 
					                            'message': 'Failed to get location data.'} | 
				
			||||
 | 
					            elif request.env.user.location_set == 'manual' \ | 
				
			||||
 | 
					                    and request.env.user.api_key: | 
				
			||||
 | 
					                url = f'https://api.openweathermap.org/data/2.5/weather?q={request.env.user.city}&appid={request.env.user.api_key}' | 
				
			||||
 | 
					                try: | 
				
			||||
 | 
					                    # Set timeout to 5 seconds | 
				
			||||
 | 
					                    response = requests.get(url, timeout=5) | 
				
			||||
 | 
					                    if response.status_code == 200: | 
				
			||||
 | 
					                        return response.json() | 
				
			||||
 | 
					                    else: | 
				
			||||
 | 
					                        return {'data': False} | 
				
			||||
 | 
					                except Timeout: | 
				
			||||
 | 
					                    return {'data': False, 'message': 'Request timed out.'} | 
				
			||||
 | 
					        except ConnectionError: | 
				
			||||
 | 
					            return {'data': False, | 
				
			||||
 | 
					                    'message': 'No internet connection. ' | 
				
			||||
 | 
					                               'Please check your internet connectivity.'} | 
				
			||||
 | 
					        else: | 
				
			||||
 | 
					            return {'data': False} | 
				
			||||
@ -0,0 +1,6 @@ | 
				
			|||||
 | 
					## Module <user_weather_notification> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					#### 11.08.2023 | 
				
			||||
 | 
					#### Version 14.0.1.0.0 | 
				
			||||
 | 
					#### ADD | 
				
			||||
 | 
					- Initial commit for User Weather Notification | 
				
			||||
@ -0,0 +1,22 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Mohamed Muzammil VP (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					from . import res_users | 
				
			||||
@ -0,0 +1,67 @@ | 
				
			|||||
 | 
					# -*- coding: utf-8 -*- | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Cybrosys Technologies Pvt. Ltd. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    Copyright (C) 2023-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). | 
				
			||||
 | 
					#    Author: Mohamed Muzammil VP (odoo@cybrosys.com) | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You can modify it under the terms of the GNU AFFERO | 
				
			||||
 | 
					#    GENERAL PUBLIC LICENSE (AGPL 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 AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					#    You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE | 
				
			||||
 | 
					#    (AGPL v3) along with this program. | 
				
			||||
 | 
					#    If not, see <http://www.gnu.org/licenses/>. | 
				
			||||
 | 
					# | 
				
			||||
 | 
					################################################################################ | 
				
			||||
 | 
					import requests | 
				
			||||
 | 
					from odoo import api, fields, models, _ | 
				
			||||
 | 
					from odoo.exceptions import ValidationError | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					class ResUsers(models.Model): | 
				
			||||
 | 
					    """Inherit the res.users model to add custom fields and methods""" | 
				
			||||
 | 
					    _inherit = "res.users" | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    api_key = fields.Char(string='API Key', help="API key from OpenWeatherMap") | 
				
			||||
 | 
					    location_set = fields.Selection( | 
				
			||||
 | 
					        selection=[('auto', 'Use Browser Location'), | 
				
			||||
 | 
					                   ('manual', 'Manual Location')], | 
				
			||||
 | 
					        string="Set Location", default='auto', | 
				
			||||
 | 
					        help="Use Browser Location: Fetching data based on browsers location," | 
				
			||||
 | 
					             "Manual Location:Need to specify the city in the city field") | 
				
			||||
 | 
					    city = fields.Char(string='City', | 
				
			||||
 | 
					                       help="Enter the city name to find weather") | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.constrains('city') | 
				
			||||
 | 
					    def _check_city(self): | 
				
			||||
 | 
					        """Constraints to check if the city is valid or not""" | 
				
			||||
 | 
					        try: | 
				
			||||
 | 
					            for rec in self: | 
				
			||||
 | 
					                if rec.api_key: | 
				
			||||
 | 
					                    url = f'https://api.openweathermap.org/data/2.5/weather?q={rec.city}&appid={rec.api_key}' | 
				
			||||
 | 
					                    try: | 
				
			||||
 | 
					                        # Set timeout to 5 seconds | 
				
			||||
 | 
					                        response = requests.get(url, timeout=5) | 
				
			||||
 | 
					                        response_json = response.json() | 
				
			||||
 | 
					                        if response_json['cod'] != 200: | 
				
			||||
 | 
					                            raise ValidationError(_(response_json['message'])) | 
				
			||||
 | 
					                    except requests.Timeout: | 
				
			||||
 | 
					                        raise ValidationError( | 
				
			||||
 | 
					                            _('API request timed out. Please check your ' | 
				
			||||
 | 
					                              'internet connection or try again later.')) | 
				
			||||
 | 
					        except requests.exceptions.ConnectionError: | 
				
			||||
 | 
					            raise ValidationError( | 
				
			||||
 | 
					                _('Please check your internet connection or try again later.')) | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					    @api.constrains('city', 'location_set') | 
				
			||||
 | 
					    def validation_of_city(self): | 
				
			||||
 | 
					        """The city name should be required if the location is set to | 
				
			||||
 | 
					        manual.""" | 
				
			||||
 | 
					        if self.location_set == 'manual' and self.city is False: | 
				
			||||
 | 
					            raise ValidationError(_('Please Enter a city name')) | 
				
			||||
| 
		 After Width: | Height: | Size: 1.3 KiB  | 
| 
		 After Width: | Height: | Size: 1.4 KiB  | 
| 
		 After Width: | Height: | Size: 576 B  | 
| 
		 After Width: | Height: | Size: 733 B  | 
| 
		 After Width: | Height: | Size: 911 B  | 
| 
		 After Width: | Height: | Size: 28 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 3.4 KiB  | 
| 
		 After Width: | Height: | Size: 673 B  | 
| 
		 After Width: | Height: | Size: 878 B  | 
| 
		 After Width: | Height: | Size: 653 B  | 
| 
		 After Width: | Height: | Size: 905 B  | 
| 
		 After Width: | Height: | Size: 839 B  | 
| 
		 After Width: | Height: | Size: 427 B  | 
| 
		 After Width: | Height: | Size: 627 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 988 B  | 
| 
		 After Width: | Height: | Size: 1.2 KiB  | 
| 
		 After Width: | Height: | Size: 1.5 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 1.9 KiB  | 
| 
		 After Width: | Height: | Size: 1.1 KiB  | 
| 
		 After Width: | Height: | Size: 2.1 KiB  | 
| 
		 After Width: | Height: | Size: 4.4 KiB  | 
| 
		 After Width: | Height: | Size: 589 B  | 
| 
		 After Width: | Height: | Size: 3.4 KiB  | 
| 
		 After Width: | Height: | Size: 1.7 KiB  | 
| 
		 After Width: | Height: | Size: 2.3 KiB  | 
| 
		 After Width: | Height: | Size: 967 B  | 
| 
		 After Width: | Height: | Size: 1.6 KiB  | 
| 
		 After Width: | Height: | Size: 3.8 KiB  | 
| 
		 After Width: | Height: | Size: 5.0 KiB  | 
| 
		 After Width: | Height: | Size: 98 KiB  | 
| 
		 After Width: | Height: | Size: 60 KiB  | 
| 
		 After Width: | Height: | Size: 59 KiB  | 
| 
		 After Width: | Height: | Size: 57 KiB  | 
| 
		 After Width: | Height: | Size: 59 KiB  | 
| 
		 After Width: | Height: | Size: 80 KiB  | 
| 
		 After Width: | Height: | Size: 130 KiB  | 
| 
		 After Width: | Height: | Size: 125 KiB  | 
| 
		 After Width: | Height: | Size: 164 KiB  | 
| 
		 After Width: | Height: | Size: 164 KiB  | 
| 
		 After Width: | Height: | Size: 120 KiB  | 
| 
		 After Width: | Height: | Size: 166 KiB  | 
| 
		 After Width: | Height: | Size: 75 KiB  | 
| 
		 After Width: | Height: | Size: 220 KiB  | 
| 
		 After Width: | Height: | Size: 60 KiB  | 
| 
		 After Width: | Height: | Size: 17 KiB  | 
@ -0,0 +1,550 @@ | 
				
			|||||
 | 
					<div style="background-color: #714B67; height: 810px; width: 100%; padding: 15px; position: relative;"> | 
				
			||||
 | 
					  <!-- TITLE BAR --> | 
				
			||||
 | 
					  <div class="d-flex align-items-center justify-content-between" | 
				
			||||
 | 
					    style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> | 
				
			||||
 | 
					    <img src="assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" /> | 
				
			||||
 | 
					    <div> | 
				
			||||
 | 
					      <div | 
				
			||||
 | 
					        style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | 
				
			||||
 | 
					        class="mr-2"> | 
				
			||||
 | 
					        <i class="fa fa-check mr-1"></i>Community | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div | 
				
			||||
 | 
					        style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | 
				
			||||
 | 
					        class="mr-2"> | 
				
			||||
 | 
					        <i class="fa fa-check mr-1"></i>Enterprise | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <div | 
				
			||||
 | 
					        style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" | 
				
			||||
 | 
					        class="mr-2"> | 
				
			||||
 | 
					        <i class="fa fa-check mr-1"></i>Odoo.sh | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <!-- END OF TITLE BAR --> | 
				
			||||
 | 
					  <div class="container"> | 
				
			||||
 | 
					    <div class="row"> | 
				
			||||
 | 
					      <div class="col-sm-12 col-md-12 col-lg-12"> | 
				
			||||
 | 
					        <!-- APP HERO --> | 
				
			||||
 | 
					        <h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;"> | 
				
			||||
 | 
					          User Weather Notification</h1> | 
				
			||||
 | 
					        <p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">A Weather Notification App Providing Users with Timely Weather Updates and Alerts.</p> | 
				
			||||
 | 
					        <!-- END OF APP HERO --> | 
				
			||||
 | 
					        <img src="assets/screenshots/hero.gif" class="img-responsive" | 
				
			||||
 | 
					          style="width: 100%; margin-left: auto; margin-right: auto;" /> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- NAVIGATION SECTION --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/compass.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This | 
				
			||||
 | 
					    Module</h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> | 
				
			||||
 | 
					  <div class="col-sm-12 col-md-6 my-3"> | 
				
			||||
 | 
					    <a href="#overview"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-between align-items-center" | 
				
			||||
 | 
					        style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | 
				
			||||
 | 
					        <div> | 
				
			||||
 | 
					          <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> | 
				
			||||
 | 
					          <span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">Learn | 
				
			||||
 | 
					            more about this | 
				
			||||
 | 
					            module</span> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <img src="assets/misc/right-arrow.png" width="36" height="36" /> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </a> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <div class="col-sm-12 col-md-6 my-3"> | 
				
			||||
 | 
					    <a href="#features"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-between align-items-center" | 
				
			||||
 | 
					        style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | 
				
			||||
 | 
					        <div> | 
				
			||||
 | 
					          <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> | 
				
			||||
 | 
					          <span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">View | 
				
			||||
 | 
					            features of this | 
				
			||||
 | 
					            module</span> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <img src="assets/misc/right-arrow.png" width="36" height="36" /> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </a> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <div class="col-sm-12 col-md-6 my-3"> | 
				
			||||
 | 
					    <a href="#screenshots"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-between align-items-center" | 
				
			||||
 | 
					        style="background-color: #f5f5f5; padding: 30px; width: 100%;"> | 
				
			||||
 | 
					        <div> | 
				
			||||
 | 
					          <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> | 
				
			||||
 | 
					          <span style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33;  display: block;">View | 
				
			||||
 | 
					            screenshots for this | 
				
			||||
 | 
					            module</span> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <img src="assets/misc/right-arrow.png" width="36" height="36" /> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </a> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF NAVIGATION SECTION --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- OVERVIEW SECTION --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/pie-chart.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview | 
				
			||||
 | 
					  </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | 
				
			||||
 | 
					  <div class="col-sm-12 py-4"> | 
				
			||||
 | 
					    As we know, many industries are depend on weather conditions like manufacturing, Event Management, | 
				
			||||
 | 
					    Construction etc. So we believe our concept of weather module can be used in these industries to | 
				
			||||
 | 
					    understand and plan their works according to the weather condition. This module is a starter to think | 
				
			||||
 | 
					    and explore the opportunity to bring the advanced features in Odoo. | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF OVERVIEW SECTION --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- FEATURES SECTION --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/features.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features | 
				
			||||
 | 
					  </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> | 
				
			||||
 | 
					  <div class="col-sm-12 col-md-6"> | 
				
			||||
 | 
					    <div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px"> | 
				
			||||
 | 
					      <img src="assets/misc/check-box.png" class="mr-2" /> | 
				
			||||
 | 
					      <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Support in Desktop.</span> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <div class="col-sm-12 col-md-6"> | 
				
			||||
 | 
					    <div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px"> | 
				
			||||
 | 
					      <img src="assets/misc/check-box.png" class="mr-2" /> | 
				
			||||
 | 
					      <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">The user will get the weather notification</span> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF FEATURES SECTION --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- SCREENSHOTS SECTION --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/pictures.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots | 
				
			||||
 | 
					  </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="row"> | 
				
			||||
 | 
					  <div class="col-sm-12"> | 
				
			||||
 | 
					    <div style="display: block; margin: 30px auto;"> | 
				
			||||
 | 
					      <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Click Weather Settings | 
				
			||||
 | 
					      </h3> | 
				
			||||
 | 
					      <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					                User can easily find the weather report from a single click. Summary of the weather conditions is | 
				
			||||
 | 
					                displayed on the weather board. The user will easily get weather updates, state of climate and current | 
				
			||||
 | 
					                temperature etc.</p> | 
				
			||||
 | 
					      <img src="assets/screenshots/1.png" class="img-thumbnail"> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					     <div style="display: block; margin: 30px auto;"> | 
				
			||||
 | 
					       <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Configuration | 
				
			||||
 | 
					      </h3> | 
				
			||||
 | 
					       <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					                User must provide an API Key for OpenWeatherMap and select "Use Browser Location" or "Manual Location" from Set Location field. | 
				
			||||
 | 
					            </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/2.png" class="img-thumbnail"> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div> | 
				
			||||
 | 
					      <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">See the Weather details. | 
				
			||||
 | 
					      </h3> | 
				
			||||
 | 
					      <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">After Filling the fields given user can see the weather details by clicking the Weather icon. | 
				
			||||
 | 
					        </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/3.png" class="img-thumbnail"> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div> | 
				
			||||
 | 
					      <img src="assets/screenshots/4.png" class="img-thumbnail"> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div> | 
				
			||||
 | 
					      <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">If the entered city name is wrong. | 
				
			||||
 | 
					      </h3> | 
				
			||||
 | 
					      <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">After choosing the Set Location field as "Manual Location" and entered city name was wrong then error pop-up shows. | 
				
			||||
 | 
					        </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/5.png" class="img-thumbnail"> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div> | 
				
			||||
 | 
					      <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">If the Network Connection is lost. | 
				
			||||
 | 
					      </h3> | 
				
			||||
 | 
					      <p style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;"> | 
				
			||||
 | 
					        </p> | 
				
			||||
 | 
					      <img src="assets/screenshots/7.png" class="img-thumbnail"> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					        <div> | 
				
			||||
 | 
					      <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Required OpenWeatherMap API. | 
				
			||||
 | 
					      </h3> | 
				
			||||
 | 
					      <img src="assets/screenshots/6.png" class="img-thumbnail"> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF SCREENSHOTS SECTION --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- SUGGESTED PRODUCTS --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/categories.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Suggested | 
				
			||||
 | 
					    Products | 
				
			||||
 | 
					  </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="row"> | 
				
			||||
 | 
					  <div class="col-sm-12"> | 
				
			||||
 | 
					    <div id="demo1" class="row carousel slide" data-ride="carousel"> | 
				
			||||
 | 
					      <!-- The slideshow --> | 
				
			||||
 | 
					      <div class="carousel-inner"> | 
				
			||||
 | 
					          <div class="carousel-item active" style="min-height:0px"> | 
				
			||||
 | 
					              <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					                  <a href="https://apps.odoo.com/apps/modules/14.0/whatsapp_redirect/" target="_blank"> | 
				
			||||
 | 
					                      <div style="border-radius:10px"> | 
				
			||||
 | 
					                          <img class="img img-responsive center-block" | 
				
			||||
 | 
					                              style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			||||
 | 
					                              src="./assets/modules/1.png"> | 
				
			||||
 | 
					                      </div> | 
				
			||||
 | 
					                  </a> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					              <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					                  <a href="https://apps.odoo.com/apps/modules/14.0/export_stockinfo_xls/" target="_blank"> | 
				
			||||
 | 
					                      <div style="border-radius:10px"> | 
				
			||||
 | 
					                          <img class="img img-responsive center-block" | 
				
			||||
 | 
					                              style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			||||
 | 
					                              src="./assets/modules/2.png"> | 
				
			||||
 | 
					                      </div> | 
				
			||||
 | 
					                  </a> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					              <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					                  <a href="https://apps.odoo.com/apps/modules/14.0/inventory_barcode_scanning/#" target="_blank"> | 
				
			||||
 | 
					                      <div style="border-radius:10px"> | 
				
			||||
 | 
					                          <img class="img img-responsive center-block" | 
				
			||||
 | 
					                              style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			||||
 | 
					                              src="./assets/modules/3.png"> | 
				
			||||
 | 
					                      </div> | 
				
			||||
 | 
					                  </a> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					          <div class="carousel-item" style="min-height:0px"> | 
				
			||||
 | 
					              <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					                  <a href="https://apps.odoo.com/apps/modules/14.0/login_user_detail/" target="_blank"> | 
				
			||||
 | 
					                      <div style="border-radius:10px"> | 
				
			||||
 | 
					                          <img class="img img-responsive center-block" | 
				
			||||
 | 
					                              style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			||||
 | 
					                              src="./assets/modules/4.png"> | 
				
			||||
 | 
					                      </div> | 
				
			||||
 | 
					                  </a> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					              <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					                  <a href="https://apps.odoo.com/apps/modules/14.0/odoo_dynamic_dashboard/" | 
				
			||||
 | 
					                      target="_blank"> | 
				
			||||
 | 
					                      <div style="border-radius:10px"> | 
				
			||||
 | 
					                          <img class="img img-responsive center-block" | 
				
			||||
 | 
					                              style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			||||
 | 
					                              src="./assets/modules/5.png"> | 
				
			||||
 | 
					                      </div> | 
				
			||||
 | 
					                  </a> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					              <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> | 
				
			||||
 | 
					                  <a href="https://apps.odoo.com/apps/modules/14.0/hr_zk_attendance/" | 
				
			||||
 | 
					                      target="_blank"> | 
				
			||||
 | 
					                      <div style="border-radius:10px"> | 
				
			||||
 | 
					                          <img class="img img-responsive center-block" | 
				
			||||
 | 
					                              style="border-top-left-radius:10px; border-top-right-radius:10px" | 
				
			||||
 | 
					                              src="./assets/modules/6.gif"> | 
				
			||||
 | 
					                      </div> | 
				
			||||
 | 
					                  </a> | 
				
			||||
 | 
					              </div> | 
				
			||||
 | 
					          </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <!-- Left and right controls --> | 
				
			||||
 | 
					      <a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span | 
				
			||||
 | 
					          class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> | 
				
			||||
 | 
					      </a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000"> | 
				
			||||
 | 
					        <span class="carousel-control-next-icon"><i class="fa fa-chevron-right" style="font-size:24px"></i></span> | 
				
			||||
 | 
					      </a> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF SUGGESTED PRODUCTS --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- OUR SERVICES --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/star.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services | 
				
			||||
 | 
					  </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="container my-5"> | 
				
			||||
 | 
					  <div class="row"> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Customization</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Implementation</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Support</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Hire | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Developer</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #54a0ff  !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Integration</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Migration</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Consultancy</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Implementation</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> | 
				
			||||
 | 
					      <div class="d-flex justify-content-center align-items-center mx-3 my-3" | 
				
			||||
 | 
					        style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> | 
				
			||||
 | 
					        <img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px"> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					      <h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> | 
				
			||||
 | 
					        Odoo | 
				
			||||
 | 
					        Licensing Consultancy</h6> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!--END OF OUR SERVICES --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- OUR INDUSTRIES --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/corporate.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our | 
				
			||||
 | 
					    Industries | 
				
			||||
 | 
					  </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="container my-5"> | 
				
			||||
 | 
					  <div class="row"> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          Trading | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          Easily procure | 
				
			||||
 | 
					          and | 
				
			||||
 | 
					          sell your products</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          POS | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          Easy | 
				
			||||
 | 
					          configuration | 
				
			||||
 | 
					          and convivial experience</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          Education | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          A platform for | 
				
			||||
 | 
					          educational management</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          Manufacturing | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          Plan, track and | 
				
			||||
 | 
					          schedule your operations</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          E-commerce & Website | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          Mobile | 
				
			||||
 | 
					          friendly, | 
				
			||||
 | 
					          awe-inspiring product pages</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          Service Management | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          Keep track of | 
				
			||||
 | 
					          services and invoice</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          Restaurant | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          Run your bar or | 
				
			||||
 | 
					          restaurant methodically</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-lg-3"> | 
				
			||||
 | 
					      <div class="my-4 d-flex flex-column justify-content-center" | 
				
			||||
 | 
					        style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> | 
				
			||||
 | 
					        <img src="assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px"> | 
				
			||||
 | 
					        <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> | 
				
			||||
 | 
					          Hotel Management | 
				
			||||
 | 
					        </h5> | 
				
			||||
 | 
					        <p style="font-family: Montserrat, sans-serif !important; font-size: 0.9rem !important;"> | 
				
			||||
 | 
					          An | 
				
			||||
 | 
					          all-inclusive | 
				
			||||
 | 
					          hotel management application</p> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!--END OF OUR INDUSTRIES --> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					<!-- SUPPORT --> | 
				
			||||
 | 
					<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> | 
				
			||||
 | 
					  <div class="d-flex justify-content-center align-items-center mr-2" | 
				
			||||
 | 
					    style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> | 
				
			||||
 | 
					    <img src="assets/misc/customer-support.png" /> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support | 
				
			||||
 | 
					  </h2> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<div class="container mt-5"> | 
				
			||||
 | 
					  <div class="row"> | 
				
			||||
 | 
					    <div class="col-sm-12 col-md-6"> | 
				
			||||
 | 
					      <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | 
				
			||||
 | 
					        <div class="mr-4 d-flex justify-content-center align-items-center" | 
				
			||||
 | 
					          style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | 
				
			||||
 | 
					          <img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" /> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div> | 
				
			||||
 | 
					          <h4>Need Help?</h4> | 
				
			||||
 | 
					          <p style="line-height: 100%;">Got questions or need help? Get in touch.</p> | 
				
			||||
 | 
					          <a href="mailto:odoo@cybrosys.com"> | 
				
			||||
 | 
					            <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> | 
				
			||||
 | 
					              odoo@cybrosys.com</p> | 
				
			||||
 | 
					          </a> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					    <div class="col-sm-12 col-md-6"> | 
				
			||||
 | 
					      <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> | 
				
			||||
 | 
					        <div class="mr-4 d-flex justify-content-center align-items-center" | 
				
			||||
 | 
					          style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> | 
				
			||||
 | 
					          <img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" /> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					        <div> | 
				
			||||
 | 
					          <h4>WhatsApp</h4> | 
				
			||||
 | 
					          <p style="line-height: 100%;">Say hi to us on WhatsApp!</p> | 
				
			||||
 | 
					          <a href="https://api.whatsapp.com/send?phone=918606827707"> | 
				
			||||
 | 
					            <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068 | 
				
			||||
 | 
					              27707</p> | 
				
			||||
 | 
					          </a> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					      </div> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					  <div class="row"> | 
				
			||||
 | 
					    <div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> | 
				
			||||
 | 
					      <img src="assets/misc/logo.png" width="144" height="31" style="width:144px; height: 31px; margin-top: 40px;" /> | 
				
			||||
 | 
					    </div> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					</div> | 
				
			||||
 | 
					<!-- END OF SUPPORT --> | 
				
			||||
| 
		 After Width: | Height: | Size: 12 KiB  | 
@ -0,0 +1,49 @@ | 
				
			|||||
 | 
					odoo.define('user_weather_notification.weather_card', function (require) { | 
				
			||||
 | 
					    "use strict"; | 
				
			||||
 | 
					    var SystrayMenu = require('web.SystrayMenu'); | 
				
			||||
 | 
					    var Widget = require('web.Widget'); | 
				
			||||
 | 
					    var rpc = require('web.rpc'); | 
				
			||||
 | 
					    /** | 
				
			||||
 | 
					     * Extends Widget and adds the template for the weather card. | 
				
			||||
 | 
					     */ | 
				
			||||
 | 
					    var ActionMenu = Widget.extend({ | 
				
			||||
 | 
					        template: 'user_weather_notification.UserMenuS', | 
				
			||||
 | 
					        events: { | 
				
			||||
 | 
					            'click #get-weather': 'OnClickGetWeather', | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        /** | 
				
			||||
 | 
					         * Hides the card when the widget starts. | 
				
			||||
 | 
					         */ | 
				
			||||
 | 
					        start: function () { | 
				
			||||
 | 
					            var self = this; | 
				
			||||
 | 
					            self.$('.card').hide(); | 
				
			||||
 | 
					        }, | 
				
			||||
 | 
					        /** | 
				
			||||
 | 
					         * Toggles the visibility of the weather card. | 
				
			||||
 | 
					         */ | 
				
			||||
 | 
					        OnClickGetWeather: async function () { | 
				
			||||
 | 
					            var self = this; | 
				
			||||
 | 
					            if (self.$(".card").is(":visible")) { | 
				
			||||
 | 
					                self.$('.card').hide(); | 
				
			||||
 | 
					            } else { | 
				
			||||
 | 
					                self.$('.card').show(); | 
				
			||||
 | 
					                // Take the data from the controller and show it
 | 
				
			||||
 | 
					                rpc.query({ | 
				
			||||
 | 
					                    route: "/weather/notification/check", | 
				
			||||
 | 
					                }).then(function (result) { | 
				
			||||
 | 
					                    if (result.data == false) { | 
				
			||||
 | 
					                        self.$("#description").text('Configure Settings'); | 
				
			||||
 | 
					                    } else { | 
				
			||||
 | 
					                        self.$("#title").text(result.name); | 
				
			||||
 | 
					                        self.$("#text").text(result.weather[0].main); | 
				
			||||
 | 
					                        var temp = Math.floor(result.main.temp - 273); | 
				
			||||
 | 
					                        self.$("#temperature").text(temp + "°C"); | 
				
			||||
 | 
					                        self.$("#description").text(result.weather[0].description); | 
				
			||||
 | 
					                    } | 
				
			||||
 | 
					                }); | 
				
			||||
 | 
					            } | 
				
			||||
 | 
					        } | 
				
			||||
 | 
					    }); | 
				
			||||
 | 
					    SystrayMenu.Items.push(ActionMenu); | 
				
			||||
 | 
					    return ActionMenu; | 
				
			||||
 | 
					}); | 
				
			||||
@ -0,0 +1,11 @@ | 
				
			|||||
 | 
					.card { | 
				
			||||
 | 
					  display:block; | 
				
			||||
 | 
					  position:absolute; | 
				
			||||
 | 
					  top: 40px; | 
				
			||||
 | 
					  width: 250px; | 
				
			||||
 | 
					  right:-100px; | 
				
			||||
 | 
					  height: 210px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					.img{ | 
				
			||||
 | 
					  width: 248px; | 
				
			||||
 | 
					} | 
				
			||||
@ -0,0 +1,52 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="UTF-8" ?> | 
				
			||||
 | 
					<templates> | 
				
			||||
 | 
					    <!--Card to show the weather details--> | 
				
			||||
 | 
					    <t t-name="user_weather_notification.details" content="width=device-width"> | 
				
			||||
 | 
					        <div class="content"> | 
				
			||||
 | 
					            <div class="card dropdown-menu dropdown-menu-right"> | 
				
			||||
 | 
					                <div> | 
				
			||||
 | 
					                    <img class="img" | 
				
			||||
 | 
					                         src="user_weather_notification/static/src/img/weather_card.jpg"/> | 
				
			||||
 | 
					                    <div class="card-img-overlay" | 
				
			||||
 | 
					                         style="height:110px;"> | 
				
			||||
 | 
					                        <h3 class="card-title text-white m-b-0 dl" | 
				
			||||
 | 
					                            id="title"/> | 
				
			||||
 | 
					                        <small class="card-text text-white font-light" | 
				
			||||
 | 
					                               id="text"/> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                    <div class="card-body weather-small"> | 
				
			||||
 | 
					                        <div class="row"> | 
				
			||||
 | 
					                            <div class="col-8 b-r align-self-center"> | 
				
			||||
 | 
					                                <div class="d-flex"> | 
				
			||||
 | 
					                                    <div> | 
				
			||||
 | 
					                                        <h1 class="font-light text-info m-b-0" | 
				
			||||
 | 
					                                            id="temperature"/> | 
				
			||||
 | 
					                                        <small> | 
				
			||||
 | 
					                                            <span id="description"/> | 
				
			||||
 | 
					                                        </small> | 
				
			||||
 | 
					                                    </div> | 
				
			||||
 | 
					                                </div> | 
				
			||||
 | 
					                            </div> | 
				
			||||
 | 
					                        </div> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </div> | 
				
			||||
 | 
					        </div> | 
				
			||||
 | 
					    </t> | 
				
			||||
 | 
					    <!--Icon in systray--> | 
				
			||||
 | 
					    <t t-name="user_weather_notification.UserMenuS"> | 
				
			||||
 | 
					        <li class="new_icon"> | 
				
			||||
 | 
					            <label class="my_icon" id='get-weather'> | 
				
			||||
 | 
					                <div class="icon_div"> | 
				
			||||
 | 
					                    <div class="toggle-icon"> | 
				
			||||
 | 
					                        <i class="fa fa-cloud" id="fa-icon" | 
				
			||||
 | 
					                           style="color:white; padding-top:16px" role="button" | 
				
			||||
 | 
					                           aria-expanded="true" aria-haspopup="true" | 
				
			||||
 | 
					                           title="Weather"/> | 
				
			||||
 | 
					                        <t t-call="user_weather_notification.details"/> | 
				
			||||
 | 
					                    </div> | 
				
			||||
 | 
					                </div> | 
				
			||||
 | 
					            </label> | 
				
			||||
 | 
					        </li> | 
				
			||||
 | 
					    </t> | 
				
			||||
 | 
					</templates> | 
				
			||||
@ -0,0 +1,13 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					<!--    Connecting js and scss file--> | 
				
			||||
 | 
					    <template id="assets_backend" name="assets" | 
				
			||||
 | 
					              inherit_id="web.assets_backend"> | 
				
			||||
 | 
					        <xpath expr="." position="inside"> | 
				
			||||
 | 
					            <link rel="stylesheet" | 
				
			||||
 | 
					                  href="/user_weather_notification/static/src/scss/weather.scss"/> | 
				
			||||
 | 
					            <script type="text/javascript" | 
				
			||||
 | 
					                    src="/user_weather_notification/static/src/js/weather_notification.js"/> | 
				
			||||
 | 
					        </xpath> | 
				
			||||
 | 
					    </template> | 
				
			||||
 | 
					</odoo> | 
				
			||||
@ -0,0 +1,26 @@ | 
				
			|||||
 | 
					<?xml version="1.0" encoding="utf-8"?> | 
				
			||||
 | 
					<odoo> | 
				
			||||
 | 
					    <!-- Adding views in res.users to add fields for API key, location, and city --> | 
				
			||||
 | 
					    <record id="view_users_form" model="ir.ui.view"> | 
				
			||||
 | 
					        <field name="name">res.users.view.form.inherit.user.weather.notification</field> | 
				
			||||
 | 
					        <field name="model">res.users</field> | 
				
			||||
 | 
					        <field name="type">form</field> | 
				
			||||
 | 
					        <field name="inherit_id" ref="base.view_users_form"/> | 
				
			||||
 | 
					        <field name="arch" type="xml"> | 
				
			||||
 | 
					            <!-- Inserting a new page after the 'references' page --> | 
				
			||||
 | 
					            <xpath expr="//page[@name='references']" position="after"> | 
				
			||||
 | 
					                <page string="Weather Settings"> | 
				
			||||
 | 
					                    <group> | 
				
			||||
 | 
					                        <!-- Field for API key --> | 
				
			||||
 | 
					                        <field name="api_key"/> | 
				
			||||
 | 
					                        <!-- Field for location setting --> | 
				
			||||
 | 
					                        <field name="location_set"/> | 
				
			||||
 | 
					                        <!-- Field for city (visible only if location_set is 'manual') --> | 
				
			||||
 | 
					                        <field name="city" | 
				
			||||
 | 
					                               attrs="{'invisible': [('location_set', '!=', 'manual')]}"/> | 
				
			||||
 | 
					                    </group> | 
				
			||||
 | 
					                </page> | 
				
			||||
 | 
					            </xpath> | 
				
			||||
 | 
					        </field> | 
				
			||||
 | 
					    </record> | 
				
			||||
 | 
					</odoo> | 
				
			||||