Skip to content

Commit 0955834

Browse files
authored
Merge pull request #154 from highcharts-for-python/147-question-enhancement-module_url
Closes #147
2 parents d463fcf + 37650b9 commit 0955834

File tree

13 files changed

+89
-20
lines changed

13 files changed

+89
-20
lines changed

CHANGES.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ Release 1.6.0
55
* **ENHANCEMENT:** Added ability to remove or override the JavaScript event listener when
66
serializing a chart to a JavaScript literal (#131 - courtesy of
77
`@ByronCook <https://github.com/ByronCook>`__ ).
8+
* **ENHANCEMENT:** Added support for the ``HCP_ALLOW_SPECIAL_IPS`` environment variable
9+
which allows localhost (or other special URLs) to pass URL validation. (#147)
10+
* **DOCUMENTATION:** Fixed typos in documentation (courtesy of `@karlacio <https://github.com/karlacio>`
11+
and `@maxduganknight <https://github.com/maxduganknight>`).
812

913
--------------------
1014

highcharts_core/chart.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,7 +470,9 @@ def module_url(self) -> str:
470470
@module_url.setter
471471
def module_url(self, value):
472472
try:
473-
value = validators.url(value, allow_empty = True)
473+
value = validators.url(value,
474+
allow_empty = True,
475+
allow_special_ips = os.getenv('HCP_ALLOW_SPECIAL_IPS', False))
474476
except (ValueError, TypeError):
475477
value = validators.path(value, allow_empty = True)
476478

highcharts_core/headless_export.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,11 @@ def url(self) -> Optional[str]:
239239

240240
@url.setter
241241
def url(self, value):
242-
value = validators.url(value, allow_empty = True)
242+
value = validators.url(
243+
value,
244+
allow_empty=True,
245+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
246+
)
243247
if not value:
244248
self.protocol = None
245249
self.domain = None

highcharts_core/options/annotations/shape_options.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from typing import Optional, List
23
from decimal import Decimal
34

@@ -158,7 +159,9 @@ def src(self, value):
158159
self._src = None
159160
else:
160161
try:
161-
self._src = validators.url(value)
162+
self._src = validators.url(
163+
value, allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False)
164+
)
162165
except ValueError:
163166
try:
164167
self._src = validators.path(value)

highcharts_core/options/chart/__init__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from typing import Optional, List
23
from decimal import Decimal
34

@@ -892,7 +893,9 @@ def plot_background_image(self, value):
892893
self._plot_background_image = None
893894
else:
894895
try:
895-
self._plot_background_image = validators.url(value)
896+
self._plot_background_image = validators.url(
897+
value, allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False)
898+
)
896899
except ValueError:
897900
try:
898901
self._plot_background_image = validators.path(value)

highcharts_core/options/credits.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from typing import Optional
23

34
from validator_collection import validators
@@ -130,7 +131,11 @@ def href(self) -> Optional[str]:
130131

131132
@href.setter
132133
def href(self, value):
133-
self._href = validators.url(value, allow_empty = True)
134+
self._href = validators.url(
135+
value,
136+
allow_empty=True,
137+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
138+
)
134139

135140
@property
136141
def position(self) -> Optional[Position]:

highcharts_core/options/data.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,9 @@ def columns_url(self, value):
176176
self._columns_url = None
177177
else:
178178
try:
179-
self._columns_url = validators.url(value)
179+
self._columns_url = validators.url(
180+
value, allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False)
181+
)
180182
except ValueError as error:
181183
try:
182184
self._columns_url = validators.path(value)
@@ -250,7 +252,9 @@ def csv_url(self, value):
250252
self._csv_url = None
251253
else:
252254
try:
253-
self._csv_url = validators.url(value)
255+
self._csv_url = validators.url(
256+
value, allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False)
257+
)
254258
except ValueError as error:
255259
try:
256260
self._csv_url = validators.path(value)
@@ -600,7 +604,9 @@ def rows_url(self, value):
600604
self._rows_url = None
601605
else:
602606
try:
603-
self._rows_url = validators.url(value)
607+
self._rows_url = validators.url(
608+
value, allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False)
609+
)
604610
except ValueError as error:
605611
try:
606612
self._rows_url = validators.path(value)

highcharts_core/options/exporting/__init__.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from typing import Optional
23
from decimal import Decimal
34

@@ -385,7 +386,11 @@ def lib_url(self) -> Optional[str]:
385386

386387
@lib_url.setter
387388
def lib_url(self, value):
388-
self._lib_url = validators.url(value, allow_empty = True)
389+
self._lib_url = validators.url(
390+
value,
391+
allow_empty=True,
392+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
393+
)
389394

390395
@property
391396
def menu_item_definitions(self) -> Optional[MenuObject]:
@@ -632,7 +637,11 @@ def url(self) -> Optional[str]:
632637
@url.setter
633638
def url(self, value):
634639
try:
635-
self._url = validators.url(value, allow_empty = True)
640+
self._url = validators.url(
641+
value,
642+
allow_empty=True,
643+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
644+
)
636645
except ValueError:
637646
self._url = validators.path(value)
638647

highcharts_core/options/exporting/pdf_font.py

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from typing import Optional
23

34
from validator_collection import validators
@@ -52,7 +53,11 @@ def bold(self) -> Optional[str]:
5253
@bold.setter
5354
def bold(self, value):
5455
try:
55-
self._bold = validators.url(value, allow_empty = True)
56+
self._bold = validators.url(
57+
value,
58+
allow_empty=True,
59+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
60+
)
5661
except ValueError:
5762
self._bold = validators.path(value, allow_empty = True)
5863

@@ -70,7 +75,11 @@ def bolditalic(self) -> Optional[str]:
7075
@bolditalic.setter
7176
def bolditalic(self, value):
7277
try:
73-
self._bolditalic = validators.url(value, allow_empty = True)
78+
self._bolditalic = validators.url(
79+
value,
80+
allow_empty=True,
81+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
82+
)
7483
except ValueError:
7584
self._bolditalic = validators.path(value, allow_empty = True)
7685

@@ -87,7 +96,11 @@ def italic(self) -> Optional[str]:
8796
@italic.setter
8897
def italic(self, value):
8998
try:
90-
self._italic = validators.url(value, allow_empty = True)
99+
self._italic = validators.url(
100+
value,
101+
allow_empty=True,
102+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
103+
)
91104
except ValueError:
92105
self._italic = validators.path(value, allow_empty = True)
93106

@@ -110,7 +123,11 @@ def normal(self) -> Optional[str]:
110123
@normal.setter
111124
def normal(self, value):
112125
try:
113-
self._normal = validators.url(value, allow_empty = True)
126+
self._normal = validators.url(
127+
value,
128+
allow_empty=True,
129+
allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False),
130+
)
114131
except ValueError:
115132
self._normal = validators.path(value, allow_empty = True)
116133

highcharts_core/utility_classes/nodes.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import os
12
from typing import Optional, List
23
from decimal import Decimal
34

@@ -315,7 +316,9 @@ def image(self, value):
315316
self._image = None
316317
else:
317318
try:
318-
value = validators.url(value)
319+
value = validators.url(
320+
value, allow_special_ips=os.getenv("HCP_ALLOW_SPECIAL_IPS", False)
321+
)
319322
except ValueError:
320323
value = validators.path(value)
321324

0 commit comments

Comments
 (0)