2
0
mirror of https://github.com/inventree/inventree-app.git synced 2025-06-16 20:25:26 +00:00

Make notes widget "generic" (#327)

* Make notes widget "generic"

- No longer tied to the "part" model
- Will allow us to use it elsewhere

* Update release notes

* Add helper methods for checking model permissions

* Refactoring of permissions checks

* Add notes to the "purchase order" widget

* Fix typos

* remove bom tab from part view

* linting fixes
This commit is contained in:
Oliver
2023-04-19 21:57:28 +10:00
committed by GitHub
parent 28ed1ed545
commit b9ffabd561
20 changed files with 192 additions and 168 deletions

View File

@ -18,6 +18,9 @@ class InvenTreeCompany extends InvenTreeModel {
@override
String get URL => "company/";
@override
List<String> get rolesRequired => ["purchase_order", "sales_order", "return_order"];
@override
Map<String, dynamic> formFields() {
return {
@ -118,6 +121,9 @@ class InvenTreeSupplierPart extends InvenTreeModel {
@override
String get URL => "company/part/";
@override
List<String> get rolesRequired => ["part", "purchase_order"];
@override
Map<String, dynamic> formFields() {
return {

View File

@ -10,6 +10,7 @@ import "package:inventree/api.dart";
import "package:inventree/api_form.dart";
import "package:inventree/fa_icon_mapping.dart";
import "package:inventree/l10.dart";
import "package:inventree/helpers.dart";
import "package:inventree/inventree/sentry.dart";
import "package:inventree/widget/dialogs.dart";
@ -78,7 +79,63 @@ class InvenTreeModel {
} else {
return "";
}
}
/* Return a list of roles which may be required for this model
* If multiple roles are required, *any* role which passes the check is sufficient
*/
List<String> get rolesRequired {
// Default implementation should not be called
debug("rolesRequired() not implemented for model ${URL} - returning empty list");
return [];
}
// Test if the user can "edit" this model
bool get canEdit {
for (String role in rolesRequired) {
if (InvenTreeAPI().checkPermission(role, "change")) {
return true;
}
}
// Fallback
return false;
}
// Test if the user can "create" this model
bool get canCreate {
for (String role in rolesRequired) {
if (InvenTreeAPI().checkPermission(role, "add")) {
return true;
}
}
// Fallback
return false;
}
// Test if the user can "delete" this model
bool get canDelete {
for (String role in rolesRequired) {
if (InvenTreeAPI().checkPermission(role, "delete")) {
return true;
}
}
// Fallback
return false;
}
// Test if the user can "view" this model
bool get canView {
for (String role in rolesRequired) {
if (InvenTreeAPI().checkPermission(role, "view")) {
return true;
}
}
// Fallback
return false;
}
// Fields for editing / creating this model

View File

@ -23,6 +23,9 @@ class InvenTreePartCategory extends InvenTreeModel {
@override
String get URL => "part/category/";
@override
List<String> get rolesRequired => ["part_category"];
@override
Map<String, dynamic> formFields() {
@ -182,6 +185,9 @@ class InvenTreePart extends InvenTreeModel {
@override
String get URL => "part/";
@override
List<String> get rolesRequired => ["part"];
@override
Map<String, dynamic> formFields() {
return {

View File

@ -18,6 +18,9 @@ class InvenTreePurchaseOrder extends InvenTreeModel {
@override
String get URL => "order/po/";
@override
List<String> get rolesRequired => ["purchase_order"];
String get receive_url => "${url}receive/";
@override

View File

@ -20,6 +20,9 @@ class InvenTreeStockItemTestResult extends InvenTreeModel {
@override
String get URL => "stock/test/";
@override
List<String> get rolesRequired => ["stock"];
@override
Map<String, dynamic> formFields() {
return {
@ -134,6 +137,9 @@ class InvenTreeStockItem extends InvenTreeModel {
@override
String get URL => "stock/";
@override
List<String> get rolesRequired => ["stock"];
// URLs for performing stock actions
static String transferStockUrl() => "stock/transfer/";
@ -611,6 +617,9 @@ class InvenTreeStockLocation extends InvenTreeModel {
@override
String get URL => "stock/location/";
@override
List<String> get rolesRequired => ["stock_location"];
String get pathstring => (jsondata["pathstring"] ?? "") as String;
@override