[NEW] Majority Judgement addons initialisation

This commit is contained in:
Stéphan Sainléger
2022-03-05 00:47:39 +01:00
parent ab18af348f
commit 6a9535ee5c
13 changed files with 268 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -0,0 +1,71 @@
# © 2022 Elabore
# @author Stéphan Sainléger <stephan.sainleger@elabore.coop>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Majority Judgement",
"summary": "Majority Judgement addons to support democracy in your organisation",
"version": "12.0.0.0.1",
"category": "Generic Modules/Others",
"license": "AGPL-3",
"author": "Elabore",
"website": "https://elabore.coop/",
"installable": True,
"auto_install": False,
"application": True,
"description": """
==================
Majority Judgement
==================
This module provides majority judgement fonctionnalities.
Installation
============
Just install majority_judgement, all dependencies will be installed by default.
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/elabore-coop/decision-support-tools/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Images
------
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_.
Contributors
------------
* Stéphan Sainléger <https://github.com/stephansainleger>
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by ELABORE.
""",
"depends": ["base"],
"external_dependencies": {
"python": [],
},
"data": [
"views/vote.xml",
"views/candidate.xml",
"views/menus.xml",
"security/ir.model.access.csv",
],
"demo": [],
"js": [],
"css": [],
"qweb": [],
}

View File

@@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
from . import vote
from . import grade
from . import voter
from . import candidate
from . import ballot_line

View File

@@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class MajorityJudgementBallotLine(models.Model):
_name = "ballot.line"
_description = "Majority Judgement ballot line"
candidate_id = fields.Many2one("candidate", string=_("Candidate"), required=True)
grade_id = fields.Many2one("grade", string=_("Grade"), required=True)

View File

@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class MajorityJudgementCandidate(models.Model):
_name = "candidate"
_description = "Majority Judgement candidate"
name = fields.Char(string=_("Name"), required=True)
description = fields.Text(string=_("Description"))
vote_id = fields.Many2one("vote", string=_("Vote"))
final_grade = fields.Many2one("grade", string=_("Final Grage"))
ballot_line_ids = fields.One2many(
"ballot.line", "candidate_id", string=_("Ballot lines")
)

View File

@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class MajorityJudgementGradeModel(models.Model):
_name = "grade.model"
_description = "Majority Judgement grade model"
name = fields.Char(string=_("Name"), required=True)
color = fields.Integer("Color Index", default=0)
class MajorityJudgementGrade(models.Model):
_name = "grade"
_description = "Majority Judgement grade"
name = fields.Char(string=_("Name"), required=True)
color = fields.Integer("Color Index", default=0)
vote_id = fields.Many2one("vote", string=_("Vote"))

View File

@@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class MajorityJudgementVote(models.Model):
_name = "vote"
_description = "Majority Judgement vote"
name = fields.Char(string=_("Name"), required=True)
description = fields.Text(string=_("Description"))
question = fields.Char(string=_("Question"), required=True)
start_time = fields.Datetime(string=_("Start time"))
end_time = fields.Datetime(string=_("End time"))
grade_ids = fields.One2many("grade", "vote_id", string=_("Grades"))
candidate_ids = fields.One2many("candidate", "vote_id", string=_("Candidate"))
voter_ids = fields.One2many("voter", "vote_id", string=_("Voters"))

View File

@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api, _
class MajorityJudgementVoter(models.Model):
_name = "voter"
_description = "Majority Judgement voter"
partner_id = fields.Many2one(
"res.partner", string=_("Associated contact"), required=True
)
vote_id = fields.Many2one("vote", string=_("Vote"))
has_voted = fields.Boolean(string="Has voted")
vote_timestamp = fields.Datetime(string=_("Has voted on"))

View File

@@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_vote_manager,access_vote_manager,model_vote,base.group_user,1,1,1,1
access_voter_manager,access_voter_manager,model_voter,base.group_user,1,1,1,1
access_grade_manager,access_grade_manager,model_grade,base.group_user,1,1,1,1
access_candidate_manager,access_candidate_manager,model_candidate,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_vote_manager access_vote_manager model_vote base.group_user 1 1 1 1
3 access_voter_manager access_voter_manager model_voter base.group_user 1 1 1 1
4 access_grade_manager access_grade_manager model_grade base.group_user 1 1 1 1
5 access_candidate_manager access_candidate_manager model_candidate base.group_user 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="candidate_form_view" model="ir.ui.view">
<field name="name">candidate.form.view</field>
<field name="model">candidate</field>
<field name="priority">0</field>
<field name="arch" type="xml">
<form string="Candidate">
<sheet string="Candidate">
<group name="general_info">
<field name="name" />
<field name="description" />
</group>
</sheet>
</form>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.actions.act_window" id="action_view_vote_list">
<field name="name">Votes</field>
<field name="res_model">vote</field>
<field name="view_type">form</field>
<field name="view_mode">kanban,tree,form</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new vote
</p>
</field>
</record>
<menuitem id="majority_judgement_menu_root" name="Majority Judgements" sequence="60" web_icon="majority_judgement,static/description/icon.png" />
<menuitem id="majority_judgement_men" name="Majority Judgements" parent="majority_judgement_menu_root" sequence="1" action="action_view_vote_list" />
</odoo>

View File

@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="vote_tree_view" model="ir.ui.view">
<field name="name">vote.tree.view</field>
<field name="model">vote</field>
<field name="priority">0</field>
<field name="arch" type="xml">
<tree string="Majority Judgement Vote">
<field name="name" />
<field name="question" />
<field name="start_time" />
<field name="end_time" />
</tree>
</field>
</record>
<record id="vote_form_view" model="ir.ui.view">
<field name="name">vote.form.view</field>
<field name="model">vote</field>
<field name="priority">0</field>
<field name="arch" type="xml">
<form string="Majority Judgement Vote">
<sheet string="Majority Judgement Vote">
<group name="general_info">
<field name="name" />
<field name="description" />
<field name="question" />
<field name="start_time" />
<field name="end_time" />
</group>
<notebook>
<page name="candidates" string="Candidates">
<field name="candidate_ids" create="true">
<tree default_order="name">
<field name="name" />
<field name="description" />
</tree>
</field>
</page>
<page name="grades" string="Grades">
<field name="grade_ids" create="true">
<tree default_order="name">
<field name="name" />
<field name="color" />
</tree>
</field>
</page>
<page name="voters" string="Voters">
<field name="voter_ids" create="true">
<tree default_order="name">
<field name="partner_id" />
<field name="has_voted" />
<field name="vote_timestamp" />
</tree>
</field>
</page>
<page name="results" string="Results"></page>
</notebook>
</sheet>
</form>
</field>
</record>
</odoo>