def get_wsgi_environ(self): if not self.__on_headers_complete: return None environ = self._environ.copy() # clean special keys for key in ("CONTENT_LENGTH", "CONTENT_TYPE", "SCRIPT_NAME"): hkey = "HTTP_%s" % key if hkey in environ: environ[key] = environ.pop(hkey) script_name = environ.get('SCRIPT_NAME', os.environ.get("SCRIPT_NAME", "")) if script_name: path_info = self._path.split(script_name, 1)[1] environ.update({ "PATH_INFO": unquote(path_info), "SCRIPT_NAME": script_name}) else: environ['SCRIPT_NAME'] = "" if environ.get('HTTP_X_FORWARDED_PROTOCOL', '').lower() == "ssl": environ['wsgi.url_scheme'] = "https" elif environ.get('HTTP_X_FORWARDED_SSL', '').lower() == "on": environ['wsgi.url_scheme'] = "https" else: environ['wsgi.url_scheme'] = "http" return environ
def decode_email_header(header, charset="utf8"): """ returns an email header as a unquoted unicode string """ dec = email.header.decode_header(header)[0] hdr = dec[0] if dec[1] is not None: hdr = hdr.dec[1] return unquote(hdr)
def _download_assesment(course, url, folder): url = "{}/data/export/{}".format(course.get_url(), url) temp = "temp.html" util.download(url, temp, course.get_cookie_file()) page = util.read_file(temp) util.remove(temp) pattern = r"<tbody>.*?</tbody>" table = re.findall(pattern, page, re.DOTALL)[-1] pattern = r'<td colspan="2">(.*?)</td>.*?<a href="(.*?/export/(.*?)\?.*?)">Download</a>' for tr_match in re.finditer(r"<tr>.*?</tr>", table, re.DOTALL): for match in re.finditer(pattern, tr_match.group(0), re.DOTALL): name = match.group(1).replace(""", "").replace(":", "") name = name.replace("<em>", "") name = name.replace("</em>", "") url = match.group(2) file_name = util.unquote(match.group(3)) path = u"{}/peer_assessment/{}/{} {}".format(course.get_folder(), folder, name, file_name) util.download(url, path, course.get_cookie_file(), resume=True)
def test_1_tagedit_delete(self): self.open_test_user() if not self.b.supports_alert: self.js('window.confirm=function(){return true}') del_btn = self.find_tag_editable('input.pp-remove-tag') tags = self.get_tags() tagid = int(del_btn.get_attribute('data-pp-tag-id')) tag = self.js('return document.getElementById("tag%d").textContent' % tagid) tag = util.unquote(tag) self.assertTrue(tag) self.assertIn(tag, tags) self.click(del_btn) if self.b.supports_alert: self.alert_accept() self.js('pixplus.popup.tagedit.end()') self.popup_wait_load() tags.remove(tag) self.popup_poll_reload(lambda: self.get_tags() == tags)
def testUnquote(self): for string, expected in strings.iteritems(): result = unquote(string) self.assert_(result == expected, '%s is %s' % (string, result))