Primeira fase do projeto

This commit is contained in:
Victor 2026-03-13 18:31:37 +01:00
commit 3ae0293647
31 changed files with 475 additions and 0 deletions

BIN
.__manifest__.py.swp Normal file

Binary file not shown.

1
__init__.py Normal file
View File

@ -0,0 +1 @@
from . import models

17
__manifest__.py Normal file
View File

@ -0,0 +1,17 @@
{
'name': 'Gestao Escolar',
'version': '1.0',
'summary': 'Sistema de Gestão Escolar',
'author': 'Sebastiao',
'category': 'Education',
'depends': ['base'],
'data': [
'security/groups.xml',
'security/ir.model.access.csv',
'views/school_views.xml',
],
'installable': True,
'application': True,
}

Binary file not shown.

7
models/__init__.py Normal file
View File

@ -0,0 +1,7 @@
from . import student
from . import teacher
from . import academic_year
from . import school_class
from . import subject
from . import enrollment
from . import assessment

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

9
models/academic_year.py Normal file
View File

@ -0,0 +1,9 @@
from odoo import models, fields
class AcademicYear(models.Model):
_name = 'school.academic.year'
_description = 'Academic Year'
name = fields.Char(required=True)
start_date = fields.Date()
end_date = fields.Date()

17
models/assessment.py Normal file
View File

@ -0,0 +1,17 @@
from odoo import models, fields
class SchoolAssessment(models.Model):
_name = 'school.assessment'
_description = 'Assessment'
enrollment_id = fields.Many2one(
'school.enrollment',
string="Enrollment"
)
subject_id = fields.Many2one(
'school.subject',
string="Subject"
)
grade = fields.Float(string="Grade")

26
models/enrollment.py Normal file
View File

@ -0,0 +1,26 @@
from odoo import models, fields
class SchoolEnrollment(models.Model):
_name = 'school.enrollment'
_description = 'Enrollment'
student_id = fields.Many2one(
'cefope.student',
string="Student"
)
class_id = fields.Many2one(
'school.class',
string="Class"
)
academic_year_id = fields.Many2one(
'school.academic.year',
string="Academic Year"
)
status = fields.Selection([
('active','Active'),
('completed','Completed'),
('cancelled','Cancelled')
], default='active')

17
models/school_class.py Normal file
View File

@ -0,0 +1,17 @@
from odoo import models, fields
class SchoolClass(models.Model):
_name = 'school.class'
_description = 'Class'
name = fields.Char(required=True)
academic_year_id = fields.Many2one(
'school.academic.year',
string="Academic Year"
)
teacher_id = fields.Many2one(
'school.teacher',
string="Teacher"
)

14
models/student.py Normal file
View File

@ -0,0 +1,14 @@
from odoo import models, fields
class Student(models.Model):
_name = 'cefope.student'
_description = 'Student'
name = fields.Char(string="Name")
email = fields.Char(string="Email")
phone = fields.Char(string="Phone")
user_id = fields.Many2one(
'res.users',
string="User"
)

12
models/subject.py Normal file
View File

@ -0,0 +1,12 @@
from odoo import models, fields
class SchoolSubject(models.Model):
_name = 'school.subject'
_description = 'Subject'
name = fields.Char(required=True)
class_id = fields.Many2one(
'school.class',
string="Class"
)

9
models/teacher.py Normal file
View File

@ -0,0 +1,9 @@
from odoo import models, fields
class SchoolTeacher(models.Model):
_name = 'school.teacher'
_description = 'Teacher'
name = fields.Char(required=True)
email = fields.Char()
phone = fields.Char()

15
security/groups.xml Normal file
View File

@ -0,0 +1,15 @@
<odoo>
<record id="group_school_student" model="res.groups">
<field name="name">Student</field>
</record>
<record id="group_school_teacher" model="res.groups">
<field name="name">Teacher</field>
</record>
<record id="group_school_manager" model="res.groups">
<field name="name">School Manager</field>
</record>
</odoo>

View File

@ -0,0 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_student,access_student,model_cefope_student,,1,1,1,1
access_teacher,access_teacher,model_school_teacher,,1,1,1,1
access_academic_year,access_academic_year,model_school_academic_year,,1,1,1,1
access_class,access_class,model_school_class,,1,1,1,1
access_subject,access_subject,model_school_subject,,1,1,1,1
access_enrollment,access_enrollment,model_school_enrollment,,1,1,1,1
access_assessment,access_assessment,model_school_assessment,,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_student access_student model_cefope_student 1 1 1 1
3 access_teacher access_teacher model_school_teacher 1 1 1 1
4 access_academic_year access_academic_year model_school_academic_year 1 1 1 1
5 access_class access_class model_school_class 1 1 1 1
6 access_subject access_subject model_school_subject 1 1 1 1
7 access_enrollment access_enrollment model_school_enrollment 1 1 1 1
8 access_assessment access_assessment model_school_assessment 1 1 1 1

10
security/rules.xml Normal file
View File

@ -0,0 +1,10 @@
<odoo>
<record id="student_own_record_rule" model="ir.rule">
<field name="name">Student sees only his record</field>
<field name="model_id" ref="model_cefope_student"/>
<field name="groups" eval="[(4, ref('meu_projeto.group_school_student'))]"/>
<field name="domain_force">[('user_id','=',user.id)]</field>
</record>
</odoo>

0
views/academic_views.xml Normal file
View File

View File

0
views/class_views.xml Normal file
View File

View File

313
views/school_views.xml Normal file
View File

@ -0,0 +1,313 @@
<odoo>
<!-- ========================= -->
<!-- MENU PRINCIPAL -->
<!-- ========================= -->
<menuitem id="menu_school_root"
name="School"/>
<!-- ========================= -->
<!-- STUDENTS -->
<!-- ========================= -->
<record id="view_student_list" model="ir.ui.view">
<field name="name">student.list</field>
<field name="model">cefope.student</field>
<field name="arch" type="xml">
<list>
<field name="name"/>
<field name="email"/>
<field name="phone"/>
<field name="user_id"/>
</list>
</field>
</record>
<record id="view_student_form" model="ir.ui.view">
<field name="name">student.form</field>
<field name="model">cefope.student</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="email"/>
<field name="phone"/>
<field name="user_id"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_students" model="ir.actions.act_window">
<field name="name">Students</field>
<field name="res_model">cefope.student</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_students"
name="Students"
parent="menu_school_root"
action="action_students"/>
<!-- ========================= -->
<!-- TEACHERS -->
<!-- ========================= -->
<record id="view_teacher_list" model="ir.ui.view">
<field name="name">teacher.list</field>
<field name="model">school.teacher</field>
<field name="arch" type="xml">
<list>
<field name="name"/>
<field name="email"/>
<field name="phone"/>
</list>
</field>
</record>
<record id="view_teacher_form" model="ir.ui.view">
<field name="name">teacher.form</field>
<field name="model">school.teacher</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="email"/>
<field name="phone"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_teachers" model="ir.actions.act_window">
<field name="name">Teachers</field>
<field name="res_model">school.teacher</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_teachers"
name="Teachers"
parent="menu_school_root"
action="action_teachers"/>
<!-- ========================= -->
<!-- ACADEMIC YEAR -->
<!-- ========================= -->
<record id="view_academic_list" model="ir.ui.view">
<field name="name">academic.year.list</field>
<field name="model">school.academic.year</field>
<field name="arch" type="xml">
<list>
<field name="name"/>
<field name="start_date"/>
<field name="end_date"/>
</list>
</field>
</record>
<record id="view_academic_form" model="ir.ui.view">
<field name="name">academic.year.form</field>
<field name="model">school.academic.year</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="start_date"/>
<field name="end_date"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_academic_year" model="ir.actions.act_window">
<field name="name">Academic Years</field>
<field name="res_model">school.academic.year</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_academic_year"
name="Academic Years"
parent="menu_school_root"
action="action_academic_year"/>
<!-- ========================= -->
<!-- CLASSES -->
<!-- ========================= -->
<record id="view_class_list" model="ir.ui.view">
<field name="name">class.list</field>
<field name="model">school.class</field>
<field name="arch" type="xml">
<list>
<field name="name"/>
<field name="academic_year_id"/>
<field name="teacher_id"/>
</list>
</field>
</record>
<record id="view_class_form" model="ir.ui.view">
<field name="name">class.form</field>
<field name="model">school.class</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="academic_year_id"/>
<field name="teacher_id"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_classes" model="ir.actions.act_window">
<field name="name">Classes</field>
<field name="res_model">school.class</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_classes"
name="Classes"
parent="menu_school_root"
action="action_classes"/>
<!-- ========================= -->
<!-- SUBJECTS -->
<!-- ========================= -->
<record id="view_subject_list" model="ir.ui.view">
<field name="name">subject.list</field>
<field name="model">school.subject</field>
<field name="arch" type="xml">
<list>
<field name="name"/>
<field name="class_id"/>
</list>
</field>
</record>
<record id="view_subject_form" model="ir.ui.view">
<field name="name">subject.form</field>
<field name="model">school.subject</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="class_id"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_subjects" model="ir.actions.act_window">
<field name="name">Subjects</field>
<field name="res_model">school.subject</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_subjects"
name="Subjects"
parent="menu_school_root"
action="action_subjects"/>
<!-- ========================= -->
<!-- ENROLLMENT -->
<!-- ========================= -->
<record id="view_enrollment_list" model="ir.ui.view">
<field name="name">enrollment.list</field>
<field name="model">school.enrollment</field>
<field name="arch" type="xml">
<list>
<field name="student_id"/>
<field name="class_id"/>
<field name="academic_year_id"/>
<field name="status"/>
</list>
</field>
</record>
<record id="view_enrollment_form" model="ir.ui.view">
<field name="name">enrollment.form</field>
<field name="model">school.enrollment</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="student_id"/>
<field name="class_id"/>
<field name="academic_year_id"/>
<field name="status"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_enrollments" model="ir.actions.act_window">
<field name="name">Enrollments</field>
<field name="res_model">school.enrollment</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_enrollments"
name="Enrollments"
parent="menu_school_root"
action="action_enrollments"/>
<!-- ========================= -->
<!-- ASSESSMENT -->
<!-- ========================= -->
<record id="view_assessment_list" model="ir.ui.view">
<field name="name">assessment.list</field>
<field name="model">school.assessment</field>
<field name="arch" type="xml">
<list>
<field name="enrollment_id"/>
<field name="subject_id"/>
<field name="grade"/>
</list>
</field>
</record>
<record id="view_assessment_form" model="ir.ui.view">
<field name="name">assessment.form</field>
<field name="model">school.assessment</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="enrollment_id"/>
<field name="subject_id"/>
<field name="grade"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="action_assessment" model="ir.actions.act_window">
<field name="name">Assessments</field>
<field name="res_model">school.assessment</field>
<field name="view_mode">list,form</field>
</record>
<menuitem id="menu_assessments"
name="Assessments"
parent="menu_school_root"
action="action_assessment"/>
</odoo>

0
views/student_views.xml Normal file
View File

0
views/subject_views.xml Normal file
View File

0
views/teacher_views.xml Normal file
View File