Manage the availability of workspaces within Frappe/ ERPNext (sidebar) based on user-roles

Overview

Workspace Permissions

Manage the availability of workspaces within Frappe/ ERPNext (sidebar) based on user-roles.

Features

Configure foreach workspace, which roles can access / can not access a workspace

  • As a whitelist (means, we manage roles, that get access) -> “Visible To Roles”
  • As a blacklist (means, we manage roles, that can NOT get access) -> “Hidden to Roles”
  • Special handling for the "Administrator"-User, as we don't want to restrict anything for that user.
    • That user won't get affected by the configuration, even if he has one of the black-listed roles assigned
  • Hide section-names, if there are no more workspaces available for the same

ATTENTION This app will only work with a modification to the Frappe-Core, frappe/frappe/boot.py. Right now there is no other option to get this functionality integrated.

We have included a script that will "Monkey Patch" the relevant file/method. There is no need to manually modify any file. Therefore it is also no big deal to update Frappe later on - after updating (what would remove the modification), you just need to make sure to execute the given "seeds" once again.

Dependency

  • Frappe/ ERPNext v13

Install on Self-Hosted

Remeber to replace MY_SITE with your site name.

cd frappe-bench
bench get-app https://github.com/pstuhlmueller/workspaceperms.git
bench --site MY_SITE install-app workspaceperms
# This will do the modification within frappe/frappe/boot.py
bench execute workspaceperms.seeds.execute
# You need to run `bench restart` once, as otherwise the modification to boot.py won't take effect
bench restart

Configuration

  1. Go (via awesomebar) into "Workspace Perms List"
  2. Add a new Workspace Perms document
  3. Select the relevant workspace
  4. Set the permissions ("Visible To Roles" and/or "Hidden to Roles") as relevant for your scenario

Hint: Instead of manually adding each Workspace Perm manually, you could also think about preparing a xlsx-file and go with the "Data Import"..

License

GPLv3

You might also like...
This project deals with the detection of skin lesions within the ISICs dataset using YOLOv3 Object Detection with Darknet.
This project deals with the detection of skin lesions within the ISICs dataset using YOLOv3 Object Detection with Darknet.

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. Skin Lesion detection using YOLO This project deal

This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.
This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

This application is the basic of automated online-class-joiner(for YıldızEdu) within the right time. Gets the ZOOM link by scheduled date and time.

QuakeLabeler is a Python package to create and manage your seismic training data, processes, and visualization in a single place — so you can focus on building the next big thing.
QuakeLabeler is a Python package to create and manage your seismic training data, processes, and visualization in a single place — so you can focus on building the next big thing.

QuakeLabeler Quake Labeler was born from the need for seismologists and developers who are not AI specialists to easily, quickly, and independently bu

Api's bulid in Flask perfom to manage Todo Task.

Citymall-task Api's bulid in Flask perfom to manage Todo Task. Installation Requrements : Python: 3.10.0 MongoDB create .env file with variables DB_UR

Predicting path with preference based on user demonstration using Maximum Entropy Deep Inverse Reinforcement Learning in a continuous environment
Predicting path with preference based on user demonstration using Maximum Entropy Deep Inverse Reinforcement Learning in a continuous environment

Preference-Planning-Deep-IRL Introduction Check my portfolio post Dependencies Gym stable-baselines3 PyTorch Usage Take Demonstration python3 record.

Pytorch based library to rank predicted bounding boxes using text/image user's prompts.
Pytorch based library to rank predicted bounding boxes using text/image user's prompts.

pytorch_clip_bbox: Implementation of the CLIP guided bbox ranking for Object Detection. Pytorch based library to rank predicted bounding boxes using t

All-in-one Docker container that allows a user to explore Nautobot in a lab environment.
All-in-one Docker container that allows a user to explore Nautobot in a lab environment.

Nautobot Lab This container is not for production use! Nautobot Lab is an all-in-one Docker container that allows a user to quickly get an instance of

Bayesian-Torch is a library of neural network layers and utilities extending the core of PyTorch to enable the user to perform stochastic variational inference in Bayesian deep neural networks

Bayesian-Torch is a library of neural network layers and utilities extending the core of PyTorch to enable the user to perform stochastic variational inference in Bayesian deep neural networks. Bayesian-Torch is designed to be flexible and seamless in extending a deterministic deep neural network architecture to corresponding Bayesian form by simply replacing the deterministic layers with Bayesian layers.

An Artificial Intelligence trying to drive a car by itself on a user created map

An Artificial Intelligence trying to drive a car by itself on a user created map

Comments
  • Does not allow more than one workspace per role?

    Does not allow more than one workspace per role?

    Hi there,

    if I want add another workspace and want to assign the roles, it says: Role Link (ROLE) does already exist.

    Do I use it wrong or is it a bug?

    opened by DrZoidberg09 1
  • Frappe v14 - cannot import 'get_desk_sidebar_items'

    Frappe v14 - cannot import 'get_desk_sidebar_items'

    I tried installing the app, but when I try to access the Bench i get an error message:

    cannot import name 'get_desk_sidebar_items' from 'frappe.desk.desktop' (/workspace/development/frappe-bench/apps/frappe/frappe/desk/desktop.py)

    Im on Frappe v14 and the Function get_desk_sidebar_items seems to have been renamed to get_workspace_sidebar_items It was still there in v13: https://github.com/frappe/frappe/blob/version-13/frappe/desk/desktop.py#L377 And then in v14: https://github.com/frappe/frappe/blob/version-14-beta/frappe/desk/desktop.py#L337

    I had to install the app and remove the 2 new lines from boot.py manually

    from workspaceperms.utils.overrides import load_desktop_data_v2
    load_desktop_data = load_desktop_data_v2
    
    opened by Tom-Finke 1
  • PGSQL: ERROR:  column

    PGSQL: ERROR: column "[" does not exist

    I guess this request won't work with PGSQL database:

    SELECT perm.name,
    role_link.parentfield AS field,
    CONCAT("[",GROUP_CONCAT('"', role_link.role_name, '"'),"]") AS val
    FROM "tabWorkspace Perms" perm
    INNER JOIN "tabRole Link" role_link ON perm.name = role_link.parent
    GROUP BY perm.name, role_link.parentfield
    

    Do you know how to convert it to pgsql ?

    Regards

    opened by jbtruffault 1
Owner
Patrick.St.
As a solution & software architect and former consultant my strengths are in the field of ERP and CRM. I am passionated in quantitative analysis/ algotrading.
Patrick.St.
Feature board for ERPNext

ERPNext Feature Board Feature board for ERPNext Development Prerequisites k3d kubectl helm bench Install K3d Cluster # export K3D_FIX_CGROUPV2=1 # use

Revant Nandgaonkar 16 Nov 9, 2022
The Agriculture Domain of ERPNext comes with features to record crops and land

Agriculture The Agriculture Domain of ERPNext comes with features to record crops and land, track plant, soil, water, weather analytics, and even trac

Frappe 21 Jan 2, 2023
This script scrapes and stores the availability of timeslots for Car Driving Test at all RTA Serivce NSW centres in the state.

This script scrapes and stores the availability of timeslots for Car Driving Test at all RTA Serivce NSW centres in the state. Dependencies Account wi

Balamurugan Soundararaj 21 Dec 14, 2022
[SIGIR22] Official PyTorch implementation for "CORE: Simple and Effective Session-based Recommendation within Consistent Representation Space".

CORE This is the official PyTorch implementation for the paper: Yupeng Hou, Binbin Hu, Zhiqiang Zhang, Wayne Xin Zhao. CORE: Simple and Effective Sess

RUCAIBox 26 Dec 19, 2022
NUANCED is a user-centric conversational recommendation dataset that contains 5.1k annotated dialogues and 26k high-quality user turns.

NUANCED: Natural Utterance Annotation for Nuanced Conversation with Estimated Distributions Overview NUANCED is a user-centric conversational recommen

Facebook Research 18 Dec 28, 2021
Fake-user-agent-traffic-geneator - Python CLI Tool to generate fake traffic against URLs with configurable user-agents

Fake traffic generator for Gartner Demo Generate fake traffic to URLs with custo

New Relic Experimental 3 Oct 31, 2022
This repository is related to an Arabic tutorial, within the tutorial we discuss the common data structure and algorithms and their worst and best case for each, then implement the code using Python.

Data Structure and Algorithms with Python This repository is related to the Arabic tutorial here, within the tutorial we discuss the common data struc

Mohamed Ayman 33 Dec 2, 2022
Implementation of 'lightweight' GAN, proposed in ICLR 2021, in Pytorch. High resolution image generations that can be trained within a day or two

512x512 flowers after 12 hours of training, 1 gpu 256x256 flowers after 12 hours of training, 1 gpu Pizza 'Lightweight' GAN Implementation of 'lightwe

Phil Wang 1.5k Jan 2, 2023
Rayvens makes it possible for data scientists to access hundreds of data services within Ray with little effort.

Rayvens augments Ray with events. With Rayvens, Ray applications can subscribe to event streams, process and produce events. Rayvens leverages Apache

CodeFlare 32 Dec 25, 2022
Implementation for our AAAI2021 paper (Entity Structure Within and Throughout: Modeling Mention Dependencies for Document-Level Relation Extraction).

SSAN Introduction This is the pytorch implementation of the SSAN model (see our AAAI2021 paper: Entity Structure Within and Throughout: Modeling Menti

benfeng 69 Nov 15, 2022