Skip to content
Open
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
b68a192
[FIX] website_airproof: fix template loading order issue
omarait-mlouk Sep 24, 2025
b7e18c9
[FIX] awesome_owl: Fix missing css variables
clbr-odoo Nov 21, 2025
781b590
[FIX] awesome_dashboard: Get rid of the deprecated warning
clbr-odoo Nov 21, 2025
bc75b91
[ADD] estate: initialize new application
ahmedamein100 Apr 22, 2026
703b451
[MOV] estate: move module to root
ahmedamein100 Apr 22, 2026
2b46f88
[ADD] estate: add property model and fields
ahmedamein100 Apr 22, 2026
2666fbd
[CLN] estate: fix formatting and typos
ahmedamein100 Apr 22, 2026
a1c6e1e
[ADD] estate: add access rights for property model
ahmedamein100 Apr 22, 2026
1fb914a
[CLN] estate: fix formatting and follow odoo guidelines
ahmedamein100 Apr 22, 2026
afbfbba
[CLN] estate: fix formatting and follow odoo guidelines
ahmedamein100 Apr 22, 2026
80d74ce
[CLN] estate: fix formatting and follow odoo guidelines
ahmedamein100 Apr 22, 2026
37bbff7
[ADD] estate: add basic UI and field business logic
ahmedamein100 Apr 22, 2026
39cd9c6
[FIX] estate: remove unlink permission for base users
vandroogenbd Apr 23, 2026
a930b33
[IMP] estate: add custom views and address PR feedback
ahmedamein100 Apr 23, 2026
b9b84e2
[ADD] estate: add relational models and fields
ahmedamein100 Apr 23, 2026
034623c
[FIX] estate: fix invalid search view definition
ahmedamein100 Apr 24, 2026
688ae48
[IMP] estate: add computed fields and onchange logic
ahmedamein100 Apr 24, 2026
f073812
[FIX] estate: fix python linting and styling issues
ahmedamein100 Apr 24, 2026
a8f5d11
[FIX] estate: fix python linting and styling issues
ahmedamein100 Apr 24, 2026
11467ce
[IMP] estate: add state management and offer actions
ahmedamein100 Apr 24, 2026
29377d5
[IMP] estate: add SQL and Python constraints for data integrity
ahmedamein100 Apr 24, 2026
9713b4c
[FIX] estate: clean up code styling
ahmedamein100 Apr 27, 2026
8e0f36c
[IMP] estate: add UI "sprinkles" and visual improvements
ahmedamein100 Apr 27, 2026
c6546c2
[CLN] estate: cleanup Python code and remove debug prints
ahmedamein100 Apr 27, 2026
4cec624
[CLN] estate: fix trailing whitespace in validation error
ahmedamein100 Apr 27, 2026
7df65a3
[CLN] estate: remove redundant invisible status field from offer list
ahmedamein100 Apr 27, 2026
158a5e3
[IMP] estate: add business logic and user inheritance
ahmedamein100 Apr 28, 2026
aafedb2
[IMP] estate: add basic test cases
vandroogenbd Apr 28, 2026
777efdb
[IMP] estate_account: link estate to account for invoicing
ahmedamein100 Apr 28, 2026
8a51cf8
[FIX] estate: enforce minimum price for south-facing gardens
ahmedamein100 Apr 28, 2026
ed456c8
[REF] estate: fix linting and PEP8 violations
ahmedamein100 Apr 28, 2026
e406286
[IMP] estate: implement advanced kanban view
ahmedamein100 Apr 29, 2026
27dac19
[FIX] estate: address review feedback on code standards
ahmedamein100 Apr 29, 2026
40e8c45
[REF] estate: fix whitespace and PEP8 linting violations
ahmedamein100 Apr 29, 2026
6d7c4d4
[FIX] estate: handle null create_date in offer deadline compute
ahmedamein100 Apr 29, 2026
02b6fb4
[REF] awesome_owl: implement Owl framework tutorial exercises
ahmedamein100 Apr 30, 2026
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
2 changes: 1 addition & 1 deletion awesome_dashboard/controllers/controllers.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
logger = logging.getLogger(__name__)

class AwesomeDashboard(http.Controller):
@http.route('/awesome_dashboard/statistics', type='json', auth='user')
@http.route('/awesome_dashboard/statistics', type='jsonrpc', auth='user')
def get_statistics(self):
"""
Returns a dict of statistics about the orders:
Expand Down
2 changes: 2 additions & 0 deletions awesome_owl/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,10 @@
'assets': {
'awesome_owl.assets_playground': [
('include', 'web._assets_helpers'),
('include', 'web._assets_backend_helpers'),
'web/static/src/scss/pre_variables.scss',
'web/static/lib/bootstrap/scss/_variables.scss',
'web/static/lib/bootstrap/scss/_maps.scss',
('include', 'web._assets_bootstrap'),
('include', 'web._assets_core'),
'web/static/src/libs/fontawesome/css/font-awesome.css',
Expand Down
1 change: 1 addition & 0 deletions estate/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
10 changes: 10 additions & 0 deletions estate/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
'name': "Estate",
'version': '1.0',
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Version should match the Odoo version, this way Odoo will not allow the module to be installed in other versions.

Suggested change
'version': '1.0',
'version': '19.0.0.1.0',

'depends': ['base'],
'category': 'Tutorials',
'application': True,
'data': ['security/ir.model.access.csv', 'views/estate_property_views.xml', 'views/estate_menus.xml'],
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same idea as the comment about the ,, if you break this into multiple lines it makes it so later commits don't mess with git-blaming when adding dependencies

'author': "Odoo",
'license': 'AGPL-3'
}
1 change: 1 addition & 0 deletions estate/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import estate_property
36 changes: 36 additions & 0 deletions estate/models/estate_property.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from odoo import fields, models


class EstatePropertytModel(models.Model):
_name = "estate_property"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

By convention, we separate words with . in model names

word.word => model name
word_word => python variable (snake case)
wordWord => js variable (camel case)

_description = "Estate Property Model"

name = fields.Char(required=True)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good practice to separate attributes from fields 👍

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am sorry but isn't it separated with line number 7?

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Exactly, hence the 👍

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ahhh okay hehe

description = fields.Text()
postcode = fields.Char()
date_availability = fields.Date(copy=False, default=lambda self: fields.Date.add(fields.Date.today(), months=3))
expected_price = fields.Float(required=True)
selling_price = fields.Float(readonly=True, copy=False)
bedrooms = fields.Integer(default=2)
living_area = fields.Integer()
facades = fields.Integer()
garage = fields.Boolean()
garden = fields.Boolean()
garden_area = fields.Integer()
garden_orientation = fields.Selection(
string='Type',
selection=[('north', 'North'), ('south', 'South'), ('east', 'East'), ('west', 'West')]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is good practice to end argument lines with a ,. This way, if someone later adds a line, they don't have to add the coma so the line stays unchanged, this keeps the git history cleaner!

)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indentation is off here

active = fields.Boolean(default=True)
state = fields.Selection(
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indentation here as well

selection=[
('new', 'New'),
('offer_received', 'Offer Received'),
('offer_accepted', 'Offer Accepted'),
('sold', 'Sold'),
('canceled', 'Cancelled'),
],
required=True,
copy=False,
default='new',
)
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You might want to re-indent this block

2 changes: 2 additions & 0 deletions estate/security/ir.model.access.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
estate.access_estate_property,access_estate_property,estate.model_estate_property,base.group_user,1,1,1,0
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

7 changes: 7 additions & 0 deletions estate/views/estate_menus.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<odoo>
<menuitem id="estate_menu_root" name="Real Estate">
<menuitem id="estate_first_level_menu" name="Advertisements">
<menuitem id="estate_property_menu_action" action="estate_property_action"/>
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indentation

</menuitem>
</menuitem>
</odoo>
7 changes: 7 additions & 0 deletions estate/views/estate_property_views.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<odoo>
<record id="estate_property_action" model="ir.actions.act_window">
<field name="name">Properties</field>
<field name="res_model">estate_property</field>
<field name="view_mode">list,form</field>
</record>
</odoo>
6 changes: 3 additions & 3 deletions website_airproof/__manifest__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
'license': 'LGPL-3',
'depends': ['website_sale', 'website_sale_wishlist', 'website_blog', 'website_mass_mailing'],
'data': [
# Snippets
'views/snippets/options.xml',
'views/snippets/s_airproof_carousel.xml',
# Options
'data/presets.xml',
'data/website.xml',
Expand All @@ -24,9 +27,6 @@
'views/website_templates.xml',
'views/website_sale_templates.xml',
'views/website_sale_wishlist_templates.xml',
# Snippets
'views/snippets/options.xml',
'views/snippets/s_airproof_carousel.xml',
# Images
'data/images.xml',
],
Expand Down