Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
7a42783
[ADD] estate: create initial module shell for real estate management
pusu-odoo Aug 11, 2025
46dd052
[ADD] estate: define property model with essential fields and rules
pusu-odoo Aug 11, 2025
e15da5e
[ADD] estate: introduce basic access rights for property management
pusu-odoo Aug 11, 2025
5f0c9c8
[ADD] estate: first UI menus, default values, and property state mana…
pusu-odoo Aug 12, 2025
15c7949
[ADD] estate: custom list, form and search views for properties
pusu-odoo Aug 18, 2025
030c353
[ADD] estate: relational models for property types, tags, buyers and …
pusu-odoo Aug 18, 2025
94c5b92
[ADD] estate: Enhance property and offer pages with auto updates and …
pusu-odoo Aug 19, 2025
d62d928
[ADD] estate: Add property and offer action buttons with smart restri…
pusu-odoo Aug 19, 2025
e06b60d
[ADD] estate: Add data validation rules for prices and offer acceptance
pusu-odoo Aug 19, 2025
167ed52
[IMP] estate: Improve UI, ordering, filters, and constraints
pusu-odoo Aug 21, 2025
9b593fa
[ADD] estate: extend CRUD rules and user form with property management
pusu-odoo Aug 21, 2025
182a5cd
[ADD] estate_account: generate invoice on property sale
pusu-odoo Aug 22, 2025
668311e
[ADD] estate: introduce Kanban view for properties
pusu-odoo Aug 22, 2025
a7acb9e
[IMP] estate: align views and models with coding guidelines
pusu-odoo Aug 25, 2025
51bd52b
[IMP] estate: improve offer handling and property visibility rules
pusu-odoo Aug 26, 2025
1e91a59
[ADD] awesome_owl: build initial owl components with examples
pusu-odoo Aug 29, 2025
5c55b4f
[ADD] awesome_dashboard: implement base dashboard with layout, items,…
pusu-odoo Aug 29, 2025
046770d
[IMP] estate: add security, groups, and access restrictions
pusu-odoo Sep 1, 2025
41000d0
[ADD] awesome_owl: pie chart for t-shirt size distribution in dashboard
pusu-odoo Sep 1, 2025
c87f534
[IMP] awesome_dashboard: auto-refresh statistics and lazy load dashboard
pusu-odoo Sep 3, 2025
2bf1fcd
[IMP] awesome_dashboard: make dashboard generic, extensible and confi…
pusu-odoo Sep 4, 2025
dfc1981
[IMP] awesome_dashboard: enhance chart interactivity and dashboard pr…
pusu-odoo Sep 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions awesome_dashboard/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# -*- coding: utf-8 -*-

from . import controllers
from . import models
41 changes: 21 additions & 20 deletions awesome_dashboard/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,31 @@
# -*- coding: utf-8 -*-
{
'name': "Awesome Dashboard",

'summary': """
"name": "Awesome Dashboard",
"summary": """
Starting module for "Discover the JS framework, chapter 2: Build a dashboard"
""",

'description': """
"description": """
Starting module for "Discover the JS framework, chapter 2: Build a dashboard"
""",

'author': "Odoo",
'website': "https://www.odoo.com/",
'category': 'Tutorials/AwesomeDashboard',
'version': '0.1',
'application': True,
'installable': True,
'depends': ['base', 'web', 'mail', 'crm'],

'data': [
'views/views.xml',
"author": "Odoo",
"website": "https://www.odoo.com/",
"category": "Tutorials/AwesomeDashboard",
"version": "0.1",
"application": True,
"installable": True,
"depends": ["base", "web", "mail", "crm"],
"data": [
"views/res_user_views.xml",
"views/views.xml",
],
'assets': {
'web.assets_backend': [
'awesome_dashboard/static/src/**/*',
"assets": {
"web.assets_backend": [
"awesome_dashboard/static/src/**/*",
("remove", "awesome_dashboard/static/src/dashboard/**/*"),
],
"awesome_dashboard.dashboard": [
"awesome_dashboard/static/src/dashboard/**/*",
],
},
'license': 'AGPL-3'
"license": "AGPL-3",
}
29 changes: 19 additions & 10 deletions awesome_dashboard/controllers/controllers.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@

logger = logging.getLogger(__name__)


class AwesomeDashboard(http.Controller):
@http.route('/awesome_dashboard/statistics', type='json', auth='user')
@http.route("/awesome_dashboard/statistics", type="json", auth="user")
def get_statistics(self):
"""
Returns a dict of statistics about the orders:
Expand All @@ -22,15 +23,23 @@ def get_statistics(self):
"""

return {
'average_quantity': random.randint(4, 12),
'average_time': random.randint(4, 123),
'nb_cancelled_orders': random.randint(0, 50),
'nb_new_orders': random.randint(10, 200),
'orders_by_size': {
'm': random.randint(0, 150),
's': random.randint(0, 150),
'xl': random.randint(0, 150),
"average_quantity": random.randint(4, 12),
"average_time": random.randint(4, 123),
"nb_cancelled_orders": random.randint(0, 50),
"nb_new_orders": random.randint(10, 200),
"orders_by_size": {
"m": random.randint(0, 150),
"s": random.randint(0, 150),
"xl": random.randint(0, 150),
},
'total_amount': random.randint(100, 1000)
"total_amount": random.randint(100, 1000),
}

@http.route("/awesome_dashboard/save_disabled_items", type="json", auth="user")
def save_disabled_items(self, disabled_items):
request.env.user.save_disabled_dashboard_items(disabled_items)
return {"status": "ok"}

@http.route("/awesome_dashboard/get_disabled_items", type="json", auth="user")
def get_disabled_items(self):
return request.env.user.get_disabled_dashboard_items()
124 changes: 124 additions & 0 deletions awesome_dashboard/i18n/de.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * awesome_dashboard
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-04 13:09+0000\n"
"PO-Revision-Date: 2025-09-04 13:09+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.js:0
msgid "All leads"
msgstr "Alle Leads"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average amount of t-shirt"
msgstr "Durchschnittliche Anzahl T-Shirts"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average amount of t-shirt by order this month"
msgstr "Durchschnittliche Anzahl T-Shirts pro Bestellung in diesem Monat"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average time for an order"
msgstr "Durchschnittliche Bearbeitungszeit einer Bestellung"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average time for an order to go from 'new' to 'sent' or 'cancelled'"
msgstr "Durchschnittliche Zeit von ‚Neu‘ bis ‚Gesendet‘ oder ‚Storniert‘"

#. module: awesome_dashboard
#: model:ir.ui.menu,name:awesome_dashboard.menu_root
msgid "Awesome Dashboard"
msgstr "Geniales Dashboard"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Cancelled orders this month"
msgstr "Stornierte Bestellungen in diesem Monat"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Customers"
msgstr "Kunden"

#. module: awesome_dashboard
#: model:ir.actions.client,name:awesome_dashboard.dashboard
#: model:ir.ui.menu,name:awesome_dashboard.dashboard_menu
msgid "Dashboard"
msgstr "Dashboard"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Done"
msgstr "Fertig"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Leads"
msgstr "Leads"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "New orders this month"
msgstr "Neue Bestellungen in diesem Monat"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Number of cancelled orders this month"
msgstr "Anzahl stornierter Bestellungen in diesem Monat"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Number of new orders this month"
msgstr "Anzahl neuer Bestellungen in diesem Monat"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Shirt orders by size"
msgstr "T-Shirt-Bestellungen nach Größe"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Total amount of new orders this month"
msgstr "Gesamtanzahl neuer Bestellungen in diesem Monat"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Which cards do you whish to see ?"
msgstr "Welche Karten möchten Sie sehen?"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "amount orders this month"
msgstr "Bestellmenge in diesem Monat"

124 changes: 124 additions & 0 deletions awesome_dashboard/i18n/gu.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * awesome_dashboard
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-09-04 13:09+0000\n"
"PO-Revision-Date: 2025-09-04 13:09+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: gu\n"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.js:0
msgid "All leads"
msgstr "બધા લીડ્સ"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average amount of t-shirt"
msgstr "ટી-શર્ટની સરેરાશ સંખ્યા"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average amount of t-shirt by order this month"
msgstr "આ મહિને ઓર્ડર મુજબ ટી-શર્ટની સરેરાશ સંખ્યા"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average time for an order"
msgstr "ઓર્ડર માટેનો સરેરાશ સમય"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Average time for an order to go from 'new' to 'sent' or 'cancelled'"
msgstr "ઓર્ડરને 'નવું' થી 'મોકલ્યું' અથવા 'રદ' થવા માટેનો સરેરાશ સમય"

#. module: awesome_dashboard
#: model:ir.ui.menu,name:awesome_dashboard.menu_root
msgid "Awesome Dashboard"
msgstr "શાનદાર ડેશબોર્ડ"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Cancelled orders this month"
msgstr "આ મહિને રદ થયેલા ઓર્ડર"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Customers"
msgstr "ગ્રાહકો"

#. module: awesome_dashboard
#: model:ir.actions.client,name:awesome_dashboard.dashboard
#: model:ir.ui.menu,name:awesome_dashboard.dashboard_menu
msgid "Dashboard"
msgstr "ડેશબોર્ડ"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Done"
msgstr "પૂર્ણ"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Leads"
msgstr "લીડ્સ"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "New orders this month"
msgstr "આ મહિને નવા ઓર્ડર"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Number of cancelled orders this month"
msgstr "આ મહિને રદ થયેલા ઓર્ડરની સંખ્યા"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Number of new orders this month"
msgstr "આ મહિને નવા ઓર્ડરની સંખ્યા"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Shirt orders by size"
msgstr "સાઇઝ મુજબ શર્ટના ઓર્ડર"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "Total amount of new orders this month"
msgstr "આ મહિને નવા ઓર્ડરની કુલ સંખ્યા"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard.xml:0
msgid "Which cards do you whish to see ?"
msgstr "તમે કયા કાર્ડ જોવા માંગો છો?"

#. module: awesome_dashboard
#. odoo-javascript
#: code:addons/awesome_dashboard/static/src/dashboard/dashboard_items.js:0
msgid "amount orders this month"
msgstr "આ મહિને ઓર્ડરની સંખ્યા"
1 change: 1 addition & 0 deletions awesome_dashboard/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import res_user
19 changes: 19 additions & 0 deletions awesome_dashboard/models/res_user.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from odoo import models, fields, api


class ResUsers(models.Model):
_inherit = "res.users"

disabled_dashboard_items = fields.Text(
string="Disabled Dashboard Items",
help="Stores list of dashboard item IDs hidden by this user",
)

@api.model
def save_disabled_dashboard_items(self, disabled_items_json):
self.env.user.disabled_dashboard_items = disabled_items_json
return True

@api.model
def get_disabled_dashboard_items(self):
return self.env.user.disabled_dashboard_items or "[]"
10 changes: 0 additions & 10 deletions awesome_dashboard/static/src/dashboard.js

This file was deleted.

8 changes: 0 additions & 8 deletions awesome_dashboard/static/src/dashboard.xml

This file was deleted.

Loading