2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-01-09 20:57:57 +00:00

Bump tooling (#11096)

* Matmair/issue10740 (#497)

* reduce noise in docker

* refactor path infos

* add more info during local frontend build

* add frontend info during release build

* Revert "Matmair/issue10740 (#497)" (#498)

This reverts commit 415c52813b.

* bum pre-commit and update to new formatting rule

* fix style
This commit is contained in:
Matthias Mair
2026-01-08 00:01:23 +01:00
committed by GitHub
parent 5448e1138f
commit 2457197446
13 changed files with 45 additions and 26 deletions

View File

@@ -18,7 +18,7 @@ repos:
exclude: mkdocs.yml exclude: mkdocs.yml
- id: mixed-line-ending - id: mixed-line-ending
- repo: https://github.com/astral-sh/ruff-pre-commit - repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.8 rev: v0.14.10
hooks: hooks:
- id: ruff-format - id: ruff-format
args: [--preview] args: [--preview]
@@ -29,7 +29,7 @@ repos:
--preview --preview
] ]
- repo: https://github.com/astral-sh/uv-pre-commit - repo: https://github.com/astral-sh/uv-pre-commit
rev: 0.9.16 rev: 0.9.22
hooks: hooks:
- id: pip-compile - id: pip-compile
name: pip-compile requirements-dev.in name: pip-compile requirements-dev.in
@@ -71,7 +71,7 @@ repos:
src/frontend/vite.config.ts | src/frontend/vite.config.ts |
)$ )$
- repo: https://github.com/biomejs/pre-commit - repo: https://github.com/biomejs/pre-commit
rev: v2.3.8 rev: v2.3.10
hooks: hooks:
- id: biome-check - id: biome-check
additional_dependencies: ["@biomejs/biome@1.9.4"] additional_dependencies: ["@biomejs/biome@1.9.4"]

View File

@@ -122,7 +122,8 @@ def get_email_for_user(user) -> Optional[str]:
# Otherwise, find first matching email # Otherwise, find first matching email
# Priority is given to primary or verified email addresses # Priority is given to primary or verified email addresses
if ( if (
email := EmailAddress.objects.filter(user=user) email := EmailAddress.objects
.filter(user=user)
.order_by('-primary', '-verified') .order_by('-primary', '-verified')
.first() .first()
): ):

View File

@@ -71,7 +71,8 @@ class Command(spectacular.Command):
for p_name, p_spec in spec['paths'].items(): for p_name, p_spec in spec['paths'].items():
# strip path name # strip path name
p_name = ( p_name = (
p_name.removeprefix(dja_path_prefix) p_name
.removeprefix(dja_path_prefix)
.removeprefix('/_allauth/browser/v1/') .removeprefix('/_allauth/browser/v1/')
.removeprefix('/_allauth/app/v1/') .removeprefix('/_allauth/app/v1/')
) )

View File

@@ -610,7 +610,8 @@ class InvenTreeParameterMixin(InvenTreePermissionCheckMixin, models.Model):
def get_parameters(self) -> QuerySet: def get_parameters(self) -> QuerySet:
"""Return all Parameter instances for this model.""" """Return all Parameter instances for this model."""
return ( return (
self.parameters_list.all() self.parameters_list
.all()
.prefetch_related('template', 'model_type') .prefetch_related('template', 'model_type')
.order_by('template__name') .order_by('template__name')
) )
@@ -752,7 +753,8 @@ class InvenTreeTree(ContentTypeMixin, MPTTModel):
for child in self.get_children(): for child in self.get_children():
# Store a flattened list of node IDs for each of the lower trees # Store a flattened list of node IDs for each of the lower trees
nodes = list( nodes = list(
child.get_descendants(include_self=True) child
.get_descendants(include_self=True)
.values_list('pk', flat=True) .values_list('pk', flat=True)
.distinct() .distinct()
) )

View File

@@ -177,9 +177,9 @@ def trigger_notification(obj: Model, category: str = '', obj_ref: str = 'pk', **
# Filter out any users who are inactive, or do not have the required model permissions # Filter out any users who are inactive, or do not have the required model permissions
valid_users = list( valid_users = list(
filter( filter(
lambda u: u lambda u: (
and u.is_active u and u.is_active and (not obj or check_user_permission(u, obj, 'view'))
and (not obj or check_user_permission(u, obj, 'view')), ),
list(target_users), list(target_users),
) )
) )

View File

@@ -432,7 +432,8 @@ class Order(
Makes use of the overdue_filter() method to avoid code duplication Makes use of the overdue_filter() method to avoid code duplication
""" """
return ( return (
self.__class__.objects.filter(pk=self.pk) self.__class__.objects
.filter(pk=self.pk)
.filter(self.__class__.overdue_filter()) .filter(self.__class__.overdue_filter())
.exists() .exists()
) )

View File

@@ -297,7 +297,8 @@ def annotate_variant_quantity(subquery: Q, reference: str = 'quantity') -> Query
""" """
return Coalesce( return Coalesce(
Subquery( Subquery(
subquery.annotate( subquery
.annotate(
total=Func(F(reference), function='SUM', output_field=FloatField()) total=Func(F(reference), function='SUM', output_field=FloatField())
) )
.values('total') .values('total')
@@ -324,7 +325,8 @@ def annotate_category_parts() -> QuerySet:
return Coalesce( return Coalesce(
Subquery( Subquery(
subquery.annotate( subquery
.annotate(
total=Func(F('pk'), function='COUNT', output_field=IntegerField()) total=Func(F('pk'), function='COUNT', output_field=IntegerField())
) )
.values('total') .values('total')
@@ -369,7 +371,8 @@ def annotate_sub_categories() -> QuerySet:
return Coalesce( return Coalesce(
Subquery( Subquery(
subquery.annotate( subquery
.annotate(
total=Func(F('pk'), function='COUNT', output_field=IntegerField()) total=Func(F('pk'), function='COUNT', output_field=IntegerField())
) )
.values('total') .values('total')

View File

@@ -225,7 +225,8 @@ class PartCategory(
def prefetch_parts_parameters(self, cascade=True): def prefetch_parts_parameters(self, cascade=True):
"""Prefectch parts parameters.""" """Prefectch parts parameters."""
return ( return (
self.get_parts(cascade=cascade) self
.get_parts(cascade=cascade)
.prefetch_related('parameters_list', 'parameters_list__template') .prefetch_related('parameters_list', 'parameters_list__template')
.all() .all()
) )
@@ -615,7 +616,8 @@ class Part(
if previous.image is not None and self.image != previous.image: if previous.image is not None and self.image != previous.image:
# Are there any (other) parts which reference the image? # Are there any (other) parts which reference the image?
n_refs = ( n_refs = (
Part.objects.filter(image=previous.image) Part.objects
.filter(image=previous.image)
.exclude(pk=self.pk) .exclude(pk=self.pk)
.count() .count()
) )
@@ -1040,7 +1042,8 @@ class Part(
self.revision_of self.revision_of
and self.revision and self.revision
and ( and (
Part.objects.exclude(pk=self.pk) Part.objects
.exclude(pk=self.pk)
.filter(revision_of=self.revision_of, revision=self.revision) .filter(revision_of=self.revision_of, revision=self.revision)
.exists() .exists()
) )
@@ -1049,7 +1052,8 @@ class Part(
# Ensure unique across (Name, revision, IPN) (as specified) # Ensure unique across (Name, revision, IPN) (as specified)
if (self.revision or self.IPN) and ( if (self.revision or self.IPN) and (
Part.objects.exclude(pk=self.pk) Part.objects
.exclude(pk=self.pk)
.filter(name=self.name, revision=self.revision, IPN=self.IPN) .filter(name=self.name, revision=self.revision, IPN=self.IPN)
.exists() .exists()
): ):

View File

@@ -93,7 +93,8 @@ class BarcodeView(CreateAPIView):
if num_scans > max_scans: if num_scans > max_scans:
n = num_scans - max_scans n = num_scans - max_scans
old_scan_ids = list( old_scan_ids = list(
BarcodeScanResult.objects.all() BarcodeScanResult.objects
.all()
.order_by('timestamp') .order_by('timestamp')
.values_list('pk', flat=True)[:n] .values_list('pk', flat=True)[:n]
) )

View File

@@ -191,7 +191,8 @@ class SupplierBarcodeMixin(BarcodeMixin):
q1 = Q(manufacturer=supplier) q1 = Q(manufacturer=supplier)
# Case 2: Supplied by this supplier # Case 2: Supplied by this supplier
m = ( m = (
SupplierPart.objects.filter(supplier=supplier) SupplierPart.objects
.filter(supplier=supplier)
.values_list('manufacturer_part', flat=True) .values_list('manufacturer_part', flat=True)
.distinct() .distinct()
) )

View File

@@ -143,9 +143,11 @@ class InvenTreeLabelPlugin(LabelPrintingMixin, InvenTreePlugin):
last_used_printers = get_last_used_printers(user)[::-1] last_used_printers = get_last_used_printers(user)[::-1]
machines = sorted( machines = sorted(
machines, machines,
key=lambda m: last_used_printers.index(str(m.pk)) key=lambda m: (
if str(m.pk) in last_used_printers last_used_printers.index(str(m.pk))
else -1, if str(m.pk) in last_used_printers
else -1
),
reverse=True, reverse=True,
) )

View File

@@ -350,7 +350,8 @@ def parameter(
raise TypeError("parameter tag requires a Model with 'parameters' attribute") raise TypeError("parameter tag requires a Model with 'parameters' attribute")
return ( return (
instance.parameters.prefetch_related('template') instance.parameters
.prefetch_related('template')
.filter(template__name=parameter_name) .filter(template__name=parameter_name)
.first() .first()
) )

View File

@@ -28,7 +28,8 @@ def annotate_location_items(filter: Optional[Q] = None):
return Coalesce( return Coalesce(
Subquery( Subquery(
subquery.annotate( subquery
.annotate(
total=Func(F('pk'), function='COUNT', output_field=IntegerField()) total=Func(F('pk'), function='COUNT', output_field=IntegerField())
) )
.values('total') .values('total')
@@ -50,7 +51,8 @@ def annotate_sub_locations():
return Coalesce( return Coalesce(
Subquery( Subquery(
subquery.annotate( subquery
.annotate(
count=Func(F('pk'), function='COUNT', output_field=IntegerField()) count=Func(F('pk'), function='COUNT', output_field=IntegerField())
) )
.values('count') .values('count')