From 17c7d439f803bc5ee35bcabd17524694dcabb780 Mon Sep 17 00:00:00 2001 From: RamakrishnaVellala Date: Mon, 3 Apr 2023 16:03:20 +0530 Subject: [PATCH 1/4] [G2P-292]Ability to assign number of programs to a program manager --- g2p_program_user_mapping/.gitignore | 129 ++++++ g2p_program_user_mapping/README.rst | 54 +++ g2p_program_user_mapping/__init__.py | 1 + g2p_program_user_mapping/__manifest__.py | 26 ++ g2p_program_user_mapping/models/__init__.py | 1 + .../models/program_user.py | 29 ++ .../readme/DESCRIPTION.rst | 1 + .../readme/assign_programs_program_manager.md | 24 + .../security/ir.model.access.csv | 4 + .../security/record_rules.xml | 55 +++ .../static/description/icon.png | Bin 0 -> 15175 bytes .../static/description/index.html | 413 ++++++++++++++++++ .../views/program_user_mapping.xml | 32 ++ g2p_program_user_mapping/views/res_users.xml | 24 + 14 files changed, 793 insertions(+) create mode 100644 g2p_program_user_mapping/.gitignore create mode 100644 g2p_program_user_mapping/README.rst create mode 100644 g2p_program_user_mapping/__init__.py create mode 100644 g2p_program_user_mapping/__manifest__.py create mode 100644 g2p_program_user_mapping/models/__init__.py create mode 100644 g2p_program_user_mapping/models/program_user.py create mode 100644 g2p_program_user_mapping/readme/DESCRIPTION.rst create mode 100644 g2p_program_user_mapping/readme/assign_programs_program_manager.md create mode 100644 g2p_program_user_mapping/security/ir.model.access.csv create mode 100644 g2p_program_user_mapping/security/record_rules.xml create mode 100644 g2p_program_user_mapping/static/description/icon.png create mode 100644 g2p_program_user_mapping/static/description/index.html create mode 100644 g2p_program_user_mapping/views/program_user_mapping.xml create mode 100644 g2p_program_user_mapping/views/res_users.xml diff --git a/g2p_program_user_mapping/.gitignore b/g2p_program_user_mapping/.gitignore new file mode 100644 index 0000000..b6e4761 --- /dev/null +++ b/g2p_program_user_mapping/.gitignore @@ -0,0 +1,129 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ diff --git a/g2p_program_user_mapping/README.rst b/g2p_program_user_mapping/README.rst new file mode 100644 index 0000000..76f10fa --- /dev/null +++ b/g2p_program_user_mapping/README.rst @@ -0,0 +1,54 @@ +========================== +G2P Programs: User Mapping +========================== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/github-OpenG2P%2Fopeng2p--program-lightgray.png?logo=github + :target: https://github.com/OpenG2P/openg2p-program/tree/15.0-develop/g2p_program_user_mapping + :alt: OpenG2P/openg2p-program + +|badge1| |badge2| + +G2P Program User Mapping + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* OpenG2P + +Maintainers +~~~~~~~~~~~ + +This module is part of the `OpenG2P/openg2p-program `_ project on GitHub. + +You are welcome to contribute. diff --git a/g2p_program_user_mapping/__init__.py b/g2p_program_user_mapping/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/g2p_program_user_mapping/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/g2p_program_user_mapping/__manifest__.py b/g2p_program_user_mapping/__manifest__.py new file mode 100644 index 0000000..472c562 --- /dev/null +++ b/g2p_program_user_mapping/__manifest__.py @@ -0,0 +1,26 @@ +{ + "name": "G2P Programs: User Mapping", + "category": "G2P", + "version": "15.0.1.1.0", + "sequence": 1, + "author": "OpenG2P", + "website": "https://github.com/openg2p/openg2p-program", + "license": "Other OSI approved licence", + "depends": ["g2p_programs"], + "development_status": "Alpha", + "data": [ + "security/record_rules.xml", + "security/ir.model.access.csv", + "views/program_user_mapping.xml", + "views/res_users.xml", + ], + "assets": { + "web.assets_backend": [], + "web.assets_qweb": [], + }, + "demo": [], + "images": [], + "application": True, + "installable": True, + "auto_install": False, +} diff --git a/g2p_program_user_mapping/models/__init__.py b/g2p_program_user_mapping/models/__init__.py new file mode 100644 index 0000000..89e5fa2 --- /dev/null +++ b/g2p_program_user_mapping/models/__init__.py @@ -0,0 +1 @@ +from . import program_user diff --git a/g2p_program_user_mapping/models/program_user.py b/g2p_program_user_mapping/models/program_user.py new file mode 100644 index 0000000..263d64f --- /dev/null +++ b/g2p_program_user_mapping/models/program_user.py @@ -0,0 +1,29 @@ +from odoo import fields, models + + +class ProgramUsers(models.Model): + _name = "g2p.program.user.mapping" + _description = "Program user mapping" + + program_id = fields.Many2one("g2p.program") + user_id = fields.Many2one("res.users") + + _sql_constraints = [ + ( + "program_user_unique", + "unique (program_id, user_id)", + "User must be unique per program.", + ), + ] + + +class ResUsers(models.Model): + _inherit = "res.users" + + assigned_program_mapping = fields.One2many("g2p.program.user.mapping", "user_id") + + +class G2PProgram(models.Model): + _inherit = "g2p.program" + + assigned_user_mapping = fields.One2many("g2p.program.user.mapping", "program_id") diff --git a/g2p_program_user_mapping/readme/DESCRIPTION.rst b/g2p_program_user_mapping/readme/DESCRIPTION.rst new file mode 100644 index 0000000..4f66aec --- /dev/null +++ b/g2p_program_user_mapping/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +G2P Program User Mapping diff --git a/g2p_program_user_mapping/readme/assign_programs_program_manager.md b/g2p_program_user_mapping/readme/assign_programs_program_manager.md new file mode 100644 index 0000000..8655e60 --- /dev/null +++ b/g2p_program_user_mapping/readme/assign_programs_program_manager.md @@ -0,0 +1,24 @@ +# Ability to assign number of programs to a program manager + +## Introduction- + +Admin can able to assign number of programs to a program manager.so that program manager can see those +programs which he was assigned. + +## Getting Started- + +- To get start, have to install g2p_program_user_mapping module +- Go to Programs--> select program --> open--> Go to tabs--> select program users --> Add a line --> select + user(program manager) --> click on save and close +- Now particular program assigned to particular user(program manager) + +## Feature: + +- This feature enables to restrict user to access the programs which assigned tho respective user only +- Admin can view all programs and assign programs to users +- program manager can view programs which alotted to him only + +## Conclusion + +Admin can able to assign number of programs to a program manager.so that program manager can see those +programs which he was assigned. diff --git a/g2p_program_user_mapping/security/ir.model.access.csv b/g2p_program_user_mapping/security/ir.model.access.csv new file mode 100644 index 0000000..c337f48 --- /dev/null +++ b/g2p_program_user_mapping/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +g2p_program_user_mapping_admin,Program User Mapping Admin Access,g2p_program_user_mapping.model_g2p_program_user_mapping,g2p_registry_base.group_g2p_admin,1,1,1,1 +g2p_program_user_mapping_program_manager,Program User Mapping program manager Access,g2p_program_user_mapping.model_g2p_program_user_mapping,g2p_programs.g2p_program_manager,1,0,1,0 +g2p_program_user_mapping_base_user,Program User Mapping base user Access,g2p_program_user_mapping.model_g2p_program_user_mapping,base.group_user,1,0,0,0 diff --git a/g2p_program_user_mapping/security/record_rules.xml b/g2p_program_user_mapping/security/record_rules.xml new file mode 100644 index 0000000..fc80147 --- /dev/null +++ b/g2p_program_user_mapping/security/record_rules.xml @@ -0,0 +1,55 @@ + + + + Program User Program Manager + + [('assigned_user_mapping.user_id.id', '=', user.id)] + + + + + + + + Program User Admin + + [] + + + + + + + + + + Program User Mapping Program Manager + + [('program_id.assigned_user_mapping.user_id.id', '=', user.id)] + + + + + + + + Program User Mapping Admin + + [] + + + + + + + + Program User Mapping Base User + + [] + + + + + + + diff --git a/g2p_program_user_mapping/static/description/icon.png b/g2p_program_user_mapping/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4adeb279d2a843098c55df0ef4f866bac6f4e617 GIT binary patch literal 15175 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 MxV%`6h(W;r0m4J_WB>pF literal 0 HcmV?d00001 diff --git a/g2p_program_user_mapping/static/description/index.html b/g2p_program_user_mapping/static/description/index.html new file mode 100644 index 0000000..f85a845 --- /dev/null +++ b/g2p_program_user_mapping/static/description/index.html @@ -0,0 +1,413 @@ + + + + + + +G2P Programs: User Mapping + + + +
+

G2P Programs: User Mapping

+ + +

Alpha OpenG2P/openg2p-program

+

G2P Program User Mapping

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • OpenG2P
  • +
+
+
+

Maintainers

+

This module is part of the OpenG2P/openg2p-program project on GitHub.

+

You are welcome to contribute.

+
+
+
+ + diff --git a/g2p_program_user_mapping/views/program_user_mapping.xml b/g2p_program_user_mapping/views/program_user_mapping.xml new file mode 100644 index 0000000..4a23a9a --- /dev/null +++ b/g2p_program_user_mapping/views/program_user_mapping.xml @@ -0,0 +1,32 @@ + + + + program.user.mapping.form + g2p.program + + + + + + + + + + +
+ + + + +
+
+
+
+
+
+
+
diff --git a/g2p_program_user_mapping/views/res_users.xml b/g2p_program_user_mapping/views/res_users.xml new file mode 100644 index 0000000..b05d03e --- /dev/null +++ b/g2p_program_user_mapping/views/res_users.xml @@ -0,0 +1,24 @@ + + + + res.users.program.mapping.form + res.users + + + + + + + + + + + + + + + + + + + From dbf2cfeed9375828cb7bdfd38fd3f723d1a9b817 Mon Sep 17 00:00:00 2001 From: RamakrishnaVellala Date: Tue, 4 Apr 2023 12:12:57 +0530 Subject: [PATCH 2/4] Restrict user to assign program to another user --- g2p_program_user_mapping/views/program_user_mapping.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/g2p_program_user_mapping/views/program_user_mapping.xml b/g2p_program_user_mapping/views/program_user_mapping.xml index 4a23a9a..2a8dc63 100644 --- a/g2p_program_user_mapping/views/program_user_mapping.xml +++ b/g2p_program_user_mapping/views/program_user_mapping.xml @@ -6,7 +6,7 @@ - + Date: Wed, 12 Apr 2023 14:32:18 +0530 Subject: [PATCH 3/4] Added AssignPrograms --- g2p_program_user_mapping/static/AssignPrograms | 1 + 1 file changed, 1 insertion(+) create mode 100644 g2p_program_user_mapping/static/AssignPrograms diff --git a/g2p_program_user_mapping/static/AssignPrograms b/g2p_program_user_mapping/static/AssignPrograms new file mode 100644 index 0000000..9e1b99d --- /dev/null +++ b/g2p_program_user_mapping/static/AssignPrograms @@ -0,0 +1 @@ +UzV2zq1wL0osyPDNT0nNUTV2VTV2LsrPL4GwciucU3NyVI0MMlNUjV1UjYwMgFjVyA2HrCFY1qAgsSg1rwSLBiADYTaQg2Y1AA== \ No newline at end of file From b0e0bd4e4d01399bdb9a88001aeb78976ae2d2bf Mon Sep 17 00:00:00 2001 From: Ramakrishna Vellala <78678277+RamakrishnaVellala@users.noreply.github.com> Date: Wed, 12 Apr 2023 15:10:12 +0530 Subject: [PATCH 4/4] Delete AssignPrograms --- g2p_program_user_mapping/static/AssignPrograms | 1 - 1 file changed, 1 deletion(-) delete mode 100644 g2p_program_user_mapping/static/AssignPrograms diff --git a/g2p_program_user_mapping/static/AssignPrograms b/g2p_program_user_mapping/static/AssignPrograms deleted file mode 100644 index 9e1b99d..0000000 --- a/g2p_program_user_mapping/static/AssignPrograms +++ /dev/null @@ -1 +0,0 @@ -UzV2zq1wL0osyPDNT0nNUTV2VTV2LsrPL4GwciucU3NyVI0MMlNUjV1UjYwMgFjVyA2HrCFY1qAgsSg1rwSLBiADYTaQg2Y1AA== \ No newline at end of file