Merge lp:~chsn/parcel-tracker/parcel-tracker-regex into lp:parcel-tracker

Proposed by Erik Christiansson
Status: Work in progress
Proposed branch: lp:~chsn/parcel-tracker/parcel-tracker-regex
Merge into: lp:parcel-tracker
Diff against target: 78 lines (+10/-0)
5 files modified
parcel_tracker_lib/postservices/__init__.py (+3/-0)
parcel_tracker_lib/postservices/fedexcom.py (+2/-0)
parcel_tracker_lib/postservices/postense.py (+2/-0)
parcel_tracker_lib/postservices/schenkernu.py (+2/-0)
parcel_tracker_lib/postservices/upscom.py (+1/-0)
To merge this branch: bzr merge lp:~chsn/parcel-tracker/parcel-tracker-regex
Reviewer Review Type Date Requested Status
Vsevolod Velichko Needs Fixing
Review via email: mp+171236@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Vsevolod Velichko (torkvemada) wrote :

You probably need to rename 'pattern' → 'number_validate_pattern' for it not to be too abstract.

review: Needs Fixing

Unmerged revisions

168. By Erik Christiansson

Unneeded import removed

167. By Erik Christiansson

Implement a (optional) regex for each service that checks if the tracking number is valid for this service to reduce the ammount of useless requests.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'parcel_tracker_lib/postservices/__init__.py'
2--- parcel_tracker_lib/postservices/__init__.py 2013-03-25 11:37:47 +0000
3+++ parcel_tracker_lib/postservices/__init__.py 2013-06-25 08:47:30 +0000
4@@ -63,6 +63,7 @@
5 logger = logging.getLogger('parcel_tracker_lib')
6 name = 'Unknown Service'
7 service_classes = {}
8+ pattern = None
9
10 class __metaclass__(type):
11 def __new__(mcs, name, bases, dict):
12@@ -168,6 +169,8 @@
13
14 def fetch(self):
15 try:
16+ if self.pattern and not re.match(self.pattern, self.number.strip()):
17+ return []
18 page = self._get_page()
19 updates = self._parse_page(page)
20 return updates
21
22=== modified file 'parcel_tracker_lib/postservices/fedexcom.py'
23--- parcel_tracker_lib/postservices/fedexcom.py 2013-06-24 09:34:13 +0000
24+++ parcel_tracker_lib/postservices/fedexcom.py 2013-06-25 08:47:30 +0000
25@@ -30,6 +30,8 @@
26 name = "Fedex"
27 url = 'https://www.fedex.com/trackingCal/track'
28 post = 'data=%%7B%%22TrackPackagesRequest%%22%%3A%%7B%%22appType%%22%%3A%%22wtrk%%22%%2C%%22uniqueKey%%22%%3A%%22%%22%%2C%%22processingParameters%%22%%3A%%7B%%22anonymousTransaction%%22%%3Atrue%%2C%%22clientId%%22%%3A%%22WTRK%%22%%2C%%22returnDetailedErrors%%22%%3Atrue%%2C%%22returnLocalizedDateTime%%22%%3Afalse%%7D%%2C%%22trackingInfoList%%22%%3A%%5B%%7B%%22trackNumberInfo%%22%%3A%%7B%%22trackingNumber%%22%%3A%%22%(number)s%%22%%2C%%22trackingQualifier%%22%%3A%%22%%22%%2C%%22trackingCarrier%%22%%3A%%22%%22%%7D%%7D%%5D%%7D%%7D&action=trackpackages&locale=en_US&format=json&version=99'
29+ # Numeric tracking code of length 12, 15, 20 or 22
30+ pattern = r'^([0-9]{12}|[0-9]{15}|[0-9]{20}|[0-9]{22})$'
31
32 def _parse_page(self, html):
33 try:
34
35=== modified file 'parcel_tracker_lib/postservices/postense.py'
36--- parcel_tracker_lib/postservices/postense.py 2013-02-17 00:10:02 +0000
37+++ parcel_tracker_lib/postservices/postense.py 2013-06-25 08:47:30 +0000
38@@ -29,6 +29,8 @@
39
40 name = 'Posten.se'
41 url = 'http://www.posten.se/tracktrace/TrackConsignments_do.jsp?trackntraceAction=saveSearch&consignmentId=%(number)s&lang=GB'
42+ # 11 digits + country code or two characters + 9 digits + country code
43+ pattern = r'^([0-9]{2}|[a-zA-Z]{2})[0-9]{9}[a-zA-Z]{2}$'
44
45 def _parse_page(self, html):
46 html = html.decode('ISO-8859-1', 'ignore')
47
48=== modified file 'parcel_tracker_lib/postservices/schenkernu.py'
49--- parcel_tracker_lib/postservices/schenkernu.py 2013-02-17 00:10:02 +0000
50+++ parcel_tracker_lib/postservices/schenkernu.py 2013-06-25 08:47:30 +0000
51@@ -29,6 +29,7 @@
52
53 name = "privpak.schenker.nu"
54 url = 'http://privpakportal.schenker.nu/TrackAndTrace/packagesearch.aspx?packageid=%(number)s&referenceid='
55+ pattern = r'^([0-9]{3}\s*){3}[0-9]$'
56
57 def _parse_page(self, html):
58 html = html.decode('utf-8', 'ignore')
59@@ -53,6 +54,7 @@
60
61 name = "was.schenker.nu"
62 url = 'https://was.schenker.nu/ctts-a/com.dcs.servicebroker.http.HttpXSLTServlet?request.service=CTTSTYPEA&request.method=search&clientid=&language=sv&country=SE&reference_type=*DWB&reference_number=%(number)s'
63+ pattern = r'^([0-9]{3}\s*){3}[0-9]$'
64
65 def _parse_page(self, html):
66 html = html.decode('utf-8', 'ignore')
67
68=== modified file 'parcel_tracker_lib/postservices/upscom.py'
69--- parcel_tracker_lib/postservices/upscom.py 2013-02-17 00:10:02 +0000
70+++ parcel_tracker_lib/postservices/upscom.py 2013-06-25 08:47:30 +0000
71@@ -31,6 +31,7 @@
72 name = "UPS"
73 url = 'http://wwwapps.ups.com/WebTracking/detail'
74 post = 'loc=en_US&USER_HISTORY_LIST=&progressIsLoaded=N&refresh_sii=&showSpPkgProg1=true&datakey=line1&HIDDEN_FIELD_SESSION=%(session)s&multiship=true&descValue%(number)s=&trackNums=%(number)s'
75+ pattern = r'^(1Z\s*([0-9]{3}\s*){2}[0-9]{2}\s*[0-9]{4}\s*[0-9]{3}\s*[0-9]|[T0-9][0-9]{3}\s*([0-9]{4}\s*){2}|[0-9]{4}\s*[0-9]{3}\s*[0-9]{2})$'
76
77 def __extract_form_state(self):
78 page = super(UpsComService, self)._fetch_url(

Subscribers

People subscribed via source and target branches