2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-09-13 06:01:35 +00:00

chore(backend): improve coverage (#10226)

* remove unneeded helper

* remove unnecessary coverage

* ignore catch-all pervisions in app setup

* remove unused function

* this was replaced by get_model_permission_string
This commit is contained in:
Matthias Mair
2025-09-05 02:00:50 +02:00
committed by GitHub
parent a3f4cc9b88
commit ed04a37838
4 changed files with 7 additions and 53 deletions

View File

@@ -33,16 +33,16 @@ class UsersConfig(AppConfig):
from users.tasks import rebuild_all_permissions
rebuild_all_permissions()
except (OperationalError, ProgrammingError):
except (OperationalError, ProgrammingError): # pragma: no cover
pass
except Exception as e:
except Exception as e: # pragma: no cover
logger.exception('Failed to rebuild permissions: %s', e)
try:
self.update_owners()
except (OperationalError, ProgrammingError):
except (OperationalError, ProgrammingError): # pragma: no cover
pass
except Exception as e:
except Exception as e: # pragma: no cover
logger.exception('Failed to update owners: %s', e)
def update_owners(self):

View File

@@ -75,17 +75,6 @@ def default_token_expiry():
return InvenTree.helpers.current_date() + datetime.timedelta(days=365)
def default_create_token(token_model, user, serializer):
"""Generate a default value for the token."""
token = token_model.objects.filter(user=user, name='', revoked=False)
if token.exists():
return token.first()
else:
return token_model.objects.create(user=user, name='')
class ApiToken(AuthToken, InvenTree.models.MetadataMixin):
"""Extends the default token model provided by djangorestframework.authtoken.

View File

@@ -55,19 +55,6 @@ def split_permission(app: str, perm: str) -> tuple[str, str]:
return perm, model
def model_permission_string(model: models.Model, permission: str) -> str:
"""Generate a permission string for a given model and permission type.
Arguments:
model: The model class to check (e.g. 'part')
permission: The permission to check (e.g. 'view' / 'delete')
Returns:
str: The permission string (e.g. 'part.view_part')
"""
return f'{model._meta.app_label}.{permission}_{model._meta.model_name}'
def check_user_role(
user: User, role: str, permission: str, allow_inactive: bool = False
) -> bool:

View File

@@ -117,23 +117,6 @@ def generate_permission_dict(permissions) -> dict:
return perms
def generate_roles_dict(roles) -> dict:
"""Generate a dictionary of roles for a given set of roles."""
# Build out an (initially empty) dictionary of roles
role_dict = {name: [] for name, _ in RULESET_CHOICES}
for role in roles:
permissions = []
for permission in ['view', 'add', 'change', 'delete']:
if getattr(role, f'can_{permission}', False):
permissions.append(permission)
role_dict[role.name] = permissions
return role_dict
class GetAuthTokenSerializer(serializers.Serializer):
"""Serializer for the GetAuthToken API endpoint."""
@@ -277,7 +260,7 @@ class GroupSerializer(InvenTreeModelSerializer):
if not user_detail:
self.fields.pop('users', None)
except AppRegistryNotReady:
except AppRegistryNotReady: # pragma: no cover
pass
permissions = serializers.SerializerMethodField(allow_null=True, read_only=True)
@@ -421,13 +404,8 @@ class UserCreateSerializer(ExtendedUserSerializer):
user = self.context['request'].user
# Check that the user trying to create a new user is a superuser
if not user.is_staff:
raise serializers.ValidationError(
_('Only staff users can create new users')
)
if not check_user_role(user, RuleSetEnum.ADMIN, 'add'):
raise serializers.ValidationError(
if not user.is_staff or not check_user_role(user, RuleSetEnum.ADMIN, 'add'):
raise serializers.ValidationError( # pragma: no cover # Handled by permissions already
_('You do not have permission to create users')
)