From fc7c286b18dd67df92fca9c8140f431cbd0459fa Mon Sep 17 00:00:00 2001 From: dojutsu-user Date: Wed, 21 Aug 2019 14:38:31 +0530 Subject: [PATCH 01/71] remove highlight url param --- readthedocs/core/static-src/core/js/doc-embed/search.js | 2 +- readthedocs/core/static/core/js/readthedocs-doc-embed.js | 2 +- readthedocs/projects/static/projects/js/tools.js | 2 +- readthedocs/templates/search/elastic_search.html | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/readthedocs/core/static-src/core/js/doc-embed/search.js b/readthedocs/core/static-src/core/js/doc-embed/search.js index b7b00f43044..7bc72c635db 100644 --- a/readthedocs/core/static-src/core/js/doc-embed/search.js +++ b/readthedocs/core/static-src/core/js/doc-embed/search.js @@ -77,7 +77,7 @@ function attach_elastic_search_query(data) { } // Creating the result from elements - var link = doc.link + DOCUMENTATION_OPTIONS.FILE_SUFFIX + "?highlight=" + $.urlencode(query); + var link = doc.link + DOCUMENTATION_OPTIONS.FILE_SUFFIX; var item = $('', {'href': link}); item.html(title); diff --git a/readthedocs/core/static/core/js/readthedocs-doc-embed.js b/readthedocs/core/static/core/js/readthedocs-doc-embed.js index bf68c1a73d1..ddcbb75b918 100644 --- a/readthedocs/core/static/core/js/readthedocs-doc-embed.js +++ b/readthedocs/core/static/core/js/readthedocs-doc-embed.js @@ -1 +1 @@ -!function o(s,a,l){function d(t,e){if(!a[t]){if(!s[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(c)return c(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return d(s[t][1][e]||e)},r,r.exports,o,s,a,l)}return a[t].exports}for(var c="function"==typeof require&&require,e=0;e"),i("table.docutils.footnote").wrap("
"),i("table.docutils.citation").wrap("
"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var t=i(this);expand=i(''),expand.on("click",function(e){return n.toggleCurrent(t),e.stopPropagation(),!1}),t.prepend(expand)})},reset:function(){var e=encodeURI(window.location.hash)||"#";try{var t=$(".wy-menu-vertical"),i=t.find('[href="'+e+'"]');if(0===i.length){var n=$('.document [id="'+e.substring(1)+'"]').closest("div.section");0===(i=t.find('[href="#'+n.attr("id")+'"]')).length&&(i=t.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=e)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:t.exports.ThemeNav,StickyNav:t.exports.ThemeNav}),function(){for(var o=0,e=["ms","moz","webkit","o"],t=0;t/g,c=/"/g,p=/"/g,h=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,w=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(c,""")}function _(e){return e.replace(p,'"')}function y(e){return e.replace(h,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function x(e){return e.replace(f,":").replace(g," ")}function k(e){for(var t="",i=0,n=e.length;i/g;i.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},i.getDefaultWhiteList=o,i.onTag=function(e,t,i){},i.onIgnoreTag=function(e,t,i){},i.onTagAttr=function(e,t,i){},i.onIgnoreTagAttr=function(e,t,i){},i.safeAttrValue=function(e,t,i,n){if(i=T(i),"href"===t||"src"===t){if("#"===(i=u.trim(i)))return"#";if("http://"!==i.substr(0,7)&&"https://"!==i.substr(0,8)&&"mailto:"!==i.substr(0,7)&&"tel:"!==i.substr(0,4)&&"#"!==i[0]&&"/"!==i[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(i))return""}else if("style"===t){if(v.lastIndex=0,v.test(i))return"";if(w.lastIndex=0,w.test(i)&&(m.lastIndex=0,m.test(i)))return"";!1!==n&&(i=(n=n||s).process(i))}return i=E(i)},i.escapeHtml=a,i.escapeQuote=b,i.unescapeQuote=_,i.escapeHtmlEntities=y,i.escapeDangerHtml5Entities=x,i.clearNonPrintableCharacter=k,i.friendlyAttrValue=T,i.escapeAttrValue=E,i.onIgnoreTagStripAll=function(){return""},i.StripTagBody=function(s,a){"function"!=typeof a&&(a=function(){});var l=!Array.isArray(s),d=[],c=!1;return{onIgnoreTag:function(e,t,i){if(o=e,l||-1!==u.indexOf(s,o)){if(i.isClosing){var n="[/removed]",r=i.position+n.length;return d.push([!1!==c?c:i.position,r]),c=!1,n}return c||(c=i.position),"[removed]"}return a(e,t,i);var o},remove:function(t){var i="",n=0;return u.forEach(d,function(e){i+=t.slice(n,e[0]),n=e[1]}),i+=t.slice(n)}}},i.stripCommentTag=function(e){return e.replace(S,"")},i.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},i.cssFilter=s,i.getDefaultCSSWhiteList=r},{"./util":5,cssfilter:10}],3:[function(e,t,i){var n=e("./default"),r=e("./parser"),o=e("./xss");for(var s in(i=t.exports=function(e,t){return new o(t).process(e)}).FilterXSS=o,n)i[s]=n[s];for(var s in r)i[s]=r[s];"undefined"!=typeof window&&(window.filterXSS=t.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(e,t,i){var c=e("./util");function p(e){var t=c.spaceIndex(e);if(-1===t)var i=e.slice(1,-1);else i=e.slice(1,t+1);return"/"===(i=c.trim(i).toLowerCase()).slice(0,1)&&(i=i.slice(1)),"/"===i.slice(-1)&&(i=i.slice(0,-1)),i}var u=/[^a-zA-Z0-9_:\.\-]/gim;function h(e,t){for(;t"===u){n+=i(e.slice(r,o)),c=p(d=e.slice(o,a+1)),n+=t(o,n.length,c,d,"";var a=function(e){var t=b.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var i="/"===(e=b.trim(e.slice(t+1,-1)))[e.length-1];return i&&(e=b.trim(e.slice(0,-1))),{html:e,closing:i}}(i),l=c[r],d=w(a.html,function(e,t){var i,n=-1!==b.indexOf(l,e);return _(i=h(r,e,t,n))?n?(t=g(r,e,t,v))?e+'="'+t+'"':e:_(i=f(r,e,t,n))?void 0:i:i});i="<"+r;return d&&(i+=" "+d),a.closing&&(i+=" /"),i+=">"}return _(o=p(r,i,s))?m(i):o},m);return i&&(n=i.remove(n)),n},t.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:10}],7:[function(e,t,i){var n,r;n=this,r=function(){var T=!0;function s(i){function e(e){var t=i.match(e);return t&&1t[1][i])return 1;if(t[0][i]!==t[1][i])return-1;if(0===i)return 0}}function o(e,t,i){var n=a;"string"==typeof t&&(i=t,t=void 0),void 0===t&&(t=!1),i&&(n=s(i));var r=""+n.version;for(var o in e)if(e.hasOwnProperty(o)&&n[o]){if("string"!=typeof e[o])throw new Error("Browser version in the minVersion map should be a string: "+o+": "+String(e));return l([r,e[o]])<0}return t}return a.test=function(e){for(var t=0;t'),a=n.title;r&&r.title&&(a=A(r.title[0]));var l=n.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX+"?highlight="+$.urlencode(E),d=$("
",{href:l});if(d.html(a),d.find("span").addClass("highlighted"),s.append(d),n.project!==S){var c=" (from project "+n.project+")",u=$("",{text:c});s.append(u)}for(var p=0;p'),f="",g="",m="",v="",w="",b="",y="",x="",k="";if("sections"===o[p].type){if(g=(f=o[p])._source.title,m=l+"#"+f._source.id,v=[f._source.content.substring(0,R)+" ..."],f.highlight&&(f.highlight["sections.title"]&&(g=A(f.highlight["sections.title"][0])),f.highlight["sections.content"])){w=f.highlight["sections.content"],v=[];for(var T=0;T<%= section_subtitle %><% for (var i = 0; i < section_content.length; ++i) { %>
<%= section_content[i] %>
<% } %>',{section_subtitle_link:m,section_subtitle:g,section_content:v})}"domains"===o[p].type&&(y=(b=o[p])._source.role_name,x=l+"#"+b._source.anchor,k=b._source.name,"string"==typeof b._source.display_name&&1<=b._source.display_name.length&&(y="("+b._source.role_name+") "+b._source.display_name),b.highlight&&b.highlight["domains.name"]&&(k=A(b.highlight["domains.name"][0])),C(h,'
<%= domain_subtitle %>
<%= domain_content %>
',{domain_subtitle_link:x,domain_subtitle:y,domain_content:b._source.type_display+" -- "+k+" -- in "+b._source.doc_display})),h.find("span").addClass("highlighted"),s.append(h),p!==o.length-1&&s.append($("
"))}Search.output.append(s),s.slideDown(5)}t.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",t.length)):(Search.query_fallback(E),console.log("Read the Docs search failed. Falling back to Sphinx search."))}).fail(function(e){Search.query_fallback(E)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:e.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(e,t){return"success"!==t||void 0===e.responseJSON||0===e.responseJSON.count?n.reject():n.resolve(e.responseJSON)}}).fail(function(e,t,i){return n.reject()})}}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}(n.get())}}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":16}],18:[function(r,e,t){var o=r("./rtd-data");e.exports={init:function(){var e=o.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var e=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",e):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",e])}),void 0===window.SphinxRtdTheme){var t=r("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js").ThemeNav;if($(document).ready(function(){setTimeout(function(){t.navBar||t.enable()},1e3)}),e.is_rtd_like_theme()&&!$("div.wy-side-scroll:first").length){console.log("Applying theme sidebar fix...");var i=$("nav.wy-nav-side:first"),n=$("
").addClass("wy-side-scroll");i.children().detach().appendTo(n),n.prependTo(i),t.navBar=n}}}}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":16}],19:[function(e,t,i){var p,h=e("./constants"),f=e("./rtd-data"),n=e("bowser"),g="#ethical-ad-placement";function m(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=h.PROMO_TYPES.LEFTNAV,r=h.DEFAULT_PROMO_PRIORITY,o=null;return p.is_mkdocs_builder()&&p.is_rtd_like_theme()?(o="nav.wy-nav-side",e="ethical-rtd ethical-dark-theme"):p.is_rtd_like_theme()?(o="nav.wy-nav-side > div.wy-side-scroll",e="ethical-rtd ethical-dark-theme"):p.is_alabaster_like_theme()&&(o="div.sphinxsidebar > div.sphinxsidebarwrapper",e="ethical-alabaster"),o?($("
").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top>$(window).height())&&(r=h.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function v(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=h.PROMO_TYPES.FOOTER,r=h.DEFAULT_PROMO_PRIORITY,o=null;return p.is_rtd_like_theme()?(o=$("
").insertAfter("footer hr"),e="ethical-rtd"):p.is_alabaster_like_theme()&&(o="div.bodywrapper .body",e="ethical-alabaster"),o?($("
").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top<$(window).height())&&(r=h.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function w(){var e="rtd-"+(Math.random()+1).toString(36).substring(4),t=h.PROMO_TYPES.FIXED_FOOTER,i=h.DEFAULT_PROMO_PRIORITY;return n&&n.mobile&&(i=h.MAXIMUM_PROMO_PRIORITY),$("
").attr("id",e).appendTo("body"),{div_id:e,display_type:t,priority:i}}function b(e){this.id=e.id,this.div_id=e.div_id||"",this.html=e.html||"",this.display_type=e.display_type||"",this.view_tracking_url=e.view_url,this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",e.id):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",e.id])}}b.prototype.display=function(){var e="#"+this.div_id,t=this.view_tracking_url;$(e).html(this.html),$(e).find('a[href*="/sustainability/click/"]').on("click",this.click_handler);var i=function(){$.inViewport($(e),-3)&&($("").attr("src",t).css("display","none").appendTo(e),$(window).off(".rtdinview"),$(".wy-side-scroll").off(".rtdinview"))};$(window).on("DOMContentLoaded.rtdinview load.rtdinview scroll.rtdinview resize.rtdinview",i),$(".wy-side-scroll").on("scroll.rtdinview",i),$(".ethical-close").on("click",function(){return $(e).hide(),!1}),this.post_promo_display()},b.prototype.disable=function(){$("#"+this.div_id).hide()},b.prototype.post_promo_display=function(){this.display_type===h.PROMO_TYPES.FOOTER&&($("
").insertAfter("#"+this.div_id),$("
").insertBefore("#"+this.div_id+".ethical-alabaster .ethical-footer"))},t.exports={Promo:b,init:function(){var e,t,i,n,r,o={format:"jsonp"},s=[],a=[],l=[],d=[v,m,w],c=!1;if(p=f.get(),n="rtd-"+(Math.random()+1).toString(36).substring(4),r=h.PROMO_TYPES.LEFTNAV,i=p.is_rtd_like_theme()?"ethical-rtd ethical-dark-theme":"ethical-alabaster",t=0<$(g).length?($("
").attr("id",n).addClass(i).appendTo(g),{div_id:n,display_type:r}):null)s.push(t.div_id),a.push(t.display_type),l.push(t.priority||h.DEFAULT_PROMO_PRIORITY),c=!0;else{if(!p.show_promo())return;for(var u=0;u").attr("id","rtd-detection").attr("class","ethical-rtd").html(" ").appendTo("body"),0===$("#rtd-detection").height()&&(i=!0),$("#rtd-detection").remove(),i)&&(console.log("---------------------------------------------------------------------------------------"),console.log("Read the Docs hosts documentation for tens of thousands of open source projects."),console.log("We fund our development (we are open source) and operations through advertising."),console.log("We promise to:"),console.log(" - never let advertisers run 3rd party JavaScript"),console.log(" - never sell user data to advertisers or other 3rd parties"),console.log(" - only show advertisements of interest to developers"),console.log("Read more about our approach to advertising here: https://docs.readthedocs.io/en/latest/ethical-advertising.html"),console.log("%cPlease allow our Ethical Ads or go ad-free:","font-size: 2em"),console.log("https://docs.readthedocs.io/en/latest/advertising/ad-blocking.html"),console.log("--------------------------------------------------------------------------------------"),e=m(),t=null,e&&e.div_id&&(t=$("#"+e.div_id).attr("class","keep-us-sustainable"),$("

").text("Support Read the Docs!").appendTo(t),$("

").html('Please help keep us sustainable by allowing our Ethical Ads in your ad blocker or go ad-free by subscribing.').appendTo(t),$("

").text("Thank you! ❤️").appendTo(t)))}})}}},{"./constants":14,"./rtd-data":16,bowser:7}],20:[function(e,t,i){var o=e("./rtd-data");t.exports={init:function(e){var t=o.get();if(!e.is_highest){var i=window.location.pathname.replace(t.version,e.slug),n=$('

Note

You are not reading the most recent version of this documentation. is the latest version available.

');n.find("a").attr("href",i).text(e.slug);var r=$("div.body");r.length||(r=$("div.document")),r.prepend(n)}}}},{"./rtd-data":16}],21:[function(e,t,i){var n=e("./doc-embed/sponsorship"),r=e("./doc-embed/footer.js"),o=(e("./doc-embed/rtd-data"),e("./doc-embed/sphinx")),s=e("./doc-embed/search");$.extend(e("verge")),$(document).ready(function(){r.init(),o.init(),s.init(),n.init()})},{"./doc-embed/footer.js":15,"./doc-embed/rtd-data":16,"./doc-embed/search":17,"./doc-embed/sphinx":18,"./doc-embed/sponsorship":19,verge:13}]},{},[21]); \ No newline at end of file +!function o(s,a,l){function d(t,e){if(!a[t]){if(!s[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(c)return c(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return d(s[t][1][e]||e)},r,r.exports,o,s,a,l)}return a[t].exports}for(var c="function"==typeof require&&require,e=0;e
"),i("table.docutils.footnote").wrap("
"),i("table.docutils.citation").wrap("
"),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var t=i(this);expand=i(''),expand.on("click",function(e){return n.toggleCurrent(t),e.stopPropagation(),!1}),t.prepend(expand)})},reset:function(){var e=encodeURI(window.location.hash)||"#";try{var t=$(".wy-menu-vertical"),i=t.find('[href="'+e+'"]');if(0===i.length){var n=$('.document [id="'+e.substring(1)+'"]').closest("div.section");0===(i=t.find('[href="#'+n.attr("id")+'"]')).length&&(i=t.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=e)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:t.exports.ThemeNav,StickyNav:t.exports.ThemeNav}),function(){for(var o=0,e=["ms","moz","webkit","o"],t=0;t/g,u=/"/g,p=/"/g,h=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,w=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(u,""")}function _(e){return e.replace(p,'"')}function y(e){return e.replace(h,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function x(e){return e.replace(f,":").replace(g," ")}function k(e){for(var t="",i=0,n=e.length;i/g;i.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},i.getDefaultWhiteList=o,i.onTag=function(e,t,i){},i.onIgnoreTag=function(e,t,i){},i.onTagAttr=function(e,t,i){},i.onIgnoreTagAttr=function(e,t,i){},i.safeAttrValue=function(e,t,i,n){if(i=T(i),"href"===t||"src"===t){if("#"===(i=c.trim(i)))return"#";if("http://"!==i.substr(0,7)&&"https://"!==i.substr(0,8)&&"mailto:"!==i.substr(0,7)&&"tel:"!==i.substr(0,4)&&"#"!==i[0]&&"/"!==i[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(i))return""}else if("style"===t){if(v.lastIndex=0,v.test(i))return"";if(w.lastIndex=0,w.test(i)&&(m.lastIndex=0,m.test(i)))return"";!1!==n&&(i=(n=n||s).process(i))}return i=E(i)},i.escapeHtml=a,i.escapeQuote=b,i.unescapeQuote=_,i.escapeHtmlEntities=y,i.escapeDangerHtml5Entities=x,i.clearNonPrintableCharacter=k,i.friendlyAttrValue=T,i.escapeAttrValue=E,i.onIgnoreTagStripAll=function(){return""},i.StripTagBody=function(o,s){"function"!=typeof s&&(s=function(){});var a=!Array.isArray(o),l=[],d=!1;return{onIgnoreTag:function(e,t,i){if(function(e){return a||-1!==c.indexOf(o,e)}(e)){if(i.isClosing){var n="[/removed]",r=i.position+n.length;return l.push([!1!==d?d:i.position,r]),d=!1,n}return d||(d=i.position),"[removed]"}return s(e,t,i)},remove:function(t){var i="",n=0;return c.forEach(l,function(e){i+=t.slice(n,e[0]),n=e[1]}),i+=t.slice(n)}}},i.stripCommentTag=function(e){return e.replace(A,"")},i.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},i.cssFilter=s,i.getDefaultCSSWhiteList=r},{"./util":5,cssfilter:10}],3:[function(e,t,i){var n=e("./default"),r=e("./parser"),o=e("./xss");for(var s in(i=t.exports=function(e,t){return new o(t).process(e)}).FilterXSS=o,n)i[s]=n[s];for(var s in r)i[s]=r[s];"undefined"!=typeof window&&(window.filterXSS=t.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(e,t,i){var c=e("./util");function p(e){var t=c.spaceIndex(e);if(-1===t)var i=e.slice(1,-1);else i=e.slice(1,t+1);return"/"===(i=c.trim(i).toLowerCase()).slice(0,1)&&(i=i.slice(1)),"/"===i.slice(-1)&&(i=i.slice(0,-1)),i}var u=/[^a-zA-Z0-9_:\.\-]/gim;function h(e,t){for(;t"===u){n+=i(e.slice(r,o)),c=p(d=e.slice(o,a+1)),n+=t(o,n.length,c,d,"";var a=function(e){var t=b.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var i="/"===(e=b.trim(e.slice(t+1,-1)))[e.length-1];return i&&(e=b.trim(e.slice(0,-1))),{html:e,closing:i}}(i),l=c[r],d=w(a.html,function(e,t){var i,n=-1!==b.indexOf(l,e);return _(i=h(r,e,t,n))?n?(t=g(r,e,t,v))?e+'="'+t+'"':e:_(i=f(r,e,t,n))?void 0:i:i});i="<"+r;return d&&(i+=" "+d),a.closing&&(i+=" /"),i+=">"}return _(o=p(r,i,s))?m(i):o},m);return i&&(n=i.remove(n)),n},t.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:10}],7:[function(e,t,i){var n,r;n=this,r=function(){var T=!0;function s(i){function e(e){var t=i.match(e);return t&&1t[1][i])return 1;if(t[0][i]!==t[1][i])return-1;if(0===i)return 0}}function o(e,t,i){var n=a;"string"==typeof t&&(i=t,t=void 0),void 0===t&&(t=!1),i&&(n=s(i));var r=""+n.version;for(var o in e)if(e.hasOwnProperty(o)&&n[o]){if("string"!=typeof e[o])throw new Error("Browser version in the minVersion map should be a string: "+o+": "+String(e));return E([r,e[o]])<0}return t}return a.test=function(e){for(var t=0;t'),a=n.title;!r||r.title&&(a=S(r.title[0]));var l=n.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX,d=$("",{href:l});if(d.html(a),d.find("span").addClass("highlighted"),s.append(d),n.project!==A){var c=" (from project "+n.project+")",u=$("",{text:c});s.append(u)}for(var p=0;p'),f="",g="",m="",v="",w="",b="",y="",x="",k="";if("sections"===o[p].type){if(g=(f=o[p])._source.title,m=l+"#"+f._source.id,v=[f._source.content.substring(0,R)+" ..."],f.highlight&&(f.highlight["sections.title"]&&(g=S(f.highlight["sections.title"][0])),f.highlight["sections.content"])){w=f.highlight["sections.content"],v=[];for(var T=0;T<%= section_subtitle %>
<% for (var i = 0; i < section_content.length; ++i) { %>
<%= section_content[i] %>
<% } %>',{section_subtitle_link:m,section_subtitle:g,section_content:v})}"domains"===o[p].type&&(y=(b=o[p])._source.role_name,x=l+"#"+b._source.anchor,k=b._source.name,"string"==typeof b._source.display_name&&1<=b._source.display_name.length&&(y="("+b._source.role_name+") "+b._source.display_name),!b.highlight||b.highlight["domains.name"]&&(k=S(b.highlight["domains.name"][0])),C(h,'
<%= domain_content %>
',{domain_subtitle_link:x,domain_subtitle:y,domain_content:b._source.type_display+" -- "+k+" -- in "+b._source.doc_display})),h.find("span").addClass("highlighted"),s.append(h),p!==o.length-1&&s.append($("
"))}Search.output.append(s),s.slideDown(5)}t.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",t.length)):(Search.query_fallback(E),console.log("Read the Docs search failed. Falling back to Sphinx search."))}).fail(function(e){Search.query_fallback(E)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:e.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(e,t){return"success"!==t||void 0===e.responseJSON||0===e.responseJSON.count?n.reject():n.resolve(e.responseJSON)}}).fail(function(e,t,i){return n.reject()})}}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}(n.get())}}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":16}],18:[function(r,e,t){var o=r("./rtd-data");e.exports={init:function(){var e=o.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var e=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",e):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",e])}),void 0===window.SphinxRtdTheme){var t=r("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js").ThemeNav;if($(document).ready(function(){setTimeout(function(){t.navBar||t.enable()},1e3)}),e.is_rtd_like_theme()&&!$("div.wy-side-scroll:first").length){console.log("Applying theme sidebar fix...");var i=$("nav.wy-nav-side:first"),n=$("
").addClass("wy-side-scroll");i.children().detach().appendTo(n),n.prependTo(i),t.navBar=n}}}}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":16}],19:[function(e,t,i){var d,c=e("./constants"),u=e("./rtd-data"),n=e("bowser"),p="#ethical-ad-placement";function h(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.LEFTNAV,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_mkdocs_builder()&&d.is_rtd_like_theme()?(o="nav.wy-nav-side",e="ethical-rtd ethical-dark-theme"):d.is_rtd_like_theme()?(o="nav.wy-nav-side > div.wy-side-scroll",e="ethical-rtd ethical-dark-theme"):d.is_alabaster_like_theme()&&(o="div.sphinxsidebar > div.sphinxsidebarwrapper",e="ethical-alabaster"),o?($("
").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top>$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function f(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.FOOTER,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_rtd_like_theme()?(o=$("
").insertAfter("footer hr"),e="ethical-rtd"):d.is_alabaster_like_theme()&&(o="div.bodywrapper .body",e="ethical-alabaster"),o?($("
").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top<$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function g(){var e="rtd-"+(Math.random()+1).toString(36).substring(4),t=c.PROMO_TYPES.FIXED_FOOTER,i=c.DEFAULT_PROMO_PRIORITY;return n&&n.mobile&&(i=c.MAXIMUM_PROMO_PRIORITY),$("
").attr("id",e).appendTo("body"),{div_id:e,display_type:t,priority:i}}function m(e){this.id=e.id,this.div_id=e.div_id||"",this.html=e.html||"",this.display_type=e.display_type||"",this.view_tracking_url=e.view_url,this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",e.id):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",e.id])}}m.prototype.display=function(){var e="#"+this.div_id,t=this.view_tracking_url;$(e).html(this.html),$(e).find('a[href*="/sustainability/click/"]').on("click",this.click_handler);function i(){$.inViewport($(e),-3)&&($("").attr("src",t).css("display","none").appendTo(e),$(window).off(".rtdinview"),$(".wy-side-scroll").off(".rtdinview"))}$(window).on("DOMContentLoaded.rtdinview load.rtdinview scroll.rtdinview resize.rtdinview",i),$(".wy-side-scroll").on("scroll.rtdinview",i),$(".ethical-close").on("click",function(){return $(e).hide(),!1}),this.post_promo_display()},m.prototype.disable=function(){$("#"+this.div_id).hide()},m.prototype.post_promo_display=function(){this.display_type===c.PROMO_TYPES.FOOTER&&($("
").insertAfter("#"+this.div_id),$("
").insertBefore("#"+this.div_id+".ethical-alabaster .ethical-footer"))},t.exports={Promo:m,init:function(){var e,t,i={format:"jsonp"},n=[],r=[],o=[],s=[f,h,g],a=!1;if(d=u.get(),t=function(){var e,t="rtd-"+(Math.random()+1).toString(36).substring(4),i=c.PROMO_TYPES.LEFTNAV;return e=d.is_rtd_like_theme()?"ethical-rtd ethical-dark-theme":"ethical-alabaster",0<$(p).length?($("
").attr("id",t).addClass(e).appendTo(p),{div_id:t,display_type:i}):null}())n.push(t.div_id),r.push(t.display_type),o.push(t.priority||c.DEFAULT_PROMO_PRIORITY),a=!0;else{if(!d.show_promo())return;for(var l=0;l").attr("id","rtd-detection").attr("class","ethical-rtd").html(" ").appendTo("body"),0===$("#rtd-detection").height()&&(e=!0),$("#rtd-detection").remove(),e}()&&(console.log("---------------------------------------------------------------------------------------"),console.log("Read the Docs hosts documentation for tens of thousands of open source projects."),console.log("We fund our development (we are open source) and operations through advertising."),console.log("We promise to:"),console.log(" - never let advertisers run 3rd party JavaScript"),console.log(" - never sell user data to advertisers or other 3rd parties"),console.log(" - only show advertisements of interest to developers"),console.log("Read more about our approach to advertising here: https://docs.readthedocs.io/en/latest/ethical-advertising.html"),console.log("%cPlease allow our Ethical Ads or go ad-free:","font-size: 2em"),console.log("https://docs.readthedocs.io/en/latest/advertising/ad-blocking.html"),console.log("--------------------------------------------------------------------------------------"),function(){var e=h(),t=null;e&&e.div_id&&(t=$("#"+e.div_id).attr("class","keep-us-sustainable"),$("

").text("Support Read the Docs!").appendTo(t),$("

").html('Please help keep us sustainable by allowing our Ethical Ads in your ad blocker or go ad-free by subscribing.').appendTo(t),$("

").text("Thank you! ❤️").appendTo(t))}())}})}}},{"./constants":14,"./rtd-data":16,bowser:7}],20:[function(e,t,i){var o=e("./rtd-data");t.exports={init:function(e){var t=o.get();if(!e.is_highest){var i=window.location.pathname.replace(t.version,e.slug),n=$('

Note

You are not reading the most recent version of this documentation. is the latest version available.

');n.find("a").attr("href",i).text(e.slug);var r=$("div.body");r.length||(r=$("div.document")),r.prepend(n)}}}},{"./rtd-data":16}],21:[function(e,t,i){var n=e("./doc-embed/sponsorship"),r=e("./doc-embed/footer.js"),o=(e("./doc-embed/rtd-data"),e("./doc-embed/sphinx")),s=e("./doc-embed/search");$.extend(e("verge")),$(document).ready(function(){r.init(),o.init(),s.init(),n.init()})},{"./doc-embed/footer.js":15,"./doc-embed/rtd-data":16,"./doc-embed/search":17,"./doc-embed/sphinx":18,"./doc-embed/sponsorship":19,verge:13}]},{},[21]); \ No newline at end of file diff --git a/readthedocs/projects/static/projects/js/tools.js b/readthedocs/projects/static/projects/js/tools.js index ec4ff8a1f40..5e60509d765 100644 --- a/readthedocs/projects/static/projects/js/tools.js +++ b/readthedocs/projects/static/projects/js/tools.js @@ -1 +1 @@ -require=function o(i,a,l){function c(t,e){if(!a[t]){if(!i[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var s=a[t]={exports:{}};i[t][0].call(s.exports,function(e){return c(i[t][1][e]||e)},s,s.exports,o,i,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e'),i("body").append(t));var n=e.insertContent(t);i(n).show(),t.show(),i(document).click(function(e){i(e.target).closest("#embed-container").length||(i(n).remove(),t.remove())})}function s(e){var s=this;s.config=e||{},void 0===s.config.api_host&&(s.config.api_host="https://readthedocs.org"),s.help=o.observable(null),s.error=o.observable(null),s.project=o.observable(s.config.project),s.file=o.observable(null),s.sections=o.observableArray(),o.computed(function(){var e=s.file();(s.sections.removeAll(),e)&&(s.help("Loading..."),s.error(null),s.section(null),new r.Embed(s.config).page(s.project(),"latest",s.file(),function(e){s.sections.removeAll(),s.help(null),s.error(null);var t,n=[];for(t in e.sections){var r=e.sections[t];i.each(r,function(e,t){n.push({title:e,id:e})})}s.sections(n)},function(e){s.help(null),s.error("There was a problem retrieving data from the API")}))}),s.has_sections=o.computed(function(){return 0'),i("body").append(t));var n=e.insertContent(t);i(n).show(),t.show(),i(document).click(function(e){i(e.target).closest("#embed-container").length||(i(n).remove(),t.remove())})}function s(e){var s=this;s.config=e||{},void 0===s.config.api_host&&(s.config.api_host="https://readthedocs.org"),s.help=o.observable(null),s.error=o.observable(null),s.project=o.observable(s.config.project),s.file=o.observable(null),s.sections=o.observableArray(),o.computed(function(){var e=s.file();(s.sections.removeAll(),e)&&(s.help("Loading..."),s.error(null),s.section(null),new r.Embed(s.config).page(s.project(),"latest",s.file(),function(e){s.sections.removeAll(),s.help(null),s.error(null);var t,n=[];for(t in e.sections){var r=e.sections[t];i.each(r,function(e,t){n.push({title:e,id:e})})}s.sections(n)},function(e){s.help(null),s.error("There was a problem retrieving data from the API")}))}),s.has_sections=o.computed(function(){return 0 {% endfor %} {% elif 'page' in result.meta.index %} - + {{ result.project }} - {% if result.meta.highlight.title %} {{ result.meta.highlight.title.0|safe }} {% else %} {{ result.title }} {% endif %} {% for inner_hit in result.meta.inner_hits %} {% if inner_hit.type == 'domains' %}

- + {% if inner_hit.source.display_name|length >= 1 %} ({{ inner_hit.source.role_name }}) {{ inner_hit.source.display_name}} @@ -207,7 +207,7 @@

{% elif inner_hit.type == 'sections' %}

- + {% if inner_hit.highlight|get_key_or_none:"sections.title" %} {% with section_title=inner_hit.highlight|get_key_or_none:"sections.title" %} {{ section_title.0|safe }} From 0603ed4694a83159dc941037b7f3db50c1662ee0 Mon Sep 17 00:00:00 2001 From: dojutsu-user Date: Wed, 21 Aug 2019 19:36:20 +0530 Subject: [PATCH 02/71] record queries smartly --- readthedocs/search/api.py | 7 ++- readthedocs/search/tasks.py | 90 ++++++++++++++++++++++++++----------- 2 files changed, 69 insertions(+), 28 deletions(-) diff --git a/readthedocs/search/api.py b/readthedocs/search/api.py index 91798fec8bb..1f6eaa19944 100644 --- a/readthedocs/search/api.py +++ b/readthedocs/search/api.py @@ -1,6 +1,7 @@ import itertools import logging +from django.utils import timezone from rest_framework import generics, serializers from rest_framework.exceptions import ValidationError from rest_framework.pagination import PageNumberPagination @@ -160,8 +161,11 @@ def list(self, request, *args, **kwargs): project_slug = self.request.query_params.get('project', None) version_slug = self.request.query_params.get('version', None) - query = self.request.query_params.get('q', '') total_results = response.data.get('count', 0) + time = timezone.now() + + query = self.request.query_params.get('q', '') + query = query.lower() # record the search query with a celery task tasks.record_search_query.delay( @@ -169,6 +173,7 @@ def list(self, request, *args, **kwargs): version_slug, query, total_results, + time, ) return response diff --git a/readthedocs/search/tasks.py b/readthedocs/search/tasks.py index 0057f90b497..4dafd815de1 100644 --- a/readthedocs/search/tasks.py +++ b/readthedocs/search/tasks.py @@ -142,37 +142,73 @@ def delete_old_search_queries_from_db(): @app.task(queue='web') -def record_search_query(project_slug, version_slug, query, total_results): - """Record search query in database.""" - if not project_slug or not version_slug or not query or not total_results: +def record_search_query(project_slug, version_slug, query, total_results, time): + """Record/update search query in database.""" + if not project_slug or not version_slug or not query: log.debug( 'Not recording the search query. Passed arguments: ' - 'project_slug: %s, version_slug: %s, query: %s, total_results: %s' % ( - project_slug, version_slug, query, total_results + 'project_slug: %s, version_slug: %s, query: %s, total_results: %s, time: %s' % ( + project_slug, version_slug, query, total_results, time ) ) return - project_qs = Project.objects.filter(slug=project_slug) - - if not project_qs.exists(): - log.debug( - 'Not recording the search query because project does not exist. ' - 'project_slug: %s' % ( - project_slug - ) - ) + before_10_sec = time - timezone.timedelta(seconds=10) + partial_query_qs = SearchQuery.objects.filter( + project__slug=project_slug, + version__slug=version_slug, + query__startswith=query, + created__gte=before_10_sec, + ).order_by('-created') + + # if partial query exists, + # just update it instead of creating new SearchQuery object. + if partial_query_qs.exists(): + obj = partial_query_qs.first() + obj.created = time + obj.query = query + obj.save() return - - project = project_qs.first() - version_qs = Version.objects.filter(project=project, slug=version_slug) - - if not version_qs.exists(): - return - - version = version_qs.first() - SearchQuery.objects.create( - project=project, - version=version, - query=query, - ) + else: + # don't record query with zero results. + if not total_results: + log.debug( + 'Not recording search query because of zero results. Passed arguments: ' + 'project_slug: %s, version_slug: %s, query: %s, total_results: %s, time: %s' % ( + project_slug, version_slug, query, total_results, time + ) + ) + return + else: + project_qs = Project.objects.filter(slug=project_slug) + if not project_qs.exists(): + log.debug( + 'Not recording the search query because project does not exist. ' + 'project_slug: %s' % ( + project_slug + ) + ) + return + + project = project_qs.first() + version_qs = Version.objects.filter(project=project, slug=version_slug) + + if not version_qs.exists(): + log.debug( + 'Not recording the search query because version does not exist. ' + 'project_slug: %s, version_slug: %s' % ( + project_slug, version_slug + ) + ) + return + + version = version_qs.first() + + # make a new SearchQuery object. + obj = SearchQuery.objects.create( + project=project, + version=version, + query=query, + ) + obj.created = time + obj.save() From 81b1f5dd30c36d7f83d48d3ce11ee7cdcac569a4 Mon Sep 17 00:00:00 2001 From: dojutsu-user Date: Wed, 21 Aug 2019 20:04:51 +0530 Subject: [PATCH 03/71] fix lint --- readthedocs/search/tasks.py | 82 ++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/readthedocs/search/tasks.py b/readthedocs/search/tasks.py index 4dafd815de1..736fbb9b6de 100644 --- a/readthedocs/search/tasks.py +++ b/readthedocs/search/tasks.py @@ -169,46 +169,46 @@ def record_search_query(project_slug, version_slug, query, total_results, time): obj.query = query obj.save() return - else: - # don't record query with zero results. - if not total_results: - log.debug( - 'Not recording search query because of zero results. Passed arguments: ' - 'project_slug: %s, version_slug: %s, query: %s, total_results: %s, time: %s' % ( - project_slug, version_slug, query, total_results, time - ) + + # don't record query with zero results. + if not total_results: + log.debug( + 'Not recording search query because of zero results. Passed arguments: ' + 'project_slug: %s, version_slug: %s, query: %s, total_results: %s, time: %s' % ( + project_slug, version_slug, query, total_results, time ) - return - else: - project_qs = Project.objects.filter(slug=project_slug) - if not project_qs.exists(): - log.debug( - 'Not recording the search query because project does not exist. ' - 'project_slug: %s' % ( - project_slug - ) - ) - return - - project = project_qs.first() - version_qs = Version.objects.filter(project=project, slug=version_slug) - - if not version_qs.exists(): - log.debug( - 'Not recording the search query because version does not exist. ' - 'project_slug: %s, version_slug: %s' % ( - project_slug, version_slug - ) - ) - return - - version = version_qs.first() - - # make a new SearchQuery object. - obj = SearchQuery.objects.create( - project=project, - version=version, - query=query, + ) + return + + project_qs = Project.objects.filter(slug=project_slug) + if not project_qs.exists(): + log.debug( + 'Not recording the search query because project does not exist. ' + 'project_slug: %s' % ( + project_slug ) - obj.created = time - obj.save() + ) + return + + project = project_qs.first() + version_qs = Version.objects.filter(project=project, slug=version_slug) + + if not version_qs.exists(): + log.debug( + 'Not recording the search query because version does not exist. ' + 'project_slug: %s, version_slug: %s' % ( + project_slug, version_slug + ) + ) + return + + version = version_qs.first() + + # make a new SearchQuery object. + obj = SearchQuery.objects.create( + project=project, + version=version, + query=query, + ) + obj.created = time + obj.save() From 703f510326aeb9ebdf6ece7dcb6f81f47a5a7f16 Mon Sep 17 00:00:00 2001 From: dojutsu-user Date: Wed, 21 Aug 2019 22:48:10 +0530 Subject: [PATCH 04/71] add .strip() --- readthedocs/search/api.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/search/api.py b/readthedocs/search/api.py index 1f6eaa19944..fc4ce42de21 100644 --- a/readthedocs/search/api.py +++ b/readthedocs/search/api.py @@ -165,7 +165,7 @@ def list(self, request, *args, **kwargs): time = timezone.now() query = self.request.query_params.get('q', '') - query = query.lower() + query = query.lower().strip() # record the search query with a celery task tasks.record_search_query.delay( From 782f7655fb6c44d7b41fd8d1939197d0c0a6174b Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 22 Aug 2019 16:13:52 +0600 Subject: [PATCH 05/71] Add PR builder guilde to docs --- .../autobuild-docs-for-pull-requests.rst | 24 +++++++++++++++++++ docs/guides/index.rst | 1 + docs/guides/technical-docs-seo-guide.rst | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 docs/guides/autobuild-docs-for-pull-requests.rst diff --git a/docs/guides/autobuild-docs-for-pull-requests.rst b/docs/guides/autobuild-docs-for-pull-requests.rst new file mode 100644 index 00000000000..4795e490074 --- /dev/null +++ b/docs/guides/autobuild-docs-for-pull-requests.rst @@ -0,0 +1,24 @@ +Autobuild Documentation for Pull Requests +========================================= + +Read the Docs allows autobuilding documentation for pull/merge requests for GitHub or GitLab projects. +This feature is currently available under a :doc:`Feature Flag `. +So, you can enable this feature by sending us an `email `_ including your project URL. + +Troubleshooting +=============== + +After the feature is enabled on your project if everything does not work as expected, +some common issues might be: + +1. Social Account (GitHub, Gitlab) is not connected with Read the Docs account. + if your project repository provider is GitHub or GitLab you need to make sure + that you Read the Docs account is connected with that providers social account. + you can check this by going to your `profile settings`_. + +2. Webhook is not properly setup. You need to make sure your webhook is properly setup + to handle events. you can ``re-sync`` the webhook from you projects admin dashboard. + Learn more about setting up webhooks from our :doc:`Webhook Documentation `. + + +.. _profile settings: https://readthedocs.org/accounts/social/connections/ diff --git a/docs/guides/index.rst b/docs/guides/index.rst index ab63f413768..24860c44fc9 100644 --- a/docs/guides/index.rst +++ b/docs/guides/index.rst @@ -32,6 +32,7 @@ These guides will help you customize or tune aspects of the Read the Docs build .. toctree:: :maxdepth: 1 + autobuild-docs-for-pull-requests build-notifications build-using-too-many-resources technical-docs-seo-guide diff --git a/docs/guides/technical-docs-seo-guide.rst b/docs/guides/technical-docs-seo-guide.rst index 8db8a658d6f..2ad18ca2428 100644 --- a/docs/guides/technical-docs-seo-guide.rst +++ b/docs/guides/technical-docs-seo-guide.rst @@ -12,7 +12,7 @@ This guide will help you optimize your documentation for search engines with the goal of increasing traffic to your docs. While you optimize your docs to make them more crawler friendly for search engine spiders, it's important to keep in mind that your ultimate goal is to make your docs -more discoverable for your users. +more discoverable for your users.user defined redirects **You're trying to make sure that when a user types a question into a search engine that is answerable by your documentation, that your docs appear in the results.** From f441c30cd78b86884ba9fcf5252a19d624129b89 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 22 Aug 2019 16:16:28 +0600 Subject: [PATCH 06/71] fix --- docs/guides/technical-docs-seo-guide.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/technical-docs-seo-guide.rst b/docs/guides/technical-docs-seo-guide.rst index 2ad18ca2428..8db8a658d6f 100644 --- a/docs/guides/technical-docs-seo-guide.rst +++ b/docs/guides/technical-docs-seo-guide.rst @@ -12,7 +12,7 @@ This guide will help you optimize your documentation for search engines with the goal of increasing traffic to your docs. While you optimize your docs to make them more crawler friendly for search engine spiders, it's important to keep in mind that your ultimate goal is to make your docs -more discoverable for your users.user defined redirects +more discoverable for your users. **You're trying to make sure that when a user types a question into a search engine that is answerable by your documentation, that your docs appear in the results.** From 3b2c53e6fa72693ef516ee85e024881a82465bc5 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 22 Aug 2019 17:00:14 +0600 Subject: [PATCH 07/71] add more troubleshooting --- docs/guides/autobuild-docs-for-pull-requests.rst | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/guides/autobuild-docs-for-pull-requests.rst b/docs/guides/autobuild-docs-for-pull-requests.rst index 4795e490074..783a2c8c065 100644 --- a/docs/guides/autobuild-docs-for-pull-requests.rst +++ b/docs/guides/autobuild-docs-for-pull-requests.rst @@ -11,13 +11,16 @@ Troubleshooting After the feature is enabled on your project if everything does not work as expected, some common issues might be: -1. Social Account (GitHub, Gitlab) is not connected with Read the Docs account. +1. Project repository should be from GitHub or GitLab. This feature is only available for GitHub or GitLab. + So, if your projects provider is not GitHub or GitLab This feature will not work. + +2. Social Account (GitHub, Gitlab) is not connected with Read the Docs account. if your project repository provider is GitHub or GitLab you need to make sure that you Read the Docs account is connected with that providers social account. you can check this by going to your `profile settings`_. -2. Webhook is not properly setup. You need to make sure your webhook is properly setup - to handle events. you can ``re-sync`` the webhook from you projects admin dashboard. +3. Webhook is not properly setup. You need to make sure your webhook is properly setup + to handle events. you can setup or ``re-sync`` the webhook from you projects admin dashboard. Learn more about setting up webhooks from our :doc:`Webhook Documentation `. From 7dbd8dd387c2085bcdfee3ba42c9ba6fdd93e009 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 22 Aug 2019 17:23:22 +0600 Subject: [PATCH 08/71] added features docs --- .../guides/github-build-status-reporting.gif | Bin 0 -> 148463 bytes .../autobuild-docs-for-pull-requests.rst | 29 +++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 docs/_static/images/guides/github-build-status-reporting.gif diff --git a/docs/_static/images/guides/github-build-status-reporting.gif b/docs/_static/images/guides/github-build-status-reporting.gif new file mode 100644 index 0000000000000000000000000000000000000000..c6ca301e4264f68e971fe070bde24c8c8ffbde35 GIT binary patch literal 148463 zcmWh!XFMBT7Y-pYB0*_Ud+$A>R*1byiz=n|s=cWZg4lc4rY(v_t4524s8ww#ZT;1V zJ!-@rMc%&m%l&Zf@7&)V=Q;PB^ISaxUAVF%6A(#u3IG5a?*iH%0B}}-L3;oR0PKB8 zfxSo3ZU;%wVd$`Bsjy^u;mjs=mn~42z3U0DgetF!mB4UDA5Nj9#DHkm58n_F+Lqi62_?B3l6_ny|@%Ne_G6L>#=#8Q#V@8+o9J>|-vry@@JEjwAH{aKy7{?=XSkc{x%-ED+_QR8fcJJZ^Y?HH=*SNA3kWRp z3=Izpe~J!|%?M9;9{GGK3SAKWY9r=HW$bJ_>ii=*G6Y@l5xK{k

  • OaRn{v7X{u9lhJnEr40)qg*xW?FP+&bMb9W#(SW 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 =asQR!B<|Z^sXYdAa<8j#AF*;#SUH>u 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

    Y0f+NQTMx?JrA;+vnc|u7~l4I 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%0DH>xd%nZ>KLIQ;i%w6+ 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 literal 0 HcmV?d00001 diff --git a/docs/guides/autobuild-docs-for-pull-requests.rst b/docs/guides/autobuild-docs-for-pull-requests.rst index 783a2c8c065..9f5cd14e352 100644 --- a/docs/guides/autobuild-docs-for-pull-requests.rst +++ b/docs/guides/autobuild-docs-for-pull-requests.rst @@ -5,11 +5,35 @@ Read the Docs allows autobuilding documentation for pull/merge requests for GitH This feature is currently available under a :doc:`Feature Flag `. So, you can enable this feature by sending us an `email `_ including your project URL. +Features +======== + +- **Build on Pull/Merge Request Event:** We create a ecternal version and trigger a build for that version + when we receive pull/merge request open event from the webhook. + We also trigger a new build when a new commit has been added to the Pull/Merge Request. + +- **Warning Banner for Pull/Merge Request Documentation:** While building documentation for pull/merge requests + we add a warning banner at the top of those documentations to let the users know that + this documentation was generated from pull/merge requests and is not the main documentation for the project. + +- **Send Build Status Notification:** We send build status reports to the status API of the provider (e.g. GitHub, GitLab). + When a build is triggered for a pull/merge request we send build pending notification with the build URL + and after the build has finished we send success notification if the build succeeded without any error + or failure notification if the build failed. + +.. figure:: ../_static/images/guides/github-build-status-reporting.gif + :align: center + :alt: GitHub Build Status Reporting for Pull Requests. + :figwidth: 80% + :target: ../_static/images/guides/github-build-status-reporting.gif + + GitHub Build Status Reporting for Pull Requests + Troubleshooting =============== After the feature is enabled on your project if everything does not work as expected, -some common issues might be: +some common causes might be: 1. Project repository should be from GitHub or GitLab. This feature is only available for GitHub or GitLab. So, if your projects provider is not GitHub or GitLab This feature will not work. @@ -23,5 +47,8 @@ some common issues might be: to handle events. you can setup or ``re-sync`` the webhook from you projects admin dashboard. Learn more about setting up webhooks from our :doc:`Webhook Documentation `. +If you have tried all the above troubleshooting and still getting issues, +please let us know by opening an `issue`_ on our GitHub Repository. .. _profile settings: https://readthedocs.org/accounts/social/connections/ +.. _issue: https://github.com/readthedocs/readthedocs.org/issues/new From d1090f0008ce16d5551abdce2867b57294ace2b8 Mon Sep 17 00:00:00 2001 From: dojutsu-user Date: Fri, 23 Aug 2019 14:46:32 +0530 Subject: [PATCH 09/71] queries improvements --- readthedocs/search/tasks.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/readthedocs/search/tasks.py b/readthedocs/search/tasks.py index 736fbb9b6de..88c2df61f70 100644 --- a/readthedocs/search/tasks.py +++ b/readthedocs/search/tasks.py @@ -154,20 +154,19 @@ def record_search_query(project_slug, version_slug, query, total_results, time): return before_10_sec = time - timezone.timedelta(seconds=10) - partial_query_qs = SearchQuery.objects.filter( + partial_query_obj = SearchQuery.objects.filter( project__slug=project_slug, version__slug=version_slug, query__startswith=query, created__gte=before_10_sec, - ).order_by('-created') + ).order_by('-created').first() # if partial query exists, # just update it instead of creating new SearchQuery object. - if partial_query_qs.exists(): - obj = partial_query_qs.first() - obj.created = time - obj.query = query - obj.save() + if partial_query_obj: + partial_query_obj.created = time + partial_query_obj.query = query + partial_query_obj.save() return # don't record query with zero results. @@ -180,8 +179,8 @@ def record_search_query(project_slug, version_slug, query, total_results, time): ) return - project_qs = Project.objects.filter(slug=project_slug) - if not project_qs.exists(): + project = Project.objects.filter(slug=project_slug).first() + if not project: log.debug( 'Not recording the search query because project does not exist. ' 'project_slug: %s' % ( @@ -190,7 +189,6 @@ def record_search_query(project_slug, version_slug, query, total_results, time): ) return - project = project_qs.first() version_qs = Version.objects.filter(project=project, slug=version_slug) if not version_qs.exists(): From f329915875771cc8749ea201d969d80677ab6d20 Mon Sep 17 00:00:00 2001 From: dojutsu-user Date: Sun, 25 Aug 2019 23:31:22 +0530 Subject: [PATCH 10/71] add search guide --- .../images/guides/search-analytics-demo.png | Bin 0 -> 434315 bytes docs/guides/index.rst | 1 + docs/guides/searching-with-readthedocs.rst | 190 ++++++++++++++++++ 3 files changed, 191 insertions(+) create mode 100644 docs/_static/images/guides/search-analytics-demo.png create mode 100644 docs/guides/searching-with-readthedocs.rst diff --git a/docs/_static/images/guides/search-analytics-demo.png b/docs/_static/images/guides/search-analytics-demo.png new file mode 100644 index 0000000000000000000000000000000000000000..81269a7171e1258aa2769930fc11475676f87a7e GIT binary patch literal 434315 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

    dpf^AuSxlavxIADXk*<8- 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�?T^lH9 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

    ${dB+7R7OUDhHsl!qT|2RYEF0}4d9a+bAiSF>W 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≥`w5E_bU~oej1X78tmmEaA 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

  • "),i("table.docutils.footnote").wrap("
    "),i("table.docutils.citation").wrap("
    "),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var t=i(this);expand=i(''),expand.on("click",function(e){return n.toggleCurrent(t),e.stopPropagation(),!1}),t.prepend(expand)})},reset:function(){var e=encodeURI(window.location.hash)||"#";try{var t=$(".wy-menu-vertical"),i=t.find('[href="'+e+'"]');if(0===i.length){var n=$('.document [id="'+e.substring(1)+'"]').closest("div.section");0===(i=t.find('[href="#'+n.attr("id")+'"]')).length&&(i=t.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=e)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:t.exports.ThemeNav,StickyNav:t.exports.ThemeNav}),function(){for(var o=0,e=["ms","moz","webkit","o"],t=0;t/g,u=/"/g,h=/"/g,p=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,w=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(u,""")}function _(e){return e.replace(h,'"')}function y(e){return e.replace(p,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function x(e){return e.replace(f,":").replace(g," ")}function k(e){for(var t="",i=0,n=e.length;i/g;i.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},i.getDefaultWhiteList=o,i.onTag=function(e,t,i){},i.onIgnoreTag=function(e,t,i){},i.onTagAttr=function(e,t,i){},i.onIgnoreTagAttr=function(e,t,i){},i.safeAttrValue=function(e,t,i,n){if(i=T(i),"href"===t||"src"===t){if("#"===(i=c.trim(i)))return"#";if("http://"!==i.substr(0,7)&&"https://"!==i.substr(0,8)&&"mailto:"!==i.substr(0,7)&&"tel:"!==i.substr(0,4)&&"#"!==i[0]&&"/"!==i[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(i))return""}else if("style"===t){if(v.lastIndex=0,v.test(i))return"";if(w.lastIndex=0,w.test(i)&&(m.lastIndex=0,m.test(i)))return"";!1!==n&&(i=(n=n||s).process(i))}return i=E(i)},i.escapeHtml=a,i.escapeQuote=b,i.unescapeQuote=_,i.escapeHtmlEntities=y,i.escapeDangerHtml5Entities=x,i.clearNonPrintableCharacter=k,i.friendlyAttrValue=T,i.escapeAttrValue=E,i.onIgnoreTagStripAll=function(){return""},i.StripTagBody=function(o,s){"function"!=typeof s&&(s=function(){});var a=!Array.isArray(o),l=[],d=!1;return{onIgnoreTag:function(e,t,i){if(function(e){return a||-1!==c.indexOf(o,e)}(e)){if(i.isClosing){var n="[/removed]",r=i.position+n.length;return l.push([!1!==d?d:i.position,r]),d=!1,n}return d||(d=i.position),"[removed]"}return s(e,t,i)},remove:function(t){var i="",n=0;return c.forEach(l,function(e){i+=t.slice(n,e[0]),n=e[1]}),i+=t.slice(n)}}},i.stripCommentTag=function(e){return e.replace(A,"")},i.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},i.cssFilter=s,i.getDefaultCSSWhiteList=r},{"./util":5,cssfilter:10}],3:[function(e,t,i){var n=e("./default"),r=e("./parser"),o=e("./xss");for(var s in(i=t.exports=function(e,t){return new o(t).process(e)}).FilterXSS=o,n)i[s]=n[s];for(var s in r)i[s]=r[s];"undefined"!=typeof window&&(window.filterXSS=t.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(e,t,i){var c=e("./util");function h(e){var t=c.spaceIndex(e);if(-1===t)var i=e.slice(1,-1);else i=e.slice(1,t+1);return"/"===(i=c.trim(i).toLowerCase()).slice(0,1)&&(i=i.slice(1)),"/"===i.slice(-1)&&(i=i.slice(0,-1)),i}var u=/[^a-zA-Z0-9_:\.\-]/gim;function p(e,t){for(;t"===u){n+=i(e.slice(r,o)),c=h(d=e.slice(o,a+1)),n+=t(o,n.length,c,d,"";var a=function(e){var t=b.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var i="/"===(e=b.trim(e.slice(t+1,-1)))[e.length-1];return i&&(e=b.trim(e.slice(0,-1))),{html:e,closing:i}}(i),l=c[r],d=w(a.html,function(e,t){var i,n=-1!==b.indexOf(l,e);return _(i=p(r,e,t,n))?n?(t=g(r,e,t,v))?e+'="'+t+'"':e:_(i=f(r,e,t,n))?void 0:i:i});i="<"+r;return d&&(i+=" "+d),a.closing&&(i+=" /"),i+=">"}return _(o=h(r,i,s))?m(i):o},m);return i&&(n=i.remove(n)),n},t.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:10}],7:[function(e,t,i){var n,r;n=this,r=function(){var T=!0;function s(i){function e(e){var t=i.match(e);return t&&1t[1][i])return 1;if(t[0][i]!==t[1][i])return-1;if(0===i)return 0}}function o(e,t,i){var n=a;"string"==typeof t&&(i=t,t=void 0),void 0===t&&(t=!1),i&&(n=s(i));var r=""+n.version;for(var o in e)if(e.hasOwnProperty(o)&&n[o]){if("string"!=typeof e[o])throw new Error("Browser version in the minVersion map should be a string: "+o+": "+String(e));return E([r,e[o]])<0}return t}return a.test=function(e){for(var t=0;t'),a=n.title;!r||r.title&&(a=O(r.title[0]));var l=n.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX+"?highlight="+$.urlencode(A),d=$("
    ",{href:l});if(d.html(a),d.find("span").addClass("highlighted"),s.append(d),n.project!==S){var c=" (from project "+n.project+")",u=$("",{text:c});s.append(u)}for(var h=0;h'),f="",g="",m="",v="",w="",b="",y="",x="",k="",T="";if("sections"===o[h].type){if(g=(f=o[h])._source.title,m=l+"#"+f._source.id,v=[f._source.content.substr(0,C)+" ..."],f.highlight&&(f.highlight["sections.title"]&&(g=O(f.highlight["sections.title"][0])),f.highlight["sections.content"])){w=f.highlight["sections.content"],v=[];for(var E=0;E<%= section_subtitle %>
    <% for (var i = 0; i < section_content.length; ++i) { %>
    <%= section_content[i] %>
    <% } %>',{section_subtitle_link:m,section_subtitle:g,section_content:v})}"domains"===o[h].type&&(y=(b=o[h])._source.role_name,x=l+"#"+b._source.anchor,k=b._source.name,(T="")!==b._source.docstrings&&(T=b._source.docstrings.substr(0,C)+" ..."),b.highlight&&(b.highlight["domains.docstrings"]&&(T="... "+O(b.highlight["domains.docstrings"][0])+" ..."),b.highlight["domains.name"]&&(k=O(b.highlight["domains.name"][0]))),I(p,'
    <%= domain_content %>
    ',{domain_subtitle_link:x,domain_subtitle:"["+y+"]: "+k,domain_content:T})),p.find("span").addClass("highlighted"),s.append(p),h!==o.length-1&&s.append($("
    "))}Search.output.append(s),s.slideDown(5)}t.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",t.length)):(Search.query_fallback(A),console.log("Read the Docs search failed. Falling back to Sphinx search."))}).fail(function(e){Search.query_fallback(A)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:e.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(e,t){return"success"!==t||void 0===e.responseJSON||0===e.responseJSON.count?n.reject():n.resolve(e.responseJSON)}}).fail(function(e,t,i){return n.reject()})}}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}(n.get())}}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":16}],18:[function(r,e,t){var o=r("./rtd-data");e.exports={init:function(){var e=o.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var e=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",e):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",e])}),void 0===window.SphinxRtdTheme){var t=r("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js").ThemeNav;if($(document).ready(function(){setTimeout(function(){t.navBar||t.enable()},1e3)}),e.is_rtd_like_theme()&&!$("div.wy-side-scroll:first").length){console.log("Applying theme sidebar fix...");var i=$("nav.wy-nav-side:first"),n=$("
    ").addClass("wy-side-scroll");i.children().detach().appendTo(n),n.prependTo(i),t.navBar=n}}}}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":16}],19:[function(e,t,i){var d,c=e("./constants"),u=e("./rtd-data"),n=e("bowser"),h="#ethical-ad-placement";function p(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.LEFTNAV,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_mkdocs_builder()&&d.is_rtd_like_theme()?(o="nav.wy-nav-side",e="ethical-rtd ethical-dark-theme"):d.is_rtd_like_theme()?(o="nav.wy-nav-side > div.wy-side-scroll",e="ethical-rtd ethical-dark-theme"):d.is_alabaster_like_theme()&&(o="div.sphinxsidebar > div.sphinxsidebarwrapper",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top>$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function f(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.FOOTER,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_rtd_like_theme()?(o=$("
    ").insertAfter("footer hr"),e="ethical-rtd"):d.is_alabaster_like_theme()&&(o="div.bodywrapper .body",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top<$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function g(){var e="rtd-"+(Math.random()+1).toString(36).substring(4),t=c.PROMO_TYPES.FIXED_FOOTER,i=c.DEFAULT_PROMO_PRIORITY;return n&&n.mobile&&(i=c.MAXIMUM_PROMO_PRIORITY),$("
    ").attr("id",e).appendTo("body"),{div_id:e,display_type:t,priority:i}}function m(e){this.id=e.id,this.div_id=e.div_id||"",this.html=e.html||"",this.display_type=e.display_type||"",this.view_tracking_url=e.view_url,this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",e.id):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",e.id])}}m.prototype.display=function(){var e="#"+this.div_id,t=this.view_tracking_url;$(e).html(this.html),$(e).find('a[href*="/sustainability/click/"]').on("click",this.click_handler);function i(){$.inViewport($(e),-3)&&($("").attr("src",t).css("display","none").appendTo(e),$(window).off(".rtdinview"),$(".wy-side-scroll").off(".rtdinview"))}$(window).on("DOMContentLoaded.rtdinview load.rtdinview scroll.rtdinview resize.rtdinview",i),$(".wy-side-scroll").on("scroll.rtdinview",i),$(".ethical-close").on("click",function(){return $(e).hide(),!1}),this.post_promo_display()},m.prototype.disable=function(){$("#"+this.div_id).hide()},m.prototype.post_promo_display=function(){this.display_type===c.PROMO_TYPES.FOOTER&&($("
    ").insertAfter("#"+this.div_id),$("
    ").insertBefore("#"+this.div_id+".ethical-alabaster .ethical-footer"))},t.exports={Promo:m,init:function(){var e,t,i={format:"jsonp"},n=[],r=[],o=[],s=[f,p,g],a=!1;if(d=u.get(),t=function(){var e,t="rtd-"+(Math.random()+1).toString(36).substring(4),i=c.PROMO_TYPES.LEFTNAV;return e=d.is_rtd_like_theme()?"ethical-rtd ethical-dark-theme":"ethical-alabaster",0<$(h).length?($("
    ").attr("id",t).addClass(e).appendTo(h),{div_id:t,display_type:i}):null}())n.push(t.div_id),r.push(t.display_type),o.push(t.priority||c.DEFAULT_PROMO_PRIORITY),a=!0;else{if(!d.show_promo())return;for(var l=0;l").attr("id","rtd-detection").attr("class","ethical-rtd").html(" ").appendTo("body"),0===$("#rtd-detection").height()&&(e=!0),$("#rtd-detection").remove(),e}()&&(console.log("---------------------------------------------------------------------------------------"),console.log("Read the Docs hosts documentation for tens of thousands of open source projects."),console.log("We fund our development (we are open source) and operations through advertising."),console.log("We promise to:"),console.log(" - never let advertisers run 3rd party JavaScript"),console.log(" - never sell user data to advertisers or other 3rd parties"),console.log(" - only show advertisements of interest to developers"),console.log("Read more about our approach to advertising here: https://docs.readthedocs.io/en/latest/ethical-advertising.html"),console.log("%cPlease allow our Ethical Ads or go ad-free:","font-size: 2em"),console.log("https://docs.readthedocs.io/en/latest/advertising/ad-blocking.html"),console.log("--------------------------------------------------------------------------------------"),function(){var e=p(),t=null;e&&e.div_id&&(t=$("#"+e.div_id).attr("class","keep-us-sustainable"),$("

    ").text("Support Read the Docs!").appendTo(t),$("

    ").html('Please help keep us sustainable by allowing our Ethical Ads in your ad blocker or go ad-free by subscribing.').appendTo(t),$("

    ").text("Thank you! ❤️").appendTo(t))}())}})}}},{"./constants":14,"./rtd-data":16,bowser:7}],20:[function(e,t,i){var o=e("./rtd-data");t.exports={init:function(e){var t=o.get();if(!e.is_highest){var i=window.location.pathname.replace(t.version,e.slug),n=$('

    Note

    You are not reading the most recent version of this documentation. is the latest version available.

    ');n.find("a").attr("href",i).text(e.slug);var r=$("div.body");r.length||(r=$("div.document")),r.prepend(n)}}}},{"./rtd-data":16}],21:[function(e,t,i){var n=e("./doc-embed/sponsorship"),r=e("./doc-embed/footer.js"),o=(e("./doc-embed/rtd-data"),e("./doc-embed/sphinx")),s=e("./doc-embed/search");$.extend(e("verge")),$(document).ready(function(){r.init(),o.init(),s.init(),n.init()})},{"./doc-embed/footer.js":15,"./doc-embed/rtd-data":16,"./doc-embed/search":17,"./doc-embed/sphinx":18,"./doc-embed/sponsorship":19,verge:13}]},{},[21]); +!function o(s,a,l){function d(t,e){if(!a[t]){if(!s[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(c)return c(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return d(s[t][1][e]||e)},r,r.exports,o,s,a,l)}return a[t].exports}for(var c="function"==typeof require&&require,e=0;e
    "),i("table.docutils.footnote").wrap("
    "),i("table.docutils.citation").wrap("
    "),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var t=i(this);expand=i(''),expand.on("click",function(e){return n.toggleCurrent(t),e.stopPropagation(),!1}),t.prepend(expand)})},reset:function(){var e=encodeURI(window.location.hash)||"#";try{var t=$(".wy-menu-vertical"),i=t.find('[href="'+e+'"]');if(0===i.length){var n=$('.document [id="'+e.substring(1)+'"]').closest("div.section");0===(i=t.find('[href="#'+n.attr("id")+'"]')).length&&(i=t.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=e)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:t.exports.ThemeNav,StickyNav:t.exports.ThemeNav}),function(){for(var o=0,e=["ms","moz","webkit","o"],t=0;t/g,u=/"/g,h=/"/g,p=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,w=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(u,""")}function _(e){return e.replace(h,'"')}function y(e){return e.replace(p,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function x(e){return e.replace(f,":").replace(g," ")}function k(e){for(var t="",i=0,n=e.length;i/g;i.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},i.getDefaultWhiteList=o,i.onTag=function(e,t,i){},i.onIgnoreTag=function(e,t,i){},i.onTagAttr=function(e,t,i){},i.onIgnoreTagAttr=function(e,t,i){},i.safeAttrValue=function(e,t,i,n){if(i=T(i),"href"===t||"src"===t){if("#"===(i=c.trim(i)))return"#";if("http://"!==i.substr(0,7)&&"https://"!==i.substr(0,8)&&"mailto:"!==i.substr(0,7)&&"tel:"!==i.substr(0,4)&&"#"!==i[0]&&"/"!==i[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(i))return""}else if("style"===t){if(v.lastIndex=0,v.test(i))return"";if(w.lastIndex=0,w.test(i)&&(m.lastIndex=0,m.test(i)))return"";!1!==n&&(i=(n=n||s).process(i))}return i=E(i)},i.escapeHtml=a,i.escapeQuote=b,i.unescapeQuote=_,i.escapeHtmlEntities=y,i.escapeDangerHtml5Entities=x,i.clearNonPrintableCharacter=k,i.friendlyAttrValue=T,i.escapeAttrValue=E,i.onIgnoreTagStripAll=function(){return""},i.StripTagBody=function(o,s){"function"!=typeof s&&(s=function(){});var a=!Array.isArray(o),l=[],d=!1;return{onIgnoreTag:function(e,t,i){if(function(e){return a||-1!==c.indexOf(o,e)}(e)){if(i.isClosing){var n="[/removed]",r=i.position+n.length;return l.push([!1!==d?d:i.position,r]),d=!1,n}return d||(d=i.position),"[removed]"}return s(e,t,i)},remove:function(t){var i="",n=0;return c.forEach(l,function(e){i+=t.slice(n,e[0]),n=e[1]}),i+=t.slice(n)}}},i.stripCommentTag=function(e){return e.replace(A,"")},i.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},i.cssFilter=s,i.getDefaultCSSWhiteList=r},{"./util":5,cssfilter:10}],3:[function(e,t,i){var n=e("./default"),r=e("./parser"),o=e("./xss");for(var s in(i=t.exports=function(e,t){return new o(t).process(e)}).FilterXSS=o,n)i[s]=n[s];for(var s in r)i[s]=r[s];"undefined"!=typeof window&&(window.filterXSS=t.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(e,t,i){var c=e("./util");function h(e){var t=c.spaceIndex(e);if(-1===t)var i=e.slice(1,-1);else i=e.slice(1,t+1);return"/"===(i=c.trim(i).toLowerCase()).slice(0,1)&&(i=i.slice(1)),"/"===i.slice(-1)&&(i=i.slice(0,-1)),i}var u=/[^a-zA-Z0-9_:\.\-]/gim;function p(e,t){for(;t"===u){n+=i(e.slice(r,o)),c=h(d=e.slice(o,a+1)),n+=t(o,n.length,c,d,"";var a=function(e){var t=b.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var i="/"===(e=b.trim(e.slice(t+1,-1)))[e.length-1];return i&&(e=b.trim(e.slice(0,-1))),{html:e,closing:i}}(i),l=c[r],d=w(a.html,function(e,t){var i,n=-1!==b.indexOf(l,e);return _(i=p(r,e,t,n))?n?(t=g(r,e,t,v))?e+'="'+t+'"':e:_(i=f(r,e,t,n))?void 0:i:i});i="<"+r;return d&&(i+=" "+d),a.closing&&(i+=" /"),i+=">"}return _(o=h(r,i,s))?m(i):o},m);return i&&(n=i.remove(n)),n},t.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:10}],7:[function(e,t,i){var n,r;n=this,r=function(){var T=!0;function s(i){function e(e){var t=i.match(e);return t&&1t[1][i])return 1;if(t[0][i]!==t[1][i])return-1;if(0===i)return 0}}function o(e,t,i){var n=a;"string"==typeof t&&(i=t,t=void 0),void 0===t&&(t=!1),i&&(n=s(i));var r=""+n.version;for(var o in e)if(e.hasOwnProperty(o)&&n[o]){if("string"!=typeof e[o])throw new Error("Browser version in the minVersion map should be a string: "+o+": "+String(e));return E([r,e[o]])<0}return t}return a.test=function(e){for(var t=0;t'),a=n.title;!r||r.title&&(a=O(r.title[0]));var l=n.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX,d=$("",{href:l});if(d.html(a),d.find("span").addClass("highlighted"),s.append(d),n.project!==S){var c=" (from project "+n.project+")",u=$("",{text:c});s.append(u)}for(var h=0;h'),f="",g="",m="",v="",w="",b="",y="",x="",k="",T="";if("sections"===o[h].type){if(g=(f=o[h])._source.title,m=l+"#"+f._source.id,v=[f._source.content.substr(0,C)+" ..."],f.highlight&&(f.highlight["sections.title"]&&(g=O(f.highlight["sections.title"][0])),f.highlight["sections.content"])){w=f.highlight["sections.content"],v=[];for(var E=0;E<%= section_subtitle %>
    <% for (var i = 0; i < section_content.length; ++i) { %>
    <%= section_content[i] %>
    <% } %>',{section_subtitle_link:m,section_subtitle:g,section_content:v})}"domains"===o[h].type&&(y=(b=o[h])._source.role_name,x=l+"#"+b._source.anchor,k=b._source.name,(T="")!==b._source.docstrings&&(T=b._source.docstrings.substr(0,C)+" ..."),b.highlight&&(b.highlight["domains.docstrings"]&&(T="... "+O(b.highlight["domains.docstrings"][0])+" ..."),b.highlight["domains.name"]&&(k=O(b.highlight["domains.name"][0]))),I(p,'
    <%= domain_content %>
    ',{domain_subtitle_link:x,domain_subtitle:"["+y+"]: "+k,domain_content:T})),p.find("span").addClass("highlighted"),s.append(p),h!==o.length-1&&s.append($("
    "))}Search.output.append(s),s.slideDown(5)}t.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",t.length)):(Search.query_fallback(A),console.log("Read the Docs search failed. Falling back to Sphinx search."))}).fail(function(e){Search.query_fallback(A)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:e.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(e,t){return"success"!==t||void 0===e.responseJSON||0===e.responseJSON.count?n.reject():n.resolve(e.responseJSON)}}).fail(function(e,t,i){return n.reject()})}}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}(n.get())}}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":16}],18:[function(r,e,t){var o=r("./rtd-data");e.exports={init:function(){var e=o.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var e=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",e):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",e])}),void 0===window.SphinxRtdTheme){var t=r("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js").ThemeNav;if($(document).ready(function(){setTimeout(function(){t.navBar||t.enable()},1e3)}),e.is_rtd_like_theme()&&!$("div.wy-side-scroll:first").length){console.log("Applying theme sidebar fix...");var i=$("nav.wy-nav-side:first"),n=$("
    ").addClass("wy-side-scroll");i.children().detach().appendTo(n),n.prependTo(i),t.navBar=n}}}}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":16}],19:[function(e,t,i){var d,c=e("./constants"),u=e("./rtd-data"),n=e("bowser"),h="#ethical-ad-placement";function p(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.LEFTNAV,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_mkdocs_builder()&&d.is_rtd_like_theme()?(o="nav.wy-nav-side",e="ethical-rtd ethical-dark-theme"):d.is_rtd_like_theme()?(o="nav.wy-nav-side > div.wy-side-scroll",e="ethical-rtd ethical-dark-theme"):d.is_alabaster_like_theme()&&(o="div.sphinxsidebar > div.sphinxsidebarwrapper",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top>$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function f(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.FOOTER,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_rtd_like_theme()?(o=$("
    ").insertAfter("footer hr"),e="ethical-rtd"):d.is_alabaster_like_theme()&&(o="div.bodywrapper .body",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top<$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function g(){var e="rtd-"+(Math.random()+1).toString(36).substring(4),t=c.PROMO_TYPES.FIXED_FOOTER,i=c.DEFAULT_PROMO_PRIORITY;return n&&n.mobile&&(i=c.MAXIMUM_PROMO_PRIORITY),$("
    ").attr("id",e).appendTo("body"),{div_id:e,display_type:t,priority:i}}function m(e){this.id=e.id,this.div_id=e.div_id||"",this.html=e.html||"",this.display_type=e.display_type||"",this.view_tracking_url=e.view_url,this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",e.id):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",e.id])}}m.prototype.display=function(){var e="#"+this.div_id,t=this.view_tracking_url;$(e).html(this.html),$(e).find('a[href*="/sustainability/click/"]').on("click",this.click_handler);function i(){$.inViewport($(e),-3)&&($("").attr("src",t).css("display","none").appendTo(e),$(window).off(".rtdinview"),$(".wy-side-scroll").off(".rtdinview"))}$(window).on("DOMContentLoaded.rtdinview load.rtdinview scroll.rtdinview resize.rtdinview",i),$(".wy-side-scroll").on("scroll.rtdinview",i),$(".ethical-close").on("click",function(){return $(e).hide(),!1}),this.post_promo_display()},m.prototype.disable=function(){$("#"+this.div_id).hide()},m.prototype.post_promo_display=function(){this.display_type===c.PROMO_TYPES.FOOTER&&($("
    ").insertAfter("#"+this.div_id),$("
    ").insertBefore("#"+this.div_id+".ethical-alabaster .ethical-footer"))},t.exports={Promo:m,init:function(){var e,t,i={format:"jsonp"},n=[],r=[],o=[],s=[f,p,g],a=!1;if(d=u.get(),t=function(){var e,t="rtd-"+(Math.random()+1).toString(36).substring(4),i=c.PROMO_TYPES.LEFTNAV;return e=d.is_rtd_like_theme()?"ethical-rtd ethical-dark-theme":"ethical-alabaster",0<$(h).length?($("
    ").attr("id",t).addClass(e).appendTo(h),{div_id:t,display_type:i}):null}())n.push(t.div_id),r.push(t.display_type),o.push(t.priority||c.DEFAULT_PROMO_PRIORITY),a=!0;else{if(!d.show_promo())return;for(var l=0;l").attr("id","rtd-detection").attr("class","ethical-rtd").html(" ").appendTo("body"),0===$("#rtd-detection").height()&&(e=!0),$("#rtd-detection").remove(),e}()&&(console.log("---------------------------------------------------------------------------------------"),console.log("Read the Docs hosts documentation for tens of thousands of open source projects."),console.log("We fund our development (we are open source) and operations through advertising."),console.log("We promise to:"),console.log(" - never let advertisers run 3rd party JavaScript"),console.log(" - never sell user data to advertisers or other 3rd parties"),console.log(" - only show advertisements of interest to developers"),console.log("Read more about our approach to advertising here: https://docs.readthedocs.io/en/latest/ethical-advertising.html"),console.log("%cPlease allow our Ethical Ads or go ad-free:","font-size: 2em"),console.log("https://docs.readthedocs.io/en/latest/advertising/ad-blocking.html"),console.log("--------------------------------------------------------------------------------------"),function(){var e=p(),t=null;e&&e.div_id&&(t=$("#"+e.div_id).attr("class","keep-us-sustainable"),$("

    ").text("Support Read the Docs!").appendTo(t),$("

    ").html('Please help keep us sustainable by allowing our Ethical Ads in your ad blocker or go ad-free by subscribing.').appendTo(t),$("

    ").text("Thank you! ❤️").appendTo(t))}())}})}}},{"./constants":14,"./rtd-data":16,bowser:7}],20:[function(e,t,i){var o=e("./rtd-data");t.exports={init:function(e){var t=o.get();if(!e.is_highest){var i=window.location.pathname.replace(t.version,e.slug),n=$('

    Note

    You are not reading the most recent version of this documentation. is the latest version available.

    ');n.find("a").attr("href",i).text(e.slug);var r=$("div.body");r.length||(r=$("div.document")),r.prepend(n)}}}},{"./rtd-data":16}],21:[function(e,t,i){var n=e("./doc-embed/sponsorship"),r=e("./doc-embed/footer.js"),o=(e("./doc-embed/rtd-data"),e("./doc-embed/sphinx")),s=e("./doc-embed/search");$.extend(e("verge")),$(document).ready(function(){r.init(),o.init(),s.init(),n.init()})},{"./doc-embed/footer.js":15,"./doc-embed/rtd-data":16,"./doc-embed/search":17,"./doc-embed/sphinx":18,"./doc-embed/sponsorship":19,verge:13}]},{},[21]); \ No newline at end of file From 8dc97a7ba4beda2cd19efb7b77c26603535b326f Mon Sep 17 00:00:00 2001 From: Maksudul Haque Date: Wed, 4 Sep 2019 01:10:04 +0600 Subject: [PATCH 20/71] Update docs/guides/autobuild-docs-for-pull-requests.rst Co-Authored-By: Manuel Kaufmann --- docs/guides/autobuild-docs-for-pull-requests.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/autobuild-docs-for-pull-requests.rst b/docs/guides/autobuild-docs-for-pull-requests.rst index 9f5cd14e352..964e4c56a79 100644 --- a/docs/guides/autobuild-docs-for-pull-requests.rst +++ b/docs/guides/autobuild-docs-for-pull-requests.rst @@ -8,7 +8,7 @@ So, you can enable this feature by sending us an `email Date: Wed, 4 Sep 2019 01:10:13 +0600 Subject: [PATCH 21/71] Update docs/guides/autobuild-docs-for-pull-requests.rst Co-Authored-By: Manuel Kaufmann --- docs/guides/autobuild-docs-for-pull-requests.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/guides/autobuild-docs-for-pull-requests.rst b/docs/guides/autobuild-docs-for-pull-requests.rst index 964e4c56a79..1d9f7678454 100644 --- a/docs/guides/autobuild-docs-for-pull-requests.rst +++ b/docs/guides/autobuild-docs-for-pull-requests.rst @@ -10,7 +10,7 @@ Features - **Build on Pull/Merge Request Event:** We create an external version and trigger a build for that version when we receive pull/merge request open event from the webhook. - We also trigger a new build when a new commit has been added to the Pull/Merge Request. + We also trigger a new build when a new commit has been pushed to the Pull/Merge Request. - **Warning Banner for Pull/Merge Request Documentation:** While building documentation for pull/merge requests we add a warning banner at the top of those documentations to let the users know that From 9df9de7994878e12c30772cfc8b0ea0c349c3121 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Wed, 4 Sep 2019 01:26:27 +0600 Subject: [PATCH 22/71] small changes from suggestions --- docs/guides/autobuild-docs-for-pull-requests.rst | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/guides/autobuild-docs-for-pull-requests.rst b/docs/guides/autobuild-docs-for-pull-requests.rst index 1d9f7678454..acb088596bc 100644 --- a/docs/guides/autobuild-docs-for-pull-requests.rst +++ b/docs/guides/autobuild-docs-for-pull-requests.rst @@ -35,20 +35,18 @@ Troubleshooting After the feature is enabled on your project if everything does not work as expected, some common causes might be: -1. Project repository should be from GitHub or GitLab. This feature is only available for GitHub or GitLab. - So, if your projects provider is not GitHub or GitLab This feature will not work. +#. Project repository should be from GitHub or GitLab. This feature is only available for GitHub or GitLab. -2. Social Account (GitHub, Gitlab) is not connected with Read the Docs account. - if your project repository provider is GitHub or GitLab you need to make sure +#. Social Account (GitHub, Gitlab) is not connected with Read the Docs account. + If your project repository provider is GitHub or GitLab you need to make sure that you Read the Docs account is connected with that providers social account. - you can check this by going to your `profile settings`_. + You can check this by going to your `profile settings`_. -3. Webhook is not properly setup. You need to make sure your webhook is properly setup - to handle events. you can setup or ``re-sync`` the webhook from you projects admin dashboard. +#. Webhook is not properly setup. You need to make sure your webhook is properly setup + to handle events. You can setup or ``re-sync`` the webhook from you projects admin dashboard. Learn more about setting up webhooks from our :doc:`Webhook Documentation `. If you have tried all the above troubleshooting and still getting issues, -please let us know by opening an `issue`_ on our GitHub Repository. +please let us know by sending us an `email `_. .. _profile settings: https://readthedocs.org/accounts/social/connections/ -.. _issue: https://github.com/readthedocs/readthedocs.org/issues/new From 3eab8dd7bf5d39d1b53529d26eeb31f0cc3d5ac6 Mon Sep 17 00:00:00 2001 From: Eric Holscher <25510+ericholscher@users.noreply.github.com> Date: Wed, 4 Sep 2019 08:41:06 -0700 Subject: [PATCH 23/71] Fix link to html_extra_path This should probably use intersphinx, but keeping it small for now. --- docs/faq.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/faq.rst b/docs/faq.rst index 1bb20dd8bbc..0da3b29568a 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -276,7 +276,7 @@ Depending if you are using Sphinx or MkDocs, you will need a different configura Sphinx ~~~~~~ -Sphinx uses `html_extra`_ option to add static files to the output. +Sphinx uses `html_extra_path`_ option to add static files to the output. You need to create a ``robots.txt`` file and put it under the path defined in ``html_extra``. @@ -287,5 +287,5 @@ MkDocs needs the ``robots.txt`` to be at the directory defined at `docs_dir`_ co .. _Google's docs: https://support.google.com/webmasters/answer/6062608 -.. _html_extra: https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_extra_path +.. _html_extra_path: https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_extra_path .. _docs_dir: https://www.mkdocs.org/user-guide/configuration/#docs_dir From 67989ca7fa330bb4be2ac479c2fa91602d32d890 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 4 Sep 2019 08:50:10 -0700 Subject: [PATCH 24/71] Fix IntegrationAdmin with raw_id_fields for Projects --- readthedocs/integrations/admin.py | 1 + 1 file changed, 1 insertion(+) diff --git a/readthedocs/integrations/admin.py b/readthedocs/integrations/admin.py index 1b27ed8f5c8..0d02eb145de 100644 --- a/readthedocs/integrations/admin.py +++ b/readthedocs/integrations/admin.py @@ -89,6 +89,7 @@ class IntegrationAdmin(admin.ModelAdmin): instead just links to the queryset. """ + raw_id_fields = ('project',) search_fields = ('project__slug', 'project__name') readonly_fields = ['exchanges'] From 6dec803557afd94a7a82976802b5fb7370ec59d5 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 4 Sep 2019 16:34:09 -0700 Subject: [PATCH 25/71] Update FAQ entry to be more correct --- docs/faq.rst | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/faq.rst b/docs/faq.rst index 0da3b29568a..a6dc49871fa 100644 --- a/docs/faq.rst +++ b/docs/faq.rst @@ -257,7 +257,7 @@ To accomplish this, you can add a ``robots.txt`` file to your documentation's ro Minimal example of ``robots.txt`` -+++++++++++++++++++++++++++++++++ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :: @@ -270,22 +270,28 @@ Minimal example of ``robots.txt`` See `Google's docs`_ for its full syntax. This file has to be served as is under ``/robots.txt``. -Depending if you are using Sphinx or MkDocs, you will need a different configuration for this. +Setup +~~~~~ + +The ``robots.txt`` file will be served from the **default version** of your Project. +This is because the ``robots.txt`` file is served at the top-level of your domain, +so we must choose a version to find the file in. +The **default version** is the best place to look for it. + +Sphinx and Mkdocs both have different ways of outputting static files in the build: Sphinx -~~~~~~ +++++++ Sphinx uses `html_extra_path`_ option to add static files to the output. -You need to create a ``robots.txt`` file and put it under the path defined in ``html_extra``. - +You need to create a ``robots.txt`` file and put it under the path defined in ``html_extra_path``. MkDocs -~~~~~~ +++++++ MkDocs needs the ``robots.txt`` to be at the directory defined at `docs_dir`_ config. - .. _Google's docs: https://support.google.com/webmasters/answer/6062608 .. _html_extra_path: https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_extra_path .. _docs_dir: https://www.mkdocs.org/user-guide/configuration/#docs_dir From dc173397476c514c116f52d5b9439535a252dac7 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 04:47:32 +0600 Subject: [PATCH 26/71] fix Integration resync bug --- readthedocs/oauth/services/bitbucket.py | 2 +- readthedocs/oauth/services/github.py | 21 +++++++++++++++++++-- readthedocs/oauth/services/gitlab.py | 23 +++++++++++++++++++++-- 3 files changed, 41 insertions(+), 5 deletions(-) diff --git a/readthedocs/oauth/services/bitbucket.py b/readthedocs/oauth/services/bitbucket.py index 5af74cf2a12..df4d3ebcfeb 100644 --- a/readthedocs/oauth/services/bitbucket.py +++ b/readthedocs/oauth/services/bitbucket.py @@ -308,7 +308,7 @@ def update_webhook(self, project, integration): # Bitbucket returns 404 when the webhook doesn't exist. In this # case, we call ``setup_webhook`` to re-configure it from scratch if resp.status_code == 404: - return self.setup_webhook(project) + return self.setup_webhook(project, integration) # Catch exceptions with request or deserializing JSON except (KeyError, RequestException, TypeError, ValueError): diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index c5b1f2de8ce..133e8ba60c2 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -221,6 +221,7 @@ def setup_webhook(self, project, integration=None): data=data, headers={'content-type': 'application/json'}, ) + # GitHub will return 200 if already synced if resp.status_code in [200, 201]: recv_data = resp.json() @@ -244,11 +245,17 @@ def setup_webhook(self, project, integration=None): return (False, resp) # Catch exceptions with request or deserializing JSON except (RequestException, ValueError): + integration.secret = None + integration.save() + log.exception( 'GitHub webhook creation failed for project: %s', project, ) else: + integration.secret = None + integration.save() + log.error( 'GitHub webhook creation failed for project: %s', project, @@ -287,6 +294,7 @@ def update_webhook(self, project, integration): data=data, headers={'content-type': 'application/json'}, ) + # GitHub will return 200 if already synced if resp.status_code in [200, 201]: recv_data = resp.json() @@ -301,16 +309,25 @@ def update_webhook(self, project, integration): # GitHub returns 404 when the webhook doesn't exist. In this case, # we call ``setup_webhook`` to re-configure it from scratch if resp.status_code == 404: - return self.setup_webhook(project) + return self.setup_webhook(project, integration) + except AttributeError: + # We get AttributeError when the provider_data does not have anything + # it only happens if the webhook attachment was not successful in the first place + return self.setup_webhook(project, integration) # Catch exceptions with request or deserializing JSON - except (AttributeError, RequestException, ValueError): + except (RequestException, ValueError): log.exception( 'GitHub webhook update failed for project: %s', project, ) + # Set the secret to None so that the integration can be used manually. + integration.secret = None + integration.save() return (False, resp) else: + integration.secret = None + integration.save() log.error( 'GitHub webhook update failed for project: %s', project, diff --git a/readthedocs/oauth/services/gitlab.py b/readthedocs/oauth/services/gitlab.py index c22202375f2..4592c9ea217 100644 --- a/readthedocs/oauth/services/gitlab.py +++ b/readthedocs/oauth/services/gitlab.py @@ -304,6 +304,7 @@ def setup_webhook(self, project, integration=None): data=data, headers={'content-type': 'application/json'}, ) + if resp.status_code == 201: integration.provider_data = resp.json() integration.save() @@ -325,12 +326,18 @@ def setup_webhook(self, project, integration=None): return (False, resp) except (RequestException, ValueError): + integration.secret = None + integration.save() + log.exception( 'GitLab webhook creation failed for project: %s', project, ) return (False, resp) else: + integration.secret = None + integration.save() + log.error( 'GitLab webhook creation failed for project: %s', project, @@ -360,9 +367,10 @@ def update_webhook(self, project, integration): integration.recreate_secret() data = self.get_webhook_data(repo_id, project, integration) - hook_id = integration.provider_data.get('id') + resp = None try: + hook_id = integration.provider_data.get('id') resp = session.put( '{url}/api/v4/projects/{repo_id}/hooks/{hook_id}'.format( url=self.adapter.provider_base_url, @@ -372,6 +380,7 @@ def update_webhook(self, project, integration): data=data, headers={'content-type': 'application/json'}, ) + if resp.status_code == 200: recv_data = resp.json() integration.provider_data = recv_data @@ -385,15 +394,25 @@ def update_webhook(self, project, integration): # GitLab returns 404 when the webhook doesn't exist. In this case, # we call ``setup_webhook`` to re-configure it from scratch if resp.status_code == 404: - return self.setup_webhook(project) + return self.setup_webhook(project, integration) + except AttributeError: + # We get AttributeError when the provider_data does not have anything + # it only happens if the webhook attachment was not successful in the first place + return self.setup_webhook(project, integration) # Catch exceptions with request or deserializing JSON except (RequestException, ValueError): + integration.secret = None + integration.save() + log.exception( 'GitLab webhook update failed for project: %s', project, ) else: + integration.secret = None + integration.save() + log.error( 'GitLab webhook update failed for project: %s', project, From 00c110ac44476bbaef618bafda8465c4a1482a50 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 18:00:12 +0600 Subject: [PATCH 27/71] add remove_secret method --- readthedocs/integrations/models.py | 4 ++++ readthedocs/oauth/services/github.py | 15 +++++---------- readthedocs/oauth/services/gitlab.py | 19 +++++++------------ 3 files changed, 16 insertions(+), 22 deletions(-) diff --git a/readthedocs/integrations/models.py b/readthedocs/integrations/models.py index 55059853e55..bef588535ec 100644 --- a/readthedocs/integrations/models.py +++ b/readthedocs/integrations/models.py @@ -274,6 +274,10 @@ def recreate_secret(self): self.secret = get_secret() self.save(update_fields=['secret']) + def remove_secret(self): + self.secret = None + self.save(update_fields=['secret']) + def __str__(self): return ( _('{0} for {1}') diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index 133e8ba60c2..c8d0d3eb938 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -240,21 +240,18 @@ def setup_webhook(self, project, integration=None): project, ) # Set the secret to None so that the integration can be used manually. - integration.secret = None - integration.save() + integration.remove_secret() return (False, resp) # Catch exceptions with request or deserializing JSON except (RequestException, ValueError): - integration.secret = None - integration.save() + integration.remove_secret() log.exception( 'GitHub webhook creation failed for project: %s', project, ) else: - integration.secret = None - integration.save() + integration.remove_secret() log.error( 'GitHub webhook creation failed for project: %s', @@ -322,12 +319,10 @@ def update_webhook(self, project, integration): project, ) # Set the secret to None so that the integration can be used manually. - integration.secret = None - integration.save() + integration.remove_secret() return (False, resp) else: - integration.secret = None - integration.save() + integration.remove_secret() log.error( 'GitHub webhook update failed for project: %s', project, diff --git a/readthedocs/oauth/services/gitlab.py b/readthedocs/oauth/services/gitlab.py index 4592c9ea217..2ac9f7a011d 100644 --- a/readthedocs/oauth/services/gitlab.py +++ b/readthedocs/oauth/services/gitlab.py @@ -288,8 +288,7 @@ def setup_webhook(self, project, integration=None): repo_id = self._get_repo_id(project) if repo_id is None: # Set the secret to None so that the integration can be used manually. - integration.secret = None - integration.save() + integration.remove_secret() return (False, None) data = self.get_webhook_data(repo_id, project, integration) @@ -321,13 +320,12 @@ def setup_webhook(self, project, integration=None): project, ) # Set the secret to None so that the integration can be used manually. - integration.secret = None - integration.save() + integration.remove_secret() + return (False, resp) except (RequestException, ValueError): - integration.secret = None - integration.save() + integration.remove_secret() log.exception( 'GitLab webhook creation failed for project: %s', @@ -335,8 +333,7 @@ def setup_webhook(self, project, integration=None): ) return (False, resp) else: - integration.secret = None - integration.save() + integration.remove_secret() log.error( 'GitLab webhook creation failed for project: %s', @@ -402,16 +399,14 @@ def update_webhook(self, project, integration): return self.setup_webhook(project, integration) # Catch exceptions with request or deserializing JSON except (RequestException, ValueError): - integration.secret = None - integration.save() + integration.remove_secret() log.exception( 'GitLab webhook update failed for project: %s', project, ) else: - integration.secret = None - integration.save() + integration.remove_secret() log.error( 'GitLab webhook update failed for project: %s', From 35faa9a22990baa0d2be8265259060614250c84e Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 18:41:35 +0600 Subject: [PATCH 28/71] Update Integration details page messsage --- .../templates/projects/integration_webhook_detail.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readthedocs/templates/projects/integration_webhook_detail.html b/readthedocs/templates/projects/integration_webhook_detail.html index d8911172884..b7d3c3292d8 100644 --- a/readthedocs/templates/projects/integration_webhook_detail.html +++ b/readthedocs/templates/projects/integration_webhook_detail.html @@ -20,7 +20,7 @@

    {% blocktrans trimmed %} This webhook was configured when this project was imported - or it was automatically created with the correct configuration. If this + or it was manually created with the correct configuration. If this integration is not functioning correctly, try re-syncing the webhook: {% endblocktrans %}

    @@ -40,7 +40,7 @@ {% if integration.has_sync and not integration.can_sync %}

    {% blocktrans trimmed %} - This webhook was created automatically from an existing webhook + This webhook was created automatically or manually from an existing webhook configured on your repository. If this integration is not functioning correctly, you can try re-syncing it. Otherwise you'll need to update the configuration on your repository. From 9271ed413355145ede2e406d7c19383d2c19a8d6 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 19:29:10 +0600 Subject: [PATCH 29/71] GitHub setup_webhook and update_webhook tests added --- readthedocs/rtd_tests/tests/test_oauth.py | 117 ++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index a2e4f07f9f7..aa61ee635b7 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -9,6 +9,7 @@ from readthedocs.builds.constants import EXTERNAL, BUILD_STATUS_SUCCESS from readthedocs.builds.models import Version, Build +from readthedocs.integrations.models import GitHubWebhook from readthedocs.oauth.models import RemoteOrganization, RemoteRepository from readthedocs.oauth.services import ( BitbucketService, @@ -34,6 +35,13 @@ def setUp(self): self.external_build = get( Build, project=self.project, version=self.external_version ) + self.integration = get( + GitHubWebhook, + project=self.project, + provider_data={ + 'url': 'https://github.com/' + } + ) def test_make_project_pass(self): repo_json = { @@ -216,6 +224,115 @@ def test_make_private_project(self): repo = self.service.create_repository(repo_json, organization=self.org) self.assertIsNotNone(repo) + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_setup_webhook_successful(self, session, mock_logger): + session().post.return_value.status_code = 201 + session().post.return_value.json.return_value = {} + success, _ = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertTrue(success) + self.assertTrue(self.integration.secret) + mock_logger.info.assert_called_with( + "GitHub webhook creation successful for project: %s", + self.project, + ) + + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_setup_webhook_404_error(self, session, mock_logger): + session().post.return_value.status_code = 404 + success, _ = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertFalse(success) + self.assertFalse(self.integration.secret) + mock_logger.info.assert_called_with( + 'GitHub project does not exist or user does not have ' + 'permissions: project=%s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_setup_webhook_value_error(self, session, mock_logger): + session().post.side_effect = ValueError + success = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertFalse(self.integration.secret) + mock_logger.exception.assert_called_with( + 'GitHub webhook creation failed for project: %s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_update_webhook_successful(self, session, mock_logger): + session().patch.return_value.status_code = 201 + session().patch.return_value.json.return_value = {} + success, _ = self.service.update_webhook( + self.project, + self.integration + ) + + self.assertTrue(success) + self.assertTrue(self.integration.secret) + mock_logger.info.assert_called_with( + "GitHub webhook creation successful for project: %s", + self.project, + ) + + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + @mock.patch('readthedocs.oauth.services.github.GitHubService.setup_webhook') + def test_update_webhook_404_error(self, setup_webhook, session): + session().patch.return_value.status_code = 404 + self.service.update_webhook( + self.project, + self.integration + ) + + setup_webhook.assert_called_once_with( + self.project, + self.integration + ) + + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + @mock.patch('readthedocs.oauth.services.github.GitHubService.setup_webhook') + def test_update_webhook_attribute_error(self, setup_webhook, session): + session().patch.side_effect = AttributeError + self.service.update_webhook( + self.project, + self.integration + ) + + setup_webhook.assert_called_once_with( + self.project, + self.integration + ) + + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_update_webhook_value_error(self, session, mock_logger): + session().patch.side_effect = ValueError + self.service.update_webhook( + self.project, + self.integration + ) + + self.assertFalse(self.integration.secret) + mock_logger.exception.assert_called_with( + 'GitHub webhook update failed for project: %s', + self.project, + ) + class BitbucketOAuthTests(TestCase): From c19128a00a2081d5d3c40d3ef345ae697b2c47d4 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 20:03:51 +0600 Subject: [PATCH 30/71] GitLab setup_webhook and update_webhook tests added --- readthedocs/oauth/services/github.py | 4 +- readthedocs/rtd_tests/tests/test_oauth.py | 137 +++++++++++++++++++++- 2 files changed, 133 insertions(+), 8 deletions(-) diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index c8d0d3eb938..64ff748acf3 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -298,7 +298,7 @@ def update_webhook(self, project, integration): integration.provider_data = recv_data integration.save() log.info( - 'GitHub webhook creation successful for project: %s', + 'GitHub webhook update successful for project: %s', project, ) return (True, resp) @@ -332,7 +332,7 @@ def update_webhook(self, project, integration): except ValueError: debug_data = resp.content log.debug( - 'GitHub webhook creation failure response: %s', + 'GitHub webhook update failure response: %s', debug_data, ) return (False, resp) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index aa61ee635b7..57a1472ceb9 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -9,7 +9,11 @@ from readthedocs.builds.constants import EXTERNAL, BUILD_STATUS_SUCCESS from readthedocs.builds.models import Version, Build -from readthedocs.integrations.models import GitHubWebhook +from readthedocs.integrations.models import ( + GitHubWebhook, + GitLabWebhook, + BitbucketWebhook +) from readthedocs.oauth.models import RemoteOrganization, RemoteRepository from readthedocs.oauth.services import ( BitbucketService, @@ -605,6 +609,8 @@ def setUp(self): self.client.login(username='eric', password='test') self.user = User.objects.get(pk=1) self.project = Project.objects.get(slug='pip') + self.project.repo = 'https://gitlab.com/testorga/testrepo' + self.project.save() self.org = RemoteOrganization.objects.create(slug='testorga', json='') self.privacy = self.project.version_privacy_level self.service = GitLabService(user=self.user, account=None) @@ -612,6 +618,13 @@ def setUp(self): self.external_build = get( Build, project=self.project, version=self.external_version ) + self.integration = get( + GitLabWebhook, + project=self.project, + provider_data={ + 'id': '999999999' + } + ) def get_private_repo_data(self): """Manipulate repo response data to get private repo data.""" @@ -685,11 +698,6 @@ def test_make_private_project(self): repo = self.service.create_repository(data, organization=self.org) self.assertIsNotNone(repo) - def test_setup_webhook(self): - success, response = self.service.setup_webhook(self.project) - self.assertFalse(success) - self.assertIsNone(response) - @mock.patch('readthedocs.oauth.services.gitlab.log') @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') @mock.patch('readthedocs.oauth.services.gitlab.GitLabService._get_repo_id') @@ -746,3 +754,120 @@ def test_send_build_status_value_error(self, repo_id, session, mock_logger): 'GitLab commit status creation failed for project: %s', self.project, ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + def test_setup_webhook_successful(self, session, mock_logger): + session().post.return_value.status_code = 201 + session().post.return_value.json.return_value = {} + success, _ = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertTrue(success) + self.assertTrue(self.integration.secret) + mock_logger.info.assert_called_with( + "GitLab webhook creation successful for project: %s", + self.project, + ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + def test_setup_webhook_404_error(self, session, mock_logger): + session().post.return_value.status_code = 404 + success, _ = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertFalse(success) + self.assertFalse(self.integration.secret) + mock_logger.info.assert_called_with( + 'Gitlab project does not exist or user does not have ' + 'permissions: project=%s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + def test_setup_webhook_value_error(self, session, mock_logger): + session().post.side_effect = ValueError + success = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertFalse(self.integration.secret) + mock_logger.exception.assert_called_with( + 'GitLab webhook creation failed for project: %s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService._get_repo_id') + def test_update_webhook_successful(self, repo_id, session, mock_logger): + repo_id.return_value = '9999' + session().put.return_value.status_code = 200 + session().put.return_value.json.return_value = {} + success, _ = self.service.update_webhook( + self.project, + self.integration + ) + + self.assertTrue(success) + self.assertTrue(self.integration.secret) + mock_logger.info.assert_called_with( + "GitLab webhook update successful for project: %s", + self.project, + ) + + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.setup_webhook') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService._get_repo_id') + def test_update_webhook_404_error(self, repo_id, setup_webhook, session): + repo_id.return_value = '9999' + session().put.return_value.status_code = 404 + self.service.update_webhook( + self.project, + self.integration + ) + + setup_webhook.assert_called_once_with( + self.project, + self.integration + ) + + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.setup_webhook') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService._get_repo_id') + def test_update_webhook_attribute_error(self, repo_id, setup_webhook, session): + repo_id.return_value = '9999' + session().put.side_effect = AttributeError + self.service.update_webhook( + self.project, + self.integration + ) + + setup_webhook.assert_called_once_with( + self.project, + self.integration + ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService._get_repo_id') + def test_update_webhook_value_error(self, repo_id, session, mock_logger): + repo_id.return_value = '9999' + session().put.side_effect = ValueError + self.service.update_webhook( + self.project, + self.integration + ) + + self.assertFalse(self.integration.secret) + mock_logger.exception.assert_called_with( + 'GitLab webhook update failed for project: %s', + self.project, + ) From 557fd4bd4e5af342f6dab6e53a8dae68b046c8ea Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 20:20:30 +0600 Subject: [PATCH 31/71] update webhook creation --- readthedocs/oauth/services/bitbucket.py | 5 +++++ readthedocs/oauth/services/github.py | 16 +++++++++------- readthedocs/oauth/services/gitlab.py | 11 ++++++----- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/readthedocs/oauth/services/bitbucket.py b/readthedocs/oauth/services/bitbucket.py index df4d3ebcfeb..8a3ac2eb379 100644 --- a/readthedocs/oauth/services/bitbucket.py +++ b/readthedocs/oauth/services/bitbucket.py @@ -312,6 +312,11 @@ def update_webhook(self, project, integration): # Catch exceptions with request or deserializing JSON except (KeyError, RequestException, TypeError, ValueError): + # We get TypeError when the provider_data is None + # it only happens if the webhook attachment was not successful in the first place + if not integration.provider_data: + return self.setup_webhook(project, integration) + log.exception( 'Bitbucket webhook update failed for project: %s', project, diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index 64ff748acf3..ae1a90ecb60 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -308,18 +308,20 @@ def update_webhook(self, project, integration): if resp.status_code == 404: return self.setup_webhook(project, integration) - except AttributeError: - # We get AttributeError when the provider_data does not have anything - # it only happens if the webhook attachment was not successful in the first place - return self.setup_webhook(project, integration) # Catch exceptions with request or deserializing JSON - except (RequestException, ValueError): + except (AttributeError, RequestException, ValueError): + # We get AttributeError when the provider_data is None + # it only happens if the webhook attachment was not successful in the first place + if not integration.provider_data: + return self.setup_webhook(project, integration) + + # Set the secret to None so that the integration can be used manually. + integration.remove_secret() + log.exception( 'GitHub webhook update failed for project: %s', project, ) - # Set the secret to None so that the integration can be used manually. - integration.remove_secret() return (False, resp) else: integration.remove_secret() diff --git a/readthedocs/oauth/services/gitlab.py b/readthedocs/oauth/services/gitlab.py index 2ac9f7a011d..bceb0fccec9 100644 --- a/readthedocs/oauth/services/gitlab.py +++ b/readthedocs/oauth/services/gitlab.py @@ -393,12 +393,13 @@ def update_webhook(self, project, integration): if resp.status_code == 404: return self.setup_webhook(project, integration) - except AttributeError: - # We get AttributeError when the provider_data does not have anything - # it only happens if the webhook attachment was not successful in the first place - return self.setup_webhook(project, integration) # Catch exceptions with request or deserializing JSON - except (RequestException, ValueError): + except (AttributeError, RequestException, ValueError): + # We get AttributeError when the provider_data is None + # it only happens if the webhook attachment was not successful in the first place + if not integration.provider_data: + return self.setup_webhook(project, integration) + integration.remove_secret() log.exception( From 3e0dc6c3fe2d578614e3f2375588dd0c59e70bb1 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 20:27:27 +0600 Subject: [PATCH 32/71] fix tests --- readthedocs/rtd_tests/tests/test_oauth.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index 57a1472ceb9..ecc395d3abb 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -290,7 +290,7 @@ def test_update_webhook_successful(self, session, mock_logger): self.assertTrue(success) self.assertTrue(self.integration.secret) mock_logger.info.assert_called_with( - "GitHub webhook creation successful for project: %s", + "GitHub webhook update successful for project: %s", self.project, ) @@ -310,7 +310,10 @@ def test_update_webhook_404_error(self, setup_webhook, session): @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') @mock.patch('readthedocs.oauth.services.github.GitHubService.setup_webhook') - def test_update_webhook_attribute_error(self, setup_webhook, session): + def test_update_webhook_no_provider_data(self, setup_webhook, session): + self.integration.provider_data = None + self.integration.save() + session().patch.side_effect = AttributeError self.service.update_webhook( self.project, @@ -842,7 +845,10 @@ def test_update_webhook_404_error(self, repo_id, setup_webhook, session): @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.setup_webhook') @mock.patch('readthedocs.oauth.services.gitlab.GitLabService._get_repo_id') - def test_update_webhook_attribute_error(self, repo_id, setup_webhook, session): + def test_update_webhook_no_provider_data(self, repo_id, setup_webhook, session): + self.integration.provider_data = None + self.integration.save() + repo_id.return_value = '9999' session().put.side_effect = AttributeError self.service.update_webhook( From defd05f76956c60a4b6ecfb6007564bd03aa10d6 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 30 Aug 2019 20:41:38 +0600 Subject: [PATCH 33/71] BitBucket setup_webhook and update_webhook tests added --- readthedocs/rtd_tests/tests/test_oauth.py | 121 ++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index ecc395d3abb..c82522f38ce 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -444,9 +444,22 @@ def setUp(self): self.client.login(username='eric', password='test') self.user = User.objects.get(pk=1) self.project = Project.objects.get(slug='pip') + self.project.repo = 'https://bitbucket.org/testuser/testrepo/' + self.project.save() self.org = RemoteOrganization.objects.create(slug='rtfd', json='') self.privacy = self.project.version_privacy_level self.service = BitbucketService(user=self.user, account=None) + self.integration = get( + GitHubWebhook, + project=self.project, + provider_data={ + 'links': { + 'self': { + 'href': 'https://bitbucket.org/' + } + } + } + ) def test_make_project_pass(self): repo = self.service.create_repository( @@ -514,6 +527,114 @@ def test_import_with_no_token(self): services = BitbucketService.for_user(self.user) self.assertEqual(services, []) + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_setup_webhook_successful(self, session, mock_logger): + session().post.return_value.status_code = 201 + session().post.return_value.json.return_value = {} + success, _ = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertTrue(success) + mock_logger.info.assert_called_with( + "Bitbucket webhook creation successful for project: %s", + self.project, + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_setup_webhook_404_error(self, session, mock_logger): + session().post.return_value.status_code = 404 + success, _ = self.service.setup_webhook( + self.project, + self.integration + ) + + self.assertFalse(success) + mock_logger.info.assert_called_with( + 'Bitbucket project does not exist or user does not have ' + 'permissions: project=%s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_setup_webhook_value_error(self, session, mock_logger): + session().post.side_effect = ValueError + success = self.service.setup_webhook( + self.project, + self.integration + ) + + mock_logger.exception.assert_called_with( + 'Bitbucket webhook creation failed for project: %s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_update_webhook_successful(self, session, mock_logger): + session().put.return_value.status_code = 200 + session().put.return_value.json.return_value = {} + success, _ = self.service.update_webhook( + self.project, + self.integration + ) + + self.assertTrue(success) + self.assertTrue(self.integration.secret) + mock_logger.info.assert_called_with( + "Bitbucket webhook update successful for project: %s", + self.project, + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.setup_webhook') + def test_update_webhook_404_error(self, setup_webhook, session): + session().put.return_value.status_code = 404 + self.service.update_webhook( + self.project, + self.integration + ) + + setup_webhook.assert_called_once_with( + self.project, + self.integration + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.setup_webhook') + def test_update_webhook_no_provider_data(self, setup_webhook, session): + self.integration.provider_data = None + self.integration.save() + + session().put.side_effect = AttributeError + self.service.update_webhook( + self.project, + self.integration + ) + + setup_webhook.assert_called_once_with( + self.project, + self.integration + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_update_webhook_value_error(self, session, mock_logger): + session().put.side_effect = ValueError + self.service.update_webhook( + self.project, + self.integration + ) + + mock_logger.exception.assert_called_with( + 'Bitbucket webhook update failed for project: %s', + self.project, + ) + class GitLabOAuthTests(TestCase): From 79cdefb45610cabe9fa4c7ccf4ecd53845a9bbb8 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Wed, 4 Sep 2019 18:59:26 -0700 Subject: [PATCH 34/71] Cleanup the logic around secret clearing --- readthedocs/oauth/services/bitbucket.py | 8 +-- readthedocs/oauth/services/github.py | 40 ++++++------- readthedocs/oauth/services/gitlab.py | 59 ++++++++----------- readthedocs/oauth/utils.py | 1 + .../projects/integration_webhook_detail.html | 9 ++- 5 files changed, 54 insertions(+), 63 deletions(-) diff --git a/readthedocs/oauth/services/bitbucket.py b/readthedocs/oauth/services/bitbucket.py index 8a3ac2eb379..2a008dc19bf 100644 --- a/readthedocs/oauth/services/bitbucket.py +++ b/readthedocs/oauth/services/bitbucket.py @@ -251,7 +251,6 @@ def setup_webhook(self, project, integration=None): 'permissions: project=%s', project, ) - return (False, resp) # Catch exceptions with request or deserializing JSON except (RequestException, ValueError): @@ -271,7 +270,8 @@ def setup_webhook(self, project, integration=None): ) except ValueError: pass - return (False, resp) + + return (False, resp) def update_webhook(self, project, integration): """ @@ -321,7 +321,6 @@ def update_webhook(self, project, integration): 'Bitbucket webhook update failed for project: %s', project, ) - return (False, resp) else: log.error( 'Bitbucket webhook update failed for project: %s', @@ -336,4 +335,5 @@ def update_webhook(self, project, integration): 'Bitbucket webhook update failure response: %s', debug_data, ) - return (False, resp) + + return (False, resp) diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index ae1a90ecb60..aed63eac6ce 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -203,7 +203,7 @@ def setup_webhook(self, project, integration=None): """ session = self.get_session() owner, repo = build_utils.get_github_username_repo(url=project.repo) - if integration: + if integration and not integration.secret: integration.recreate_secret() else: integration, _ = Integration.objects.get_or_create( @@ -239,20 +239,16 @@ def setup_webhook(self, project, integration=None): 'permissions: project=%s', project, ) - # Set the secret to None so that the integration can be used manually. - integration.remove_secret() - return (False, resp) + + # All other status codes will flow to the `else` clause below + # Catch exceptions with request or deserializing JSON except (RequestException, ValueError): - integration.remove_secret() - log.exception( 'GitHub webhook creation failed for project: %s', project, ) else: - integration.remove_secret() - log.error( 'GitHub webhook creation failed for project: %s', project, @@ -267,7 +263,10 @@ def setup_webhook(self, project, integration=None): 'GitHub webhook creation failure response: %s', debug_data, ) - return (False, resp) + + # Always remove the secret and return False if we don't return True above + integration.remove_secret() + return (False, resp) def update_webhook(self, project, integration): """ @@ -281,9 +280,16 @@ def update_webhook(self, project, integration): :rtype: (Bool, Response) """ session = self.get_session() - integration.recreate_secret() + if not integration.secret: + integration.recreate_secret() data = self.get_webhook_data(project, integration) resp = None + + # Handle the case where we don't have a proper provider_data set + # This happens with a user-managed webhook previously + if not integration.provider_data: + return self.setup_webhook(project, integration) + try: url = integration.provider_data.get('url') resp = session.patch( @@ -310,21 +316,11 @@ def update_webhook(self, project, integration): # Catch exceptions with request or deserializing JSON except (AttributeError, RequestException, ValueError): - # We get AttributeError when the provider_data is None - # it only happens if the webhook attachment was not successful in the first place - if not integration.provider_data: - return self.setup_webhook(project, integration) - - # Set the secret to None so that the integration can be used manually. - integration.remove_secret() - log.exception( 'GitHub webhook update failed for project: %s', project, ) - return (False, resp) else: - integration.remove_secret() log.error( 'GitHub webhook update failed for project: %s', project, @@ -337,7 +333,9 @@ def update_webhook(self, project, integration): 'GitHub webhook update failure response: %s', debug_data, ) - return (False, resp) + + integration.remove_secret() + return (False, resp) def send_build_status(self, build, commit, state): """ diff --git a/readthedocs/oauth/services/gitlab.py b/readthedocs/oauth/services/gitlab.py index bceb0fccec9..667945e7ff3 100644 --- a/readthedocs/oauth/services/gitlab.py +++ b/readthedocs/oauth/services/gitlab.py @@ -14,7 +14,7 @@ RTD_BUILD_STATUS_API_NAME, SELECT_BUILD_STATUS, ) -from readthedocs.builds.utils import get_gitlab_username_repo +from readthedocs.builds import utils as build_utils from readthedocs.integrations.models import Integration from readthedocs.projects.models import Project @@ -52,11 +52,11 @@ def _get_repo_id(self, project): # https://docs.gitlab.com/ce/api/README.html#namespaced-path-encoding try: repo_id = json.loads(project.remote_repository.json).get('id') - except Project.remote_repository.RelatedObjectDoesNotExist: + except Exception: # Handle "Manual Import" when there is no RemoteRepository # associated with the project. It only works with gitlab.com at the # moment (doesn't support custom gitlab installations) - username, repo = get_gitlab_username_repo(project.repo) + username, repo = build_utils.get_gitlab_username_repo(project.repo) if (username, repo) == (None, None): return None @@ -278,7 +278,8 @@ def setup_webhook(self, project, integration=None): :returns: boolean based on webhook set up success :rtype: bool """ - if integration: + resp = None + if integration and not integration.secret: integration.recreate_secret() else: integration, _ = Integration.objects.get_or_create( @@ -286,14 +287,14 @@ def setup_webhook(self, project, integration=None): integration_type=Integration.GITLAB_WEBHOOK, ) repo_id = self._get_repo_id(project) + if repo_id is None: # Set the secret to None so that the integration can be used manually. integration.remove_secret() - return (False, None) + return (False, resp) data = self.get_webhook_data(repo_id, project, integration) session = self.get_session() - resp = None try: resp = session.post( '{url}/api/v4/projects/{repo_id}/hooks'.format( @@ -319,27 +320,21 @@ def setup_webhook(self, project, integration=None): 'permissions: project=%s', project, ) - # Set the secret to None so that the integration can be used manually. - integration.remove_secret() - - return (False, resp) except (RequestException, ValueError): - integration.remove_secret() - log.exception( 'GitLab webhook creation failed for project: %s', project, ) - return (False, resp) else: - integration.remove_secret() - log.error( 'GitLab webhook creation failed for project: %s', project, ) - return (False, resp) + + # Always remove secret and return False if we don't return True above + integration.remove_secret() + return (False, resp) def update_webhook(self, project, integration): """ @@ -356,16 +351,22 @@ def update_webhook(self, project, integration): :rtype: (Bool, Response) """ + resp = None session = self.get_session() - repo_id = self._get_repo_id(project) + if repo_id is None: - return (False, None) + return (False, resp) + + # When we don't have provider_data, we aren't managing this webhook so setup a new one + if not integration.provider_data: + return self.setup_webhook(project, integration) + + if not integration.secret: + integration.recreate_secret() - integration.recreate_secret() data = self.get_webhook_data(repo_id, project, integration) - resp = None try: hook_id = integration.provider_data.get('id') resp = session.put( @@ -395,20 +396,11 @@ def update_webhook(self, project, integration): # Catch exceptions with request or deserializing JSON except (AttributeError, RequestException, ValueError): - # We get AttributeError when the provider_data is None - # it only happens if the webhook attachment was not successful in the first place - if not integration.provider_data: - return self.setup_webhook(project, integration) - - integration.remove_secret() - log.exception( 'GitLab webhook update failed for project: %s', project, ) else: - integration.remove_secret() - log.error( 'GitLab webhook update failed for project: %s', project, @@ -418,7 +410,9 @@ def update_webhook(self, project, integration): except ValueError: debug_data = resp.content log.debug('GitLab webhook update failure response: %s', debug_data) - return (False, resp) + + integration.remove_secret() + return (False, resp) def send_build_status(self, build, commit, state): """ @@ -433,13 +427,14 @@ def send_build_status(self, build, commit, state): :returns: boolean based on commit status creation was successful or not. :rtype: Bool """ + resp = None session = self.get_session() project = build.project repo_id = self._get_repo_id(project) if repo_id is None: - return (False, None) + return (False, resp) # select the correct state and description. gitlab_build_state = SELECT_BUILD_STATUS[state]['gitlab'] @@ -458,8 +453,6 @@ def send_build_status(self, build, commit, state): } url = self.adapter.provider_base_url - resp = None - try: resp = session.post( f'{url}/api/v4/projects/{repo_id}/statuses/{commit}', diff --git a/readthedocs/oauth/utils.py b/readthedocs/oauth/utils.py index 2370918b712..babb766488b 100644 --- a/readthedocs/oauth/utils.py +++ b/readthedocs/oauth/utils.py @@ -49,6 +49,7 @@ def update_webhook(project, integration, request=None): project.has_valid_webhook = True project.save() return True + messages.error( request, _( diff --git a/readthedocs/templates/projects/integration_webhook_detail.html b/readthedocs/templates/projects/integration_webhook_detail.html index b7d3c3292d8..4fdebcd4090 100644 --- a/readthedocs/templates/projects/integration_webhook_detail.html +++ b/readthedocs/templates/projects/integration_webhook_detail.html @@ -19,9 +19,8 @@ {% if integration.has_sync and integration.can_sync %}

    {% blocktrans trimmed %} - This webhook was configured when this project was imported - or it was manually created with the correct configuration. If this - integration is not functioning correctly, try re-syncing the webhook: + This integration is being managed automatically by Read the Docs. If + it isn't functioning correctly, try re-syncing the webhook: {% endblocktrans %}

    @@ -40,8 +39,8 @@ {% if integration.has_sync and not integration.can_sync %}

    {% blocktrans trimmed %} - This webhook was created automatically or manually from an existing webhook - configured on your repository. If this integration is not functioning correctly, + This integration is not managed by Read the Docs currently. + If this integration is not functioning correctly, you can try re-syncing it. Otherwise you'll need to update the configuration on your repository. You can use the following address to manually configure this webhook. From 06e9d24f31561b49e8aa653361434fe4694a27ba Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 12:36:20 +0600 Subject: [PATCH 35/71] fix tests --- readthedocs/rtd_tests/tests/test_oauth.py | 31 ++++++++++++++++++----- 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index c82522f38ce..6d487ae7c12 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -238,6 +238,8 @@ def test_setup_webhook_successful(self, session, mock_logger): self.integration ) + self.integration.refresh_from_db() + self.assertTrue(success) self.assertTrue(self.integration.secret) mock_logger.info.assert_called_with( @@ -253,9 +255,10 @@ def test_setup_webhook_404_error(self, session, mock_logger): self.project, self.integration ) + self.integration.refresh_from_db() self.assertFalse(success) - self.assertFalse(self.integration.secret) + self.assertIsNone(self.integration.secret) mock_logger.info.assert_called_with( 'GitHub project does not exist or user does not have ' 'permissions: project=%s', @@ -271,7 +274,9 @@ def test_setup_webhook_value_error(self, session, mock_logger): self.integration ) - self.assertFalse(self.integration.secret) + self.integration.refresh_from_db() + + self.assertIsNone(self.integration.secret) mock_logger.exception.assert_called_with( 'GitHub webhook creation failed for project: %s', self.project, @@ -287,6 +292,8 @@ def test_update_webhook_successful(self, session, mock_logger): self.integration ) + self.integration.refresh_from_db() + self.assertTrue(success) self.assertTrue(self.integration.secret) mock_logger.info.assert_called_with( @@ -334,7 +341,9 @@ def test_update_webhook_value_error(self, session, mock_logger): self.integration ) - self.assertFalse(self.integration.secret) + self.integration.refresh_from_db() + + self.assertIsNone(self.integration.secret) mock_logger.exception.assert_called_with( 'GitHub webhook update failed for project: %s', self.project, @@ -889,6 +898,8 @@ def test_setup_webhook_successful(self, session, mock_logger): self.integration ) + self.integration.refresh_from_db() + self.assertTrue(success) self.assertTrue(self.integration.secret) mock_logger.info.assert_called_with( @@ -905,8 +916,10 @@ def test_setup_webhook_404_error(self, session, mock_logger): self.integration ) + self.integration.refresh_from_db() + self.assertFalse(success) - self.assertFalse(self.integration.secret) + self.assertIsNone(self.integration.secret) mock_logger.info.assert_called_with( 'Gitlab project does not exist or user does not have ' 'permissions: project=%s', @@ -922,7 +935,9 @@ def test_setup_webhook_value_error(self, session, mock_logger): self.integration ) - self.assertFalse(self.integration.secret) + self.integration.refresh_from_db() + + self.assertIsNone(self.integration.secret) mock_logger.exception.assert_called_with( 'GitLab webhook creation failed for project: %s', self.project, @@ -940,6 +955,8 @@ def test_update_webhook_successful(self, repo_id, session, mock_logger): self.integration ) + self.integration.refresh_from_db() + self.assertTrue(success) self.assertTrue(self.integration.secret) mock_logger.info.assert_called_with( @@ -993,7 +1010,9 @@ def test_update_webhook_value_error(self, repo_id, session, mock_logger): self.integration ) - self.assertFalse(self.integration.secret) + self.integration.refresh_from_db() + + self.assertIsNone(self.integration.secret) mock_logger.exception.assert_called_with( 'GitLab webhook update failed for project: %s', self.project, From 16c9d09df9b3eabfe44f6779ce502f6e67c58410 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 12:48:44 +0600 Subject: [PATCH 36/71] integration bug fix --- readthedocs/oauth/services/github.py | 9 ++++++--- readthedocs/oauth/services/gitlab.py | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index aed63eac6ce..3e88bc2d150 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -203,13 +203,16 @@ def setup_webhook(self, project, integration=None): """ session = self.get_session() owner, repo = build_utils.get_github_username_repo(url=project.repo) - if integration and not integration.secret: - integration.recreate_secret() - else: + + if not integration: integration, _ = Integration.objects.get_or_create( project=project, integration_type=Integration.GITHUB_WEBHOOK, ) + + if not integration.secret: + integration.recreate_secret() + data = self.get_webhook_data(project, integration) resp = None try: diff --git a/readthedocs/oauth/services/gitlab.py b/readthedocs/oauth/services/gitlab.py index 667945e7ff3..fd43204b7ad 100644 --- a/readthedocs/oauth/services/gitlab.py +++ b/readthedocs/oauth/services/gitlab.py @@ -279,13 +279,16 @@ def setup_webhook(self, project, integration=None): :rtype: bool """ resp = None - if integration and not integration.secret: - integration.recreate_secret() - else: + + if not integration: integration, _ = Integration.objects.get_or_create( project=project, integration_type=Integration.GITLAB_WEBHOOK, ) + + if not integration.secret: + integration.recreate_secret() + repo_id = self._get_repo_id(project) if repo_id is None: From 76467d85f32a10ffc5e936c36a7aee81200171a0 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 17:49:33 +0600 Subject: [PATCH 37/71] Get provider data from GitHub Webhooks API --- readthedocs/oauth/services/base.py | 13 +++++ readthedocs/oauth/services/github.py | 72 +++++++++++++++++++++++++++- 2 files changed, 83 insertions(+), 2 deletions(-) diff --git a/readthedocs/oauth/services/base.py b/readthedocs/oauth/services/base.py index 98a12b58f3e..98e3dcd170a 100644 --- a/readthedocs/oauth/services/base.py +++ b/readthedocs/oauth/services/base.py @@ -226,6 +226,19 @@ def get_paginated_results(self, response): """ raise NotImplementedError + def get_provider_data(self, project, integration): + """ + Gets provider data from GitHub Webhooks API. + + :param project: project + :type project: Project + :param integration: Integration for the project + :type integration: Integration + :returns: Dictionary containing provider data from the API or None + :rtype: dict + """ + raise NotImplementedError + def setup_webhook(self, project, integration=None): """ Setup webhook for project. diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index 3e88bc2d150..b32ff2c000d 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -190,6 +190,71 @@ def get_webhook_data(self, project, integration): 'events': ['push', 'pull_request', 'create', 'delete'], }) + def get_provider_data(self, project, integration): + """ + Gets provider data from GitHub Webhooks API. + + :param project: project + :type project: Project + :param integration: Integration for the project + :type integration: Integration + :returns: Dictionary containing provider data from the API or None + :rtype: dict + """ + + if integration.provider_data: + return integration.provider_data + + session = self.get_session() + owner, repo = build_utils.get_github_username_repo(url=project.repo) + + rtd_webhook_url = 'https://{domain}{path}'.format( + domain=settings.PRODUCTION_DOMAIN, + path=reverse( + 'api_webhook', + kwargs={ + 'project_slug': project.slug, + 'integration_pk': integration.pk, + }, + ) + ) + + try: + resp = session.get( + ( + 'https://api.github.com/repos/{owner}/{repo}/hooks' + .format(owner=owner, repo=repo) + ), + ) + + if resp.status_code == 200: + recv_data = resp.json() + + for webhook_data in recv_data: + if webhook_data["config"]["url"] == rtd_webhook_url: + integration.provider_data = webhook_data + integration.save() + + log.info( + 'GitHub integration updated with provider data for project: %s', + project, + ) + break + else: + log.info( + 'GitHub project does not exist or user does not have ' + 'permissions: project=%s', + project, + ) + + except Exception: + log.exception( + 'GitHub webhook Listing failed for project: %s', + project, + ) + + return integration.provider_data + def setup_webhook(self, project, integration=None): """ Set up GitHub project webhook for project. @@ -288,13 +353,16 @@ def update_webhook(self, project, integration): data = self.get_webhook_data(project, integration) resp = None + provider_data = self.get_provider_data(project, integration) + # Handle the case where we don't have a proper provider_data set # This happens with a user-managed webhook previously - if not integration.provider_data: + if not provider_data: return self.setup_webhook(project, integration) try: - url = integration.provider_data.get('url') + url = provider_data.get('url') + resp = session.patch( url, data=data, From 81d82929f736f2a6522444c09590e3b1f20fcce6 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 18:15:19 +0600 Subject: [PATCH 38/71] GitHub Provider Data tests added --- readthedocs/rtd_tests/tests/test_oauth.py | 97 +++++++++++++++++++++-- 1 file changed, 92 insertions(+), 5 deletions(-) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index 6d487ae7c12..06f5b02d116 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -4,6 +4,7 @@ from django.contrib.auth.models import User from django.test import TestCase from django.test.utils import override_settings +from django.urls import reverse from django_dynamic_fixture import get @@ -46,6 +47,14 @@ def setUp(self): 'url': 'https://github.com/' } ) + self.provider_data = [ + { + "config": { + "url": "https://example.com/webhook" + }, + "url": "https://api.github.com/repos/test/Hello-World/hooks/12345678", + } + ] def test_make_project_pass(self): repo_json = { @@ -241,7 +250,7 @@ def test_setup_webhook_successful(self, session, mock_logger): self.integration.refresh_from_db() self.assertTrue(success) - self.assertTrue(self.integration.secret) + self.assertIsNotNone(self.integration.secret) mock_logger.info.assert_called_with( "GitHub webhook creation successful for project: %s", self.project, @@ -295,7 +304,7 @@ def test_update_webhook_successful(self, session, mock_logger): self.integration.refresh_from_db() self.assertTrue(success) - self.assertTrue(self.integration.secret) + self.assertIsNotNone(self.integration.secret) mock_logger.info.assert_called_with( "GitHub webhook update successful for project: %s", self.project, @@ -349,6 +358,84 @@ def test_update_webhook_value_error(self, session, mock_logger): self.project, ) + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_get_provider_data_successful(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + webhook_data = self.provider_data + rtd_webhook_url = 'https://{domain}{path}'.format( + domain=settings.PRODUCTION_DOMAIN, + path=reverse( + 'api_webhook', + kwargs={ + 'project_slug': self.project.slug, + 'integration_pk': self.integration.pk, + }, + ) + ) + webhook_data[0]["config"]["url"] = rtd_webhook_url + + session().get.return_value.status_code = 200 + session().get.return_value.json.return_value = webhook_data + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, webhook_data[0]) + mock_logger.info.assert_called_with( + 'GitHub integration updated with provider data for project: %s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_get_provider_data_404_error(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + session().get.return_value.status_code = 404 + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, {}) + mock_logger.info.assert_called_with( + 'GitHub project does not exist or user does not have ' + 'permissions: project=%s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.github.log') + @mock.patch('readthedocs.oauth.services.github.GitHubService.get_session') + def test_get_provider_data_attribute_error(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + session().get.side_effect = AttributeError + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, {}) + mock_logger.exception.assert_called_with( + 'GitHub webhook Listing failed for project: %s', + self.project, + ) + class BitbucketOAuthTests(TestCase): @@ -593,7 +680,7 @@ def test_update_webhook_successful(self, session, mock_logger): ) self.assertTrue(success) - self.assertTrue(self.integration.secret) + self.assertIsNotNone(self.integration.secret) mock_logger.info.assert_called_with( "Bitbucket webhook update successful for project: %s", self.project, @@ -901,7 +988,7 @@ def test_setup_webhook_successful(self, session, mock_logger): self.integration.refresh_from_db() self.assertTrue(success) - self.assertTrue(self.integration.secret) + self.assertIsNotNone(self.integration.secret) mock_logger.info.assert_called_with( "GitLab webhook creation successful for project: %s", self.project, @@ -958,7 +1045,7 @@ def test_update_webhook_successful(self, repo_id, session, mock_logger): self.integration.refresh_from_db() self.assertTrue(success) - self.assertTrue(self.integration.secret) + self.assertIsNotNone(self.integration.secret) mock_logger.info.assert_called_with( "GitLab webhook update successful for project: %s", self.project, From a9cc473639028b93e6f9113fda35cdd2f532ef77 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 18:22:53 +0600 Subject: [PATCH 39/71] lint fix --- readthedocs/oauth/services/github.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/oauth/services/github.py b/readthedocs/oauth/services/github.py index b32ff2c000d..406c413a421 100644 --- a/readthedocs/oauth/services/github.py +++ b/readthedocs/oauth/services/github.py @@ -223,7 +223,7 @@ def get_provider_data(self, project, integration): resp = session.get( ( 'https://api.github.com/repos/{owner}/{repo}/hooks' - .format(owner=owner, repo=repo) + .format(owner=owner, repo=repo) ), ) From 750d90e77a5a5635c5100eb61eb41bce9254cad2 Mon Sep 17 00:00:00 2001 From: Eric Holscher <25510+ericholscher@users.noreply.github.com> Date: Thu, 5 Sep 2019 08:52:06 -0700 Subject: [PATCH 40/71] Remove paid support callout Mention we don't support custom installs any time. --- docs/custom_installs/index.rst | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/custom_installs/index.rst b/docs/custom_installs/index.rst index f3a77b7811c..e0dbc2035ca 100644 --- a/docs/custom_installs/index.rst +++ b/docs/custom_installs/index.rst @@ -12,9 +12,8 @@ It has those features and more! .. warning:: These documents are maintained by the community, and might not be up to date. - Read the Docs developers do not support custom installs of our software - in our public issue tracker. For additional support of a custom installation, - please see our `paid support plans `_. + Read the Docs developers do not support custom installs of our software, + as mentioned in our :doc:`open-source-philosophy`. .. toctree:: :maxdepth: 2 From 1b17fe3463d820350a19da69cc458d87cad2676b Mon Sep 17 00:00:00 2001 From: Eric Holscher <25510+ericholscher@users.noreply.github.com> Date: Thu, 5 Sep 2019 08:59:54 -0700 Subject: [PATCH 41/71] Fix doc link --- docs/custom_installs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/custom_installs/index.rst b/docs/custom_installs/index.rst index e0dbc2035ca..8d766ec3ba0 100644 --- a/docs/custom_installs/index.rst +++ b/docs/custom_installs/index.rst @@ -13,7 +13,7 @@ It has those features and more! .. warning:: These documents are maintained by the community, and might not be up to date. Read the Docs developers do not support custom installs of our software, - as mentioned in our :doc:`open-source-philosophy`. + as mentioned in our :doc:`/open-source-philosophy`. .. toctree:: :maxdepth: 2 From 55e27ee2f4f3e3a6875b55991ea97da076d32d11 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 22:09:57 +0600 Subject: [PATCH 42/71] GitLab get_provider_data method added --- readthedocs/oauth/services/base.py | 2 +- readthedocs/oauth/services/gitlab.py | 82 ++++++++++++++++++++++++++-- 2 files changed, 78 insertions(+), 6 deletions(-) diff --git a/readthedocs/oauth/services/base.py b/readthedocs/oauth/services/base.py index 98e3dcd170a..e093ae24408 100644 --- a/readthedocs/oauth/services/base.py +++ b/readthedocs/oauth/services/base.py @@ -228,7 +228,7 @@ def get_paginated_results(self, response): def get_provider_data(self, project, integration): """ - Gets provider data from GitHub Webhooks API. + Gets provider data from Git Providers Webhooks API. :param project: project :type project: Project diff --git a/readthedocs/oauth/services/gitlab.py b/readthedocs/oauth/services/gitlab.py index fd43204b7ad..04a841786a0 100644 --- a/readthedocs/oauth/services/gitlab.py +++ b/readthedocs/oauth/services/gitlab.py @@ -267,6 +267,75 @@ def get_webhook_data(self, repo_id, project, integration): 'wiki_events': False, }) + def get_provider_data(self, project, integration): + """ + Gets provider data from GitLab Webhooks API. + + :param project: project + :type project: Project + :param integration: Integration for the project + :type integration: Integration + :returns: Dictionary containing provider data from the API or None + :rtype: dict + """ + + if integration.provider_data: + return integration.provider_data + + repo_id = self._get_repo_id(project) + + if repo_id is None: + return None + + session = self.get_session() + + rtd_webhook_url = 'https://{domain}{path}'.format( + domain=settings.PRODUCTION_DOMAIN, + path=reverse( + 'api_webhook', + kwargs={ + 'project_slug': project.slug, + 'integration_pk': integration.pk, + }, + ) + ) + + try: + resp = session.get( + '{url}/api/v4/projects/{repo_id}/hooks'.format( + url=self.adapter.provider_base_url, + repo_id=repo_id, + ), + ) + + if resp.status_code == 200: + recv_data = resp.json() + + for webhook_data in recv_data: + if webhook_data["url"] == rtd_webhook_url: + integration.provider_data = webhook_data + integration.save() + + log.info( + 'GitLab integration updated with provider data for project: %s', + project, + ) + break + else: + log.info( + 'GitLab project does not exist or user does not have ' + 'permissions: project=%s', + project, + ) + + except Exception: + log.exception( + 'GitLab webhook Listing failed for project: %s', + project, + ) + + return integration.provider_data + def setup_webhook(self, project, integration=None): """ Set up GitLab project webhook for project. @@ -354,6 +423,13 @@ def update_webhook(self, project, integration): :rtype: (Bool, Response) """ + provider_data = self.get_provider_data(project, integration) + + # Handle the case where we don't have a proper provider_data set + # This happens with a user-managed webhook previously + if not provider_data: + return self.setup_webhook(project, integration) + resp = None session = self.get_session() repo_id = self._get_repo_id(project) @@ -361,17 +437,13 @@ def update_webhook(self, project, integration): if repo_id is None: return (False, resp) - # When we don't have provider_data, we aren't managing this webhook so setup a new one - if not integration.provider_data: - return self.setup_webhook(project, integration) - if not integration.secret: integration.recreate_secret() data = self.get_webhook_data(repo_id, project, integration) try: - hook_id = integration.provider_data.get('id') + hook_id = provider_data.get('id') resp = session.put( '{url}/api/v4/projects/{repo_id}/hooks/{hook_id}'.format( url=self.adapter.provider_base_url, From e8239c69252d3fb79f7df3139df535b443df0748 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 22:21:35 +0600 Subject: [PATCH 43/71] Gitlab get_provider_data tests added --- readthedocs/rtd_tests/tests/test_oauth.py | 85 +++++++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index 06f5b02d116..1e8e17e3a36 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -845,6 +845,13 @@ def setUp(self): 'id': '999999999' } ) + self.provider_data = [ + { + 'id': 1084320, + 'url': 'https://readthedocs.io/api/v2/webhook/test/99999999/', + } + + ] def get_private_repo_data(self): """Manipulate repo response data to get private repo data.""" @@ -1104,3 +1111,81 @@ def test_update_webhook_value_error(self, repo_id, session, mock_logger): 'GitLab webhook update failed for project: %s', self.project, ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + def test_get_provider_data_successful(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + webhook_data = self.provider_data + rtd_webhook_url = 'https://{domain}{path}'.format( + domain=settings.PRODUCTION_DOMAIN, + path=reverse( + 'api_webhook', + kwargs={ + 'project_slug': self.project.slug, + 'integration_pk': self.integration.pk, + }, + ) + ) + webhook_data[0]["url"] = rtd_webhook_url + + session().get.return_value.status_code = 200 + session().get.return_value.json.return_value = webhook_data + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, webhook_data[0]) + mock_logger.info.assert_called_with( + 'GitLab integration updated with provider data for project: %s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + def test_get_provider_data_404_error(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + session().get.return_value.status_code = 404 + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, {}) + mock_logger.info.assert_called_with( + 'GitLab project does not exist or user does not have ' + 'permissions: project=%s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.gitlab.log') + @mock.patch('readthedocs.oauth.services.gitlab.GitLabService.get_session') + def test_get_provider_data_attribute_error(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + session().get.side_effect = AttributeError + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, {}) + mock_logger.exception.assert_called_with( + 'GitLab webhook Listing failed for project: %s', + self.project, + ) \ No newline at end of file From cb5fc4b47a547092d8c48adc5a203e2d4bea20d5 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 22:50:44 +0600 Subject: [PATCH 44/71] BitBucket get_provider_data method added --- readthedocs/oauth/services/bitbucket.py | 86 +++++++++++++++++++++-- readthedocs/rtd_tests/tests/test_oauth.py | 5 +- 2 files changed, 83 insertions(+), 8 deletions(-) diff --git a/readthedocs/oauth/services/bitbucket.py b/readthedocs/oauth/services/bitbucket.py index 2a008dc19bf..e72fc0ba672 100644 --- a/readthedocs/oauth/services/bitbucket.py +++ b/readthedocs/oauth/services/bitbucket.py @@ -206,6 +206,78 @@ def get_webhook_data(self, project, integration): 'events': ['repo:push'], }) + def get_provider_data(self, project, integration): + """ + Gets provider data from BitBucket Webhooks API. + + :param project: project + :type project: Project + :param integration: Integration for the project + :type integration: Integration + :returns: Dictionary containing provider data from the API or None + :rtype: dict + """ + + if integration.provider_data: + return integration.provider_data + + session = self.get_session() + owner, repo = build_utils.get_bitbucket_username_repo(url=project.repo) + + if not integration: + integration, _ = Integration.objects.get_or_create( + project=project, + integration_type=Integration.BITBUCKET_WEBHOOK, + ) + data = self.get_webhook_data(project, integration) + + rtd_webhook_url = 'https://{domain}{path}'.format( + domain=settings.PRODUCTION_DOMAIN, + path=reverse( + 'api_webhook', + kwargs={ + 'project_slug': project.slug, + 'integration_pk': integration.pk, + }, + ) + ) + + try: + resp = session.get( + ( + 'https://api.bitbucket.org/2.0/repositories/{owner}/{repo}/hooks' + .format(owner=owner, repo=repo) + ), + ) + + if resp.status_code == 200: + recv_data = resp.json() + + for webhook_data in recv_data["values"]: + if webhook_data["url"] == rtd_webhook_url: + integration.provider_data = webhook_data + integration.save() + + log.info( + 'Bitbucket integration updated with provider data for project: %s', + project, + ) + break + else: + log.info( + 'Bitbucket project does not exist or user does not have ' + 'permissions: project=%s', + project, + ) + + except Exception: + log.exception( + 'Bitbucket webhook Listing failed for project: %s', + project, + ) + + return integration.provider_data + def setup_webhook(self, project, integration=None): """ Set up Bitbucket project webhook for project. @@ -219,6 +291,7 @@ def setup_webhook(self, project, integration=None): """ session = self.get_session() owner, repo = build_utils.get_bitbucket_username_repo(url=project.repo) + if not integration: integration, _ = Integration.objects.get_or_create( project=project, @@ -284,6 +357,13 @@ def update_webhook(self, project, integration): :returns: boolean based on webhook set up success, and requests Response object :rtype: (Bool, Response) """ + provider_data = self.get_provider_data(project, integration) + + # Handle the case where we don't have a proper provider_data set + # This happens with a user-managed webhook previously + if not provider_data: + return self.setup_webhook(project, integration) + session = self.get_session() data = self.get_webhook_data(project, integration) resp = None @@ -295,6 +375,7 @@ def update_webhook(self, project, integration): data=data, headers={'content-type': 'application/json'}, ) + if resp.status_code == 200: recv_data = resp.json() integration.provider_data = recv_data @@ -312,11 +393,6 @@ def update_webhook(self, project, integration): # Catch exceptions with request or deserializing JSON except (KeyError, RequestException, TypeError, ValueError): - # We get TypeError when the provider_data is None - # it only happens if the webhook attachment was not successful in the first place - if not integration.provider_data: - return self.setup_webhook(project, integration) - log.exception( 'Bitbucket webhook update failed for project: %s', project, diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index 1e8e17e3a36..9ab271c3005 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -50,7 +50,7 @@ def setUp(self): self.provider_data = [ { "config": { - "url": "https://example.com/webhook" + "url": "https://example.com/webhook" }, "url": "https://api.github.com/repos/test/Hello-World/hooks/12345678", } @@ -850,7 +850,6 @@ def setUp(self): 'id': 1084320, 'url': 'https://readthedocs.io/api/v2/webhook/test/99999999/', } - ] def get_private_repo_data(self): @@ -1188,4 +1187,4 @@ def test_get_provider_data_attribute_error(self, session, mock_logger): mock_logger.exception.assert_called_with( 'GitLab webhook Listing failed for project: %s', self.project, - ) \ No newline at end of file + ) From 4b9e2b5bbfedea2fd0d78dc3a95c2715b8b9fc62 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 23:04:44 +0600 Subject: [PATCH 45/71] Bitbucket get_provider_data method tests added --- readthedocs/oauth/services/bitbucket.py | 2 +- readthedocs/rtd_tests/tests/test_oauth.py | 89 +++++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) diff --git a/readthedocs/oauth/services/bitbucket.py b/readthedocs/oauth/services/bitbucket.py index e72fc0ba672..080883fea84 100644 --- a/readthedocs/oauth/services/bitbucket.py +++ b/readthedocs/oauth/services/bitbucket.py @@ -369,7 +369,7 @@ def update_webhook(self, project, integration): resp = None try: # Expect to throw KeyError here if provider_data is invalid - url = integration.provider_data['links']['self']['href'] + url = provider_data['links']['self']['href'] resp = session.put( url, data=data, diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index 9ab271c3005..b0c915de8be 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -556,6 +556,17 @@ def setUp(self): } } ) + self.provider_data = { + 'values': [{ + 'links': { + 'self': { + 'href': 'https://bitbucket.org/' + } + }, + 'url': 'https://readthedocs.io/api/v2/webhook/test/99999999/', + + },] + } def test_make_project_pass(self): repo = self.service.create_repository( @@ -731,6 +742,84 @@ def test_update_webhook_value_error(self, session, mock_logger): self.project, ) + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_get_provider_data_successful(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + webhook_data = self.provider_data + rtd_webhook_url = 'https://{domain}{path}'.format( + domain=settings.PRODUCTION_DOMAIN, + path=reverse( + 'api_webhook', + kwargs={ + 'project_slug': self.project.slug, + 'integration_pk': self.integration.pk, + }, + ) + ) + webhook_data['values'][0]["url"] = rtd_webhook_url + + session().get.return_value.status_code = 200 + session().get.return_value.json.return_value = webhook_data + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, webhook_data['values'][0]) + mock_logger.info.assert_called_with( + 'Bitbucket integration updated with provider data for project: %s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_get_provider_data_404_error(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + session().get.return_value.status_code = 404 + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, {}) + mock_logger.info.assert_called_with( + 'Bitbucket project does not exist or user does not have ' + 'permissions: project=%s', + self.project, + ) + + @mock.patch('readthedocs.oauth.services.bitbucket.log') + @mock.patch('readthedocs.oauth.services.bitbucket.BitbucketService.get_session') + def test_get_provider_data_attribute_error(self, session, mock_logger): + self.integration.provider_data = {} + self.integration.save() + + session().get.side_effect = AttributeError + + self.service.get_provider_data( + self.project, + self.integration + ) + + self.integration.refresh_from_db() + + self.assertEqual(self.integration.provider_data, {}) + mock_logger.exception.assert_called_with( + 'Bitbucket webhook Listing failed for project: %s', + self.project, + ) + class GitLabOAuthTests(TestCase): From 0c0ad42ac87cfd5df1248f9dccbada603c11e5da Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Thu, 5 Sep 2019 23:08:10 +0600 Subject: [PATCH 46/71] lint fix --- readthedocs/rtd_tests/tests/test_oauth.py | 1 - 1 file changed, 1 deletion(-) diff --git a/readthedocs/rtd_tests/tests/test_oauth.py b/readthedocs/rtd_tests/tests/test_oauth.py index b0c915de8be..e73382367dd 100644 --- a/readthedocs/rtd_tests/tests/test_oauth.py +++ b/readthedocs/rtd_tests/tests/test_oauth.py @@ -564,7 +564,6 @@ def setUp(self): } }, 'url': 'https://readthedocs.io/api/v2/webhook/test/99999999/', - },] } From 04a15f58ff4897f45cb97a2bac30f7708a5fef9a Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Fri, 6 Sep 2019 02:28:22 +0600 Subject: [PATCH 47/71] lint fix --- docs/guides/autobuild-docs-for-pull-requests.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/guides/autobuild-docs-for-pull-requests.rst b/docs/guides/autobuild-docs-for-pull-requests.rst index acb088596bc..cbff5bb0106 100644 --- a/docs/guides/autobuild-docs-for-pull-requests.rst +++ b/docs/guides/autobuild-docs-for-pull-requests.rst @@ -3,7 +3,7 @@ Autobuild Documentation for Pull Requests Read the Docs allows autobuilding documentation for pull/merge requests for GitHub or GitLab projects. This feature is currently available under a :doc:`Feature Flag `. -So, you can enable this feature by sending us an `email `_ including your project URL. +So, you can enable this feature by sending us an `email `__ including your project URL. Features ======== @@ -47,6 +47,6 @@ some common causes might be: Learn more about setting up webhooks from our :doc:`Webhook Documentation `. If you have tried all the above troubleshooting and still getting issues, -please let us know by sending us an `email `_. +please let us know by sending us an `email `__. .. _profile settings: https://readthedocs.org/accounts/social/connections/ From c727af24b66269aa80d9d418fc706bf0b9d7baf9 Mon Sep 17 00:00:00 2001 From: David Fischer Date: Thu, 5 Sep 2019 15:24:28 -0700 Subject: [PATCH 48/71] Release 3.7.4 --- CHANGELOG.rst | 20 +++++++++++++++++++ .../static/core/js/readthedocs-doc-embed.js | 2 +- .../projects/static/projects/js/tools.js | 2 +- setup.cfg | 2 +- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index ed1d52b82f9..2b7596e0f1b 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,3 +1,23 @@ +Version 3.7.4 +------------- + +:Date: September 05, 2019 + +* `@ericholscher `__: Remove paid support callout (`#6140 `__) +* `@ericholscher `__: Fix IntegrationAdmin with raw_id_fields for Projects (`#6136 `__) +* `@ericholscher `__: Fix link to html_extra_path (`#6135 `__) +* `@stsewd `__: Move out authorization from FooterHTML view (`#6133 `__) +* `@agjohnson `__: Add setting for always cleaning the build post-build (`#6132 `__) +* `@pyup-bot `__: pyup: Scheduled weekly dependency update for week 35 (`#6129 `__) +* `@stsewd `__: Refactor footer_html view to class (`#6125 `__) +* `@ericholscher `__: Use raw_id_fields in the TokenAdmin (`#6116 `__) +* `@davidfischer `__: Fixed footer ads supported on all themes (`#6115 `__) +* `@stsewd `__: Don't log BuildEnvironmentWarning as error (`#6112 `__) +* `@pllim `__: Use the force when fetching with Git (`#6109 `__) +* `@dojutsu-user `__: Record search queries smartly (`#6088 `__) +* `@stsewd `__: Add move method to automation rule (`#5998 `__) +* `@dojutsu-user `__: Index more domain data into elasticsearch (`#5979 `__) + Version 3.7.3 ------------- diff --git a/readthedocs/core/static/core/js/readthedocs-doc-embed.js b/readthedocs/core/static/core/js/readthedocs-doc-embed.js index 7459c3ec995..479c926a279 100644 --- a/readthedocs/core/static/core/js/readthedocs-doc-embed.js +++ b/readthedocs/core/static/core/js/readthedocs-doc-embed.js @@ -1 +1 @@ -!function o(s,a,l){function d(t,e){if(!a[t]){if(!s[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(c)return c(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return d(s[t][1][e]||e)},r,r.exports,o,s,a,l)}return a[t].exports}for(var c="function"==typeof require&&require,e=0;e

    "),i("table.docutils.footnote").wrap("
    "),i("table.docutils.citation").wrap("
    "),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var t=i(this);expand=i(''),expand.on("click",function(e){return n.toggleCurrent(t),e.stopPropagation(),!1}),t.prepend(expand)})},reset:function(){var e=encodeURI(window.location.hash)||"#";try{var t=$(".wy-menu-vertical"),i=t.find('[href="'+e+'"]');if(0===i.length){var n=$('.document [id="'+e.substring(1)+'"]').closest("div.section");0===(i=t.find('[href="#'+n.attr("id")+'"]')).length&&(i=t.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=e)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:t.exports.ThemeNav,StickyNav:t.exports.ThemeNav}),function(){for(var o=0,e=["ms","moz","webkit","o"],t=0;t/g,u=/"/g,h=/"/g,p=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,w=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(u,""")}function _(e){return e.replace(h,'"')}function y(e){return e.replace(p,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function x(e){return e.replace(f,":").replace(g," ")}function k(e){for(var t="",i=0,n=e.length;i/g;i.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},i.getDefaultWhiteList=o,i.onTag=function(e,t,i){},i.onIgnoreTag=function(e,t,i){},i.onTagAttr=function(e,t,i){},i.onIgnoreTagAttr=function(e,t,i){},i.safeAttrValue=function(e,t,i,n){if(i=T(i),"href"===t||"src"===t){if("#"===(i=c.trim(i)))return"#";if("http://"!==i.substr(0,7)&&"https://"!==i.substr(0,8)&&"mailto:"!==i.substr(0,7)&&"tel:"!==i.substr(0,4)&&"#"!==i[0]&&"/"!==i[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(i))return""}else if("style"===t){if(v.lastIndex=0,v.test(i))return"";if(w.lastIndex=0,w.test(i)&&(m.lastIndex=0,m.test(i)))return"";!1!==n&&(i=(n=n||s).process(i))}return i=E(i)},i.escapeHtml=a,i.escapeQuote=b,i.unescapeQuote=_,i.escapeHtmlEntities=y,i.escapeDangerHtml5Entities=x,i.clearNonPrintableCharacter=k,i.friendlyAttrValue=T,i.escapeAttrValue=E,i.onIgnoreTagStripAll=function(){return""},i.StripTagBody=function(o,s){"function"!=typeof s&&(s=function(){});var a=!Array.isArray(o),l=[],d=!1;return{onIgnoreTag:function(e,t,i){if(function(e){return a||-1!==c.indexOf(o,e)}(e)){if(i.isClosing){var n="[/removed]",r=i.position+n.length;return l.push([!1!==d?d:i.position,r]),d=!1,n}return d||(d=i.position),"[removed]"}return s(e,t,i)},remove:function(t){var i="",n=0;return c.forEach(l,function(e){i+=t.slice(n,e[0]),n=e[1]}),i+=t.slice(n)}}},i.stripCommentTag=function(e){return e.replace(A,"")},i.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},i.cssFilter=s,i.getDefaultCSSWhiteList=r},{"./util":5,cssfilter:10}],3:[function(e,t,i){var n=e("./default"),r=e("./parser"),o=e("./xss");for(var s in(i=t.exports=function(e,t){return new o(t).process(e)}).FilterXSS=o,n)i[s]=n[s];for(var s in r)i[s]=r[s];"undefined"!=typeof window&&(window.filterXSS=t.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(e,t,i){var c=e("./util");function h(e){var t=c.spaceIndex(e);if(-1===t)var i=e.slice(1,-1);else i=e.slice(1,t+1);return"/"===(i=c.trim(i).toLowerCase()).slice(0,1)&&(i=i.slice(1)),"/"===i.slice(-1)&&(i=i.slice(0,-1)),i}var u=/[^a-zA-Z0-9_:\.\-]/gim;function p(e,t){for(;t"===u){n+=i(e.slice(r,o)),c=h(d=e.slice(o,a+1)),n+=t(o,n.length,c,d,"";var a=function(e){var t=b.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var i="/"===(e=b.trim(e.slice(t+1,-1)))[e.length-1];return i&&(e=b.trim(e.slice(0,-1))),{html:e,closing:i}}(i),l=c[r],d=w(a.html,function(e,t){var i,n=-1!==b.indexOf(l,e);return _(i=p(r,e,t,n))?n?(t=g(r,e,t,v))?e+'="'+t+'"':e:_(i=f(r,e,t,n))?void 0:i:i});i="<"+r;return d&&(i+=" "+d),a.closing&&(i+=" /"),i+=">"}return _(o=h(r,i,s))?m(i):o},m);return i&&(n=i.remove(n)),n},t.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:10}],7:[function(e,t,i){var n,r;n=this,r=function(){var T=!0;function s(i){function e(e){var t=i.match(e);return t&&1t[1][i])return 1;if(t[0][i]!==t[1][i])return-1;if(0===i)return 0}}function o(e,t,i){var n=a;"string"==typeof t&&(i=t,t=void 0),void 0===t&&(t=!1),i&&(n=s(i));var r=""+n.version;for(var o in e)if(e.hasOwnProperty(o)&&n[o]){if("string"!=typeof e[o])throw new Error("Browser version in the minVersion map should be a string: "+o+": "+String(e));return E([r,e[o]])<0}return t}return a.test=function(e){for(var t=0;t'),a=n.title;!r||r.title&&(a=O(r.title[0]));var l=n.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX+"?highlight="+$.urlencode(A),d=$("",{href:l});if(d.html(a),d.find("span").addClass("highlighted"),s.append(d),n.project!==S){var c=" (from project "+n.project+")",u=$("",{text:c});s.append(u)}for(var h=0;h'),f="",g="",m="",v="",w="",b="",y="",x="",k="",T="";if("sections"===o[h].type){if(g=(f=o[h])._source.title,m=l+"#"+f._source.id,v=[f._source.content.substr(0,C)+" ..."],f.highlight&&(f.highlight["sections.title"]&&(g=O(f.highlight["sections.title"][0])),f.highlight["sections.content"])){w=f.highlight["sections.content"],v=[];for(var E=0;E<%= section_subtitle %>
    <% for (var i = 0; i < section_content.length; ++i) { %>
    <%= section_content[i] %>
    <% } %>',{section_subtitle_link:m,section_subtitle:g,section_content:v})}"domains"===o[h].type&&(y=(b=o[h])._source.role_name,x=l+"#"+b._source.anchor,k=b._source.name,(T="")!==b._source.docstrings&&(T=b._source.docstrings.substr(0,C)+" ..."),b.highlight&&(b.highlight["domains.docstrings"]&&(T="... "+O(b.highlight["domains.docstrings"][0])+" ..."),b.highlight["domains.name"]&&(k=O(b.highlight["domains.name"][0]))),I(p,'
    <%= domain_content %>
    ',{domain_subtitle_link:x,domain_subtitle:"["+y+"]: "+k,domain_content:T})),p.find("span").addClass("highlighted"),s.append(p),h!==o.length-1&&s.append($("
    "))}Search.output.append(s),s.slideDown(5)}t.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",t.length)):(Search.query_fallback(A),console.log("Read the Docs search failed. Falling back to Sphinx search."))}).fail(function(e){Search.query_fallback(A)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:e.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(e,t){return"success"!==t||void 0===e.responseJSON||0===e.responseJSON.count?n.reject():n.resolve(e.responseJSON)}}).fail(function(e,t,i){return n.reject()})}}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}(n.get())}}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":16}],18:[function(r,e,t){var o=r("./rtd-data");e.exports={init:function(){var e=o.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var e=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",e):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",e])}),void 0===window.SphinxRtdTheme){var t=r("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js").ThemeNav;if($(document).ready(function(){setTimeout(function(){t.navBar||t.enable()},1e3)}),e.is_rtd_like_theme()&&!$("div.wy-side-scroll:first").length){console.log("Applying theme sidebar fix...");var i=$("nav.wy-nav-side:first"),n=$("
    ").addClass("wy-side-scroll");i.children().detach().appendTo(n),n.prependTo(i),t.navBar=n}}}}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":16}],19:[function(e,t,i){var d,c=e("./constants"),u=e("./rtd-data"),n=e("bowser"),h="#ethical-ad-placement";function p(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.LEFTNAV,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_mkdocs_builder()&&d.is_rtd_like_theme()?(o="nav.wy-nav-side",e="ethical-rtd ethical-dark-theme"):d.is_rtd_like_theme()?(o="nav.wy-nav-side > div.wy-side-scroll",e="ethical-rtd ethical-dark-theme"):d.is_alabaster_like_theme()&&(o="div.sphinxsidebar > div.sphinxsidebarwrapper",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top>$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function f(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=c.PROMO_TYPES.FOOTER,r=c.DEFAULT_PROMO_PRIORITY,o=null;return d.is_rtd_like_theme()?(o=$("
    ").insertAfter("footer hr"),e="ethical-rtd"):d.is_alabaster_like_theme()&&(o="div.bodywrapper .body",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top<$(window).height())&&(r=c.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function g(){var e="rtd-"+(Math.random()+1).toString(36).substring(4),t=c.PROMO_TYPES.FIXED_FOOTER,i=c.DEFAULT_PROMO_PRIORITY;return n&&n.mobile&&(i=c.MAXIMUM_PROMO_PRIORITY),$("
    ").attr("id",e).appendTo("body"),{div_id:e,display_type:t,priority:i}}function m(e){this.id=e.id,this.div_id=e.div_id||"",this.html=e.html||"",this.display_type=e.display_type||"",this.view_tracking_url=e.view_url,this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",e.id):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",e.id])}}m.prototype.display=function(){var e="#"+this.div_id,t=this.view_tracking_url;$(e).html(this.html),$(e).find('a[href*="/sustainability/click/"]').on("click",this.click_handler);function i(){$.inViewport($(e),-3)&&($("").attr("src",t).css("display","none").appendTo(e),$(window).off(".rtdinview"),$(".wy-side-scroll").off(".rtdinview"))}$(window).on("DOMContentLoaded.rtdinview load.rtdinview scroll.rtdinview resize.rtdinview",i),$(".wy-side-scroll").on("scroll.rtdinview",i),$(".ethical-close").on("click",function(){return $(e).hide(),!1}),this.post_promo_display()},m.prototype.disable=function(){$("#"+this.div_id).hide()},m.prototype.post_promo_display=function(){this.display_type===c.PROMO_TYPES.FOOTER&&($("
    ").insertAfter("#"+this.div_id),$("
    ").insertBefore("#"+this.div_id+".ethical-alabaster .ethical-footer"))},t.exports={Promo:m,init:function(){var e,t,i={format:"jsonp"},n=[],r=[],o=[],s=[f,p,g],a=!1;if(d=u.get(),t=function(){var e,t="rtd-"+(Math.random()+1).toString(36).substring(4),i=c.PROMO_TYPES.LEFTNAV;return e=d.is_rtd_like_theme()?"ethical-rtd ethical-dark-theme":"ethical-alabaster",0<$(h).length?($("
    ").attr("id",t).addClass(e).appendTo(h),{div_id:t,display_type:i}):null}())n.push(t.div_id),r.push(t.display_type),o.push(t.priority||c.DEFAULT_PROMO_PRIORITY),a=!0;else{if(!d.show_promo())return;for(var l=0;l").attr("id","rtd-detection").attr("class","ethical-rtd").html(" ").appendTo("body"),0===$("#rtd-detection").height()&&(e=!0),$("#rtd-detection").remove(),e}()&&(console.log("---------------------------------------------------------------------------------------"),console.log("Read the Docs hosts documentation for tens of thousands of open source projects."),console.log("We fund our development (we are open source) and operations through advertising."),console.log("We promise to:"),console.log(" - never let advertisers run 3rd party JavaScript"),console.log(" - never sell user data to advertisers or other 3rd parties"),console.log(" - only show advertisements of interest to developers"),console.log("Read more about our approach to advertising here: https://docs.readthedocs.io/en/latest/ethical-advertising.html"),console.log("%cPlease allow our Ethical Ads or go ad-free:","font-size: 2em"),console.log("https://docs.readthedocs.io/en/latest/advertising/ad-blocking.html"),console.log("--------------------------------------------------------------------------------------"),function(){var e=p(),t=null;e&&e.div_id&&(t=$("#"+e.div_id).attr("class","keep-us-sustainable"),$("

    ").text("Support Read the Docs!").appendTo(t),$("

    ").html('Please help keep us sustainable by allowing our Ethical Ads in your ad blocker or go ad-free by subscribing.').appendTo(t),$("

    ").text("Thank you! ❤️").appendTo(t))}())}})}}},{"./constants":14,"./rtd-data":16,bowser:7}],20:[function(e,t,i){var o=e("./rtd-data");t.exports={init:function(e){var t=o.get();if(!e.is_highest){var i=window.location.pathname.replace(t.version,e.slug),n=$('

    Note

    You are not reading the most recent version of this documentation. is the latest version available.

    ');n.find("a").attr("href",i).text(e.slug);var r=$("div.body");r.length||(r=$("div.document")),r.prepend(n)}}}},{"./rtd-data":16}],21:[function(e,t,i){var n=e("./doc-embed/sponsorship"),r=e("./doc-embed/footer.js"),o=(e("./doc-embed/rtd-data"),e("./doc-embed/sphinx")),s=e("./doc-embed/search");$.extend(e("verge")),$(document).ready(function(){r.init(),o.init(),s.init(),n.init()})},{"./doc-embed/footer.js":15,"./doc-embed/rtd-data":16,"./doc-embed/search":17,"./doc-embed/sphinx":18,"./doc-embed/sponsorship":19,verge:13}]},{},[21]); \ No newline at end of file +!function o(s,a,l){function d(t,e){if(!a[t]){if(!s[t]){var i="function"==typeof require&&require;if(!e&&i)return i(t,!0);if(c)return c(t,!0);var n=new Error("Cannot find module '"+t+"'");throw n.code="MODULE_NOT_FOUND",n}var r=a[t]={exports:{}};s[t][0].call(r.exports,function(e){return d(s[t][1][e]||e)},r,r.exports,o,s,a,l)}return a[t].exports}for(var c="function"==typeof require&&require,e=0;e
    "),i("table.docutils.footnote").wrap("
    "),i("table.docutils.citation").wrap("
    "),i(".wy-menu-vertical ul").not(".simple").siblings("a").each(function(){var t=i(this);expand=i(''),expand.on("click",function(e){return n.toggleCurrent(t),e.stopPropagation(),!1}),t.prepend(expand)})},reset:function(){var e=encodeURI(window.location.hash)||"#";try{var t=$(".wy-menu-vertical"),i=t.find('[href="'+e+'"]');if(0===i.length){var n=$('.document [id="'+e.substring(1)+'"]').closest("div.section");0===(i=t.find('[href="#'+n.attr("id")+'"]')).length&&(i=t.find('[href="#"]'))}0this.docHeight||(this.navBar.scrollTop(i),this.winPosition=e)},onResize:function(){this.winResize=!1,this.winHeight=this.win.height(),this.docHeight=$(document).height()},hashChange:function(){this.linkScroll=!0,this.win.one("hashchange",function(){this.linkScroll=!1})},toggleCurrent:function(e){var t=e.closest("li");t.siblings("li.current").removeClass("current"),t.siblings().find("li.current").removeClass("current"),t.find("> ul li.current").removeClass("current"),t.toggleClass("current")}},"undefined"!=typeof window&&(window.SphinxRtdTheme={Navigation:t.exports.ThemeNav,StickyNav:t.exports.ThemeNav}),function(){for(var o=0,e=["ms","moz","webkit","o"],t=0;t/g,c=/"/g,h=/"/g,p=/&#([a-zA-Z0-9]*);?/gim,f=/:?/gim,g=/&newline;?/gim,m=/((j\s*a\s*v\s*a|v\s*b|l\s*i\s*v\s*e)\s*s\s*c\s*r\s*i\s*p\s*t\s*|m\s*o\s*c\s*h\s*a)\:/gi,v=/e\s*x\s*p\s*r\s*e\s*s\s*s\s*i\s*o\s*n\s*\(.*/gi,w=/u\s*r\s*l\s*\(.*/gi;function b(e){return e.replace(c,""")}function _(e){return e.replace(h,'"')}function y(e){return e.replace(p,function(e,t){return"x"===t[0]||"X"===t[0]?String.fromCharCode(parseInt(t.substr(1),16)):String.fromCharCode(parseInt(t,10))})}function x(e){return e.replace(f,":").replace(g," ")}function k(e){for(var t="",i=0,n=e.length;i/g;i.whiteList={a:["target","href","title"],abbr:["title"],address:[],area:["shape","coords","href","alt"],article:[],aside:[],audio:["autoplay","controls","loop","preload","src"],b:[],bdi:["dir"],bdo:["dir"],big:[],blockquote:["cite"],br:[],caption:[],center:[],cite:[],code:[],col:["align","valign","span","width"],colgroup:["align","valign","span","width"],dd:[],del:["datetime"],details:["open"],div:[],dl:[],dt:[],em:[],font:["color","size","face"],footer:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],hr:[],i:[],img:["src","alt","title","width","height"],ins:["datetime"],li:[],mark:[],nav:[],ol:[],p:[],pre:[],s:[],section:[],small:[],span:[],sub:[],sup:[],strong:[],table:["width","border","align","valign"],tbody:["align","valign"],td:["width","rowspan","colspan","align","valign"],tfoot:["align","valign"],th:["width","rowspan","colspan","align","valign"],thead:["align","valign"],tr:["rowspan","align","valign"],tt:[],u:[],ul:[],video:["autoplay","controls","loop","preload","src","height","width"]},i.getDefaultWhiteList=o,i.onTag=function(e,t,i){},i.onIgnoreTag=function(e,t,i){},i.onTagAttr=function(e,t,i){},i.onIgnoreTagAttr=function(e,t,i){},i.safeAttrValue=function(e,t,i,n){if(i=T(i),"href"===t||"src"===t){if("#"===(i=u.trim(i)))return"#";if("http://"!==i.substr(0,7)&&"https://"!==i.substr(0,8)&&"mailto:"!==i.substr(0,7)&&"tel:"!==i.substr(0,4)&&"#"!==i[0]&&"/"!==i[0])return""}else if("background"===t){if(m.lastIndex=0,m.test(i))return""}else if("style"===t){if(v.lastIndex=0,v.test(i))return"";if(w.lastIndex=0,w.test(i)&&(m.lastIndex=0,m.test(i)))return"";!1!==n&&(i=(n=n||s).process(i))}return i=E(i)},i.escapeHtml=a,i.escapeQuote=b,i.unescapeQuote=_,i.escapeHtmlEntities=y,i.escapeDangerHtml5Entities=x,i.clearNonPrintableCharacter=k,i.friendlyAttrValue=T,i.escapeAttrValue=E,i.onIgnoreTagStripAll=function(){return""},i.StripTagBody=function(s,a){"function"!=typeof a&&(a=function(){});var l=!Array.isArray(s),d=[],c=!1;return{onIgnoreTag:function(e,t,i){if(o=e,l||-1!==u.indexOf(s,o)){if(i.isClosing){var n="[/removed]",r=i.position+n.length;return d.push([!1!==c?c:i.position,r]),c=!1,n}return c||(c=i.position),"[removed]"}return a(e,t,i);var o},remove:function(t){var i="",n=0;return u.forEach(d,function(e){i+=t.slice(n,e[0]),n=e[1]}),i+=t.slice(n)}}},i.stripCommentTag=function(e){return e.replace(S,"")},i.stripBlankChar=function(e){var t=e.split("");return(t=t.filter(function(e){var t=e.charCodeAt(0);return!(127===t||t<=31&&10!==t&&13!==t)})).join("")},i.cssFilter=s,i.getDefaultCSSWhiteList=r},{"./util":5,cssfilter:10}],3:[function(e,t,i){var n=e("./default"),r=e("./parser"),o=e("./xss");for(var s in(i=t.exports=function(e,t){return new o(t).process(e)}).FilterXSS=o,n)i[s]=n[s];for(var s in r)i[s]=r[s];"undefined"!=typeof window&&(window.filterXSS=t.exports)},{"./default":2,"./parser":4,"./xss":6}],4:[function(e,t,i){var c=e("./util");function h(e){var t=c.spaceIndex(e);if(-1===t)var i=e.slice(1,-1);else i=e.slice(1,t+1);return"/"===(i=c.trim(i).toLowerCase()).slice(0,1)&&(i=i.slice(1)),"/"===i.slice(-1)&&(i=i.slice(0,-1)),i}var u=/[^a-zA-Z0-9_:\.\-]/gim;function p(e,t){for(;t"===u){n+=i(e.slice(r,o)),c=h(d=e.slice(o,a+1)),n+=t(o,n.length,c,d,"";var a=function(e){var t=b.spaceIndex(e);if(-1===t)return{html:"",closing:"/"===e[e.length-2]};var i="/"===(e=b.trim(e.slice(t+1,-1)))[e.length-1];return i&&(e=b.trim(e.slice(0,-1))),{html:e,closing:i}}(i),l=c[r],d=w(a.html,function(e,t){var i,n=-1!==b.indexOf(l,e);return _(i=p(r,e,t,n))?n?(t=g(r,e,t,v))?e+'="'+t+'"':e:_(i=f(r,e,t,n))?void 0:i:i});i="<"+r;return d&&(i+=" "+d),a.closing&&(i+=" /"),i+=">"}return _(o=h(r,i,s))?m(i):o},m);return i&&(n=i.remove(n)),n},t.exports=a},{"./default":2,"./parser":4,"./util":5,cssfilter:10}],7:[function(e,t,i){var n,r;n=this,r=function(){var T=!0;function s(i){function e(e){var t=i.match(e);return t&&1t[1][i])return 1;if(t[0][i]!==t[1][i])return-1;if(0===i)return 0}}function o(e,t,i){var n=a;"string"==typeof t&&(i=t,t=void 0),void 0===t&&(t=!1),i&&(n=s(i));var r=""+n.version;for(var o in e)if(e.hasOwnProperty(o)&&n[o]){if("string"!=typeof e[o])throw new Error("Browser version in the minVersion map should be a string: "+o+": "+String(e));return l([r,e[o]])<0}return t}return a.test=function(e){for(var t=0;t'),a=n.title;r&&r.title&&(a=O(r.title[0]));var l=n.link+DOCUMENTATION_OPTIONS.FILE_SUFFIX+"?highlight="+$.urlencode(S),d=$("",{href:l});if(d.html(a),d.find("span").addClass("highlighted"),s.append(d),n.project!==A){var c=" (from project "+n.project+")",u=$("",{text:c});s.append(u)}for(var h=0;h'),f="",g="",m="",v="",w="",b="",y="",x="",k="",T="";if("sections"===o[h].type){if(g=(f=o[h])._source.title,m=l+"#"+f._source.id,v=[f._source.content.substr(0,C)+" ..."],f.highlight&&(f.highlight["sections.title"]&&(g=O(f.highlight["sections.title"][0])),f.highlight["sections.content"])){w=f.highlight["sections.content"],v=[];for(var E=0;E<%= section_subtitle %>
    <% for (var i = 0; i < section_content.length; ++i) { %>
    <%= section_content[i] %>
    <% } %>',{section_subtitle_link:m,section_subtitle:g,section_content:v})}"domains"===o[h].type&&(y=(b=o[h])._source.role_name,x=l+"#"+b._source.anchor,k=b._source.name,(T="")!==b._source.docstrings&&(T=b._source.docstrings.substr(0,C)+" ..."),b.highlight&&(b.highlight["domains.docstrings"]&&(T="... "+O(b.highlight["domains.docstrings"][0])+" ..."),b.highlight["domains.name"]&&(k=O(b.highlight["domains.name"][0]))),I(p,'
    <%= domain_content %>
    ',{domain_subtitle_link:x,domain_subtitle:"["+y+"]: "+k,domain_content:T})),p.find("span").addClass("highlighted"),s.append(p),h!==o.length-1&&s.append($("
    "))}Search.output.append(s),s.slideDown(5)}t.length?Search.status.text(_("Search finished, found %s page(s) matching the search query.").replace("%s",t.length)):(Search.query_fallback(S),console.log("Read the Docs search failed. Falling back to Sphinx search."))}).fail(function(e){Search.query_fallback(S)}).always(function(){$("#search-progress").empty(),Search.stopPulse(),Search.title.text(_("Search Results")),Search.status.fadeIn(500)}),$.ajax({url:e.href,crossDomain:!0,xhrFields:{withCredentials:!0},complete:function(e,t){return"success"!==t||void 0===e.responseJSON||0===e.responseJSON.count?n.reject():n.resolve(e.responseJSON)}}).fail(function(e,t,i){return n.reject()})}}$(document).ready(function(){"undefined"!=typeof Search&&Search.init()})}(n.get())}}},{"./../../../../../../bower_components/xss/lib/index":3,"./rtd-data":16}],18:[function(r,e,t){var o=r("./rtd-data");e.exports={init:function(){var e=o.get();if($(document).on("click","[data-toggle='rst-current-version']",function(){var e=$("[data-toggle='rst-versions']").hasClass("shift-up")?"was_open":"was_closed";"undefined"!=typeof ga?ga("rtfd.send","event","Flyout","Click",e):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Flyout","Click",e])}),void 0===window.SphinxRtdTheme){var t=r("./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js").ThemeNav;if($(document).ready(function(){setTimeout(function(){t.navBar||t.enable()},1e3)}),e.is_rtd_like_theme()&&!$("div.wy-side-scroll:first").length){console.log("Applying theme sidebar fix...");var i=$("nav.wy-nav-side:first"),n=$("
    ").addClass("wy-side-scroll");i.children().detach().appendTo(n),n.prependTo(i),t.navBar=n}}}}},{"./../../../../../../bower_components/sphinx-rtd-theme/js/theme.js":1,"./rtd-data":16}],19:[function(e,t,i){var u,h=e("./constants"),p=e("./rtd-data"),n=e("bowser"),f="#ethical-ad-placement";function g(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=h.PROMO_TYPES.LEFTNAV,r=h.DEFAULT_PROMO_PRIORITY,o=null;return u.is_mkdocs_builder()&&u.is_rtd_like_theme()?(o="nav.wy-nav-side",e="ethical-rtd ethical-dark-theme"):u.is_rtd_like_theme()?(o="nav.wy-nav-side > div.wy-side-scroll",e="ethical-rtd ethical-dark-theme"):u.is_alabaster_like_theme()&&(o="div.sphinxsidebar > div.sphinxsidebarwrapper",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top>$(window).height())&&(r=h.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function m(){var e,t,i="rtd-"+(Math.random()+1).toString(36).substring(4),n=h.PROMO_TYPES.FOOTER,r=h.DEFAULT_PROMO_PRIORITY,o=null;return u.is_rtd_like_theme()?(o=$("
    ").insertAfter("footer hr"),e="ethical-rtd"):u.is_alabaster_like_theme()&&(o="div.bodywrapper .body",e="ethical-alabaster"),o?($("
    ").attr("id",i).addClass(e).appendTo(o),(!(t=$("#"+i).offset())||t.top<$(window).height())&&(r=h.LOW_PROMO_PRIORITY),{div_id:i,display_type:n,priority:r}):null}function v(){var e="rtd-"+(Math.random()+1).toString(36).substring(4),t=h.PROMO_TYPES.FIXED_FOOTER,i=h.DEFAULT_PROMO_PRIORITY;return n&&n.mobile&&(i=h.MAXIMUM_PROMO_PRIORITY),$("
    ").attr("id",e).appendTo("body"),{div_id:e,display_type:t,priority:i}}function w(e){this.id=e.id,this.div_id=e.div_id||"",this.html=e.html||"",this.display_type=e.display_type||"",this.view_tracking_url=e.view_url,this.click_handler=function(){"undefined"!=typeof ga?ga("rtfd.send","event","Promo","Click",e.id):"undefined"!=typeof _gaq&&_gaq.push(["rtfd._setAccount","UA-17997319-1"],["rtfd._trackEvent","Promo","Click",e.id])}}w.prototype.display=function(){var e="#"+this.div_id,t=this.view_tracking_url;$(e).html(this.html),$(e).find('a[href*="/sustainability/click/"]').on("click",this.click_handler);var i=function(){$.inViewport($(e),-3)&&($("").attr("src",t).css("display","none").appendTo(e),$(window).off(".rtdinview"),$(".wy-side-scroll").off(".rtdinview"))};$(window).on("DOMContentLoaded.rtdinview load.rtdinview scroll.rtdinview resize.rtdinview",i),$(".wy-side-scroll").on("scroll.rtdinview",i),$(".ethical-close").on("click",function(){return $(e).hide(),!1}),this.post_promo_display()},w.prototype.disable=function(){$("#"+this.div_id).hide()},w.prototype.post_promo_display=function(){this.display_type===h.PROMO_TYPES.FOOTER&&($("
    ").insertAfter("#"+this.div_id),$("
    ").insertBefore("#"+this.div_id+".ethical-alabaster .ethical-footer"))},t.exports={Promo:w,init:function(){var e,t,i,n,r,o={format:"jsonp"},s=[],a=[],l=[],d=[m,g,v];if(u=p.get(),n="rtd-"+(Math.random()+1).toString(36).substring(4),r=h.PROMO_TYPES.LEFTNAV,i=u.is_rtd_like_theme()?"ethical-rtd ethical-dark-theme":"ethical-alabaster",t=0<$(f).length?($("
    ").attr("id",n).addClass(i).appendTo(f),{div_id:n,display_type:r}):null)s.push(t.div_id),a.push(t.display_type),l.push(t.priority||h.DEFAULT_PROMO_PRIORITY);else{if(!u.show_promo())return;for(var c=0;c").attr("id","rtd-detection").attr("class","ethical-rtd").html(" ").appendTo("body"),0===$("#rtd-detection").height()&&(i=!0),$("#rtd-detection").remove(),i)&&(console.log("---------------------------------------------------------------------------------------"),console.log("Read the Docs hosts documentation for tens of thousands of open source projects."),console.log("We fund our development (we are open source) and operations through advertising."),console.log("We promise to:"),console.log(" - never let advertisers run 3rd party JavaScript"),console.log(" - never sell user data to advertisers or other 3rd parties"),console.log(" - only show advertisements of interest to developers"),console.log("Read more about our approach to advertising here: https://docs.readthedocs.io/en/latest/ethical-advertising.html"),console.log("%cPlease allow our Ethical Ads or go ad-free:","font-size: 2em"),console.log("https://docs.readthedocs.io/en/latest/advertising/ad-blocking.html"),console.log("--------------------------------------------------------------------------------------"),e=g(),t=null,e&&e.div_id&&(t=$("#"+e.div_id).attr("class","keep-us-sustainable"),$("

    ").text("Support Read the Docs!").appendTo(t),$("

    ").html('Please help keep us sustainable by allowing our Ethical Ads in your ad blocker or go ad-free by subscribing.').appendTo(t),$("

    ").text("Thank you! ❤️").appendTo(t)))}})}}},{"./constants":14,"./rtd-data":16,bowser:7}],20:[function(e,t,i){var o=e("./rtd-data");t.exports={init:function(e){var t=o.get();if(!e.is_highest){var i=window.location.pathname.replace(t.version,e.slug),n=$('

    Note

    You are not reading the most recent version of this documentation. is the latest version available.

    ');n.find("a").attr("href",i).text(e.slug);var r=$("div.body");r.length||(r=$("div.document")),r.prepend(n)}}}},{"./rtd-data":16}],21:[function(e,t,i){var n=e("./doc-embed/sponsorship"),r=e("./doc-embed/footer.js"),o=(e("./doc-embed/rtd-data"),e("./doc-embed/sphinx")),s=e("./doc-embed/search");$.extend(e("verge")),$(document).ready(function(){r.init(),o.init(),s.init(),n.init()})},{"./doc-embed/footer.js":15,"./doc-embed/rtd-data":16,"./doc-embed/search":17,"./doc-embed/sphinx":18,"./doc-embed/sponsorship":19,verge:13}]},{},[21]); \ No newline at end of file diff --git a/readthedocs/projects/static/projects/js/tools.js b/readthedocs/projects/static/projects/js/tools.js index 5e60509d765..ec4ff8a1f40 100644 --- a/readthedocs/projects/static/projects/js/tools.js +++ b/readthedocs/projects/static/projects/js/tools.js @@ -1 +1 @@ -require=function o(i,a,l){function c(t,e){if(!a[t]){if(!i[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(u)return u(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var s=a[t]={exports:{}};i[t][0].call(s.exports,function(e){return c(i[t][1][e]||e)},s,s.exports,o,i,a,l)}return a[t].exports}for(var u="function"==typeof require&&require,e=0;e'),i("body").append(t));var n=e.insertContent(t);i(n).show(),t.show(),i(document).click(function(e){i(e.target).closest("#embed-container").length||(i(n).remove(),t.remove())})}function s(e){var s=this;s.config=e||{},void 0===s.config.api_host&&(s.config.api_host="https://readthedocs.org"),s.help=o.observable(null),s.error=o.observable(null),s.project=o.observable(s.config.project),s.file=o.observable(null),s.sections=o.observableArray(),o.computed(function(){var e=s.file();(s.sections.removeAll(),e)&&(s.help("Loading..."),s.error(null),s.section(null),new r.Embed(s.config).page(s.project(),"latest",s.file(),function(e){s.sections.removeAll(),s.help(null),s.error(null);var t,n=[];for(t in e.sections){var r=e.sections[t];i.each(r,function(e,t){n.push({title:e,id:e})})}s.sections(n)},function(e){s.help(null),s.error("There was a problem retrieving data from the API")}))}),s.has_sections=o.computed(function(){return 0'),i("body").append(t));var n=e.insertContent(t);i(n).show(),t.show(),i(document).click(function(e){i(e.target).closest("#embed-container").length||(i(n).remove(),t.remove())})}function s(e){var s=this;s.config=e||{},void 0===s.config.api_host&&(s.config.api_host="https://readthedocs.org"),s.help=o.observable(null),s.error=o.observable(null),s.project=o.observable(s.config.project),s.file=o.observable(null),s.sections=o.observableArray(),o.computed(function(){var e=s.file();(s.sections.removeAll(),e)&&(s.help("Loading..."),s.error(null),s.section(null),new r.Embed(s.config).page(s.project(),"latest",s.file(),function(e){s.sections.removeAll(),s.help(null),s.error(null);var t,n=[];for(t in e.sections){var r=e.sections[t];i.each(r,function(e,t){n.push({title:e,id:e})})}s.sections(n)},function(e){s.help(null),s.error("There was a problem retrieving data from the API")}))}),s.has_sections=o.computed(function(){return 0 Date: Thu, 5 Sep 2019 17:34:09 -0700 Subject: [PATCH 49/71] Serialize time in search queries properly --- readthedocs/search/api.py | 2 +- readthedocs/search/tasks.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/readthedocs/search/api.py b/readthedocs/search/api.py index fc4ce42de21..b167ff61cc7 100644 --- a/readthedocs/search/api.py +++ b/readthedocs/search/api.py @@ -173,7 +173,7 @@ def list(self, request, *args, **kwargs): version_slug, query, total_results, - time, + time.isoformat(), ) return response diff --git a/readthedocs/search/tasks.py b/readthedocs/search/tasks.py index 1a91e78f3b3..c8dba27caa8 100644 --- a/readthedocs/search/tasks.py +++ b/readthedocs/search/tasks.py @@ -142,7 +142,7 @@ def delete_old_search_queries_from_db(): @app.task(queue='web') -def record_search_query(project_slug, version_slug, query, total_results, time): +def record_search_query(project_slug, version_slug, query, total_results, time_string): """Record/update search query in database.""" if not project_slug or not version_slug or not query: log.debug( @@ -153,6 +153,7 @@ def record_search_query(project_slug, version_slug, query, total_results, time): ) return + time = timezone.datetime.strptime(time_string, "%Y-%m-%dT%H:%M:%S.%f+00:00") before_10_sec = time - timezone.timedelta(seconds=10) partial_query_qs = SearchQuery.objects.filter( project__slug=project_slug, From 5281e5f25428329ebacbbccdf66c30f3fa9abfa9 Mon Sep 17 00:00:00 2001 From: Eric Holscher <25510+ericholscher@users.noreply.github.com> Date: Thu, 5 Sep 2019 17:41:24 -0700 Subject: [PATCH 50/71] Update readthedocs/search/tasks.py Co-Authored-By: David Fischer --- readthedocs/search/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/search/tasks.py b/readthedocs/search/tasks.py index c8dba27caa8..d7828344258 100644 --- a/readthedocs/search/tasks.py +++ b/readthedocs/search/tasks.py @@ -153,7 +153,7 @@ def record_search_query(project_slug, version_slug, query, total_results, time_s ) return - time = timezone.datetime.strptime(time_string, "%Y-%m-%dT%H:%M:%S.%f+00:00") + time = timezone.make_aware(timezone.datetime.strptime(time_string, "%Y-%m-%dT%H:%M:%S.%f+00:00")) before_10_sec = time - timezone.timedelta(seconds=10) partial_query_qs = SearchQuery.objects.filter( project__slug=project_slug, From 2b19b0ca6ee5f3c7d78ef7645d45f09a4ad8a689 Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Thu, 5 Sep 2019 17:47:22 -0700 Subject: [PATCH 51/71] use dateutil because it's awesome --- readthedocs/search/tasks.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readthedocs/search/tasks.py b/readthedocs/search/tasks.py index d7828344258..46dafa9652e 100644 --- a/readthedocs/search/tasks.py +++ b/readthedocs/search/tasks.py @@ -1,5 +1,6 @@ import logging +from dateutil.parser import parse from django.apps import apps from django.utils import timezone from django_elasticsearch_dsl.registries import registry @@ -153,7 +154,7 @@ def record_search_query(project_slug, version_slug, query, total_results, time_s ) return - time = timezone.make_aware(timezone.datetime.strptime(time_string, "%Y-%m-%dT%H:%M:%S.%f+00:00")) + time = parse(time_string) before_10_sec = time - timezone.timedelta(seconds=10) partial_query_qs = SearchQuery.objects.filter( project__slug=project_slug, From b766388f6a95fadd25b5846dbdad0aa00c2441fc Mon Sep 17 00:00:00 2001 From: Eric Holscher Date: Thu, 5 Sep 2019 17:48:21 -0700 Subject: [PATCH 52/71] Fix log message --- readthedocs/search/tasks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readthedocs/search/tasks.py b/readthedocs/search/tasks.py index 46dafa9652e..02202db07e0 100644 --- a/readthedocs/search/tasks.py +++ b/readthedocs/search/tasks.py @@ -149,7 +149,7 @@ def record_search_query(project_slug, version_slug, query, total_results, time_s log.debug( 'Not recording the search query. Passed arguments: ' 'project_slug: %s, version_slug: %s, query: %s, total_results: %s, time: %s' % ( - project_slug, version_slug, query, total_results, time + project_slug, version_slug, query, total_results, time_string ) ) return From 0be35663020b2304d0e9f2174863bdc05c59ea85 Mon Sep 17 00:00:00 2001 From: saadmk11 Date: Sat, 7 Sep 2019 01:29:58 +0600 Subject: [PATCH 53/71] Remove PR Builder Project Idea from RTD GSoC Docs --- docs/gsoc.rst | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/docs/gsoc.rst b/docs/gsoc.rst index 3f0a6ce6145..d812ea96164 100644 --- a/docs/gsoc.rst +++ b/docs/gsoc.rst @@ -94,25 +94,6 @@ This could include: * Taking a swagger YAML file and generating HTML properly with Sphinx * Integration with our existing API to generate Swagger output -Autobuild docs for Pull Requests -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -It would be great to automatically build docs for Pull Requests in GitHub repos that our users have. -Currently we don't support this, -and it's one of our most requested features. - -This would include: - -* Modeling Pull Requests as a type of version alongside Tags and Branches -* Modifying how we upload HTML docs to store them in a place like S3 for long term storage -* Build integration with GitHub to send the status notifications when a PR is building and complete - -More info here: - -* https://github.com/readthedocs/readthedocs.org/issues/1340 -* https://github.com/readthedocs/readthedocs.org/issues/2465 - - Build a new Sphinx theme ~~~~~~~~~~~~~~~~~~~~~~~~ From 6547bb3eee8a9f3c6f82f768e35b11989b38bb29 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 9 Sep 2019 21:08:10 +0200 Subject: [PATCH 54/71] Update virtualenv from 16.7.4 to 16.7.5 --- requirements/pip.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pip.txt b/requirements/pip.txt index 61329a8868e..3410361771b 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,7 +1,7 @@ # Base packages pip==19.2.3 appdirs==1.4.3 -virtualenv==16.7.4 +virtualenv==16.7.5 django==1.11.24 # pyup: <1.12 django-extensions==2.2.1 From 288db84186157b5daa65ad9e0f4da94b1d5ff28b Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 9 Sep 2019 21:08:13 +0200 Subject: [PATCH 55/71] Update djangorestframework from 3.10.2 to 3.10.3 --- requirements/pip.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pip.txt b/requirements/pip.txt index 3410361771b..be7be12ab8b 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -7,7 +7,7 @@ django==1.11.24 # pyup: <1.12 django-extensions==2.2.1 django_polymorphic==2.1.2 -djangorestframework==3.10.2 +djangorestframework==3.10.3 # For intersphinx during builds # Use <2.x until we fix some issues in our theme. From 789e9e35bc8b8cf8da63236af1273c265349ec59 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 9 Sep 2019 21:08:15 +0200 Subject: [PATCH 56/71] Update drf-flex-fields from 0.5.0 to 0.6.1 --- requirements/pip.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pip.txt b/requirements/pip.txt index be7be12ab8b..a42c4c158e2 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -17,7 +17,7 @@ Sphinx==1.8.5 # pyup: <2.0.0 # Filtering for the REST API django-filter==2.2.0 -drf-flex-fields==0.5.0 +drf-flex-fields==0.6.1 drf-extensions==0.5.0 django-vanilla-views==1.0.6 From 9cd50c11146af14e269983a43e4ddc58cd7bced7 Mon Sep 17 00:00:00 2001 From: pyup-bot Date: Mon, 9 Sep 2019 21:08:16 +0200 Subject: [PATCH 57/71] Update django-annoying from 0.10.4 to 0.10.5 --- requirements/pip.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/pip.txt b/requirements/pip.txt index a42c4c158e2..9d4a9211033 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -92,7 +92,7 @@ django-textclassifier==1.0 nltk==3.4.5 textblob==0.15.3 -django-annoying==0.10.4 +django-annoying==0.10.5 django-messages-extends==0.6.0 djangorestframework-jsonp==1.0.2 django-taggit==1.1.0 From ea0e15d4454d018a7367b3dfeaf85b1952ec8954 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Mon, 9 Sep 2019 23:43:35 -0500 Subject: [PATCH 58/71] Remove dead code --- readthedocs/oauth/services/bitbucket.py | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/readthedocs/oauth/services/bitbucket.py b/readthedocs/oauth/services/bitbucket.py index 080883fea84..144b5e4508c 100644 --- a/readthedocs/oauth/services/bitbucket.py +++ b/readthedocs/oauth/services/bitbucket.py @@ -224,13 +224,6 @@ def get_provider_data(self, project, integration): session = self.get_session() owner, repo = build_utils.get_bitbucket_username_repo(url=project.repo) - if not integration: - integration, _ = Integration.objects.get_or_create( - project=project, - integration_type=Integration.BITBUCKET_WEBHOOK, - ) - data = self.get_webhook_data(project, integration) - rtd_webhook_url = 'https://{domain}{path}'.format( domain=settings.PRODUCTION_DOMAIN, path=reverse( @@ -239,7 +232,7 @@ def get_provider_data(self, project, integration): 'project_slug': project.slug, 'integration_pk': integration.pk, }, - ) + ), ) try: From 52d839b2872265c5b547e7534e87f1ba6eed5cb1 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 10 Sep 2019 00:08:18 -0500 Subject: [PATCH 59/71] Update docs --- docs/webhooks.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/webhooks.rst b/docs/webhooks.rst index 4e5bc241946..f5119c30262 100644 --- a/docs/webhooks.rst +++ b/docs/webhooks.rst @@ -36,7 +36,13 @@ After you have added the integration, you'll see a link to information about the As an example, the URL pattern looks like this: *https://readthedocs.org/api/v2/webhook///*. -Use this URL when setting up a new webhook with your provider -- these steps vary depending on the provider: +Use this URL when setting up a new webhook with your provider -- these steps vary depending on the provider. + +.. note:: + + If your account is connected to the provider, + we'll try to setup the webhook automatically. + If something fails, you can still setup the webhook manually. .. _webhook-integration-github: From b5cd50abd175d5ad040186533ede56db7cb81381 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 10 Sep 2019 11:05:35 -0500 Subject: [PATCH 60/71] Update docs --- docs/webhooks.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/webhooks.rst b/docs/webhooks.rst index f5119c30262..cfeb604591d 100644 --- a/docs/webhooks.rst +++ b/docs/webhooks.rst @@ -167,8 +167,6 @@ we create a secret for every integration that offers a way to verify that a webh Currently, `GitHub `__ and `GitLab `__ offer a way to check this. -When :ref:`resyncing the webhook `, the secret is changed too. - Troubleshooting --------------- From 3426bfc841ff46cd9429156872473b29dd3bb796 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 10 Sep 2019 14:31:28 -0500 Subject: [PATCH 61/71] Update docs for sharing This is to reflect changes on .com Also, I put a note that password and HTTP header are on beta currently. --- docs/commercial/sharing.rst | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/docs/commercial/sharing.rst b/docs/commercial/sharing.rst index 6aca9680954..dd5aedc75b7 100644 --- a/docs/commercial/sharing.rst +++ b/docs/commercial/sharing.rst @@ -2,30 +2,41 @@ Sharing ------- .. note:: - This feature only exists on `Read the Docs for Business `_. -You can share your project with users outside of your company. -There are two ways to do this: + This feature only exists on `Read the Docs for Business `__. + +You can share your project with users outside of your company: * by sending them a *secret link*, * by giving them a *password*. These methods will allow them to view a specific project inside your company. +Additionally, you can use a HTTP Authorization Header. +This is handy to have access from a script. + Enabling ~~~~~~~~ * Go into your *Project Admin* page and to the *Sharing* menu. -* Under the *Share with someone new* heading, select the way you prefer (secret link or password), add an expiration date and a *Description* so you remember who you're sharing it with. +* Under the *Share with someone new* heading, select the way you prefer (secret link, password, or HTTP header token), + add an expiration date and a *Description* so you remember who you're sharing it with. * Click *Share!* to create. * Get the info needed to share your documentation with other users: * If you have selected secret link, copy the link that is generated * In case of password, copy the link and password + * For HTTP header token, you need to pass the ``Authorization`` header in your HTTP request. * Give that information to the person who you want to give access. -.. note:: You can always revoke access in the same panel. +.. note:: + + You can always revoke access in the same panel. + +.. note:: + + Sharing using a password and a HTTP header token are currently in beta. Effects ~~~~~~~ @@ -40,6 +51,17 @@ Password ******** Once the person you send the link to clicks on the link, they will see -a *Authorization required* page asking them for the password you +an *Authorization required* page asking them for the password you generated. When the user enters the password, they will have access to view your project. + +HTTP Authorization Header +************************* + +You need to pass the ``Authorization`` header with the token on each HTTP request. +The header has the form ``Authorization: Token ``. +For example: + +.. prompt:: bash $ + + curl -H "Authorization: Token 19okmz5k0i6yk17jp70jlnv91v" https://docs.example.com/en/latest/example.html From f4ad289f503a10eaae8caf4e6b0b7d0088f34cc3 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 10 Sep 2019 19:44:44 -0500 Subject: [PATCH 62/71] Clean up views Some general cleanup. Related #5856 --- readthedocs/builds/urls.py | 10 ++++---- readthedocs/builds/views.py | 23 ++++--------------- readthedocs/core/views/hooks.py | 1 - readthedocs/projects/urls/private.py | 6 ++--- readthedocs/projects/views/private.py | 33 +++++++++++---------------- 5 files changed, 24 insertions(+), 49 deletions(-) diff --git a/readthedocs/builds/urls.py b/readthedocs/builds/urls.py index 9c421662047..bb43fd397bb 100644 --- a/readthedocs/builds/urls.py +++ b/readthedocs/builds/urls.py @@ -1,20 +1,18 @@ -# -*- coding: utf-8 -*- - """URL configuration for builds app.""" -from django.conf.urls import url -from .views import builds_redirect_detail, builds_redirect_list +from django.conf.urls import url +from django.views.generic.base import RedirectView urlpatterns = [ url( r'^(?P[-\w]+)/(?P\d+)/$', - builds_redirect_detail, + RedirectView.as_view(pattern_name='builds_detail', permanent=True), name='old_builds_detail', ), url( r'^(?P[-\w]+)/$', - builds_redirect_list, + RedirectView.as_view(pattern_name='builds_project_list', permanent=True), name='old_builds_project_list', ), ] diff --git a/readthedocs/builds/views.py b/readthedocs/builds/views.py index 65b3d43c9da..d327e3d0d73 100644 --- a/readthedocs/builds/views.py +++ b/readthedocs/builds/views.py @@ -1,9 +1,8 @@ -# -*- coding: utf-8 -*- - """Views for builds app.""" import logging import textwrap +from urllib.parse import urlparse from django.contrib import messages from django.contrib.auth.decorators import login_required @@ -17,12 +16,11 @@ from django.utils.decorators import method_decorator from django.views.generic import DetailView, ListView from requests.utils import quote -from urllib.parse import urlparse -from readthedocs.doc_builder.exceptions import BuildEnvironmentError from readthedocs.builds.models import Build, Version from readthedocs.core.permissions import AdminPermission from readthedocs.core.utils import trigger_build +from readthedocs.doc_builder.exceptions import BuildEnvironmentError from readthedocs.projects.models import Project @@ -30,6 +28,7 @@ class BuildBase: + model = Build def get_queryset(self): @@ -103,6 +102,7 @@ def get_context_data(self, **kwargs): class BuildDetail(BuildBase, DetailView): + pk_url_kwarg = 'build_pk' def get_context_data(self, **kwargs): @@ -152,18 +152,3 @@ def get_context_data(self, **kwargs): issue_url = urlparse(issue_url).geturl() context['issue_url'] = issue_url return context - - -# Old build view redirects - - -def builds_redirect_list(request, project_slug): # pylint: disable=unused-argument - return HttpResponsePermanentRedirect( - reverse('builds_project_list', args=[project_slug]), - ) - - -def builds_redirect_detail(request, project_slug, pk): # pylint: disable=unused-argument - return HttpResponsePermanentRedirect( - reverse('builds_detail', args=[project_slug, pk]), - ) diff --git a/readthedocs/core/views/hooks.py b/readthedocs/core/views/hooks.py index 3a094e5565a..46f39f466d0 100644 --- a/readthedocs/core/views/hooks.py +++ b/readthedocs/core/views/hooks.py @@ -3,7 +3,6 @@ import logging from readthedocs.builds.constants import EXTERNAL -from readthedocs.builds.models import Version from readthedocs.core.utils import trigger_build from readthedocs.projects.tasks import sync_repository_task diff --git a/readthedocs/projects/urls/private.py b/readthedocs/projects/urls/private.py index d9df7a3f970..267a0b78ac4 100644 --- a/readthedocs/projects/urls/private.py +++ b/readthedocs/projects/urls/private.py @@ -1,8 +1,7 @@ -# -*- coding: utf-8 -*- - """Project URLs for authenticated users.""" from django.conf.urls import url +from django.views.generic.base import RedirectView from readthedocs.constants import pattern_opts from readthedocs.projects.backends.views import ImportDemoView, ImportWizardView @@ -45,7 +44,8 @@ name='projects_import_demo', ), url( - r'^(?P[-\w]+)/$', private.project_manage, + r'^(?P[-\w]+)/$', + RedirectView.as_view(pattern_name='projects_detail', permanent=True), name='projects_manage', ), url( diff --git a/readthedocs/projects/views/private.py b/readthedocs/projects/views/private.py index c20d3a088c8..2b699c9e971 100644 --- a/readthedocs/projects/views/private.py +++ b/readthedocs/projects/views/private.py @@ -73,6 +73,7 @@ class PrivateViewMixin(LoginRequiredMixin): + pass @@ -110,19 +111,6 @@ def get_context_data(self, **kwargs): return context -@login_required -def project_manage(__, project_slug): - """ - Project management view. - - Where you will have links to edit the projects' configuration, edit the - files associated with that project, etc. - - Now redirects to the normal /projects/ view. - """ - return HttpResponseRedirect(reverse('projects_detail', args=[project_slug])) - - class ProjectUpdate(ProjectSpamMixin, PrivateViewMixin, UpdateView): form_class = UpdateProjectForm @@ -453,17 +441,18 @@ def get_context_data(self, **kwargs): class ProjectRelationshipCreate(ProjectRelationshipMixin, CreateView): + pass class ProjectRelationshipUpdate(ProjectRelationshipMixin, UpdateView): + pass class ProjectRelationshipDelete(ProjectRelationshipMixin, DeleteView): - def get(self, request, *args, **kwargs): - return self.http_method_not_allowed(request, *args, **kwargs) + http_method_names = ['post'] @login_required @@ -727,14 +716,17 @@ def get_context_data(self, **kwargs): class DomainCreate(DomainMixin, CreateView): + pass class DomainUpdate(DomainMixin, UpdateView): + pass class DomainDelete(DomainMixin, DeleteView): + pass @@ -776,6 +768,7 @@ def get_template_names(self): class IntegrationList(IntegrationMixin, ListView): + pass @@ -824,8 +817,7 @@ def get_template_names(self): class IntegrationDelete(IntegrationMixin, DeleteView): - def get(self, request, *args, **kwargs): - return self.http_method_not_allowed(request, *args, **kwargs) + http_method_names = ['post'] class IntegrationExchangeDetail(IntegrationMixin, DetailView): @@ -900,22 +892,23 @@ def get_success_url(self): class EnvironmentVariableList(EnvironmentVariableMixin, ListView): + pass class EnvironmentVariableCreate(EnvironmentVariableMixin, CreateView): + pass class EnvironmentVariableDetail(EnvironmentVariableMixin, DetailView): + pass class EnvironmentVariableDelete(EnvironmentVariableMixin, DeleteView): - # This removes the delete confirmation - def get(self, request, *args, **kwargs): - return self.http_method_not_allowed(request, *args, **kwargs) + http_method_names = ['post'] @login_required From d661133f55f02fddd8024d755d0ff25e110d0943 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Tue, 10 Sep 2019 19:49:24 -0500 Subject: [PATCH 63/71] Remove import --- readthedocs/builds/views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/readthedocs/builds/views.py b/readthedocs/builds/views.py index d327e3d0d73..574deb50a85 100644 --- a/readthedocs/builds/views.py +++ b/readthedocs/builds/views.py @@ -8,7 +8,6 @@ from django.contrib.auth.decorators import login_required from django.http import ( HttpResponseForbidden, - HttpResponsePermanentRedirect, HttpResponseRedirect, ) from django.shortcuts import get_object_or_404 From 658c30be622a071347a1246259efa553a765c0b1 Mon Sep 17 00:00:00 2001 From: Manuel Kaufmann Date: Wed, 11 Sep 2019 13:30:23 +0200 Subject: [PATCH 64/71] Remove old and unused code --- readthedocs/projects/forms.py | 56 ------------------- .../projects/includes/icon_built.html | 11 ---- 2 files changed, 67 deletions(-) delete mode 100644 readthedocs/templates/projects/includes/icon_built.html diff --git a/readthedocs/projects/forms.py b/readthedocs/projects/forms.py index d1c63c58be2..47ed46bf91c 100644 --- a/readthedocs/projects/forms.py +++ b/readthedocs/projects/forms.py @@ -407,62 +407,6 @@ class ProjectRelationshipForm(SettingsOverrideObject): _default_class = ProjectRelationshipBaseForm -class DualCheckboxWidget(forms.CheckboxInput): - - """Checkbox with link to the version's built documentation.""" - - def __init__(self, version, attrs=None, check_test=bool): - super().__init__(attrs, check_test) - self.version = version - - def render(self, name, value, attrs=None, renderer=None): - checkbox = super().render(name, value, attrs, renderer) - icon = self.render_icon() - return mark_safe('{}{}'.format(checkbox, icon)) - - def render_icon(self): - context = { - 'MEDIA_URL': settings.MEDIA_URL, - 'built': self.version.built, - 'uploaded': self.version.uploaded, - 'url': self.version.get_absolute_url(), - } - return render_to_string('projects/includes/icon_built.html', context) - - -class BaseVersionsForm(forms.Form): - - """Form for versions page.""" - - def save(self): - versions = self.project.versions.all() - for version in versions: - self.save_version(version) - default_version = self.cleaned_data.get('default-version', None) - if default_version: - self.project.default_version = default_version - self.project.save() - - def save_version(self, version): - """Save version if there has been a change, trigger a rebuild.""" - new_value = self.cleaned_data.get( - 'version-{}'.format(version.slug), - None, - ) - privacy_level = self.cleaned_data.get( - 'privacy-{}'.format(version.slug), - None, - ) - if ((new_value is None or new_value == version.active) and - (privacy_level is None or privacy_level == version.privacy_level)): # yapf: disable # noqa - return - version.active = new_value - version.privacy_level = privacy_level - version.save() - if version.active and not version.built and not version.uploaded: - trigger_build(project=self.project, version=version) - - class UserForm(forms.Form): """Project user association form.""" diff --git a/readthedocs/templates/projects/includes/icon_built.html b/readthedocs/templates/projects/includes/icon_built.html deleted file mode 100644 index 6f153eb03a2..00000000000 --- a/readthedocs/templates/projects/includes/icon_built.html +++ /dev/null @@ -1,11 +0,0 @@ -{% load i18n %} - -{% if built %} - ({% trans "Built" %}) -{% else %} - {% if uploaded %} - ({% trans "Uploaded" %}) - {% else %} - ({% trans "Not built" %}) - {% endif %} -{% endif %} From 811e74fb7314c8fc0dcbb40714585434dca24432 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 11 Sep 2019 10:18:19 -0500 Subject: [PATCH 65/71] Update Co-Authored-By: Manuel Kaufmann --- docs/commercial/sharing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/commercial/sharing.rst b/docs/commercial/sharing.rst index dd5aedc75b7..db02e99adbd 100644 --- a/docs/commercial/sharing.rst +++ b/docs/commercial/sharing.rst @@ -58,7 +58,7 @@ view your project. HTTP Authorization Header ************************* -You need to pass the ``Authorization`` header with the token on each HTTP request. +You need to send the ``Authorization`` header with the token on each HTTP request. The header has the form ``Authorization: Token ``. For example: From 3491a06d07d6e42f76baf941e039e3cd07010968 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 11 Sep 2019 10:18:39 -0500 Subject: [PATCH 66/71] Update Co-Authored-By: Manuel Kaufmann --- docs/commercial/sharing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/commercial/sharing.rst b/docs/commercial/sharing.rst index db02e99adbd..2b6046ef3ef 100644 --- a/docs/commercial/sharing.rst +++ b/docs/commercial/sharing.rst @@ -13,7 +13,7 @@ You can share your project with users outside of your company: These methods will allow them to view a specific project inside your company. Additionally, you can use a HTTP Authorization Header. -This is handy to have access from a script. +This is useful to have access from a script. Enabling ~~~~~~~~ From d94de4c08681898b8f74d1292038a8a6c4c5047e Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 11 Sep 2019 12:36:05 -0500 Subject: [PATCH 67/71] Fix tests --- readthedocs/builds/urls.py | 2 +- readthedocs/rtd_tests/tests/test_privacy_urls.py | 11 ++++++++--- readthedocs/rtd_tests/tests/test_views.py | 4 ---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/readthedocs/builds/urls.py b/readthedocs/builds/urls.py index bb43fd397bb..522782d095b 100644 --- a/readthedocs/builds/urls.py +++ b/readthedocs/builds/urls.py @@ -6,7 +6,7 @@ urlpatterns = [ url( - r'^(?P[-\w]+)/(?P\d+)/$', + r'^(?P[-\w]+)/(?P\d+)/$', RedirectView.as_view(pattern_name='builds_detail', permanent=True), name='old_builds_detail', ), diff --git a/readthedocs/rtd_tests/tests/test_privacy_urls.py b/readthedocs/rtd_tests/tests/test_privacy_urls.py index b6448d50699..89634a0d34f 100644 --- a/readthedocs/rtd_tests/tests/test_privacy_urls.py +++ b/readthedocs/rtd_tests/tests/test_privacy_urls.py @@ -234,9 +234,9 @@ def is_admin(self): class PrivateProjectAdminAccessTest(PrivateProjectMixin, TestCase): response_data = { - # Places where we 302 on success -- These delete pages should probably be 405'ing + # Places where we 302 on success, and 301 for old pages -- These delete pages should probably be 405'ing '/dashboard/import/manual/demo/': {'status_code': 302}, - '/dashboard/pip/': {'status_code': 302}, + '/dashboard/pip/': {'status_code': 301}, '/dashboard/pip/subprojects/delete/sub/': {'status_code': 302}, '/dashboard/pip/translations/delete/sub/': {'status_code': 302}, @@ -277,7 +277,7 @@ class PrivateProjectUserAccessTest(PrivateProjectMixin, TestCase): '/dashboard/import/manual/demo/': {'status_code': 302}, # Unauth access redirect for non-owners - '/dashboard/pip/': {'status_code': 302}, + '/dashboard/pip/': {'status_code': 301}, # 405's where we should be POST'ing '/dashboard/pip/users/delete/': {'status_code': 405}, @@ -311,6 +311,11 @@ class PrivateProjectUnauthAccessTest(PrivateProjectMixin, TestCase): # Auth protected default_status_code = 302 + response_data = { + # Old url, it redirects to a view that doesn't requires login. + '/dashboard/pip/': {'status_code': 301}, + } + def login(self): pass diff --git a/readthedocs/rtd_tests/tests/test_views.py b/readthedocs/rtd_tests/tests/test_views.py index 12100c2f8c3..c6200bbabca 100644 --- a/readthedocs/rtd_tests/tests/test_views.py +++ b/readthedocs/rtd_tests/tests/test_views.py @@ -89,10 +89,6 @@ def test_import_wizard_demo(self): response = self.client.get('/dashboard/import/manual/demo/') self.assertRedirectToLogin(response) - def test_projects_manage(self): - response = self.client.get('/dashboard/pip/') - self.assertRedirectToLogin(response) - def test_edit(self): response = self.client.get('/dashboard/pip/edit/') self.assertRedirectToLogin(response) From 07bf7086007beab875d91f3ce2be9e7ea4d64bcc Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 11 Sep 2019 12:37:32 -0500 Subject: [PATCH 68/71] Isort --- readthedocs/rtd_tests/tests/test_views.py | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/readthedocs/rtd_tests/tests/test_views.py b/readthedocs/rtd_tests/tests/test_views.py index c6200bbabca..027a34880c5 100644 --- a/readthedocs/rtd_tests/tests/test_views.py +++ b/readthedocs/rtd_tests/tests/test_views.py @@ -1,9 +1,7 @@ import csv -import io from urllib.parse import urlsplit import mock -import pytest from django.contrib.auth.models import User from django.test import TestCase from django.urls import reverse @@ -12,12 +10,10 @@ from readthedocs.builds.constants import EXTERNAL, LATEST from readthedocs.builds.models import Build, Version -from readthedocs.core.models import UserProfile from readthedocs.core.permissions import AdminPermission from readthedocs.projects.constants import PUBLIC from readthedocs.projects.forms import UpdateProjectForm -from readthedocs.projects.models import Feature, HTMLFile, Project -from readthedocs.search.models import SearchQuery +from readthedocs.projects.models import Feature, Project class Testmaker(TestCase): From 27ca0b85699b20281d09d3c85ac6ec10f6fa6e1c Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 11 Sep 2019 12:48:50 -0500 Subject: [PATCH 69/71] Add note about contacting support --- docs/commercial/sharing.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/commercial/sharing.rst b/docs/commercial/sharing.rst index dd5aedc75b7..74cb88eefaf 100644 --- a/docs/commercial/sharing.rst +++ b/docs/commercial/sharing.rst @@ -37,6 +37,7 @@ Enabling .. note:: Sharing using a password and a HTTP header token are currently in beta. + If you want access to these features, email us to support@readthedocs.com. Effects ~~~~~~~ From 8bb354064c8bc239468166937b0ce5dde29b79d7 Mon Sep 17 00:00:00 2001 From: Santos Gallegos Date: Wed, 11 Sep 2019 15:13:28 -0500 Subject: [PATCH 70/71] Require login for old redirect It was redirecting to a page that has login, but on .com we put everything under a login, so tests here fail. I'm doing the change here so we don't have to deal with fixing tests on .com. Also, we could just remove this. --- readthedocs/projects/urls/private.py | 5 ++++- readthedocs/rtd_tests/tests/test_privacy_urls.py | 5 ----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/readthedocs/projects/urls/private.py b/readthedocs/projects/urls/private.py index 267a0b78ac4..c4fedb4d381 100644 --- a/readthedocs/projects/urls/private.py +++ b/readthedocs/projects/urls/private.py @@ -1,6 +1,7 @@ """Project URLs for authenticated users.""" from django.conf.urls import url +from django.contrib.auth.decorators import login_required from django.views.generic.base import RedirectView from readthedocs.constants import pattern_opts @@ -45,7 +46,9 @@ ), url( r'^(?P[-\w]+)/$', - RedirectView.as_view(pattern_name='projects_detail', permanent=True), + login_required( + RedirectView.as_view(pattern_name='projects_detail', permanent=True), + ), name='projects_manage', ), url( diff --git a/readthedocs/rtd_tests/tests/test_privacy_urls.py b/readthedocs/rtd_tests/tests/test_privacy_urls.py index 89634a0d34f..18b23bf7734 100644 --- a/readthedocs/rtd_tests/tests/test_privacy_urls.py +++ b/readthedocs/rtd_tests/tests/test_privacy_urls.py @@ -311,11 +311,6 @@ class PrivateProjectUnauthAccessTest(PrivateProjectMixin, TestCase): # Auth protected default_status_code = 302 - response_data = { - # Old url, it redirects to a view that doesn't requires login. - '/dashboard/pip/': {'status_code': 301}, - } - def login(self): pass From 3852659ae0ce955dc3e2badc85b2284ea1ee3b15 Mon Sep 17 00:00:00 2001 From: David Fischer Date: Fri, 13 Sep 2019 12:33:44 -0700 Subject: [PATCH 71/71] Update security docs - Move PGP key to a separate file - Add notes about account security - Add notes about incoming links to the security docs --- docs/_static/security/pgpkey.txt | 54 ++++++++++++++++++ docs/security.rst | 95 ++++++++++++-------------------- 2 files changed, 88 insertions(+), 61 deletions(-) create mode 100644 docs/_static/security/pgpkey.txt diff --git a/docs/_static/security/pgpkey.txt b/docs/_static/security/pgpkey.txt new file mode 100644 index 00000000000..8403b14357a --- /dev/null +++ b/docs/_static/security/pgpkey.txt @@ -0,0 +1,54 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: GPGTools - http://gpgtools.org + +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 +wtRaD9li +=LjIC +-----END PGP PUBLIC KEY BLOCK----- diff --git a/docs/security.rst b/docs/security.rst index d71a7974c93..93505949d99 100644 --- a/docs/security.rst +++ b/docs/security.rst @@ -1,7 +1,36 @@ +.. This document is linked from: +.. https://readthedocs.org/.well-known/security.txt +.. https://readthedocs.org/security/ + Security ======== -Security is very important to us at Read the Docs. We are committed to responsible reporting and disclosure of security issues. +Security is very important to us at Read the Docs. +We follow generally accepted industry standards to protect the personal information +submitted to us, both during transmission and once we receive it. +In the spirit of transparency, +we are committed to responsible reporting and disclosure of security issues. + +.. contents:: Contents + :local: + :backlinks: none + :depth: 1 + + +Account security +---------------- + +* All traffic is encrypted in transit so your login is protected. +* Read the Docs stores only one-way hashes of all passwords. + Nobody at Read the Docs has access to your passwords. +* Account login is protected from brute force attacks with rate limiting. +* While most projects and docs on Read the Docs are public, + we treat your private repositories and private documentation as confidential + and Read the Docs employees may only view them + with your explicit permission in response to your support requests, + or when required for security purposes. +* You can read more about account privacy in our :doc:`privacy-policy`. + Reporting a security issue -------------------------- @@ -17,69 +46,13 @@ You can expect: * We will notify you when the issue is fixed. * We will add the issue to our :ref:`security issue archive `. + PGP key ------- -You may use this `PGP key`__ to securely communicate with us and to verify signed messages you receive from us. - -__ https://pgp.mit.edu/pks/lookup?op=vindex&search=0xFEEF9FC2DD21D271 - -:: - - -----BEGIN PGP PUBLIC KEY BLOCK----- - Comment: GPGTools - http://gpgtools.org - - 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 - wtRaD9li - =LjIC - -----END PGP PUBLIC KEY BLOCK----- +You may use this :download:`PGP key ` +to securely communicate with us and to verify signed messages you receive from us. + Security issue archive ----------------------