Skip to content

Commit 6671bf0

Browse files
feat: add spp_graduation and spp_session_tracking dependency modules
These modules were missing from git but required by spp_case_graduation and spp_case_session, causing CI test failures.
1 parent 6bc448e commit 6671bf0

48 files changed

Lines changed: 3934 additions & 0 deletions

Some content is hidden

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

spp_graduation/README.rst

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,164 @@
1+
=============================
2+
OpenSPP Graduation Management
3+
=============================
4+
5+
..
6+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7+
!! This file is generated by oca-gen-addon-readme !!
8+
!! changes will be overwritten. !!
9+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10+
!! source digest: sha256:aad197a1403a39fb971b395c0091745c0d10f8c6978896d4671688fcdd3a85cd
11+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12+
13+
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
14+
:target: https://odoo-community.org/page/development-status
15+
:alt: Beta
16+
.. |badge2| image:: https://img.shields.io/badge/license-LGPL--3-blue.png
17+
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
18+
:alt: License: LGPL-3
19+
.. |badge3| image:: https://img.shields.io/badge/github-OpenSPP%2FOpenSPP2-lightgray.png?logo=github
20+
:target: https://github.com/OpenSPP/OpenSPP2/tree/19.0/spp_graduation
21+
:alt: OpenSPP/OpenSPP2
22+
23+
|badge1| |badge2| |badge3|
24+
25+
Manages beneficiary graduation from time-bound social protection
26+
programs. Defines graduation pathways with weighted criteria, conducts
27+
assessments against those criteria, calculates readiness scores, and
28+
tracks graduation outcomes with post-graduation monitoring periods.
29+
Supports both positive exits (graduation) and negative exits (program
30+
removal).
31+
32+
Key Capabilities
33+
~~~~~~~~~~~~~~~~
34+
35+
- Define graduation pathways with configurable criteria, exit type, and
36+
monitoring duration
37+
- Create weighted criteria with different assessment methods
38+
(self-report, verification, computed, observation)
39+
- Conduct beneficiary assessments with criteria responses and evidence
40+
attachments
41+
- Calculate readiness scores based on weighted criteria and enforce
42+
required criteria
43+
- Submit assessments for manager approval through a
44+
draft/submitted/approved/rejected workflow
45+
- Track graduation dates and compute post-graduation monitoring periods
46+
- Filter assessments by assessor, state, pathway, and recommendation
47+
48+
Key Models
49+
~~~~~~~~~~
50+
51+
+--------------------------------------+----------------------------------+
52+
| Model | Description |
53+
+======================================+==================================+
54+
| ``spp.graduation.pathway`` | Defines a graduation pathway |
55+
| | with criteria and exit type |
56+
+--------------------------------------+----------------------------------+
57+
| ``spp.graduation.criteria`` | Individual criterion within a |
58+
| | pathway with weight and method |
59+
+--------------------------------------+----------------------------------+
60+
| ``spp.graduation.assessment`` | Assessment of a beneficiary |
61+
| | against a pathway with scores |
62+
+--------------------------------------+----------------------------------+
63+
| ``spp.graduation.criteria.response`` | Response to a specific criterion |
64+
| | within an assessment |
65+
+--------------------------------------+----------------------------------+
66+
67+
Configuration
68+
~~~~~~~~~~~~~
69+
70+
After installing:
71+
72+
1. Navigate to **Graduation > Configuration > Pathways**
73+
2. Create graduation pathways specifying exit type (positive/negative)
74+
and monitoring months
75+
3. Add criteria to each pathway with weight, assessment method, and
76+
required flag
77+
4. Users can then create assessments under **Graduation > Assessments >
78+
All Assessments**
79+
80+
UI Location
81+
~~~~~~~~~~~
82+
83+
- **Menu**: Graduation (top-level menu)
84+
- **Assessments**: Graduation > Assessments > All Assessments / My
85+
Assessments
86+
- **Configuration**: Graduation > Configuration > Pathways (managers
87+
only)
88+
- **Views**: List, kanban (grouped by state), and form views with
89+
approval workflow
90+
- **Pathway Form**: Criteria tab shows inline editable criteria list
91+
- **Assessment Form**: Criteria Responses and Recommendation tabs
92+
93+
Security
94+
~~~~~~~~
95+
96+
+-------------------------------------------------+----------------------------------+
97+
| Group | Access |
98+
+=================================================+==================================+
99+
| ``spp_graduation.group_spp_graduation_user`` | Read pathways/criteria; |
100+
| | create/edit own assessments (no |
101+
| | delete) |
102+
+-------------------------------------------------+----------------------------------+
103+
| ``spp_graduation.group_spp_graduation_manager`` | Full CRUD on all graduation data |
104+
| | and configuration |
105+
+-------------------------------------------------+----------------------------------+
106+
107+
Extension Points
108+
~~~~~~~~~~~~~~~~
109+
110+
- Inherit ``spp.graduation.assessment`` and override
111+
``_compute_scores()`` to customize readiness calculation
112+
- Inherit ``spp.graduation.pathway`` to add domain-specific pathway
113+
fields
114+
- Extend approval workflow by inheriting assessment actions
115+
(``action_submit``, ``action_approve``)
116+
117+
Dependencies
118+
~~~~~~~~~~~~
119+
120+
``base``, ``spp_security``, ``mail``
121+
122+
**Table of contents**
123+
124+
.. contents::
125+
:local:
126+
127+
Bug Tracker
128+
===========
129+
130+
Bugs are tracked on `GitHub Issues <https://github.com/OpenSPP/OpenSPP2/issues>`_.
131+
In case of trouble, please check there if your issue has already been reported.
132+
If you spotted it first, help us to smash it by providing a detailed and welcomed
133+
`feedback <https://github.com/OpenSPP/OpenSPP2/issues/new?body=module:%20spp_graduation%0Aversion:%2019.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
134+
135+
Do not contact contributors directly about support or help with technical issues.
136+
137+
Credits
138+
=======
139+
140+
Authors
141+
-------
142+
143+
* OpenSPP.org
144+
145+
Maintainers
146+
-----------
147+
148+
.. |maintainer-jeremi| image:: https://github.com/jeremi.png?size=40px
149+
:target: https://github.com/jeremi
150+
:alt: jeremi
151+
.. |maintainer-gonzalesedwin1123| image:: https://github.com/gonzalesedwin1123.png?size=40px
152+
:target: https://github.com/gonzalesedwin1123
153+
:alt: gonzalesedwin1123
154+
.. |maintainer-emjay0921| image:: https://github.com/emjay0921.png?size=40px
155+
:target: https://github.com/emjay0921
156+
:alt: emjay0921
157+
158+
Current maintainers:
159+
160+
|maintainer-jeremi| |maintainer-gonzalesedwin1123| |maintainer-emjay0921|
161+
162+
This module is part of the `OpenSPP/OpenSPP2 <https://github.com/OpenSPP/OpenSPP2/tree/19.0/spp_graduation>`_ project on GitHub.
163+
164+
You are welcome to contribute.

spp_graduation/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models

spp_graduation/__manifest__.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# pylint: disable=pointless-statement
2+
{
3+
"name": "OpenSPP Graduation Management",
4+
"summary": "Manage graduation and exit from time-bound social protection programs",
5+
"version": "19.0.1.0.0",
6+
"category": "OpenSPP",
7+
"author": "OpenSPP.org",
8+
"website": "https://github.com/OpenSPP/OpenSPP2",
9+
"license": "LGPL-3",
10+
"development_status": "Beta",
11+
"maintainers": ["jeremi", "gonzalesedwin1123", "emjay0921"],
12+
"depends": [
13+
"base",
14+
"spp_security",
15+
"mail",
16+
],
17+
"external_dependencies": {"python": ["dateutil"]},
18+
"data": [
19+
"security/privileges.xml",
20+
"security/graduation_security.xml",
21+
"security/graduation_rules.xml",
22+
"security/ir.model.access.csv",
23+
"views/graduation_pathway_views.xml",
24+
"views/graduation_assessment_views.xml",
25+
"views/graduation_menus.xml",
26+
"data/graduation_data.xml",
27+
],
28+
"demo": [],
29+
"installable": True,
30+
"application": False,
31+
"auto_install": False,
32+
}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<odoo noupdate="1">
3+
<!-- Standard Graduation Pathway -->
4+
<record id="pathway_standard_graduation" model="spp.graduation.pathway">
5+
<field name="name">Standard Graduation</field>
6+
<field name="code">STANDARD</field>
7+
<field name="sequence">10</field>
8+
<field name="is_positive_exit" eval="True" />
9+
<field name="is_requires_assessment" eval="True" />
10+
<field name="is_requires_approval" eval="True" />
11+
<field name="post_graduation_monitoring_months">12</field>
12+
<field name="description">Standard graduation pathway for beneficiaries who have met all program objectives and are ready to exit successfully.</field>
13+
</record>
14+
15+
<!-- Early Graduation Pathway -->
16+
<record id="pathway_early_graduation" model="spp.graduation.pathway">
17+
<field name="name">Early Graduation</field>
18+
<field name="code">EARLY</field>
19+
<field name="sequence">20</field>
20+
<field name="is_positive_exit" eval="True" />
21+
<field name="is_requires_assessment" eval="True" />
22+
<field name="is_requires_approval" eval="True" />
23+
<field name="post_graduation_monitoring_months">18</field>
24+
<field name="description">Early graduation pathway for beneficiaries who have exceeded program expectations and are ready to graduate ahead of schedule.</field>
25+
</record>
26+
27+
<!-- Administrative Exit Pathway -->
28+
<record id="pathway_administrative_exit" model="spp.graduation.pathway">
29+
<field name="name">Administrative Exit</field>
30+
<field name="code">ADMIN_EXIT</field>
31+
<field name="sequence">30</field>
32+
<field name="is_positive_exit" eval="False" />
33+
<field name="is_requires_assessment" eval="False" />
34+
<field name="is_requires_approval" eval="True" />
35+
<field name="post_graduation_monitoring_months">0</field>
36+
<field name="description">Administrative exit for beneficiaries who are removed from the program due to non-compliance, ineligibility, or other administrative reasons.</field>
37+
</record>
38+
39+
<!-- Sample Criteria for Standard Graduation -->
40+
<record id="criteria_income_threshold" model="spp.graduation.criteria">
41+
<field name="name">Income Above Poverty Line</field>
42+
<field name="code">INCOME_THRESHOLD</field>
43+
<field name="pathway_id" ref="pathway_standard_graduation" />
44+
<field name="sequence">10</field>
45+
<field name="weight">2.0</field>
46+
<field name="assessment_method">verification</field>
47+
<field name="is_required" eval="True" />
48+
<field name="description">Household income is sustainably above the poverty line for at least 6 months.</field>
49+
</record>
50+
51+
<record id="criteria_livelihood_established" model="spp.graduation.criteria">
52+
<field name="name">Sustainable Livelihood Established</field>
53+
<field name="code">LIVELIHOOD</field>
54+
<field name="pathway_id" ref="pathway_standard_graduation" />
55+
<field name="sequence">20</field>
56+
<field name="weight">2.0</field>
57+
<field name="assessment_method">verification</field>
58+
<field name="is_required" eval="False" />
59+
<field name="description">Beneficiary has established a sustainable livelihood or income source.</field>
60+
</record>
61+
62+
<record id="criteria_savings_account" model="spp.graduation.criteria">
63+
<field name="name">Active Savings Account</field>
64+
<field name="code">SAVINGS</field>
65+
<field name="pathway_id" ref="pathway_standard_graduation" />
66+
<field name="sequence">30</field>
67+
<field name="weight">1.0</field>
68+
<field name="assessment_method">verification</field>
69+
<field name="is_required" eval="False" />
70+
<field name="description">Beneficiary has an active savings account with regular deposits.</field>
71+
</record>
72+
73+
<record id="criteria_children_school" model="spp.graduation.criteria">
74+
<field name="name">School-Age Children Enrolled</field>
75+
<field name="code">SCHOOL_ENROLLMENT</field>
76+
<field name="pathway_id" ref="pathway_standard_graduation" />
77+
<field name="sequence">40</field>
78+
<field name="weight">1.5</field>
79+
<field name="assessment_method">verification</field>
80+
<field name="is_required" eval="True" />
81+
<field name="description">All school-age children in the household are enrolled and attending school regularly.</field>
82+
</record>
83+
84+
<record id="criteria_health_access" model="spp.graduation.criteria">
85+
<field name="name">Access to Health Services</field>
86+
<field name="code">HEALTH_ACCESS</field>
87+
<field name="pathway_id" ref="pathway_standard_graduation" />
88+
<field name="sequence">50</field>
89+
<field name="weight">1.0</field>
90+
<field name="assessment_method">verification</field>
91+
<field name="is_required" eval="False" />
92+
<field name="description">Household has access to and utilizes basic health services.</field>
93+
</record>
94+
95+
<!-- Sample Criteria for Early Graduation -->
96+
<record id="criteria_early_income" model="spp.graduation.criteria">
97+
<field name="name">Income Significantly Above Poverty Line</field>
98+
<field name="code">INCOME_HIGH</field>
99+
<field name="pathway_id" ref="pathway_early_graduation" />
100+
<field name="sequence">10</field>
101+
<field name="weight">2.0</field>
102+
<field name="assessment_method">verification</field>
103+
<field name="is_required" eval="True" />
104+
<field name="description">Household income is significantly above the poverty line (150%+) for at least 6 months.</field>
105+
</record>
106+
107+
<record id="criteria_early_business" model="spp.graduation.criteria">
108+
<field name="name">Thriving Business or Employment</field>
109+
<field name="code">BUSINESS_SUCCESS</field>
110+
<field name="pathway_id" ref="pathway_early_graduation" />
111+
<field name="sequence">20</field>
112+
<field name="weight">2.0</field>
113+
<field name="assessment_method">verification</field>
114+
<field name="is_required" eval="True" />
115+
<field name="description">Beneficiary has a thriving business or stable formal employment.</field>
116+
</record>
117+
</odoo>

spp_graduation/models/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from . import graduation_pathway
2+
from . import graduation_criteria
3+
from . import graduation_assessment

0 commit comments

Comments
 (0)