From 874a7721e0a72888e83374bc772d547a458b1527 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Jan 26 2017 08:27:42 +0000 Subject: [PATCH 1/3] Fix Python3 support --- diff --git a/hubs/app.py b/hubs/app.py index 5a453a0..a2a48a4 100755 --- a/hubs/app.py +++ b/hubs/app.py @@ -1,9 +1,11 @@ +from __future__ import print_function + import datetime import functools import json import logging import os -import urlparse +from six.moves.urllib import parse as urlparse import flask import flask.json @@ -349,7 +351,7 @@ def hub_add_widget_post(name): widget.hub.last_edited = datetime.datetime.utcnow() session.commit() except Exception as err: - print err + print(err) flask.flash( 'Could not save the configuration to the database ' 'if the error persists, please warn an admin', diff --git a/hubs/tests/test_api/test_hub.py b/hubs/tests/test_api/test_hub.py index 2fd513f..815411d 100644 --- a/hubs/tests/test_api/test_hub.py +++ b/hubs/tests/test_api/test_hub.py @@ -1,6 +1,6 @@ import flask import unittest -from urlparse import urlparse +from six.moves.urllib.parse import urlparse import hubs.tests import hubs.models diff --git a/hubs/tests/test_api/test_notifications.py b/hubs/tests/test_api/test_notifications.py index 74acdc1..8440baf 100644 --- a/hubs/tests/test_api/test_notifications.py +++ b/hubs/tests/test_api/test_notifications.py @@ -1,5 +1,5 @@ import json -from urlparse import urlparse +from six.moves.urllib.parse import urlparse import hubs.tests import hubs.models diff --git a/hubs/tests/test_fedora_hubs_flask_api.py b/hubs/tests/test_fedora_hubs_flask_api.py index 6dcfcdc..ea4b6b9 100644 --- a/hubs/tests/test_fedora_hubs_flask_api.py +++ b/hubs/tests/test_fedora_hubs_flask_api.py @@ -1,5 +1,5 @@ import unittest -from urlparse import urlparse +from six.moves.urllib.parse import urlparse import ast # import for string to dict conversion without unicode from flask import json diff --git a/hubs/validators.py b/hubs/validators.py index fd4066c..0a44d90 100755 --- a/hubs/validators.py +++ b/hubs/validators.py @@ -1,7 +1,7 @@ import kitchen.text.converters import hubs.models -import httplib +import httplib2 def required(session, value): @@ -42,18 +42,17 @@ def fmn_context(session, value): def pagure_repo(session, value): - conn = httplib.HTTPSConnection("pagure.io") - conn.request("GET", "/%s" % value) - response = conn.getresponse() + conn = httplib2.Http() + response, _content = conn.request("https://pagure.io/%s" % value, "GET") if response.status == 200: return value raise ValueError('Invalid pagure repo') def fedorahosted_project(session, value): - conn = httplib.HTTPSConnection("fedorahosted.org") - conn.request("GET", "/%s" % value) - response = conn.getresponse() + conn = httplib2.Http() + response, _content = conn.request( + "https://fedorahosted.org/%s" % value, "GET") if response.status == 200: return value raise ValueError('Invalid fedorahosted project') diff --git a/hubs/widgets/clean_input.py b/hubs/widgets/clean_input.py index 316c7a4..2ec458a 100644 --- a/hubs/widgets/clean_input.py +++ b/hubs/widgets/clean_input.py @@ -1,4 +1,4 @@ -import urlparse +from six.moves.urllib.parse import urlparse import bleach @@ -10,8 +10,8 @@ def filter_img_src(name, value): if name in ('alt', 'height', 'width', 'class'): return True if name == 'src': - p = urlparse.urlparse(value) - return (not p.netloc) or p.netloc == urlparse.urlparse( + p = urlparse(value) + return (not p.netloc) or p.netloc == urlparse( hubs.app.app.config['APP_URL']).netloc return False diff --git a/hubs/widgets/fhosted.py b/hubs/widgets/fhosted.py index c2bcd45..827b228 100644 --- a/hubs/widgets/fhosted.py +++ b/hubs/widgets/fhosted.py @@ -1,4 +1,4 @@ -from xmlrpclib import ServerProxy +from six.moves.xmlrpc_client import ServerProxy import hubs.validators as validators from hubs.widgets.chrome import panel diff --git a/requirements.txt b/requirements.txt index a63b658..8cd42fa 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,6 +12,7 @@ fmn.lib fmn.rules gunicorn html5lib +httplib2 munch psycopg2 pytz From cad482dae039b4aa1585cb53521414ff796ea364 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Jan 26 2017 08:27:42 +0000 Subject: [PATCH 2/3] Use requests instead of httplib2 --- diff --git a/hubs/validators.py b/hubs/validators.py index 0a44d90..a33fe0f 100755 --- a/hubs/validators.py +++ b/hubs/validators.py @@ -1,7 +1,7 @@ import kitchen.text.converters import hubs.models -import httplib2 +import requests def required(session, value): @@ -42,17 +42,14 @@ def fmn_context(session, value): def pagure_repo(session, value): - conn = httplib2.Http() - response, _content = conn.request("https://pagure.io/%s" % value, "GET") - if response.status == 200: + response = requests.get("https://pagure.io/%s" % value) + if response.status_code == 200: return value raise ValueError('Invalid pagure repo') def fedorahosted_project(session, value): - conn = httplib2.Http() - response, _content = conn.request( - "https://fedorahosted.org/%s" % value, "GET") - if response.status == 200: + response = requests.get("https://fedorahosted.org/%s" % value) + if response.status_code == 200: return value raise ValueError('Invalid fedorahosted project') diff --git a/requirements.txt b/requirements.txt index 8cd42fa..d8d0088 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,10 +12,10 @@ fmn.lib fmn.rules gunicorn html5lib -httplib2 munch psycopg2 pytz +requests sqlalchemy markdown pkgwat.api diff --git a/setup.py b/setup.py index 6ddbd37..15f69c2 100644 --- a/setup.py +++ b/setup.py @@ -34,6 +34,7 @@ setup( 'Topic :: Software Development :: Libraries :: Python Modules', 'Intended Audience :: Developers', 'Programming Language :: Python', + 'Programming Language :: Python :: 3', ], entry_points={ 'moksha.consumer': [ From 1059f3214fd89b66492aba081e0ab9c4372ffc09 Mon Sep 17 00:00:00 2001 From: Aurélien Bompard Date: Jan 26 2017 08:27:42 +0000 Subject: [PATCH 3/3] Add a timeout to the requests-based validators --- diff --git a/hubs/validators.py b/hubs/validators.py index a33fe0f..2ae918f 100755 --- a/hubs/validators.py +++ b/hubs/validators.py @@ -42,14 +42,14 @@ def fmn_context(session, value): def pagure_repo(session, value): - response = requests.get("https://pagure.io/%s" % value) + response = requests.get("https://pagure.io/%s" % value, timeout=5) if response.status_code == 200: return value raise ValueError('Invalid pagure repo') def fedorahosted_project(session, value): - response = requests.get("https://fedorahosted.org/%s" % value) + response = requests.get("https://fedorahosted.org/%s" % value, timeout=5) if response.status_code == 200: return value raise ValueError('Invalid fedorahosted project')