From 5c07060ce0dcbdad1e38be8a509f5c23b6e9fc63 Mon Sep 17 00:00:00 2001 From: Devid Date: Wed, 16 Aug 2023 15:11:50 +0100 Subject: [PATCH 001/153] Use str as default path converter (#9066) --- rest_framework/routers.py | 2 +- tests/test_routers.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/rest_framework/routers.py b/rest_framework/routers.py index fa5d16922..2b9478e90 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -144,7 +144,7 @@ class SimpleRouter(BaseRouter): self._url_conf = re_path else: self._base_pattern = '<{lookup_value}:{lookup_prefix}{lookup_url_kwarg}>' - self._default_value_pattern = 'path' + self._default_value_pattern = 'str' self._url_conf = path # remove regex characters from routes _routes = [] diff --git a/tests/test_routers.py b/tests/test_routers.py index b4bde5c31..887f601d5 100644 --- a/tests/test_routers.py +++ b/tests/test_routers.py @@ -99,6 +99,13 @@ class UrlPathViewSet(viewsets.ViewSet): kwarg = self.kwargs.get('kwarg', '') return Response({'pk': pk, 'kwarg': kwarg}) + @action(detail=True, url_path='detail//detail/') + def url_path_detail_multiple_params(self, request, *args, **kwargs): + pk = self.kwargs.get('pk', '') + kwarg = self.kwargs.get('kwarg', '') + param = self.kwargs.get('param', '') + return Response({'pk': pk, 'kwarg': kwarg, 'param': param}) + notes_router = SimpleRouter() notes_router.register(r'notes', NoteViewSet) @@ -561,6 +568,18 @@ class TestUrlPath(URLPatternsTestCase, TestCase): assert response.status_code == 200 assert json.loads(response.content.decode()) == {'pk': pk, 'kwarg': kwarg} + def test_detail_extra_other_action(self): + # this to assure that ambiguous patterns are interpreted correctly + # using the `path` converters this URL is recognized to match the pattern + # of `UrlPathViewSet.url_path_detail` when it should match + # `UrlPathViewSet.url_path_detail_multiple_params` + pk = '1' + kwarg = 1234 + param = 2 + response = self.client.get('/path/1/detail/1234/detail/2/') + assert response.status_code == 200 + assert json.loads(response.content.decode()) == {'pk': pk, 'kwarg': kwarg, 'param': param} + def test_defaultrouter_root(self): response = self.client.get('/default/') assert response.status_code == 200 From 40eccb0d6cdb769876dbb79724c5871b4f04163d Mon Sep 17 00:00:00 2001 From: Harald Nezbeda Date: Thu, 17 Aug 2023 12:21:03 +0200 Subject: [PATCH 002/153] Fixes documentation link test (#9076) --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5ffca54f9..fe9610ce3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -65,7 +65,7 @@ jobs: - uses: actions/setup-python@v4 with: - python-version: '3.10' + python-version: '3.9' - name: Install dependencies run: pip install -r requirements/requirements-documentation.txt From 5a01a4c8a900a98ca0186b742d03d02c55846632 Mon Sep 17 00:00:00 2001 From: Daniel <107224353+daniel-web-developer@users.noreply.github.com> Date: Thu, 31 Aug 2023 10:19:25 +0200 Subject: [PATCH 003/153] Update CONTRIBUTING.md (#9095) Removed apostrophe from "it's". --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d567d45a8..fb01f8bf7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing to REST framework -At this point in it's lifespan we consider Django REST framework to be essentially feature-complete. We may accept pull requests that track the continued development of Django versions, but would prefer not to accept new features or code formatting changes. +At this point in its lifespan we consider Django REST framework to be essentially feature-complete. We may accept pull requests that track the continued development of Django versions, but would prefer not to accept new features or code formatting changes. Apart from minor documentation changes, the [GitHub discussions page](https://github.com/encode/django-rest-framework/discussions) should generally be your starting point. Please only raise an issue or pull request if you've been recommended to do so after discussion. From b6e3a22f7cfc38cb3fd3f2e3352f6276d811b391 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Sat, 9 Sep 2023 13:51:05 +0600 Subject: [PATCH 004/153] added jQuery 3.7.1 support & dropped previous version (#9094) * added jQuery 3.7.1 support & dropped previous version * added jQuery 3.7.1 support & dropped previous version --- rest_framework/static/rest_framework/js/jquery-3.5.1.min.js | 2 -- rest_framework/static/rest_framework/js/jquery-3.6.4.min.js | 2 -- rest_framework/static/rest_framework/js/jquery-3.7.1.min.js | 2 ++ rest_framework/templates/rest_framework/admin.html | 2 +- rest_framework/templates/rest_framework/base.html | 2 +- rest_framework/templates/rest_framework/docs/error.html | 2 +- rest_framework/templates/rest_framework/docs/index.html | 2 +- 7 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 rest_framework/static/rest_framework/js/jquery-3.5.1.min.js delete mode 100644 rest_framework/static/rest_framework/js/jquery-3.6.4.min.js create mode 100644 rest_framework/static/rest_framework/js/jquery-3.7.1.min.js diff --git a/rest_framework/static/rest_framework/js/jquery-3.5.1.min.js b/rest_framework/static/rest_framework/js/jquery-3.5.1.min.js deleted file mode 100644 index b0614034a..000000000 --- a/rest_framework/static/rest_framework/js/jquery-3.5.1.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssHas=ce(function(){try{return C.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssHas||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0 - + diff --git a/rest_framework/templates/rest_framework/base.html b/rest_framework/templates/rest_framework/base.html index 53c964f23..686dd831f 100644 --- a/rest_framework/templates/rest_framework/base.html +++ b/rest_framework/templates/rest_framework/base.html @@ -293,7 +293,7 @@ "csrfToken": "{% if request %}{{ csrf_token }}{% endif %}" } - + diff --git a/rest_framework/templates/rest_framework/docs/error.html b/rest_framework/templates/rest_framework/docs/error.html index 0c369e9e8..91c8a34a5 100644 --- a/rest_framework/templates/rest_framework/docs/error.html +++ b/rest_framework/templates/rest_framework/docs/error.html @@ -66,6 +66,6 @@ at rest_framework/docs/error.html.

- + diff --git a/rest_framework/templates/rest_framework/docs/index.html b/rest_framework/templates/rest_framework/docs/index.html index 8f8536fbe..7fd07f768 100644 --- a/rest_framework/templates/rest_framework/docs/index.html +++ b/rest_framework/templates/rest_framework/docs/index.html @@ -38,7 +38,7 @@ {% include "rest_framework/docs/auth/basic.html" %} {% include "rest_framework/docs/auth/session.html" %} - + From 4bbfa8d4556b5847e91ba95f457cc862b7a0f027 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Sat, 9 Sep 2023 13:55:32 +0600 Subject: [PATCH 005/153] Updated Checkout action version & Ubuntu OS version (#9097) * Updated Checkout action version & Ubuntu OS version * Update .github/workflows/main.yml --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fe9610ce3..48b6e7202 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -22,7 +22,7 @@ jobs: - '3.11' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: actions/setup-python@v4 with: From 605cc4f7367f58002056453d9befd3c1918f6a38 Mon Sep 17 00:00:00 2001 From: Marcelo Galigniana Date: Fri, 29 Sep 2023 11:06:16 +0200 Subject: [PATCH 006/153] Updated links to CSRF/AJAX Django documentation (#9118) --- docs/api-guide/authentication.md | 2 +- docs/topics/ajax-csrf-cors.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/api-guide/authentication.md b/docs/api-guide/authentication.md index dc55a1e8f..d6e6293fd 100644 --- a/docs/api-guide/authentication.md +++ b/docs/api-guide/authentication.md @@ -454,7 +454,7 @@ More information can be found in the [Documentation](https://django-rest-durin.r [basicauth]: https://tools.ietf.org/html/rfc2617 [permission]: permissions.md [throttling]: throttling.md -[csrf-ajax]: https://docs.djangoproject.com/en/stable/ref/csrf/#ajax +[csrf-ajax]: https://docs.djangoproject.com/en/stable/howto/csrf/#using-csrf-protection-with-ajax [mod_wsgi_official]: https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIPassAuthorization.html [django-oauth-toolkit-getting-started]: https://django-oauth-toolkit.readthedocs.io/en/latest/rest-framework/getting_started.html [django-rest-framework-oauth]: https://jpadilla.github.io/django-rest-framework-oauth/ diff --git a/docs/topics/ajax-csrf-cors.md b/docs/topics/ajax-csrf-cors.md index 094ecc4a4..678fa00e7 100644 --- a/docs/topics/ajax-csrf-cors.md +++ b/docs/topics/ajax-csrf-cors.md @@ -35,7 +35,7 @@ The best way to deal with CORS in REST framework is to add the required response [cite]: https://blog.codinghorror.com/preventing-csrf-and-xsrf-attacks/ [csrf]: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF) -[csrf-ajax]: https://docs.djangoproject.com/en/stable/ref/csrf/#ajax +[csrf-ajax]: https://docs.djangoproject.com/en/stable/howto/csrf/#using-csrf-protection-with-ajax [cors]: https://www.w3.org/TR/cors/ [adamchainz]: https://github.com/adamchainz [django-cors-headers]: https://github.com/adamchainz/django-cors-headers From d32346bae55f3e4718a185fb60e9f7a28e389c85 Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Wed, 4 Oct 2023 19:03:10 +0200 Subject: [PATCH 007/153] Fix type name of `FieldInfo` namedtuple (#9124) * Fix type name of `FieldInfo` namedtuple * Add test --- rest_framework/utils/model_meta.py | 2 +- tests/test_utils.py | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/rest_framework/utils/model_meta.py b/rest_framework/utils/model_meta.py index bd5d9177c..bb0b77f58 100644 --- a/rest_framework/utils/model_meta.py +++ b/rest_framework/utils/model_meta.py @@ -7,7 +7,7 @@ Usage: `get_field_info(model)` returns a `FieldInfo` instance. """ from collections import namedtuple -FieldInfo = namedtuple('FieldResult', [ +FieldInfo = namedtuple('FieldInfo', [ 'pk', # Model field instance 'fields', # Dict of field name -> model field instance 'forward_relations', # Dict of field name -> RelationInfo diff --git a/tests/test_utils.py b/tests/test_utils.py index c72f680fe..6c5f5ddf2 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -9,6 +9,7 @@ from rest_framework.serializers import ModelSerializer from rest_framework.utils import json from rest_framework.utils.breadcrumbs import get_breadcrumbs from rest_framework.utils.formatting import lazy_format +from rest_framework.utils.model_meta import FieldInfo, RelationInfo from rest_framework.utils.urls import remove_query_param, replace_query_param from rest_framework.views import APIView from rest_framework.viewsets import ModelViewSet @@ -267,3 +268,9 @@ class LazyFormatTests(TestCase): assert message.format.call_count == 1 str(formatted) assert message.format.call_count == 1 + + +class ModelMetaNamedTupleNames(TestCase): + def test_named_tuple_names(self): + assert FieldInfo.__name__ == 'FieldInfo' + assert RelationInfo.__name__ == 'RelationInfo' From 42961892834cb8730cd4ec4f7306caa4f8b44abb Mon Sep 17 00:00:00 2001 From: Terence Honles Date: Thu, 5 Oct 2023 08:33:53 +0200 Subject: [PATCH 008/153] fix dist test by moving --no-pkgroot to runtests.py (#9129) This change fixes the dist test by moving the --no-pkgroot option from pytest to the runtests script. The current "filterwarnings" setting for pytest includes rest_framework, which causes an early import of the module. As a result the current --no-pkgroot behavior fails with an assertion error. Trying to remove the module from sys.modules will cause the warning filter to not apply, so this change moves this code before pytest parses the config and loads the "filterwarnings". --- runtests.py | 13 +++++++++++++ tests/conftest.py | 19 +++++-------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/runtests.py b/runtests.py index 98f34c067..e2838a0e2 100755 --- a/runtests.py +++ b/runtests.py @@ -1,4 +1,5 @@ #! /usr/bin/env python3 +import os import sys import pytest @@ -34,6 +35,18 @@ if __name__ == "__main__": '--cov-report', 'xml', ] + pytest_args + try: + pytest_args.remove('--no-pkgroot') + except ValueError: + pass + else: + sys.path.pop(0) + + # import rest_framework before pytest re-adds the package root directory. + import rest_framework + package_dir = os.path.join(os.getcwd(), 'rest_framework') + assert not rest_framework.__file__.startswith(package_dir) + if first_arg.startswith('-'): # `runtests.py [flags]` pytest_args = ['tests'] + pytest_args diff --git a/tests/conftest.py b/tests/conftest.py index 79cabd5e1..b67475d8a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,15 +1,10 @@ import os -import sys import django from django.core import management def pytest_addoption(parser): - parser.addoption('--no-pkgroot', action='store_true', default=False, - help='Remove package root directory from sys.path, ensuring that ' - 'rest_framework is imported from the installed site-packages. ' - 'Used for testing the distribution.') parser.addoption('--staticfiles', action='store_true', default=False, help='Run tests with static files collection, using manifest ' 'staticfiles storage. Used for testing the distribution.') @@ -87,19 +82,15 @@ def pytest_configure(config): 'guardian', ) - if config.getoption('--no-pkgroot'): - sys.path.pop(0) - - # import rest_framework before pytest re-adds the package root directory. - import rest_framework - package_dir = os.path.join(os.getcwd(), 'rest_framework') - assert not rest_framework.__file__.startswith(package_dir) - # Manifest storage will raise an exception if static files are not present (ie, a packaging failure). if config.getoption('--staticfiles'): import rest_framework settings.STATIC_ROOT = os.path.join(os.path.dirname(rest_framework.__file__), 'static-root') - settings.STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' + backend = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage' + if django.VERSION < (4, 2): + settings.STATICFILES_STORAGE = backend + else: + settings.STORAGES['staticfiles']['BACKEND'] = backend django.setup() From d181511155a041cae9b848a4579ada1d50456328 Mon Sep 17 00:00:00 2001 From: Michael Herman Date: Thu, 5 Oct 2023 04:06:07 -0500 Subject: [PATCH 009/153] add courses section to community resources (#8845) --- docs/community/tutorials-and-resources.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/community/tutorials-and-resources.md b/docs/community/tutorials-and-resources.md index 23faf7912..f283e0e4c 100644 --- a/docs/community/tutorials-and-resources.md +++ b/docs/community/tutorials-and-resources.md @@ -19,6 +19,10 @@ There are a wide range of resources available for learning and using Django REST +## Courses + +* [Developing RESTful APIs with Django REST Framework][developing-restful-apis-with-django-rest-framework] + ## Tutorials * [Beginner's Guide to the Django REST Framework][beginners-guide-to-the-django-rest-framework] @@ -130,3 +134,4 @@ Want your Django REST Framework talk/tutorial/article to be added to our website [pycon-us-2017]: https://www.youtube.com/watch?v=Rk6MHZdust4 [django-rest-react-valentinog]: https://www.valentinog.com/blog/tutorial-api-django-rest-react/ [doordash-implementing-rest-apis]: https://doordash.engineering/2013/10/07/implementing-rest-apis-with-embedded-privacy/ +[developing-restful-apis-with-django-rest-framework]: https://testdriven.io/courses/django-rest-framework/ From 8da6b696ab7d9bc3f31c672b72638e52bbd6b53f Mon Sep 17 00:00:00 2001 From: Marko <83985775+MarkoM-dot@users.noreply.github.com> Date: Sat, 7 Oct 2023 10:55:25 +0200 Subject: [PATCH 010/153] docs: update django requirement to 4.2 (#9128) --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index ad241c0a3..81a556313 100644 --- a/docs/index.md +++ b/docs/index.md @@ -86,7 +86,7 @@ continued development by **[signing up for a paid plan][funding]**. REST framework requires the following: * Python (3.6, 3.7, 3.8, 3.9, 3.10, 3.11) -* Django (3.0, 3.1, 3.2, 4.0, 4.1) +* Django (3.0, 3.1, 3.2, 4.0, 4.1, 4.2) We **highly recommend** and only officially support the latest patch release of each Python and Django series. From 18b02ce00e4c911719297149406cb3c0f054cf22 Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Sun, 8 Oct 2023 09:30:10 +0200 Subject: [PATCH 011/153] Add missing `DEFAULT_VERSIONING_CLASS` entry to API docs (#9126) --- docs/api-guide/settings.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/api-guide/settings.md b/docs/api-guide/settings.md index d42000260..47e2ce993 100644 --- a/docs/api-guide/settings.md +++ b/docs/api-guide/settings.md @@ -163,6 +163,12 @@ The string that should used for any versioning parameters, such as in the media Default: `'version'` +#### DEFAULT_VERSIONING_CLASS + +The default versioning scheme to use. + +Default: `None` + --- ## Authentication settings From e794e5e5e43d6838d9ffb8eb0a505b5f531b261f Mon Sep 17 00:00:00 2001 From: "J.V. Zammit" Date: Fri, 13 Oct 2023 13:44:45 +0200 Subject: [PATCH 012/153] blacken-docs (#8906) * blacken-docs: Manual fixes for command to pass without errors * blacken-docs: Adds blacken-docs step to precommit hook. * blacken-docs: Adds changes made by command itself. * blacken-docs: Modifies blacken-docs step to only process files under "docs" directory * blacken-docs: Updates pre-commit config file to exclude all directories other than "docs" to be compatible with "--all-files" flag. * blacken-docs: Adds commas at the end to make it look identical to pre-black version --- .pre-commit-config.yaml | 7 +++++++ docs/api-guide/caching.md | 16 ++++++++-------- docs/api-guide/schemas.md | 26 ++++++++++++++++---------- docs/api-guide/viewsets.md | 23 ++++++++++++----------- docs/community/3.10-announcement.md | 13 +++++++------ docs/community/3.11-announcement.md | 9 +++++---- docs/community/3.12-announcement.md | 12 +++++++----- docs/community/3.9-announcement.md | 11 ++++------- docs/community/release-notes.md | 6 +++++- docs/topics/documenting-your-api.md | 23 +++++++++++++++-------- 10 files changed, 86 insertions(+), 60 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 83fe0b714..64ec37770 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,3 +18,10 @@ repos: - id: flake8 additional_dependencies: - flake8-tidy-imports +- repo: https://github.com/adamchainz/blacken-docs + rev: 1.13.0 + hooks: + - id: blacken-docs + exclude: ^(?!docs).*$ + additional_dependencies: + - black==23.1.0 diff --git a/docs/api-guide/caching.md b/docs/api-guide/caching.md index ab4f82cd2..503acb09e 100644 --- a/docs/api-guide/caching.md +++ b/docs/api-guide/caching.md @@ -28,33 +28,33 @@ from rest_framework import viewsets class UserViewSet(viewsets.ViewSet): # With cookie: cache requested url for each user for 2 hours - @method_decorator(cache_page(60*60*2)) + @method_decorator(cache_page(60 * 60 * 2)) @method_decorator(vary_on_cookie) def list(self, request, format=None): content = { - 'user_feed': request.user.get_user_feed() + "user_feed": request.user.get_user_feed(), } return Response(content) class ProfileView(APIView): # With auth: cache requested url for each user for 2 hours - @method_decorator(cache_page(60*60*2)) - @method_decorator(vary_on_headers("Authorization",)) + @method_decorator(cache_page(60 * 60 * 2)) + @method_decorator(vary_on_headers("Authorization")) def get(self, request, format=None): content = { - 'user_feed': request.user.get_user_feed() + "user_feed": request.user.get_user_feed(), } return Response(content) class PostView(APIView): # Cache page for the requested url - @method_decorator(cache_page(60*60*2)) + @method_decorator(cache_page(60 * 60 * 2)) def get(self, request, format=None): content = { - 'title': 'Post title', - 'body': 'Post content' + "title": "Post title", + "body": "Post content", } return Response(content) ``` diff --git a/docs/api-guide/schemas.md b/docs/api-guide/schemas.md index 3f0b15530..7af98dbf5 100644 --- a/docs/api-guide/schemas.md +++ b/docs/api-guide/schemas.md @@ -94,11 +94,13 @@ urlpatterns = [ # Use the `get_schema_view()` helper to add a `SchemaView` to project URLs. # * `title` and `description` parameters are passed to `SchemaGenerator`. # * Provide view name for use with `reverse()`. - path('openapi', get_schema_view( - title="Your Project", - description="API for all things …", - version="1.0.0" - ), name='openapi-schema'), + path( + "openapi", + get_schema_view( + title="Your Project", description="API for all things …", version="1.0.0" + ), + name="openapi-schema", + ), # ... ] ``` @@ -259,11 +261,13 @@ class CustomSchema(AutoSchema): """ AutoSchema subclass using schema_extra_info on the view. """ + ... + class CustomView(APIView): schema = CustomSchema() - schema_extra_info = ... some extra info ... + schema_extra_info = ... # some extra info ``` Here, the `AutoSchema` subclass goes looking for `schema_extra_info` on the @@ -278,10 +282,13 @@ class BaseSchema(AutoSchema): """ AutoSchema subclass that knows how to use extra_info. """ + ... + class CustomSchema(BaseSchema): - extra_info = ... some extra info ... + extra_info = ... # some extra info + class CustomView(APIView): schema = CustomSchema() @@ -302,10 +309,9 @@ class CustomSchema(BaseSchema): self.extra_info = kwargs.pop("extra_info") super().__init__(**kwargs) + class CustomView(APIView): - schema = CustomSchema( - extra_info=... some extra info ... - ) + schema = CustomSchema(extra_info=...) # some extra info ``` This saves you having to create a custom subclass per-view for a commonly used option. diff --git a/docs/api-guide/viewsets.md b/docs/api-guide/viewsets.md index 39db18bca..41ba1743c 100644 --- a/docs/api-guide/viewsets.md +++ b/docs/api-guide/viewsets.md @@ -201,15 +201,16 @@ To view all extra actions, call the `.get_extra_actions()` method. Extra actions can map additional HTTP methods to separate `ViewSet` methods. For example, the above password set/unset methods could be consolidated into a single route. Note that additional mappings do not accept arguments. ```python - @action(detail=True, methods=['put'], name='Change Password') - def password(self, request, pk=None): - """Update the user's password.""" - ... +@action(detail=True, methods=["put"], name="Change Password") +def password(self, request, pk=None): + """Update the user's password.""" + ... - @password.mapping.delete - def delete_password(self, request, pk=None): - """Delete the user's password.""" - ... + +@password.mapping.delete +def delete_password(self, request, pk=None): + """Delete the user's password.""" + ... ``` ## Reversing action URLs @@ -220,14 +221,14 @@ Note that the `basename` is provided by the router during `ViewSet` registration Using the example from the previous section: -```python ->>> view.reverse_action('set-password', args=['1']) +```pycon +>>> view.reverse_action("set-password", args=["1"]) 'http://localhost:8000/api/users/1/set_password' ``` Alternatively, you can use the `url_name` attribute set by the `@action` decorator. -```python +```pycon >>> view.reverse_action(view.set_password.url_name, args=['1']) 'http://localhost:8000/api/users/1/set_password' ``` diff --git a/docs/community/3.10-announcement.md b/docs/community/3.10-announcement.md index 23b6330a7..a2135fd20 100644 --- a/docs/community/3.10-announcement.md +++ b/docs/community/3.10-announcement.md @@ -41,8 +41,8 @@ update your REST framework settings to include `DEFAULT_SCHEMA_CLASS` explicitly ```python REST_FRAMEWORK = { - ... - 'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.coreapi.AutoSchema' + ...: ..., + "DEFAULT_SCHEMA_CLASS": "rest_framework.schemas.coreapi.AutoSchema", } ``` @@ -74,10 +74,11 @@ urlpatterns = [ # Use the `get_schema_view()` helper to add a `SchemaView` to project URLs. # * `title` and `description` parameters are passed to `SchemaGenerator`. # * Provide view name for use with `reverse()`. - path('openapi', get_schema_view( - title="Your Project", - description="API for all things …" - ), name='openapi-schema'), + path( + "openapi", + get_schema_view(title="Your Project", description="API for all things …"), + name="openapi-schema", + ), # ... ] ``` diff --git a/docs/community/3.11-announcement.md b/docs/community/3.11-announcement.md index 83dd636d1..5a1f2c8e3 100644 --- a/docs/community/3.11-announcement.md +++ b/docs/community/3.11-announcement.md @@ -43,10 +43,11 @@ be extracted from the class docstring: ```python class DocStringExampleListView(APIView): -""" -get: A description of my GET operation. -post: A description of my POST operation. -""" + """ + get: A description of my GET operation. + post: A description of my POST operation. + """ + permission_classes = [permissions.IsAuthenticatedOrReadOnly] def get(self, request, *args, **kwargs): diff --git a/docs/community/3.12-announcement.md b/docs/community/3.12-announcement.md index 3bfeb6576..b192f7290 100644 --- a/docs/community/3.12-announcement.md +++ b/docs/community/3.12-announcement.md @@ -41,7 +41,7 @@ The tags used for a particular view may also be overridden... ```python class MyOrders(APIView): - schema = AutoSchema(tags=['users', 'orders']) + schema = AutoSchema(tags=["users", "orders"]) ... ``` @@ -68,7 +68,7 @@ may be overridden if needed](https://www.django-rest-framework.org/api-guide/sch ```python class MyOrders(APIView): - schema = AutoSchema(component_name="OrderDetails") + schema = AutoSchema(component_name="OrderDetails") ``` ## More Public API @@ -118,10 +118,11 @@ class SitesSearchView(generics.ListAPIView): by a search against the site name or location. (Location searches are matched against the region and country names.) """ + queryset = Sites.objects.all() serializer_class = SitesSerializer filter_backends = [filters.SearchFilter] - search_fields = ['site_name', 'location__region', 'location__country'] + search_fields = ["site_name", "location__region", "location__country"] ``` ### Searches against annotate fields @@ -135,10 +136,11 @@ class PublisherSearchView(generics.ListAPIView): Search for publishers, optionally filtering the search against the average rating of all their books. """ - queryset = Publisher.objects.annotate(avg_rating=Avg('book__rating')) + + queryset = Publisher.objects.annotate(avg_rating=Avg("book__rating")) serializer_class = PublisherSerializer filter_backends = [filters.SearchFilter] - search_fields = ['avg_rating'] + search_fields = ["avg_rating"] ``` --- diff --git a/docs/community/3.9-announcement.md b/docs/community/3.9-announcement.md index d673fdd18..6bc5e3cc3 100644 --- a/docs/community/3.9-announcement.md +++ b/docs/community/3.9-announcement.md @@ -65,15 +65,12 @@ from rest_framework.renderers import JSONOpenAPIRenderer from django.urls import path schema_view = get_schema_view( - title='Server Monitoring API', - url='https://www.example.org/api/', - renderer_classes=[JSONOpenAPIRenderer] + title="Server Monitoring API", + url="https://www.example.org/api/", + renderer_classes=[JSONOpenAPIRenderer], ) -urlpatterns = [ - path('schema.json', schema_view), - ... -] +urlpatterns = [path("schema.json", schema_view), ...] ``` And here's how you can use the `generateschema` management command: diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index fba7f63d6..d8eadeb32 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -306,7 +306,11 @@ Be sure to upgrade to Python 3 before upgrading to Django REST Framework 3.10. class NullableCharField(serializers.CharField): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) - self.validators = [v for v in self.validators if not isinstance(v, ProhibitNullCharactersValidator)] + self.validators = [ + v + for v in self.validators + if not isinstance(v, ProhibitNullCharactersValidator) + ] ``` * Add `OpenAPIRenderer` and `generate_schema` management command. [#6229][gh6229] * Add OpenAPIRenderer by default, and add schema docs. [#6233][gh6233] diff --git a/docs/topics/documenting-your-api.md b/docs/topics/documenting-your-api.md index b85d6310a..edb989290 100644 --- a/docs/topics/documenting-your-api.md +++ b/docs/topics/documenting-your-api.md @@ -96,10 +96,14 @@ urlpatterns = [ # ... # Route TemplateView to serve Swagger UI template. # * Provide `extra_context` with view name of `SchemaView`. - path('swagger-ui/', TemplateView.as_view( - template_name='swagger-ui.html', - extra_context={'schema_url':'openapi-schema'} - ), name='swagger-ui'), + path( + "swagger-ui/", + TemplateView.as_view( + template_name="swagger-ui.html", + extra_context={"schema_url": "openapi-schema"}, + ), + name="swagger-ui", + ), ] ``` @@ -145,10 +149,13 @@ urlpatterns = [ # ... # Route TemplateView to serve the ReDoc template. # * Provide `extra_context` with view name of `SchemaView`. - path('redoc/', TemplateView.as_view( - template_name='redoc.html', - extra_context={'schema_url':'openapi-schema'} - ), name='redoc'), + path( + "redoc/", + TemplateView.as_view( + template_name="redoc.html", extra_context={"schema_url": "openapi-schema"} + ), + name="redoc", + ), ] ``` From 2c59206b3ee4772ccfe981fb6ad52e40d59a91e7 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Tue, 17 Oct 2023 15:40:12 +0600 Subject: [PATCH 013/153] Update requirements-documentation.txt (#9141) --- requirements/requirements-documentation.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements-documentation.txt b/requirements/requirements-documentation.txt index bce03abc5..25f5121f2 100644 --- a/requirements/requirements-documentation.txt +++ b/requirements/requirements-documentation.txt @@ -1,5 +1,5 @@ # MkDocs to build our documentation. -mkdocs>=1.1.2,<1.2 +mkdocs==1.2.4 jinja2>=2.10,<3.1.0 # contextfilter has been renamed # pylinkvalidator to check for broken links in documentation. From f56b85b7dd7e4f786e0769bba6b7609d4507da83 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Tue, 17 Oct 2023 16:13:10 +0600 Subject: [PATCH 014/153] Update pygments>=2.12.0,<2.14.0 in requirements-optionals (#9142) * Update pygments>=2.12.0,<2.16.1 in requirements-optionals * Update requirements/requirements-optionals.txt * Update requirements/requirements-optionals.txt * Update requirements/requirements-optionals.txt --- requirements/requirements-optionals.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements-optionals.txt b/requirements/requirements-optionals.txt index 0379f8c38..dadfba5bd 100644 --- a/requirements/requirements-optionals.txt +++ b/requirements/requirements-optionals.txt @@ -6,5 +6,5 @@ django-guardian>=2.4.0,<2.5 inflection==0.5.1 markdown==3.3 psycopg2-binary>=2.9.5,<2.10 -pygments==2.12 +pygments>=2.12.0,<2.14.0 pyyaml>=5.3.1,<5.4 From 1db19f4b2d1500894448634852e02f73043382e4 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Sun, 5 Nov 2023 11:59:10 +0600 Subject: [PATCH 015/153] Update pytest version in requirements-testing.txt (#9158) --- requirements/requirements-testing.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements-testing.txt b/requirements/requirements-testing.txt index 0f6d7ff87..2b39316a0 100644 --- a/requirements/requirements-testing.txt +++ b/requirements/requirements-testing.txt @@ -1,5 +1,5 @@ # Pytest for running the tests. -pytest>=6.2.0,<8.0 +pytest>=7.0.1,<8.0 pytest-cov>=4.0.0,<5.0 pytest-django>=4.5.2,<5.0 importlib-metadata<5.0 From 15f619ade0c94e38873f19b188bad0bc347b2d2d Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 29 Nov 2023 14:13:36 +0000 Subject: [PATCH 016/153] Add Svix to sponsors (#9173) --- README.md | 5 ++++- docs/img/premium/svix-premium.png | Bin 0 -> 32055 bytes docs/index.md | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 docs/img/premium/svix-premium.png diff --git a/README.md b/README.md index c2975a418..60c62ebf5 100644 --- a/README.md +++ b/README.md @@ -27,8 +27,9 @@ The initial aim is to provide a single full-time position on REST framework. [![][posthog-img]][posthog-url] [![][cryptapi-img]][cryptapi-url] [![][fezto-img]][fezto-url] +[![][svix-img]][svix-url] -Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Sentry][sentry-url], [Stream][stream-url], [Spacinov][spacinov-url], [Retool][retool-url], [bit.io][bitio-url], [PostHog][posthog-url], [CryptAPI][cryptapi-url], and [FEZTO][fezto-url]. +Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Sentry][sentry-url], [Stream][stream-url], [Spacinov][spacinov-url], [Retool][retool-url], [bit.io][bitio-url], [PostHog][posthog-url], [CryptAPI][cryptapi-url], [FEZTO][fezto-url], and [Svix][svix-url]. --- @@ -200,6 +201,7 @@ Please see the [security policy][security-policy]. [posthog-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/posthog-readme.png [cryptapi-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/cryptapi-readme.png [fezto-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/fezto-readme.png +[svix-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/svix-readme.png [sentry-url]: https://getsentry.com/welcome/ [stream-url]: https://getstream.io/?utm_source=DjangoRESTFramework&utm_medium=Webpage_Logo_Ad&utm_content=Developer&utm_campaign=DjangoRESTFramework_Jan2022_HomePage @@ -209,6 +211,7 @@ Please see the [security policy][security-policy]. [posthog-url]: https://posthog.com?utm_source=drf&utm_medium=sponsorship&utm_campaign=open-source-sponsorship [cryptapi-url]: https://cryptapi.io [fezto-url]: https://www.fezto.xyz/?utm_source=DjangoRESTFramework +[svix-url]: https://www.svix.com/?utm_source=django-REST&utm_medium=sponsorship [oauth1-section]: https://www.django-rest-framework.org/api-guide/authentication/#django-rest-framework-oauth [oauth2-section]: https://www.django-rest-framework.org/api-guide/authentication/#django-oauth-toolkit diff --git a/docs/img/premium/svix-premium.png b/docs/img/premium/svix-premium.png new file mode 100644 index 0000000000000000000000000000000000000000..68ff063879bec44644ffea214c86200c476976af GIT binary patch literal 32055 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 literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 81a556313..60eb65744 100644 --- a/docs/index.md +++ b/docs/index.md @@ -74,10 +74,11 @@ continued development by **[signing up for a paid plan][funding]**.
  • PostHog
  • CryptAPI
  • FEZTO
  • +
  • Svix
  • -*Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Sentry](https://getsentry.com/welcome/), [Stream](https://getstream.io/?utm_source=DjangoRESTFramework&utm_medium=Webpage_Logo_Ad&utm_content=Developer&utm_campaign=DjangoRESTFramework_Jan2022_HomePage), [Spacinov](https://www.spacinov.com/), [Retool](https://retool.com/?utm_source=djangorest&utm_medium=sponsorship), [bit.io](https://bit.io/jobs?utm_source=DRF&utm_medium=sponsor&utm_campaign=DRF_sponsorship), [PostHog](https://posthog.com?utm_source=DRF&utm_medium=sponsor&utm_campaign=DRF_sponsorship), [CryptAPI](https://cryptapi.io), and [FEZTO](https://www.fezto.xyz/?utm_source=DjangoRESTFramework).* +*Many thanks to all our [wonderful sponsors][sponsors], and in particular to our premium backers, [Sentry](https://getsentry.com/welcome/), [Stream](https://getstream.io/?utm_source=DjangoRESTFramework&utm_medium=Webpage_Logo_Ad&utm_content=Developer&utm_campaign=DjangoRESTFramework_Jan2022_HomePage), [Spacinov](https://www.spacinov.com/), [Retool](https://retool.com/?utm_source=djangorest&utm_medium=sponsorship), [bit.io](https://bit.io/jobs?utm_source=DRF&utm_medium=sponsor&utm_campaign=DRF_sponsorship), [PostHog](https://posthog.com?utm_source=DRF&utm_medium=sponsor&utm_campaign=DRF_sponsorship), [CryptAPI](https://cryptapi.io), [FEZTO](https://www.fezto.xyz/?utm_source=DjangoRESTFramework), and [Svix](https://www.svix.com/?utm_source=django-REST&utm_medium=sponsorship).* --- From 06022e788e1d23775af6044f02d8a2d577e30b50 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Wed, 29 Nov 2023 14:15:53 +0000 Subject: [PATCH 017/153] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 60c62ebf5..524edb8c3 100644 --- a/README.md +++ b/README.md @@ -201,7 +201,7 @@ Please see the [security policy][security-policy]. [posthog-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/posthog-readme.png [cryptapi-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/cryptapi-readme.png [fezto-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/fezto-readme.png -[svix-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/svix-readme.png +[svix-img]: https://raw.githubusercontent.com/encode/django-rest-framework/master/docs/img/premium/svix-premium.png [sentry-url]: https://getsentry.com/welcome/ [stream-url]: https://getstream.io/?utm_source=DjangoRESTFramework&utm_medium=Webpage_Logo_Ad&utm_content=Developer&utm_campaign=DjangoRESTFramework_Jan2022_HomePage From 0abb84fa3955956fc6156cc2c51222cd4ceae783 Mon Sep 17 00:00:00 2001 From: Krishna2864 <75547302+Krishna2864@users.noreply.github.com> Date: Thu, 30 Nov 2023 16:37:36 +0530 Subject: [PATCH 018/153] removed hyperlink for web browsable API on homepage (#9174) --- README.md | 2 +- docs/index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 524edb8c3..078ac0711 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ Django REST framework is a powerful and flexible toolkit for building Web APIs. Some reasons you might want to use REST framework: -* The [Web browsable API][sandbox] is a huge usability win for your developers. +* The Web browsable API is a huge usability win for your developers. * [Authentication policies][authentication] including optional packages for [OAuth1a][oauth1-section] and [OAuth2][oauth2-section]. * [Serialization][serializers] that supports both [ORM][modelserializer-section] and [non-ORM][serializer-section] data sources. * Customizable all the way down - just use [regular function-based views][functionview-section] if you don't need the [more][generic-views] [powerful][viewsets] [features][routers]. diff --git a/docs/index.md b/docs/index.md index 60eb65744..a7f1444a3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -48,7 +48,7 @@ Django REST framework is a powerful and flexible toolkit for building Web APIs. Some reasons you might want to use REST framework: -* The [Web browsable API][sandbox] is a huge usability win for your developers. +* The Web browsable API is a huge usability win for your developers. * [Authentication policies][authentication] including packages for [OAuth1a][oauth1-section] and [OAuth2][oauth2-section]. * [Serialization][serializers] that supports both [ORM][modelserializer-section] and [non-ORM][serializer-section] data sources. * Customizable all the way down - just use [regular function-based views][functionview-section] if you don't need the [more][generic-views] [powerful][viewsets] [features][routers]. From 0f39e0124d358b0098261f070175fa8e0359b739 Mon Sep 17 00:00:00 2001 From: Asif Saif Uddin Date: Wed, 6 Dec 2023 22:44:47 +0600 Subject: [PATCH 019/153] Update requirements-optionals.txt (#9181) * Update requirements-optionals.txt * Update requirements-optionals.txt --- requirements/requirements-optionals.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements/requirements-optionals.txt b/requirements/requirements-optionals.txt index dadfba5bd..e54100f52 100644 --- a/requirements/requirements-optionals.txt +++ b/requirements/requirements-optionals.txt @@ -4,7 +4,7 @@ coreschema==0.0.4 django-filter django-guardian>=2.4.0,<2.5 inflection==0.5.1 -markdown==3.3 +markdown>=3.3.7 psycopg2-binary>=2.9.5,<2.10 pygments>=2.12.0,<2.14.0 pyyaml>=5.3.1,<5.4 From 4c231d5b97bcc1769ba5a6f41c16f011200300b8 Mon Sep 17 00:00:00 2001 From: HGZahn <44118429+HGZahn@users.noreply.github.com> Date: Thu, 4 Jan 2024 13:36:49 +0100 Subject: [PATCH 020/153] Clarifying the file to edit (#9189) --- docs/tutorial/6-viewsets-and-routers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/6-viewsets-and-routers.md b/docs/tutorial/6-viewsets-and-routers.md index f9b6c5e9a..6fa2111e7 100644 --- a/docs/tutorial/6-viewsets-and-routers.md +++ b/docs/tutorial/6-viewsets-and-routers.md @@ -10,7 +10,7 @@ A `ViewSet` class is only bound to a set of method handlers at the last moment, Let's take our current set of views, and refactor them into view sets. -First of all let's refactor our `UserList` and `UserDetail` classes into a single `UserViewSet` class. We can remove the two view classes, and replace them with a single ViewSet class: +First of all let's refactor our `UserList` and `UserDetail` classes into a single `UserViewSet` class. In the `snippets/views.py` file, we can remove the two view classes and replace them with a single ViewSet class: from rest_framework import viewsets From 530baa23cdf9c3fb44595c69f49684469a758374 Mon Sep 17 00:00:00 2001 From: Yousef Abu Shanab <93343012+youzarsiph@users.noreply.github.com> Date: Thu, 4 Jan 2024 04:42:54 -0800 Subject: [PATCH 021/153] Add 2 customization packages, rest-framework-redesign and rest-framework-material (#9088) --- docs/community/third-party-packages.md | 7 +++++++ docs/img/rfm.png | Bin 0 -> 137450 bytes docs/img/rfr.png | Bin 0 -> 145437 bytes docs/topics/browsable-api.md | 25 +++++++++++++++++++++++++ 4 files changed, 32 insertions(+) create mode 100644 docs/img/rfm.png create mode 100644 docs/img/rfr.png diff --git a/docs/community/third-party-packages.md b/docs/community/third-party-packages.md index 2304dfe45..20c62f8d6 100644 --- a/docs/community/third-party-packages.md +++ b/docs/community/third-party-packages.md @@ -152,6 +152,11 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque * [drf-standardized-errors][drf-standardized-errors] - DRF exception handler to standardize error responses for all API endpoints. * [drf-api-action][drf-api-action] - uses the power of DRF also as a library functions +### Customization + +* [rest-framework-redesign][rest-framework-redesign] - A package for customizing the API using Bootstrap 5. +* [rest-framework-material][rest-framework-material] - Material design for Django REST Framework API. + [cite]: http://www.software-ecosystems.com/Software_Ecosystems/Ecosystems.html [cookiecutter]: https://github.com/jpadilla/cookiecutter-django-rest-framework [new-repo]: https://github.com/new @@ -243,3 +248,5 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque [django-requestlogs]: https://github.com/Raekkeri/django-requestlogs [drf-standardized-errors]: https://github.com/ghazi-git/drf-standardized-errors [drf-api-action]: https://github.com/Ori-Roza/drf-api-action +[rest-framework-redesign]: https://github.com/youzarsiph/rest-framework-redesign +[rest-framework-material]: https://github.com/youzarsiph/rest-framework-material diff --git a/docs/img/rfm.png b/docs/img/rfm.png new file mode 100644 index 0000000000000000000000000000000000000000..7c82621af715eca1530d8a244a5b20180bddbb79 GIT binary patch literal 137450 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

    Y2;Ep^b>( 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 Ak^lez literal 0 HcmV?d00001 diff --git a/docs/img/rfr.png b/docs/img/rfr.png new file mode 100644 index 0000000000000000000000000000000000000000..1854511d0da63b3c192323716ad2187453b9fd23 GIT binary patch literal 145437 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≥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 literal 0 HcmV?d00001 diff --git a/docs/topics/browsable-api.md b/docs/topics/browsable-api.md index 2cdf2a884..39473cdd8 100644 --- a/docs/topics/browsable-api.md +++ b/docs/topics/browsable-api.md @@ -65,6 +65,27 @@ For more specific CSS tweaks than simply overriding the default bootstrap theme --- +### Third party packages for customization + +You can use a third party package for customization, rather than doing it by yourself. Here is 2 packages for customizing the API: + +* [rest-framework-redesign][rest-framework-redesign] - A package for customizing the API using Bootstrap 5. Modern and sleek design, it comes with the support for dark mode. +* [rest-framework-material][rest-framework-material] - Material design for Django REST Framework. + +--- + +![Django REST Framework Redesign][rfr] + +*Screenshot of the rest-framework-redesign* + +--- + +![Django REST Framework Material][rfm] + +*Screenshot of the rest-framework-material* + +--- + ### Blocks All of the blocks available in the browsable API base template that can be used in your `api.html`. @@ -162,3 +183,7 @@ There are [a variety of packages for autocomplete widgets][autocomplete-packages [bcomponentsnav]: https://getbootstrap.com/2.3.2/components.html#navbar [autocomplete-packages]: https://www.djangopackages.com/grids/g/auto-complete/ [django-autocomplete-light]: https://github.com/yourlabs/django-autocomplete-light +[rest-framework-redesign]: https://github.com/youzarsiph/rest-framework-redesign +[rest-framework-material]: https://github.com/youzarsiph/rest-framework-material +[rfr]: ../img/rfr.png +[rfm]: ../img/rfm.png From f4175b4b079ba939bdb917a64d921610f32bd536 Mon Sep 17 00:00:00 2001 From: Matt George <102607949+geomat0101@users.noreply.github.com> Date: Thu, 4 Jan 2024 08:10:53 -0500 Subject: [PATCH 022/153] Update quickstart.md (#9185) add .order_by() to eliminate Pagination UnorderedObjectListWarning --- docs/tutorial/quickstart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/quickstart.md b/docs/tutorial/quickstart.md index 09f249f6e..9a9da4043 100644 --- a/docs/tutorial/quickstart.md +++ b/docs/tutorial/quickstart.md @@ -105,7 +105,7 @@ Right, we'd better write some views then. Open `tutorial/quickstart/views.py` a """ API endpoint that allows groups to be viewed or edited. """ - queryset = Group.objects.all() + queryset = Group.objects.all().order_by('name') serializer_class = GroupSerializer permission_classes = [permissions.IsAuthenticated] From 047bec1288040b9f387e4977bb6cb3fd00d8ea40 Mon Sep 17 00:00:00 2001 From: Code Apprentice Date: Thu, 4 Jan 2024 07:16:57 -0700 Subject: [PATCH 023/153] Add documentation to show how to add authentication for the browseable api (#9137) --- docs/topics/browsable-api.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/topics/browsable-api.md b/docs/topics/browsable-api.md index 39473cdd8..67bc97890 100644 --- a/docs/topics/browsable-api.md +++ b/docs/topics/browsable-api.md @@ -15,6 +15,18 @@ If you include fully-qualified URLs in your resource output, they will be 'urliz By default, the API will return the format specified by the headers, which in the case of the browser is HTML. The format can be specified using `?format=` in the request, so you can look at the raw JSON response in a browser by adding `?format=json` to the URL. There are helpful extensions for viewing JSON in [Firefox][ffjsonview] and [Chrome][chromejsonview]. +## Authentication + +To quickly add authentication to the browesable api, add a routes named `"login"` and `"logout"` under the namespace `"rest_framework"`. DRF provides default routes for this which you can add to your urlconf: + +```python +urlpatterns = [ + // ... + url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) +] +``` + + ## Customizing The browsable API is built with [Twitter's Bootstrap][bootstrap] (v 3.4.1), making it easy to customize the look-and-feel. From 21bb21b65bee2c3f75ac7d083f89f45791e96aef Mon Sep 17 00:00:00 2001 From: Kien Dang Date: Thu, 11 Jan 2024 20:34:46 +0800 Subject: [PATCH 024/153] Fix use of ip_address_validators for Django 5.1+ (#9180) * Fix use of ip_address_validators for Django 5.0+ * Change affected django version to 5.1 --- rest_framework/compat.py | 15 +++++++++++++++ rest_framework/fields.py | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 7e80704e1..472b8ad24 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -169,6 +169,21 @@ else: } +if django.VERSION >= (5, 1): + # Django 5.1+: use the stock ip_address_validators function + # Note: Before Django 5.1, ip_address_validators returns a tuple containing + # 1) the list of validators and 2) the error message. Starting from + # Django 5.1 ip_address_validators only returns the list of validators + from django.core.validators import ip_address_validators +else: + # Django <= 5.1: create a compatibility shim for ip_address_validators + from django.core.validators import \ + ip_address_validators as _ip_address_validators + + def ip_address_validators(protocol, unpack_ipv4): + return _ip_address_validators(protocol, unpack_ipv4)[0] + + # `separators` argument to `json.dumps()` differs between 2.x and 3.x # See: https://bugs.python.org/issue22767 SHORT_SEPARATORS = (',', ':') diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 0b56fa7fb..fda656507 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -16,7 +16,7 @@ from django.core.exceptions import ValidationError as DjangoValidationError from django.core.validators import ( EmailValidator, MaxLengthValidator, MaxValueValidator, MinLengthValidator, MinValueValidator, ProhibitNullCharactersValidator, RegexValidator, - URLValidator, ip_address_validators + URLValidator ) from django.forms import FilePathField as DjangoFilePathField from django.forms import ImageField as DjangoImageField @@ -36,6 +36,7 @@ except ImportError: pytz = None from rest_framework import ISO_8601 +from rest_framework.compat import ip_address_validators from rest_framework.exceptions import ErrorDetail, ValidationError from rest_framework.settings import api_settings from rest_framework.utils import html, humanize_datetime, json, representation @@ -866,7 +867,7 @@ class IPAddressField(CharField): self.protocol = protocol.lower() self.unpack_ipv4 = (self.protocol == 'both') super().__init__(**kwargs) - validators, error_message = ip_address_validators(protocol, self.unpack_ipv4) + validators = ip_address_validators(protocol, self.unpack_ipv4) self.validators.extend(validators) def to_internal_value(self, data): From c4f9d432dde9027f1918d3014c013930eee3b788 Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Thu, 18 Jan 2024 15:35:57 +0100 Subject: [PATCH 025/153] Update 3.11-announcement.md (#9227) --- docs/community/3.11-announcement.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/community/3.11-announcement.md b/docs/community/3.11-announcement.md index 5a1f2c8e3..2fc37a764 100644 --- a/docs/community/3.11-announcement.md +++ b/docs/community/3.11-announcement.md @@ -64,7 +64,7 @@ In some circumstances a Validator class or a Default class may need to access th * Uniqueness validators need to be able to determine the name of the field to which they are applied, in order to run an appropriate database query. * The `CurrentUserDefault` needs to be able to determine the context with which the serializer was instantiated, in order to return the current user instance. -Previous our approach to this was that implementations could include a `set_context` method, which would be called prior to validation. However this approach had issues with potential race conditions. We have now move this approach into a pending deprecation state. It will continue to function, but will be escalated to a deprecated state in 3.12, and removed entirely in 3.13. +Our previous approach to this was that implementations could include a `set_context` method, which would be called prior to validation. However this approach had issues with potential race conditions. We have now move this approach into a pending deprecation state. It will continue to function, but will be escalated to a deprecated state in 3.12, and removed entirely in 3.13. Instead, validators or defaults which require the serializer context, should include a `requires_context = True` attribute on the class. From 552a67acde5eb13f84ec9dbdf4363313cdfda2f0 Mon Sep 17 00:00:00 2001 From: Kien Dang Date: Fri, 19 Jan 2024 18:10:56 +0800 Subject: [PATCH 026/153] Skip coreapi tests in GenerateSchemaTests if coreapi is not installed (#9229) --- tests/schemas/test_managementcommand.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/schemas/test_managementcommand.py b/tests/schemas/test_managementcommand.py index 4104d4ca6..c0713f43c 100644 --- a/tests/schemas/test_managementcommand.py +++ b/tests/schemas/test_managementcommand.py @@ -8,7 +8,7 @@ from django.test import TestCase from django.test.utils import override_settings from django.urls import path -from rest_framework.compat import uritemplate, yaml +from rest_framework.compat import coreapi, uritemplate, yaml from rest_framework.management.commands import generateschema from rest_framework.utils import formatting, json from rest_framework.views import APIView @@ -91,6 +91,7 @@ class GenerateSchemaTests(TestCase): os.remove(path) @pytest.mark.skipif(yaml is None, reason='PyYAML is required.') + @pytest.mark.skipif(coreapi is None, reason='coreapi is required.') @override_settings(REST_FRAMEWORK={'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema'}) def test_coreapi_renders_default_schema_with_custom_title_url_and_description(self): expected_out = """info: @@ -113,6 +114,7 @@ class GenerateSchemaTests(TestCase): self.assertIn(formatting.dedent(expected_out), self.out.getvalue()) + @pytest.mark.skipif(coreapi is None, reason='coreapi is required.') @override_settings(REST_FRAMEWORK={'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema'}) def test_coreapi_renders_openapi_json_schema(self): expected_out = { @@ -142,6 +144,7 @@ class GenerateSchemaTests(TestCase): self.assertDictEqual(out_json, expected_out) + @pytest.mark.skipif(coreapi is None, reason='coreapi is required.') @override_settings(REST_FRAMEWORK={'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema'}) def test_renders_corejson_schema(self): expected_out = """{"_type":"document","":{"list":{"_type":"link","url":"/","action":"get"}}}""" From f85d8cb81a87eba525396ad944861a86914cce20 Mon Sep 17 00:00:00 2001 From: Kien Dang Date: Thu, 25 Jan 2024 05:44:46 +0800 Subject: [PATCH 027/153] Fix comment syntax error in doc that fails pre-commit blacken-docs (#9225) * Fix comment syntax in doc * Pre-commit --- docs/topics/browsable-api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/topics/browsable-api.md b/docs/topics/browsable-api.md index 67bc97890..9a95edfc6 100644 --- a/docs/topics/browsable-api.md +++ b/docs/topics/browsable-api.md @@ -21,8 +21,8 @@ To quickly add authentication to the browesable api, add a routes named `"login" ```python urlpatterns = [ - // ... - url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) + # ... + url(r"^api-auth/", include("rest_framework.urls", namespace="rest_framework")) ] ``` From 74689b1f44fd3d5fd3f220b6f1e2bae650eba3d8 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 24 Jan 2024 22:47:46 +0100 Subject: [PATCH 028/153] pre-commit autoupdate (#9232) --- .pre-commit-config.yaml | 8 ++++---- docs/community/3.5-announcement.md | 8 ++------ rest_framework/decorators.py | 2 +- tests/test_throttling.py | 2 +- 4 files changed, 8 insertions(+), 12 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 64ec37770..c37da7449 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v3.4.0 + rev: v4.5.0 hooks: - id: check-added-large-files - id: check-case-conflict @@ -9,17 +9,17 @@ repos: - id: check-symlinks - id: check-toml - repo: https://github.com/pycqa/isort - rev: 5.12.0 + rev: 5.13.2 hooks: - id: isort - repo: https://github.com/PyCQA/flake8 - rev: 3.9.0 + rev: 7.0.0 hooks: - id: flake8 additional_dependencies: - flake8-tidy-imports - repo: https://github.com/adamchainz/blacken-docs - rev: 1.13.0 + rev: 1.16.0 hooks: - id: blacken-docs exclude: ^(?!docs).*$ diff --git a/docs/community/3.5-announcement.md b/docs/community/3.5-announcement.md index 91bfce428..43a628dd4 100644 --- a/docs/community/3.5-announcement.md +++ b/docs/community/3.5-announcement.md @@ -64,14 +64,10 @@ from rest_framework.schemas import get_schema_view from rest_framework_swagger.renderers import OpenAPIRenderer, SwaggerUIRenderer schema_view = get_schema_view( - title='Example API', - renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer] + title="Example API", renderer_classes=[OpenAPIRenderer, SwaggerUIRenderer] ) -urlpatterns = [ - path('swagger/', schema_view), - ... -] +urlpatterns = [path("swagger/", schema_view), ...] ``` There have been a large number of fixes to the schema generation. These should diff --git a/rest_framework/decorators.py b/rest_framework/decorators.py index 3b572c09e..864ff7395 100644 --- a/rest_framework/decorators.py +++ b/rest_framework/decorators.py @@ -36,7 +36,7 @@ def api_view(http_method_names=None): # WrappedAPIView.__doc__ = func.doc <--- Not possible to do this # api_view applied without (method_names) - assert not(isinstance(http_method_names, types.FunctionType)), \ + assert not isinstance(http_method_names, types.FunctionType), \ '@api_view missing list of allowed HTTP methods' # api_view applied with eg. string instead of list of strings diff --git a/tests/test_throttling.py b/tests/test_throttling.py index d5a61232d..be9decebc 100644 --- a/tests/test_throttling.py +++ b/tests/test_throttling.py @@ -192,7 +192,7 @@ class ThrottlingTests(TestCase): if expect is not None: assert response['Retry-After'] == expect else: - assert not'Retry-After' in response + assert 'Retry-After' not in response def test_seconds_fields(self): """ From ab694eccdeb94faeb8c36647f6b5d2e07729fbdb Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 24 Jan 2024 23:17:01 +0100 Subject: [PATCH 029/153] Fix typo (#9231) --- docs/api-guide/fields.md | 2 +- docs/community/release-notes.md | 6 +++--- rest_framework/filters.py | 4 ++-- rest_framework/schemas/generators.py | 4 ++-- rest_framework/schemas/openapi.py | 2 +- rest_framework/settings.py | 2 +- tests/schemas/test_openapi.py | 2 +- tests/test_response.py | 2 +- tests/test_serializer_nested.py | 4 ++-- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/api-guide/fields.md b/docs/api-guide/fields.md index 0766fe3ef..ea944e1ff 100644 --- a/docs/api-guide/fields.md +++ b/docs/api-guide/fields.md @@ -303,7 +303,7 @@ Corresponds to `django.db.models.fields.DecimalField`. * `min_value` Validate that the number provided is no less than this value. * `localize` Set to `True` to enable localization of input and output based on the current locale. This will also force `coerce_to_string` to `True`. Defaults to `False`. Note that data formatting is enabled if you have set `USE_L10N=True` in your settings file. * `rounding` Sets the rounding mode used when quantizing to the configured precision. Valid values are [`decimal` module rounding modes][python-decimal-rounding-modes]. Defaults to `None`. -* `normalize_output` Will normalize the decimal value when serialized. This will strip all trailing zeroes and change the value's precision to the minimum required precision to be able to represent the value without loosing data. Defaults to `False`. +* `normalize_output` Will normalize the decimal value when serialized. This will strip all trailing zeroes and change the value's precision to the minimum required precision to be able to represent the value without losing data. Defaults to `False`. #### Example usage diff --git a/docs/community/release-notes.md b/docs/community/release-notes.md index d8eadeb32..71f29e5c0 100644 --- a/docs/community/release-notes.md +++ b/docs/community/release-notes.md @@ -47,7 +47,7 @@ Date: 22nd September 2022 * Stop calling `set_context` on Validators. [[#8589](https://github.com/encode/django-rest-framework/pull/8589)] * Return `NotImplemented` from `ErrorDetails.__ne__`. [[#8538](https://github.com/encode/django-rest-framework/pull/8538)] * Don't evaluate `DateTimeField.default_timezone` when a custom timezone is set. [[#8531](https://github.com/encode/django-rest-framework/pull/8531)] -* Make relative URLs clickable in Browseable API. [[#8464](https://github.com/encode/django-rest-framework/pull/8464)] +* Make relative URLs clickable in Browsable API. [[#8464](https://github.com/encode/django-rest-framework/pull/8464)] * Support `ManyRelatedField` falling back to the default value when the attribute specified by dot notation doesn't exist. Matches `ManyRelatedField.get_attribute` to `Field.get_attribute`. [[#7574](https://github.com/encode/django-rest-framework/pull/7574)] * Make `schemas.openapi.get_reference` public. [[#7515](https://github.com/encode/django-rest-framework/pull/7515)] * Make `ReturnDict` support `dict` union operators on Python 3.9 and later. [[#8302](https://github.com/encode/django-rest-framework/pull/8302)] @@ -65,7 +65,7 @@ Date: 15th December 2021 Date: 13th December 2021 -* Django 4.0 compatability. [#8178] +* Django 4.0 compatibility. [#8178] * Add `max_length` and `min_length` options to `ListSerializer`. [#8165] * Add `get_request_serializer` and `get_response_serializer` hooks to `AutoSchema`. [#7424] * Fix OpenAPI representation of null-able read only fields. [#8116] @@ -954,7 +954,7 @@ See the [release announcement][3.6-release]. * Prevent raising exception when limit is 0. ([#4098][gh4098]) * TokenAuthentication: Allow custom keyword in the header. ([#4097][gh4097]) * Handle incorrectly padded HTTP basic auth header. ([#4090][gh4090]) -* LimitOffset pagination crashes Browseable API when limit=0. ([#4079][gh4079]) +* LimitOffset pagination crashes Browsable API when limit=0. ([#4079][gh4079]) * Fixed DecimalField arbitrary precision support. ([#4075][gh4075]) * Added support for custom CSRF cookie names. ([#4049][gh4049]) * Fix regression introduced by #4035. ([#4041][gh4041]) diff --git a/rest_framework/filters.py b/rest_framework/filters.py index 065e72f94..86effe24e 100644 --- a/rest_framework/filters.py +++ b/rest_framework/filters.py @@ -21,14 +21,14 @@ from rest_framework.settings import api_settings def search_smart_split(search_terms): - """generator that first splits string by spaces, leaving quoted phrases togheter, + """generator that first splits string by spaces, leaving quoted phrases together, then it splits non-quoted phrases by commas. """ for term in smart_split(search_terms): # trim commas to avoid bad matching for quoted phrases term = term.strip(',') if term.startswith(('"', "'")) and term[0] == term[-1]: - # quoted phrases are kept togheter without any other split + # quoted phrases are kept together without any other split yield unescape_string_literal(term) else: # non-quoted tokens are split by comma, keeping only non-empty ones diff --git a/rest_framework/schemas/generators.py b/rest_framework/schemas/generators.py index d3c6446aa..f59e25c21 100644 --- a/rest_framework/schemas/generators.py +++ b/rest_framework/schemas/generators.py @@ -102,12 +102,12 @@ class EndpointEnumerator: Given a URL conf regex, return a URI template string. """ # ???: Would it be feasible to adjust this such that we generate the - # path, plus the kwargs, plus the type from the convertor, such that we + # path, plus the kwargs, plus the type from the converter, such that we # could feed that straight into the parameter schema object? path = simplify_regex(path_regex) - # Strip Django 2.0 convertors as they are incompatible with uritemplate format + # Strip Django 2.0 converters as they are incompatible with uritemplate format return re.sub(_PATH_PARAMETER_COMPONENT_RE, r'{\g}', path) def should_include_endpoint(self, path, callback): diff --git a/rest_framework/schemas/openapi.py b/rest_framework/schemas/openapi.py index ad19f6df8..c154494e2 100644 --- a/rest_framework/schemas/openapi.py +++ b/rest_framework/schemas/openapi.py @@ -84,7 +84,7 @@ class SchemaGenerator(BaseSchemaGenerator): continue if components_schemas[k] == components[k]: continue - warnings.warn('Schema component "{}" has been overriden with a different value.'.format(k)) + warnings.warn('Schema component "{}" has been overridden with a different value.'.format(k)) components_schemas.update(components) diff --git a/rest_framework/settings.py b/rest_framework/settings.py index 96b664574..b0d7bacec 100644 --- a/rest_framework/settings.py +++ b/rest_framework/settings.py @@ -116,7 +116,7 @@ DEFAULTS = { 'COERCE_DECIMAL_TO_STRING': True, 'UPLOADED_FILES_USE_URL': True, - # Browseable API + # Browsable API 'HTML_SELECT_CUTOFF': 1000, 'HTML_SELECT_CUTOFF_TEXT': "More than {count} items...", diff --git a/tests/schemas/test_openapi.py b/tests/schemas/test_openapi.py index 6645cac72..a168cb466 100644 --- a/tests/schemas/test_openapi.py +++ b/tests/schemas/test_openapi.py @@ -1347,7 +1347,7 @@ class TestGenerator(TestCase): assert len(w) == 1 assert issubclass(w[-1].category, UserWarning) - assert 'has been overriden with a different value.' in str(w[-1].message) + assert 'has been overridden with a different value.' in str(w[-1].message) assert 'components' in schema assert 'schemas' in schema['components'] diff --git a/tests/test_response.py b/tests/test_response.py index cab19a1eb..00b5691b0 100644 --- a/tests/test_response.py +++ b/tests/test_response.py @@ -132,7 +132,7 @@ urlpatterns = [ ] -# TODO: Clean tests bellow - remove duplicates with above, better unit testing, ... +# TODO: Clean tests below - remove duplicates with above, better unit testing, ... @override_settings(ROOT_URLCONF='tests.test_response') class RendererIntegrationTests(TestCase): """ diff --git a/tests/test_serializer_nested.py b/tests/test_serializer_nested.py index 986972a65..b7195494c 100644 --- a/tests/test_serializer_nested.py +++ b/tests/test_serializer_nested.py @@ -223,7 +223,7 @@ class TestNotRequiredNestedSerializerWithMany: input_data = {} serializer = self.Serializer(data=input_data) - # request is empty, therefor 'nested' should not be in serializer.data + # request is empty, therefore 'nested' should not be in serializer.data assert serializer.is_valid() assert 'nested' not in serializer.validated_data @@ -237,7 +237,7 @@ class TestNotRequiredNestedSerializerWithMany: input_data = QueryDict('') serializer = self.Serializer(data=input_data) - # the querydict is empty, therefor 'nested' should not be in serializer.data + # the querydict is empty, therefore 'nested' should not be in serializer.data assert serializer.is_valid() assert 'nested' not in serializer.validated_data From 2797c0f216288bd7ca82e9e32e5f7d699bac74df Mon Sep 17 00:00:00 2001 From: Marcelo Galigniana Date: Thu, 25 Jan 2024 12:01:06 +0100 Subject: [PATCH 030/153] Add missing import in /api-guide/viewsets/ example (#9235) --- docs/api-guide/viewsets.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api-guide/viewsets.md b/docs/api-guide/viewsets.md index 41ba1743c..43007e95d 100644 --- a/docs/api-guide/viewsets.md +++ b/docs/api-guide/viewsets.md @@ -311,7 +311,7 @@ You may need to provide custom `ViewSet` classes that do not have the full set o To create a base viewset class that provides `create`, `list` and `retrieve` operations, inherit from `GenericViewSet`, and mixin the required actions: - from rest_framework import mixins + from rest_framework import mixins, viewsets class CreateListRetrieveViewSet(mixins.CreateModelMixin, mixins.ListModelMixin, From 41edb3b9dde2105b9fb015ce6b8171e7822baa30 Mon Sep 17 00:00:00 2001 From: Yuekui Date: Fri, 26 Jan 2024 02:36:18 -0800 Subject: [PATCH 031/153] Avoid unnecessary unique together checking (#9154) --- rest_framework/validators.py | 17 +++++++++++++---- tests/test_validators.py | 18 +++++++++++++++++- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/rest_framework/validators.py b/rest_framework/validators.py index 07ad11b47..3f09c15cd 100644 --- a/rest_framework/validators.py +++ b/rest_framework/validators.py @@ -160,10 +160,19 @@ class UniqueTogetherValidator: queryset = self.exclude_current_instance(attrs, queryset, serializer.instance) # Ignore validation if any field is None - checked_values = [ - value for field, value in attrs.items() if field in self.fields - ] - if None not in checked_values and qs_exists(queryset): + if serializer.instance is None: + checked_values = [ + value for field, value in attrs.items() if field in self.fields + ] + else: + # Ignore validation if all field values are unchanged + checked_values = [ + value + for field, value in attrs.items() + if field in self.fields and value != getattr(serializer.instance, field) + ] + + if checked_values and None not in checked_values and qs_exists(queryset): field_names = ', '.join(self.fields) message = self.message.format(field_names=field_names) raise ValidationError(message, code='unique') diff --git a/tests/test_validators.py b/tests/test_validators.py index 1cf42ed07..49b0db63a 100644 --- a/tests/test_validators.py +++ b/tests/test_validators.py @@ -1,5 +1,5 @@ import datetime -from unittest.mock import MagicMock +from unittest.mock import MagicMock, patch import pytest from django.db import DataError, models @@ -447,6 +447,22 @@ class TestUniquenessTogetherValidation(TestCase): serializer = NullUniquenessTogetherSerializer(data=data) assert not serializer.is_valid() + def test_ignore_validation_for_unchanged_fields(self): + """ + If all fields in the unique together constraint are unchanged, + then the instance should skip uniqueness validation. + """ + instance = UniquenessTogetherModel.objects.create( + race_name="Paris Marathon", position=1 + ) + data = {"race_name": "Paris Marathon", "position": 1} + serializer = UniquenessTogetherSerializer(data=data, instance=instance) + with patch( + "rest_framework.validators.qs_exists" + ) as mock: + assert serializer.is_valid() + assert not mock.called + def test_filter_queryset_do_not_skip_existing_attribute(self): """ filter_queryset should add value from existing instance attribute From 5ad467aa2c76a7cfb6218f6dbe22e314131bde3c Mon Sep 17 00:00:00 2001 From: iamkorniichuk <119371190+iamkorniichuk@users.noreply.github.com> Date: Mon, 29 Jan 2024 10:30:29 +0200 Subject: [PATCH 032/153] Remove read_only deprecated behaviour from documentation (#9239) --- docs/api-guide/validators.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/api-guide/validators.md b/docs/api-guide/validators.md index 2a93e4cdc..e181d4c61 100644 --- a/docs/api-guide/validators.md +++ b/docs/api-guide/validators.md @@ -173,11 +173,9 @@ If you want the date field to be entirely hidden from the user, then use `Hidden # Advanced field defaults Validators that are applied across multiple fields in the serializer can sometimes require a field input that should not be provided by the API client, but that *is* available as input to the validator. +For this purposes use `HiddenField`. This field will be present in `validated_data` but *will not* be used in the serializer output representation. -Two patterns that you may want to use for this sort of validation include: - -* Using `HiddenField`. This field will be present in `validated_data` but *will not* be used in the serializer output representation. -* Using a standard field with `read_only=True`, but that also includes a `default=…` argument. This field *will* be used in the serializer output representation, but cannot be set directly by the user. +**Note:** Using a `read_only=True` field is excluded from writable fields so it won't use a `default=…` argument. Look [3.8 announcement](https://www.django-rest-framework.org/community/3.8-announcement/#altered-the-behaviour-of-read_only-plus-default-on-field). REST framework includes a couple of defaults that may be useful in this context. @@ -189,7 +187,7 @@ A default class that can be used to represent the current user. In order to use default=serializers.CurrentUserDefault() ) -#### CreateOnlyDefault +#### CreateOnlyDefault A default class that can be used to *only set a default argument during create operations*. During updates the field is omitted. From df89f32b88022828ca5d1b5e04be36d54f506e6c Mon Sep 17 00:00:00 2001 From: Victorien <65306057+Viicos@users.noreply.github.com> Date: Wed, 14 Feb 2024 12:02:02 +0100 Subject: [PATCH 033/153] Fix typo in 3.14 announcement (#9255) --- docs/community/3.14-announcement.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/community/3.14-announcement.md b/docs/community/3.14-announcement.md index e7b10ede1..991c6fc5a 100644 --- a/docs/community/3.14-announcement.md +++ b/docs/community/3.14-announcement.md @@ -28,10 +28,10 @@ Our requirements are now: * Python 3.6+ * Django 4.1, 4.0, 3.2, 3.1, 3.0 -## `raise_exceptions` argument for `is_valid` is now keyword-only. +## `raise_exception` argument for `is_valid` is now keyword-only. Calling `serializer_instance.is_valid(True)` is no longer acceptable syntax. -If you'd like to use the `raise_exceptions` argument, you must use it as a +If you'd like to use the `raise_exception` argument, you must use it as a keyword argument. See Pull Request [#7952](https://github.com/encode/django-rest-framework/pull/7952) for more details. From 2ef77b18335322f10c8c6160b6f7794ff6bc92b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=9Fuayip=20=C3=BCz=C3=BClmez?= <17948971+realsuayip@users.noreply.github.com> Date: Tue, 20 Feb 2024 01:28:04 +0300 Subject: [PATCH 034/153] Use POST method instead of GET to perform logout in browsable API (#9208) * Use POST method instead of GET to perform logout in browsable API * Add a test that checks the presence of the logout form --- rest_framework/templates/rest_framework/admin.html | 2 +- rest_framework/templates/rest_framework/base.html | 2 +- rest_framework/templatetags/rest_framework.py | 13 +++++++++---- tests/browsable_api/test_browsable_api.py | 6 ++++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/rest_framework/templates/rest_framework/admin.html b/rest_framework/templates/rest_framework/admin.html index 7c6917e2d..a5edf529e 100644 --- a/rest_framework/templates/rest_framework/admin.html +++ b/rest_framework/templates/rest_framework/admin.html @@ -42,7 +42,7 @@