From: Sebastian Porombka Date: Tue, 17 Oct 2023 03:44:22 +0000 (+0200) Subject: barcode logic: strip non-numeric characters from detected ASN string (#4379) X-Git-Tag: v2.0.0-beta.1~47 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90db397ec65744df6c3fc7391a17e1adcce6af68;p=thirdparty%2Fpaperless-ngx.git barcode logic: strip non-numeric characters from detected ASN string (#4379) * legacy barcodes exist which still contain characters after the number. the current logic did not truncate them. instead, int() was called from the remaining string. this does not work in this case. it is therefore sufficient to continue processing numeric characters. * lint --------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com> --- diff --git a/src/documents/barcodes.py b/src/documents/barcodes.py index 89d8c26850..cac02e3e97 100644 --- a/src/documents/barcodes.py +++ b/src/documents/barcodes.py @@ -1,4 +1,5 @@ import logging +import re import tempfile from dataclasses import dataclass from pathlib import Path @@ -100,6 +101,9 @@ class BarcodeReader: # remove the prefix and remove whitespace asn_text = asn_text[len(settings.CONSUMER_ASN_BARCODE_PREFIX) :].strip() + # remove non-numeric parts of the remaining string + asn_text = re.sub("[^0-9]", "", asn_text) + # now, try parsing the ASN number try: asn = int(asn_text)