Skip to content

Commit fd34771

Browse files
committed
[IMP] *: automatic changes by pre-commit
closes #182 Signed-off-by: Virginia Bonservizi <[email protected]>
1 parent e65ec5a commit fd34771

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+939
-838
lines changed

.pre-commit-config.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
exclude: |
66
(?x)
7-
7+
88
# We don't want to mess with tool-generated files
99
.svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$|^.github/|^eslint.config.cjs|^prettier.config.cjs|
1010
# Library files can have extraneous formatting (even minimized)

academic/__manifest__.py

+64-65
Original file line numberDiff line numberDiff line change
@@ -18,72 +18,71 @@
1818
#
1919
##############################################################################
2020
{
21-
'name': 'Academic',
22-
'version': "18.0.1.4.0",
23-
'sequence': 14,
24-
'summary': '',
25-
'author': 'ADHOC SA',
26-
'website': 'www.adhoc.com.ar',
27-
'license': 'AGPL-3',
28-
'images': [
21+
"name": "Academic",
22+
"version": "18.0.1.4.0",
23+
"sequence": 14,
24+
"summary": "",
25+
"author": "ADHOC SA",
26+
"website": "www.adhoc.com.ar",
27+
"license": "AGPL-3",
28+
"images": [],
29+
"depends": [
30+
"portal_backend",
31+
"board",
32+
"hr",
33+
"website",
34+
"board",
35+
"sale_management",
36+
"account",
37+
"contacts",
38+
"report_aeroo",
2939
],
30-
'depends': [
31-
'portal_backend',
32-
'board',
33-
'hr',
34-
'website',
35-
'board',
36-
'sale_management',
37-
'account',
38-
'contacts',
39-
'report_aeroo',
40+
"data": [
41+
"security/academic_security.xml",
42+
"security/ir.model.access.csv",
43+
"data/res_partner_role_data.xml",
44+
"data/res_users_data.xml",
45+
"data/ir_cron.xml",
46+
"security/res_partner_category.xml",
47+
"views/academic_menuitem.xml",
48+
"views/res_partner_views.xml",
49+
"views/academic_group_views.xml",
50+
"views/academic_division_views.xml",
51+
"views/academic_level_views.xml",
52+
"views/academic_study_plan_views.xml",
53+
"views/academic_promotion_views.xml",
54+
"views/academic_section_views.xml",
55+
"views/academic_subject_views.xml",
56+
"views/hr_views.xml",
57+
"views/res_users_views.xml",
58+
"views/res_company_views.xml",
59+
"views/login_page.xml",
60+
"views/sale_order_views.xml",
61+
"views/res_partner_link_views.xml",
62+
"views/res_partner_relationship_views.xml",
63+
"views/account_move_views.xml",
64+
"wizards/portal_wizard_views.xml",
65+
"report/ir_actions_report.xml",
66+
"views/res_partner_category.xml",
67+
"report/report_invoice.xml",
4068
],
41-
'data': [
42-
'security/academic_security.xml',
43-
'security/ir.model.access.csv',
44-
'data/res_partner_role_data.xml',
45-
'data/res_users_data.xml',
46-
'data/ir_cron.xml',
47-
'security/res_partner_category.xml',
48-
'views/academic_menuitem.xml',
49-
'views/res_partner_views.xml',
50-
'views/academic_group_views.xml',
51-
'views/academic_division_views.xml',
52-
'views/academic_level_views.xml',
53-
'views/academic_study_plan_views.xml',
54-
'views/academic_promotion_views.xml',
55-
'views/academic_section_views.xml',
56-
'views/academic_subject_views.xml',
57-
'views/hr_views.xml',
58-
'views/res_users_views.xml',
59-
'views/res_company_views.xml',
60-
'views/login_page.xml',
61-
'views/sale_order_views.xml',
62-
'views/res_partner_link_views.xml',
63-
'views/res_partner_relationship_views.xml',
64-
'views/account_move_views.xml',
65-
'wizards/portal_wizard_views.xml',
66-
'report/ir_actions_report.xml',
67-
'views/res_partner_category.xml',
68-
'report/report_invoice.xml',
69+
"demo": [
70+
"demo/res_partner_relationship_demo.xml",
71+
"demo/res_partner_demo.xml",
72+
"demo/academic.subject.csv",
73+
"demo/academic.section.csv",
74+
"demo/academic.level.csv",
75+
"demo/academic.promotion.csv",
76+
"demo/res.partner.csv",
77+
"demo/res.partner.link.csv",
78+
"demo/academic.division.csv",
79+
"demo/academic.study.plan.csv",
80+
"demo/res_company_demo.xml",
81+
"demo/academic_group.xml",
82+
"demo/res_users_demo.xml",
6983
],
70-
'demo': [
71-
'demo/res_partner_relationship_demo.xml',
72-
'demo/res_partner_demo.xml',
73-
'demo/academic.subject.csv',
74-
'demo/academic.section.csv',
75-
'demo/academic.level.csv',
76-
'demo/academic.promotion.csv',
77-
'demo/res.partner.csv',
78-
'demo/res.partner.link.csv',
79-
'demo/academic.division.csv',
80-
'demo/academic.study.plan.csv',
81-
'demo/res_company_demo.xml',
82-
'demo/academic_group.xml',
83-
'demo/res_users_demo.xml',
84-
],
85-
'installable': True,
86-
'auto_install': False,
87-
'application': False,
88-
'post_init_hook': 'post_init_hook',
84+
"installable": True,
85+
"auto_install": False,
86+
"application": False,
87+
"post_init_hook": "post_init_hook",
8988
}

academic/hooks.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
# directory
44
##############################################################################
55

6+
67
def post_init_hook(env):
7-
''' Esto lo dejamos solo para los templates de órdenes de venta y no en facturas debido a que
8+
"""Esto lo dejamos solo para los templates de órdenes de venta y no en facturas debido a que
89
en facturas hay un wizard custom y no heredamos el método de _message_get_default_recipients,
910
si se mandan facturas desde el chatter no se van a sugerir, aunque en facturas primero se confirma
1011
(al confirmar se agregan los responsables de pago como seguidores) y luego se enviaría la factura,
1112
así que siempre van a enviarse a los seguidores de la factura.
12-
'''
13-
templates = env['mail.template'].search([('model_id.model', '=', 'sale.order')])
13+
"""
14+
templates = env["mail.template"].search([("model_id.model", "=", "sale.order")])
1415
templates.use_default_to = True

academic/models/academic_division.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
# For copyright and license notices, see __manifest__.py file in module root
33
# directory
44
##############################################################################
5-
from odoo import models, fields
5+
from odoo import fields, models
66

77

88
class AcademicDivision(models.Model):
9-
_name = 'academic.division'
10-
_description = 'division'
9+
_name = "academic.division"
10+
_description = "division"
1111

1212
name = fields.Char(
1313
required=True,

academic/models/academic_group.py

+75-78
Original file line numberDiff line numberDiff line change
@@ -2,85 +2,78 @@
22
# For copyright and license notices, see __manifest__.py file in module root
33
# directory
44
##############################################################################
5-
from odoo import api, models, fields
6-
from datetime import date
75
import random
86
import string
7+
from datetime import date
8+
9+
from odoo import api, fields, models
910

1011

1112
class AcademicGroup(models.Model):
12-
_name = 'academic.group'
13-
_description = 'group'
14-
_order = 'name'
13+
_name = "academic.group"
14+
_description = "group"
15+
_order = "name"
1516

1617
_sql_constraints = [
17-
('group_unique',
18-
'unique(subject_id, company_id, level_id, year, division_id)',
19-
'Group should be unique per Institution, Subject,'
20-
' Course-Division and Year')]
18+
(
19+
"group_unique",
20+
"unique(subject_id, company_id, level_id, year, division_id)",
21+
"Group should be unique per Institution, Subject," " Course-Division and Year",
22+
)
23+
]
2124

22-
type = fields.Selection([
23-
('student', 'Student'),
24-
('teacher', 'Teacher'),
25-
('administrator', 'Administrator'),
26-
('gral_administrator', 'gral_administrator'),
27-
('parent', 'Relative')]
28-
)
29-
year = fields.Integer(
30-
required=True,
31-
default=date.today().year,
32-
index=True
25+
type = fields.Selection(
26+
[
27+
("student", "Student"),
28+
("teacher", "Teacher"),
29+
("administrator", "Administrator"),
30+
("gral_administrator", "gral_administrator"),
31+
("parent", "Relative"),
32+
]
3333
)
34+
year = fields.Integer(required=True, default=date.today().year, index=True)
3435
division_id = fields.Many2one(
35-
'academic.division',
36-
string='Division',
36+
"academic.division",
37+
string="Division",
3738
)
3839
company_id = fields.Many2one(
39-
'res.company',
40-
string='Company',
40+
"res.company",
41+
string="Company",
4142
required=True,
42-
context={'default_is_company': True},
43-
default=lambda self: self.env.company
43+
context={"default_is_company": True},
44+
default=lambda self: self.env.company,
4445
)
45-
study_plan_level_ids = fields.Many2many(related='company_id.study_plan_id.level_ids')
46+
study_plan_level_ids = fields.Many2many(related="company_id.study_plan_id.level_ids")
4647
level_id = fields.Many2one(
47-
'academic.level',
48-
string='Level',
48+
"academic.level",
49+
string="Level",
4950
required=True,
5051
)
51-
subject_id = fields.Many2one(
52-
'academic.subject',
53-
string='Subject',
54-
required=False,
55-
index=True
56-
)
52+
subject_id = fields.Many2one("academic.subject", string="Subject", required=False, index=True)
5753
teacher_id = fields.Many2one(
58-
'res.partner',
59-
string='Teacher',
54+
"res.partner",
55+
string="Teacher",
6056
required=False,
61-
context={'default_partner_type': 'teacher'},
62-
domain=[('partner_type', '=', 'teacher')],
57+
context={"default_partner_type": "teacher"},
58+
domain=[("partner_type", "=", "teacher")],
6359
)
6460
student_ids = fields.Many2many(
65-
'res.partner',
66-
'academic_student_group_ids_student_ids_rel',
67-
'group_id',
68-
'partner_id',
69-
string='Student',
70-
context={'default_partner_type': 'student'},
71-
domain=[('partner_type', '=', 'student')],
72-
)
73-
name = fields.Char(
74-
compute='_compute_name',
75-
store=True
61+
"res.partner",
62+
"academic_student_group_ids_student_ids_rel",
63+
"group_id",
64+
"partner_id",
65+
string="Student",
66+
context={"default_partner_type": "student"},
67+
domain=[("partner_type", "=", "student")],
7668
)
69+
name = fields.Char(compute="_compute_name", store=True)
7770
active = fields.Boolean(default=True)
7871
student_ids_count = fields.Integer(
79-
string='Student Count',
80-
compute='_compute_student_ids_count',
72+
string="Student Count",
73+
compute="_compute_student_ids_count",
8174
)
8275

83-
@api.depends('company_id', 'level_id', 'division_id', 'year')
76+
@api.depends("company_id", "level_id", "division_id", "year")
8477
def _compute_name(self):
8578
for line in self:
8679
name_parts = [
@@ -90,34 +83,33 @@ def _compute_name(self):
9083
line.level_id.section_id.name if line.level_id and line.level_id.section_id else None,
9184
f"{self.env._('Year:')} {line.year}",
9285
]
93-
line.name = ' - '.join(filter(None, name_parts))
86+
line.name = " - ".join(filter(None, name_parts))
9487

9588
def create_students_users(self):
96-
'''
89+
"""
9790
This function create users if they don't exist for students related
9891
to this group.
99-
'''
92+
"""
10093
self.student_ids.quickly_create_portal_user()
10194
# Creamos contrasenas para todos los students que no tengan una
10295
# explicita (no hashed)
103-
for user in \
104-
self.student_ids.mapped('user_ids')\
105-
.filtered(lambda x: not x.password):
106-
user.password = ''.join(random.choice(
107-
string.ascii_uppercase + string.digits) for _ in range(6))
96+
for user in self.student_ids.mapped("user_ids").filtered(lambda x: not x.password):
97+
user.password = "".join(random.choice(string.ascii_uppercase + string.digits) for _ in range(6))
10898

10999
def print_users(self):
110-
'''
100+
"""
111101
This function prints a report with users login and password.
112-
'''
102+
"""
113103
self.ensure_one()
114104
self.create_students_users()
115-
report = self.env['ir.actions.report'].search(
116-
[('report_name', '=', 'academic.template_report_users')],
117-
limit=1).report_action(self)
105+
report = (
106+
self.env["ir.actions.report"]
107+
.search([("report_name", "=", "academic.template_report_users")], limit=1)
108+
.report_action(self)
109+
)
118110
return report
119111

120-
@api.depends('student_ids')
112+
@api.depends("student_ids")
121113
def _compute_student_ids_count(self):
122114
for group in self:
123115
group.student_ids_count = len(group.student_ids)
@@ -126,17 +118,22 @@ def create_next_year_groups(self):
126118
# estamos pasando de un año a otro sin usar study plan por lo siguiente:
127119
# a) hay muchos colegios que no lo tienen bien implmentado
128120
# b) los study plan no pueden reflejar todos los casos todavia (por )
129-
121+
130122
for rec in self:
131-
next_group = rec.env['academic.group'].search([
132-
('year', '=', rec.year + 1),
133-
('company_id', '=', rec.company_id.id),
134-
('level_id', '=', rec.level_id.id),
135-
('division_id', '=', rec.division_id.id)
136-
], limit=1)
123+
next_group = rec.env["academic.group"].search(
124+
[
125+
("year", "=", rec.year + 1),
126+
("company_id", "=", rec.company_id.id),
127+
("level_id", "=", rec.level_id.id),
128+
("division_id", "=", rec.division_id.id),
129+
],
130+
limit=1,
131+
)
137132

138133
if not next_group:
139-
next_group = rec.copy(default={
140-
'year': rec.year + 1,
141-
'student_ids': False,
142-
})
134+
next_group = rec.copy(
135+
default={
136+
"year": rec.year + 1,
137+
"student_ids": False,
138+
}
139+
)

0 commit comments

Comments
 (0)