udata 10.0.1.dev32334__py2.py3-none-any.whl → 10.0.1.dev32350__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of udata might be problematic. Click here for more details.

Files changed (24) hide show
  1. udata/api_fields.py +131 -70
  2. udata/static/chunks/{10.a99bb538cfbadb38dbcb.js → 10.dac55d18d0b4ef3cdacf.js} +3 -3
  3. udata/static/chunks/{10.a99bb538cfbadb38dbcb.js.map → 10.dac55d18d0b4ef3cdacf.js.map} +1 -1
  4. udata/static/chunks/{11.727465d72948bc466d43.js → 11.4a20a75f827c5a1125c3.js} +3 -3
  5. udata/static/chunks/{11.727465d72948bc466d43.js.map → 11.4a20a75f827c5a1125c3.js.map} +1 -1
  6. udata/static/chunks/{13.3c8337bec315adcd2700.js → 13.645dd0b7c0b9210f1b56.js} +2 -2
  7. udata/static/chunks/{13.3c8337bec315adcd2700.js.map → 13.645dd0b7c0b9210f1b56.js.map} +1 -1
  8. udata/static/chunks/{17.cbeb6d95129cad6481c2.js → 17.8e19985c4d12a3b7b0c0.js} +2 -2
  9. udata/static/chunks/{17.cbeb6d95129cad6481c2.js.map → 17.8e19985c4d12a3b7b0c0.js.map} +1 -1
  10. udata/static/chunks/{19.4f7a5b71ef006ac268c1.js → 19.825a43c330157e351fca.js} +3 -3
  11. udata/static/chunks/{19.4f7a5b71ef006ac268c1.js.map → 19.825a43c330157e351fca.js.map} +1 -1
  12. udata/static/chunks/{8.60610fd40b95ca119141.js → 8.5ee0cf635c848abbfc05.js} +2 -2
  13. udata/static/chunks/{8.60610fd40b95ca119141.js.map → 8.5ee0cf635c848abbfc05.js.map} +1 -1
  14. udata/static/chunks/{9.985935421e62c97a9f86.js → 9.df3c36f8d0d210621fbb.js} +3 -3
  15. udata/static/chunks/{9.985935421e62c97a9f86.js.map → 9.df3c36f8d0d210621fbb.js.map} +1 -1
  16. udata/static/common.js +1 -1
  17. udata/static/common.js.map +1 -1
  18. udata/tests/test_api_fields.py +285 -0
  19. {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/METADATA +2 -2
  20. {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/RECORD +24 -23
  21. {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/LICENSE +0 -0
  22. {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/WHEEL +0 -0
  23. {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/entry_points.txt +0 -0
  24. {udata-10.0.1.dev32334.dist-info → udata-10.0.1.dev32350.dist-info}/top_level.txt +0 -0
udata/static/common.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){function __webpack_require__(c){if(a[c])return a[c].exports;var f=a[c]={exports:{},id:c,loaded:!1};return e[c].call(f.exports,f,f.exports,__webpack_require__),f.loaded=!0,f.exports}var c=window.webpackJsonp;window.webpackJsonp=function(r,b){for(var t,d,_=0,n=[];_<r.length;_++)d=r[_],f[d]&&n.push.apply(n,f[d]),f[d]=0;for(t in b){var i=b[t];switch(typeof i){case"object":e[t]=function(c){var a=c.slice(1),f=c[0];return function(c,r,b){e[f].apply(this,[c,r,b].concat(a))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(c&&c(r,b);n.length;)n.shift().call(null,__webpack_require__);if(b[0])return a[0]=0,__webpack_require__(0)};var a={},f={31:0};__webpack_require__.e=function(e,c){if(0===f[e])return c.call(null,__webpack_require__);if(void 0!==f[e])f[e].push(c);else{f[e]=[c];var a=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript",r.charset="utf-8",r.async=!0,r.src=__webpack_require__.p+"chunks/"+e+"."+{0:"f575c19b056e559584d4",1:"c78e30240d3784c22a76",2:"c67aa76cc078c193aed5",3:"174a03e48d267820919b",4:"bfba880427270ef61dfd",5:"448ccace1bf3389d9b38",6:"037369868acc94a7533f",7:"5237c02df1fdd7c2449a",8:"60610fd40b95ca119141",9:"985935421e62c97a9f86",10:"a99bb538cfbadb38dbcb",11:"727465d72948bc466d43",12:"50d20132d60ff7279de9",13:"3c8337bec315adcd2700",14:"8b85221f000b80696e52",15:"10e44b70e118e7ebc13a",16:"a43cef89812c95f1b02e",17:"cbeb6d95129cad6481c2",18:"3b5ad23785c7be62ee30",19:"4f7a5b71ef006ac268c1",20:"727bc4349ebdc499fff7",21:"3a20f161cfa3ff59cb67",22:"4289d31d931fb184a394",23:"32fd0887bdcc0b87a7c5",24:"a8d73082a87feb753036",25:"334bb014e5afb23064f1",26:"0f8affafd27dcc123fc0",27:"10a6d497f15faa1ddeee",28:"06100ef3e7e642814327",29:"4d752ece5790785c5889",30:"e97e10c9246818e2b4b2",32:"55f052535c5ecc898d67",33:"98be721e901eda7ed45c"}[e]+".js",a.appendChild(r)}},__webpack_require__.m=e,__webpack_require__.c=a,__webpack_require__.p="/static/"}(function(e){for(var c in e)if(Object.prototype.hasOwnProperty.call(e,c))switch(typeof e[c]){case"function":break;case"object":e[c]=function(c){var a=c.slice(1),f=e[c[0]];return function(e,c,r){f.apply(this,[e,c,r].concat(a))}}(e[c]);break;default:e[c]=e[e[c]]}return e}([]));
1
+ !function(e){function __webpack_require__(c){if(a[c])return a[c].exports;var f=a[c]={exports:{},id:c,loaded:!1};return e[c].call(f.exports,f,f.exports,__webpack_require__),f.loaded=!0,f.exports}var c=window.webpackJsonp;window.webpackJsonp=function(r,t){for(var b,d,_=0,n=[];_<r.length;_++)d=r[_],f[d]&&n.push.apply(n,f[d]),f[d]=0;for(b in t){var i=t[b];switch(typeof i){case"object":e[b]=function(c){var a=c.slice(1),f=c[0];return function(c,r,t){e[f].apply(this,[c,r,t].concat(a))}}(i);break;case"function":e[b]=i;break;default:e[b]=e[i]}}for(c&&c(r,t);n.length;)n.shift().call(null,__webpack_require__);if(t[0])return a[0]=0,__webpack_require__(0)};var a={},f={31:0};__webpack_require__.e=function(e,c){if(0===f[e])return c.call(null,__webpack_require__);if(void 0!==f[e])f[e].push(c);else{f[e]=[c];var a=document.getElementsByTagName("head")[0],r=document.createElement("script");r.type="text/javascript",r.charset="utf-8",r.async=!0,r.src=__webpack_require__.p+"chunks/"+e+"."+{0:"f575c19b056e559584d4",1:"c78e30240d3784c22a76",2:"c67aa76cc078c193aed5",3:"174a03e48d267820919b",4:"bfba880427270ef61dfd",5:"448ccace1bf3389d9b38",6:"037369868acc94a7533f",7:"5237c02df1fdd7c2449a",8:"5ee0cf635c848abbfc05",9:"df3c36f8d0d210621fbb",10:"dac55d18d0b4ef3cdacf",11:"4a20a75f827c5a1125c3",12:"50d20132d60ff7279de9",13:"645dd0b7c0b9210f1b56",14:"8b85221f000b80696e52",15:"10e44b70e118e7ebc13a",16:"a43cef89812c95f1b02e",17:"8e19985c4d12a3b7b0c0",18:"3b5ad23785c7be62ee30",19:"825a43c330157e351fca",20:"727bc4349ebdc499fff7",21:"3a20f161cfa3ff59cb67",22:"4289d31d931fb184a394",23:"32fd0887bdcc0b87a7c5",24:"a8d73082a87feb753036",25:"334bb014e5afb23064f1",26:"0f8affafd27dcc123fc0",27:"10a6d497f15faa1ddeee",28:"06100ef3e7e642814327",29:"4d752ece5790785c5889",30:"e97e10c9246818e2b4b2",32:"55f052535c5ecc898d67",33:"98be721e901eda7ed45c"}[e]+".js",a.appendChild(r)}},__webpack_require__.m=e,__webpack_require__.c=a,__webpack_require__.p="/static/"}(function(e){for(var c in e)if(Object.prototype.hasOwnProperty.call(e,c))switch(typeof e[c]){case"function":break;case"object":e[c]=function(c){var a=c.slice(1),f=e[c[0]];return function(e,c,r){f.apply(this,[e,c,r].concat(a))}}(e[c]);break;default:e[c]=e[e[c]]}return e}([]));
2
2
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap 00c6fca82036a5785d9f"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","i","callbacks","length","installedChunks","push","apply","_m","args","slice","templateId","a","b","c","this","concat","shift","31","e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","32","33","appendChild","m","Object","prototype","hasOwnProperty","fn"],"mappings":"CAAS,SAAUA,GCwDnB,QAAAC,qBAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,qBAGAI,EAAAE,QAAA,EAGAF,EAAAD,QA3EA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAA,EAAAC,KACQD,EAAAH,EAAAK,OAAoBF,IAC5BD,EAAAF,EAAAG,GACAG,EAAAJ,IACAE,EAAAG,KAAAC,MAAAJ,EAAAE,EAAAJ,IACAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAU,GAAA,CACA,GAAAQ,GAAAR,EAAAV,EAGA,cAAAkB,IACA,aAEApB,EAAAE,GAAA,SAAAkB,GACA,GAAAC,GAAAD,EAAAE,MAAA,GAAAC,EAAAH,EAAA,EACA,iBAAAI,EAAAC,EAAAC,GACA1B,EAAAuB,GAAAJ,MAAAQ,MAAAH,EAAAC,EAAAC,GAAAE,OAAAP,MAEMD,EACN,MACA,gBAEApB,EAAAE,GAAAkB,CACA,MACA,SAEApB,EAAAE,GAAAF,EAAAoB,IAKA,IADAX,KAAAE,EAAAC,GACAG,EAAAC,QACAD,EAAAc,QAAArB,KAAA,KAAAP,oBACA,IAAAW,EAAA,GAEA,MADAT,GAAA,KACAF,oBAAA,GAKA,IAAAE,MAKAc,GACAa,GAAA,EA6BA7B,qBAAA8B,EAAA,SAAAlB,EAAAmB,GAEA,OAAAf,EAAAJ,GACA,MAAAmB,GAAAxB,KAAA,KAAAP,oBAGA,IAAAgC,SAAAhB,EAAAJ,GACAI,EAAAJ,GAAAK,KAAAc,OACI,CAEJf,EAAAJ,IAAAmB,EACA,IAAAE,GAAAC,SAAAC,qBAAA,WACAC,EAAAF,SAAAG,cAAA,SACAD,GAAAE,KAAA,kBACAF,EAAAG,QAAA,QACAH,EAAAI,OAAA,EAEAJ,EAAAK,IAAAzC,oBAAA0C,EAAA,UAAA9B,EAAA,KAAsE+B,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,wBAAk5B/D,GAAA,MACx9BqB,EAAA2C,YAAAxC,KAKApC,oBAAA6E,EAAA9E,EAGAC,oBAAAyB,EAAAvB,EAGAF,oBAAA0C,EAAA,YDIW,SAAS3C,GAEnB,IAAI,GAAIc,KAAKd,GACZ,GAAG+E,OAAOC,UAAUC,eAAezE,KAAKR,EAASc,GAChD,aAAcd,GAAQc,IACtB,IAAK,WAAY,KACjB,KAAK,SAEJd,EAAQc,GAAM,SAASM,GACtB,GAAIC,GAAOD,EAAGE,MAAM,GAAI4D,EAAKlF,EAAQoB,EAAG,GACxC,OAAO,UAAUI,EAAEC,EAAEC,GACpBwD,EAAG/D,MAAMQ,MAAOH,EAAEC,EAAEC,GAAGE,OAAOP,MAE9BrB,EAAQc,GACV,MACD,SAECd,EAAQc,GAAKd,EAAQA,EAAQc,IAKhC,MAAOd","file":"common.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tvar _m = moreModules[moduleId];\n/******/\n/******/ \t\t\t// Check if module is deduplicated\n/******/ \t\t\tswitch(typeof _m) {\n/******/ \t\t\tcase \"object\":\n/******/ \t\t\t\t// Module can be created from a template\n/******/ \t\t\t\tmodules[moduleId] = (function(_m) {\n/******/ \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n/******/ \t\t\t\t\treturn function (a,b,c) {\n/******/ \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}(_m));\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tcase \"function\":\n/******/ \t\t\t\t// Normal module\n/******/ \t\t\t\tmodules[moduleId] = _m;\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tdefault:\n/******/ \t\t\t\t// Module is a copy of another module\n/******/ \t\t\t\tmodules[moduleId] = modules[_m];\n/******/ \t\t\t\tbreak;\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/ \t\tif(moreModules[0]) {\n/******/ \t\t\tinstalledModules[0] = 0;\n/******/ \t\t\treturn __webpack_require__(0);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t31:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"60610fd40b95ca119141\",\"9\":\"985935421e62c97a9f86\",\"10\":\"a99bb538cfbadb38dbcb\",\"11\":\"727465d72948bc466d43\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"3c8337bec315adcd2700\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"cbeb6d95129cad6481c2\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"4f7a5b71ef006ac268c1\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[chunkId] + \".js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/static/\";\n/******/ })\n/************************************************************************/\n/******/ ((function(modules) {\n\t// Check all modules for deduplicated modules\n\tfor(var i in modules) {\n\t\tif(Object.prototype.hasOwnProperty.call(modules, i)) {\n\t\t\tswitch(typeof modules[i]) {\n\t\t\tcase \"function\": break;\n\t\t\tcase \"object\":\n\t\t\t\t// Module can be created from a template\n\t\t\t\tmodules[i] = (function(_m) {\n\t\t\t\t\tvar args = _m.slice(1), fn = modules[_m[0]];\n\t\t\t\t\treturn function (a,b,c) {\n\t\t\t\t\t\tfn.apply(this, [a,b,c].concat(args));\n\t\t\t\t\t};\n\t\t\t\t}(modules[i]));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Module is a copy of another module\n\t\t\t\tmodules[i] = modules[modules[i]];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn modules;\n}([])));\n\n\n/** WEBPACK FOOTER **\n ** common.js\n **/"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tvar _m = moreModules[moduleId];\n\n \t\t\t// Check if module is deduplicated\n \t\t\tswitch(typeof _m) {\n \t\t\tcase \"object\":\n \t\t\t\t// Module can be created from a template\n \t\t\t\tmodules[moduleId] = (function(_m) {\n \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n \t\t\t\t\treturn function (a,b,c) {\n \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n \t\t\t\t\t};\n \t\t\t\t}(_m));\n \t\t\t\tbreak;\n \t\t\tcase \"function\":\n \t\t\t\t// Normal module\n \t\t\t\tmodules[moduleId] = _m;\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\t// Module is a copy of another module\n \t\t\t\tmodules[moduleId] = modules[_m];\n \t\t\t\tbreak;\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n \t\tif(moreModules[0]) {\n \t\t\tinstalledModules[0] = 0;\n \t\t\treturn __webpack_require__(0);\n \t\t}\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t31:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"60610fd40b95ca119141\",\"9\":\"985935421e62c97a9f86\",\"10\":\"a99bb538cfbadb38dbcb\",\"11\":\"727465d72948bc466d43\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"3c8337bec315adcd2700\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"cbeb6d95129cad6481c2\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"4f7a5b71ef006ac268c1\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[chunkId] + \".js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/\";\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap 00c6fca82036a5785d9f\n **/"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap e8f17647963f318d0de5"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","i","callbacks","length","installedChunks","push","apply","_m","args","slice","templateId","a","b","c","this","concat","shift","31","e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","32","33","appendChild","m","Object","prototype","hasOwnProperty","fn"],"mappings":"CAAS,SAAUA,GCwDnB,QAAAC,qBAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,qBAGAI,EAAAE,QAAA,EAGAF,EAAAD,QA3EA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAA,EAAAC,KACQD,EAAAH,EAAAK,OAAoBF,IAC5BD,EAAAF,EAAAG,GACAG,EAAAJ,IACAE,EAAAG,KAAAC,MAAAJ,EAAAE,EAAAJ,IACAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAU,GAAA,CACA,GAAAQ,GAAAR,EAAAV,EAGA,cAAAkB,IACA,aAEApB,EAAAE,GAAA,SAAAkB,GACA,GAAAC,GAAAD,EAAAE,MAAA,GAAAC,EAAAH,EAAA,EACA,iBAAAI,EAAAC,EAAAC,GACA1B,EAAAuB,GAAAJ,MAAAQ,MAAAH,EAAAC,EAAAC,GAAAE,OAAAP,MAEMD,EACN,MACA,gBAEApB,EAAAE,GAAAkB,CACA,MACA,SAEApB,EAAAE,GAAAF,EAAAoB,IAKA,IADAX,KAAAE,EAAAC,GACAG,EAAAC,QACAD,EAAAc,QAAArB,KAAA,KAAAP,oBACA,IAAAW,EAAA,GAEA,MADAT,GAAA,KACAF,oBAAA,GAKA,IAAAE,MAKAc,GACAa,GAAA,EA6BA7B,qBAAA8B,EAAA,SAAAlB,EAAAmB,GAEA,OAAAf,EAAAJ,GACA,MAAAmB,GAAAxB,KAAA,KAAAP,oBAGA,IAAAgC,SAAAhB,EAAAJ,GACAI,EAAAJ,GAAAK,KAAAc,OACI,CAEJf,EAAAJ,IAAAmB,EACA,IAAAE,GAAAC,SAAAC,qBAAA,WACAC,EAAAF,SAAAG,cAAA,SACAD,GAAAE,KAAA,kBACAF,EAAAG,QAAA,QACAH,EAAAI,OAAA,EAEAJ,EAAAK,IAAAzC,oBAAA0C,EAAA,UAAA9B,EAAA,KAAsE+B,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,EAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,uBAAAC,GAAA,wBAAk5B/D,GAAA,MACx9BqB,EAAA2C,YAAAxC,KAKApC,oBAAA6E,EAAA9E,EAGAC,oBAAAyB,EAAAvB,EAGAF,oBAAA0C,EAAA,YDIW,SAAS3C,GAEnB,IAAI,GAAIc,KAAKd,GACZ,GAAG+E,OAAOC,UAAUC,eAAezE,KAAKR,EAASc,GAChD,aAAcd,GAAQc,IACtB,IAAK,WAAY,KACjB,KAAK,SAEJd,EAAQc,GAAM,SAASM,GACtB,GAAIC,GAAOD,EAAGE,MAAM,GAAI4D,EAAKlF,EAAQoB,EAAG,GACxC,OAAO,UAAUI,EAAEC,EAAEC,GACpBwD,EAAG/D,MAAMQ,MAAOH,EAAEC,EAAEC,GAAGE,OAAOP,MAE9BrB,EAAQc,GACV,MACD,SAECd,EAAQc,GAAKd,EAAQA,EAAQc,IAKhC,MAAOd","file":"common.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tvar _m = moreModules[moduleId];\n/******/\n/******/ \t\t\t// Check if module is deduplicated\n/******/ \t\t\tswitch(typeof _m) {\n/******/ \t\t\tcase \"object\":\n/******/ \t\t\t\t// Module can be created from a template\n/******/ \t\t\t\tmodules[moduleId] = (function(_m) {\n/******/ \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n/******/ \t\t\t\t\treturn function (a,b,c) {\n/******/ \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n/******/ \t\t\t\t\t};\n/******/ \t\t\t\t}(_m));\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tcase \"function\":\n/******/ \t\t\t\t// Normal module\n/******/ \t\t\t\tmodules[moduleId] = _m;\n/******/ \t\t\t\tbreak;\n/******/ \t\t\tdefault:\n/******/ \t\t\t\t// Module is a copy of another module\n/******/ \t\t\t\tmodules[moduleId] = modules[_m];\n/******/ \t\t\t\tbreak;\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/ \t\tif(moreModules[0]) {\n/******/ \t\t\tinstalledModules[0] = 0;\n/******/ \t\t\treturn __webpack_require__(0);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t31:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"5ee0cf635c848abbfc05\",\"9\":\"df3c36f8d0d210621fbb\",\"10\":\"dac55d18d0b4ef3cdacf\",\"11\":\"4a20a75f827c5a1125c3\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"645dd0b7c0b9210f1b56\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"8e19985c4d12a3b7b0c0\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"825a43c330157e351fca\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[chunkId] + \".js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/static/\";\n/******/ })\n/************************************************************************/\n/******/ ((function(modules) {\n\t// Check all modules for deduplicated modules\n\tfor(var i in modules) {\n\t\tif(Object.prototype.hasOwnProperty.call(modules, i)) {\n\t\t\tswitch(typeof modules[i]) {\n\t\t\tcase \"function\": break;\n\t\t\tcase \"object\":\n\t\t\t\t// Module can be created from a template\n\t\t\t\tmodules[i] = (function(_m) {\n\t\t\t\t\tvar args = _m.slice(1), fn = modules[_m[0]];\n\t\t\t\t\treturn function (a,b,c) {\n\t\t\t\t\t\tfn.apply(this, [a,b,c].concat(args));\n\t\t\t\t\t};\n\t\t\t\t}(modules[i]));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Module is a copy of another module\n\t\t\t\tmodules[i] = modules[modules[i]];\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn modules;\n}([])));\n\n\n/** WEBPACK FOOTER **\n ** common.js\n **/"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tvar _m = moreModules[moduleId];\n\n \t\t\t// Check if module is deduplicated\n \t\t\tswitch(typeof _m) {\n \t\t\tcase \"object\":\n \t\t\t\t// Module can be created from a template\n \t\t\t\tmodules[moduleId] = (function(_m) {\n \t\t\t\t\tvar args = _m.slice(1), templateId = _m[0];\n \t\t\t\t\treturn function (a,b,c) {\n \t\t\t\t\t\tmodules[templateId].apply(this, [a,b,c].concat(args));\n \t\t\t\t\t};\n \t\t\t\t}(_m));\n \t\t\t\tbreak;\n \t\t\tcase \"function\":\n \t\t\t\t// Normal module\n \t\t\t\tmodules[moduleId] = _m;\n \t\t\t\tbreak;\n \t\t\tdefault:\n \t\t\t\t// Module is a copy of another module\n \t\t\t\tmodules[moduleId] = modules[_m];\n \t\t\t\tbreak;\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n \t\tif(moreModules[0]) {\n \t\t\tinstalledModules[0] = 0;\n \t\t\treturn __webpack_require__(0);\n \t\t}\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t31:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"chunks/\" + chunkId + \".\" + {\"0\":\"f575c19b056e559584d4\",\"1\":\"c78e30240d3784c22a76\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"bfba880427270ef61dfd\",\"5\":\"448ccace1bf3389d9b38\",\"6\":\"037369868acc94a7533f\",\"7\":\"5237c02df1fdd7c2449a\",\"8\":\"5ee0cf635c848abbfc05\",\"9\":\"df3c36f8d0d210621fbb\",\"10\":\"dac55d18d0b4ef3cdacf\",\"11\":\"4a20a75f827c5a1125c3\",\"12\":\"50d20132d60ff7279de9\",\"13\":\"645dd0b7c0b9210f1b56\",\"14\":\"8b85221f000b80696e52\",\"15\":\"10e44b70e118e7ebc13a\",\"16\":\"a43cef89812c95f1b02e\",\"17\":\"8e19985c4d12a3b7b0c0\",\"18\":\"3b5ad23785c7be62ee30\",\"19\":\"825a43c330157e351fca\",\"20\":\"727bc4349ebdc499fff7\",\"21\":\"3a20f161cfa3ff59cb67\",\"22\":\"4289d31d931fb184a394\",\"23\":\"32fd0887bdcc0b87a7c5\",\"24\":\"a8d73082a87feb753036\",\"25\":\"334bb014e5afb23064f1\",\"26\":\"0f8affafd27dcc123fc0\",\"27\":\"10a6d497f15faa1ddeee\",\"28\":\"06100ef3e7e642814327\",\"29\":\"4d752ece5790785c5889\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"55f052535c5ecc898d67\",\"33\":\"98be721e901eda7ed45c\"}[chunkId] + \".js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/static/\";\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap e8f17647963f318d0de5\n **/"],"sourceRoot":""}
@@ -0,0 +1,285 @@
1
+ import factory
2
+ import pytest
3
+ from flask_restx.reqparse import Argument, RequestParser
4
+ from werkzeug.exceptions import BadRequest
5
+
6
+ from udata.api_fields import field, function_field, generate_fields, patch, patch_and_save
7
+ from udata.core.dataset.api_fields import dataset_fields
8
+ from udata.core.organization import constants as org_constants
9
+ from udata.core.organization.factories import OrganizationFactory
10
+ from udata.core.organization.models import Organization
11
+ from udata.core.owned import Owned
12
+ from udata.core.storages import default_image_basename, images
13
+ from udata.factories import ModelFactory
14
+ from udata.models import Badge, BadgeMixin, BadgesList, WithMetrics, db
15
+ from udata.mongo.queryset import DBPaginator
16
+ from udata.utils import faker
17
+
18
+ pytestmark = [
19
+ pytest.mark.usefixtures("clean_db"),
20
+ ]
21
+
22
+ BIGGEST_IMAGE_SIZE: int = 500
23
+
24
+ BADGES: dict[str, str] = {
25
+ "badge-1": "badge 1",
26
+ "badge-2": "badge 2",
27
+ }
28
+
29
+ URL_RAISE_ERROR: str = "/raise/validation/error"
30
+ URL_EXISTS_ERROR_MESSAGE: str = "Url exists"
31
+
32
+
33
+ def check_url(url: str = "") -> None:
34
+ if url == URL_RAISE_ERROR:
35
+ raise ValueError(URL_EXISTS_ERROR_MESSAGE)
36
+ return
37
+
38
+
39
+ class FakeBadge(Badge):
40
+ kind = db.StringField(required=True, choices=list(BADGES.keys()))
41
+
42
+
43
+ class FakeBadgeMixin(BadgeMixin):
44
+ badges = field(BadgesList(FakeBadge), **BadgeMixin.default_badges_list_params)
45
+ __badges__ = BADGES
46
+
47
+
48
+ @generate_fields(
49
+ searchable=True,
50
+ additional_sorts=[
51
+ {"key": "datasets", "value": "metrics.datasets"},
52
+ {"key": "followers", "value": "metrics.followers"},
53
+ {"key": "views", "value": "metrics.views"},
54
+ ],
55
+ additional_filters={"organization_badge": "organization.badges"},
56
+ )
57
+ class Fake(WithMetrics, FakeBadgeMixin, Owned, db.Document):
58
+ filter_field = field(db.StringField(), filterable={"key": "filter_field_name"})
59
+ title = field(
60
+ db.StringField(required=True),
61
+ sortable=True,
62
+ show_as_ref=True,
63
+ )
64
+ slug = field(
65
+ db.SlugField(
66
+ max_length=255, required=True, populate_from="title", update=True, follow=True
67
+ ),
68
+ readonly=True,
69
+ )
70
+ description = field(
71
+ db.StringField(required=True),
72
+ markdown=True,
73
+ )
74
+ url = field(
75
+ db.StringField(required=True),
76
+ description="The remote URL (website)",
77
+ check=check_url,
78
+ )
79
+ image_url = db.StringField()
80
+ image = field(
81
+ db.ImageField(
82
+ fs=images,
83
+ basename=default_image_basename,
84
+ ),
85
+ readonly=True,
86
+ show_as_ref=True,
87
+ thumbnail_info={
88
+ "size": BIGGEST_IMAGE_SIZE,
89
+ },
90
+ )
91
+ datasets = field(
92
+ db.ListField(
93
+ field(
94
+ db.ReferenceField("Dataset", reverse_delete_rule=db.PULL),
95
+ nested_fields=dataset_fields,
96
+ ),
97
+ ),
98
+ filterable={
99
+ "key": "dataset",
100
+ },
101
+ )
102
+ tags = field(
103
+ db.TagListField(),
104
+ filterable={
105
+ "key": "tag",
106
+ },
107
+ )
108
+
109
+ deleted = field(
110
+ db.DateTimeField(),
111
+ )
112
+ archived = field(
113
+ db.DateTimeField(),
114
+ )
115
+
116
+ def __str__(self) -> str:
117
+ return self.title or ""
118
+
119
+ @function_field(description="Link to the API endpoint for this fake", show_as_ref=True)
120
+ def uri(self) -> str:
121
+ return "fake/foobar/endpoint/"
122
+
123
+ __metrics_keys__: list[str] = [
124
+ "datasets",
125
+ "followers",
126
+ "views",
127
+ ]
128
+
129
+ meta: dict = {
130
+ "indexes": [
131
+ "$title",
132
+ ],
133
+ "auto_create_index_on_save": True,
134
+ }
135
+
136
+
137
+ class FakeFactory(ModelFactory):
138
+ class Meta:
139
+ model = Fake
140
+
141
+ title = factory.Faker("sentence")
142
+ description = factory.Faker("text")
143
+ url = factory.LazyAttribute(lambda o: "/".join([faker.url(), faker.unique_string()]))
144
+ archived = None
145
+
146
+
147
+ class IndexParserTest:
148
+ index_parser: RequestParser = Fake.__index_parser__
149
+ index_parser_args: list[Argument] = Fake.__index_parser__.args
150
+ index_parser_args_names: set[str] = set([field.name for field in Fake.__index_parser__.args])
151
+
152
+ def test_index_parser(self) -> None:
153
+ assert type(self.index_parser) is RequestParser
154
+
155
+ def test_filterable_fields_in_parser(self) -> None:
156
+ """All filterable fields should have a parser arg.
157
+
158
+ The parser arg uses the `key` provided instead of the field name, so
159
+ - dataset instead of datasets
160
+ - tag instead of tags
161
+
162
+ """
163
+ assert set(
164
+ [
165
+ "dataset",
166
+ "tag",
167
+ ]
168
+ ).issubset(self.index_parser_args_names)
169
+
170
+ def test_readonly_and_non_wrapped_fields_not_in_parser(self) -> None:
171
+ """Readonly fields() and non wrapped fields should not have a parser arg."""
172
+ for field_ in ["slug", "image_url"]:
173
+ assert field_ not in self.index_parser_args_names
174
+
175
+ def test_filterable_fields_from_mixins_in_parser(self) -> None:
176
+ """Filterable fields from mixins should have a parser arg."""
177
+ assert set(["owner", "organization"]).issubset(self.index_parser_args_names)
178
+
179
+ def test_additional_filters_in_parser(self) -> None:
180
+ """Filterable fields from the `additional_filters` decorater parameter should have a parser arg."""
181
+ assert "organization_badge" in self.index_parser_args_names
182
+
183
+ def test_pagination_fields_in_parser(self) -> None:
184
+ """Pagination fields should have a parser arg."""
185
+ assert "page" in self.index_parser_args_names
186
+ assert "page_size" in self.index_parser_args_names
187
+
188
+ def test_searchable(self) -> None:
189
+ """Searchable documents have a `q` parser arg."""
190
+ assert "q" in self.index_parser_args_names
191
+
192
+ def test_sortable_fields_in_parser(self) -> None:
193
+ """Sortable fields are listed in the `sort` parser arg choices."""
194
+ sort_arg: Argument = next(arg for arg in self.index_parser_args if arg.name == "sort")
195
+ choices: list[str] = sort_arg.choices
196
+ assert "title" in choices
197
+ assert "-title" in choices
198
+
199
+ def test_additional_sorts_in_parser(self) -> None:
200
+ """Additional sorts are listed in the `sort` parser arg choices."""
201
+ sort_arg: Argument = next(arg for arg in self.index_parser_args if arg.name == "sort")
202
+ choices: list[str] = sort_arg.choices
203
+ additional_sorts: list[str] = [
204
+ "datasets",
205
+ "-datasets",
206
+ "followers",
207
+ "-followers",
208
+ "views",
209
+ "-views",
210
+ ]
211
+ assert set(additional_sorts).issubset(set(choices))
212
+
213
+
214
+ class PatchTest:
215
+ class FakeRequest:
216
+ json = {"url": URL_RAISE_ERROR, "description": None}
217
+
218
+ def test_patch_check(self) -> None:
219
+ fake: Fake = FakeFactory.create()
220
+ with pytest.raises(ValueError, match=URL_EXISTS_ERROR_MESSAGE):
221
+ patch(fake, self.FakeRequest())
222
+
223
+ def test_patch_and_save(self) -> None:
224
+ fake: Fake = FakeFactory.create()
225
+ fake_request = self.FakeRequest()
226
+ fake_request.json["url"] = "ok url"
227
+ with pytest.raises(BadRequest):
228
+ patch_and_save(fake, fake_request)
229
+
230
+
231
+ class ApplySortAndFiltersTest:
232
+ def test_filterable_field(self, app) -> None:
233
+ """A filterable field filters the results."""
234
+ fake1: Fake = FakeFactory(filter_field="test filter")
235
+ fake2: Fake = FakeFactory(filter_field="some other filter")
236
+ with app.test_request_context("/foobar", query_string={"filter_field_name": "test filter"}):
237
+ results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
238
+ assert fake1 in results
239
+ assert fake2 not in results
240
+
241
+ def test_additional_filters(self, app) -> None:
242
+ """Filtering on an additional filter filters the results."""
243
+ org_public_service: Organization = OrganizationFactory()
244
+ org_public_service.add_badge(org_constants.PUBLIC_SERVICE)
245
+ org_company: Organization = OrganizationFactory()
246
+ org_company.add_badge(org_constants.COMPANY)
247
+ fake1: Fake = FakeFactory(organization=org_public_service)
248
+ fake2: Fake = FakeFactory(organization=org_company)
249
+ with app.test_request_context(
250
+ "/foobar", query_string={"organization_badge": org_constants.PUBLIC_SERVICE}
251
+ ):
252
+ results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
253
+ assert fake1 in results
254
+ assert fake2 not in results
255
+
256
+ def test_searchable(self, app) -> None:
257
+ """If `@generate_fields(searchable=True)`, then the document can be full-text searched."""
258
+ fake1: Fake = FakeFactory(title="foobar crux")
259
+ fake2: Fake = FakeFactory(title="barbaz crux")
260
+ with app.test_request_context("/foobar", query_string={"q": "foobar"}):
261
+ results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
262
+ assert fake1 in results
263
+ assert fake2 not in results
264
+
265
+ def test_sortable_field(self, app) -> None:
266
+ """A sortable field should sort the results."""
267
+ fake1: Fake = FakeFactory(title="abc")
268
+ fake2: Fake = FakeFactory(title="def")
269
+ with app.test_request_context("/foobar", query_string={"sort": "title"}):
270
+ results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
271
+ assert tuple(results) == (fake1, fake2)
272
+ with app.test_request_context("/foobar", query_string={"sort": "-title"}):
273
+ results = Fake.apply_sort_filters_and_pagination(Fake.objects)
274
+ assert tuple(results) == (fake2, fake1)
275
+
276
+ def test_additional_sorts(self, app) -> None:
277
+ """Sorting on additional sort sorts the results."""
278
+ fake1: Fake = FakeFactory(metrics={"datasets": 1})
279
+ fake2: Fake = FakeFactory(metrics={"datasets": 2})
280
+ with app.test_request_context("/foobar", query_string={"sort": "datasets"}):
281
+ results: DBPaginator = Fake.apply_sort_filters_and_pagination(Fake.objects)
282
+ assert tuple(results) == (fake1, fake2)
283
+ with app.test_request_context("/foobar", query_string={"sort": "-datasets"}):
284
+ results = Fake.apply_sort_filters_and_pagination(Fake.objects)
285
+ assert tuple(results) == (fake2, fake1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: udata
3
- Version: 10.0.1.dev32334
3
+ Version: 10.0.1.dev32350
4
4
  Summary: Open data portal
5
5
  Home-page: https://github.com/opendatateam/udata
6
6
  Author: Opendata Team
@@ -140,7 +140,7 @@ It is collectively taken care of by members of the
140
140
 
141
141
  ## Current (in progress)
142
142
 
143
- - Nothing yet
143
+ - Add more comments and types in the `api_field.py` "lib" [#3174](https://github.com/opendatateam/udata/pull/3174)
144
144
 
145
145
  ## 10.0.0 (2024-11-07)
146
146
 
@@ -1,7 +1,7 @@
1
1
  tasks/__init__.py,sha256=nubUI6ljumym4uv6NvAJEkWHtsdurFpEGSq-AxDWYDM,8153
2
2
  tasks/helpers.py,sha256=70fS9tI_m0DTWmKx9Zl5-LG-nxdz_ZaPyvvsFkN2r48,1091
3
3
  udata/__init__.py,sha256=VLpep3pCtT5bA1tTfgPooU04eEqTfDj4l1Ji5umePX0,102
4
- udata/api_fields.py,sha256=DeDvyySEyzkkjo1TaWXEQHlDItIUJkm4paMmhY4S1PM,25041
4
+ udata/api_fields.py,sha256=z1L_ykNO6GoZP0i-RvlYTv6GwoP0NtGFdfZMLWe8qTc,28784
5
5
  udata/app.py,sha256=xjk2D3EgboYBpTwBwdIxd2klt2yMoWMyCrkry5fz0LA,7292
6
6
  udata/assets.py,sha256=H5Hrc2vnKM0IFLyWfLXmJ2Kj35w1i8W1D8Cgy8_cUj4,657
7
7
  udata/cors.py,sha256=gPTIXnO5nWziCKAHqU9GNuBKaIzr7RRtbjZBd2RdE2k,3155
@@ -429,8 +429,8 @@ udata/static/admin.css,sha256=RC7GvbVK8c5wDuELPeVdQpy3ab7HbHl1T4hUo5n-NVk,185167
429
429
  udata/static/admin.css.map,sha256=tUhFfsJUK3RrWCih9gUkf-Ywccuztxf4tqvXcN6zP3Y,626542
430
430
  udata/static/admin.js,sha256=d6LMGEm9HmvpxYuje1Ng7HIgJv5XglBHFzBwA-o2Wb8,1329286
431
431
  udata/static/admin.js.map,sha256=EcZ_4LEvKmf_8_2afyXGjfJpTAHttTE3zLMX94fe9MY,8515202
432
- udata/static/common.js,sha256=O_vXiedTKAhQlE_r9B6kjPF9df-A6eS0tknmeG12V-4,2252
433
- udata/static/common.js.map,sha256=CZr5vkd9lV_IjHqs5vLfVE0odLKIWOtlHQj0Gcyf-AA,14137
432
+ udata/static/common.js,sha256=8gbPeIW6r9nb63wnElw9F-XQX5ZyK0jZ1icZctuclRk,2252
433
+ udata/static/common.js.map,sha256=Q66zdvkC5iTFbLMWxJmIZYXAEGiRrFmZ1GQZkPCwJBk,14137
434
434
  udata/static/fontawesome-webfont.eot,sha256=e_yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk,165742
435
435
  udata/static/fontawesome-webfont.svg,sha256=rWFXkmwWIrpOHQPUePFUE2hSS_xG9R5C_g2UX37zI-Q,444379
436
436
  udata/static/fontawesome-webfont.ttf,sha256=qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg,165548
@@ -447,26 +447,26 @@ udata/static/chunks/0.f575c19b056e559584d4.js,sha256=-MNQyped3n5XBxxnSb-hxUAQfe0
447
447
  udata/static/chunks/0.f575c19b056e559584d4.js.map,sha256=smlw1AMEgvFomvGx8Hgbl89rYFu2lRbDolbUu2rlA_k,1671645
448
448
  udata/static/chunks/1.c78e30240d3784c22a76.js,sha256=eQa2yj1yebZyod1hqSMn6q7lWAR4QlfslsTfAop-hfU,304260
449
449
  udata/static/chunks/1.c78e30240d3784c22a76.js.map,sha256=rHMOsawr20JJrmXoEdXBJ_B7KwsCTIQqj4Bv7Sa7DIk,1741781
450
- udata/static/chunks/10.a99bb538cfbadb38dbcb.js,sha256=r_r6RU4N6FTejLVW7a1Zj2KofCaSs-9pikSfay9sV6Q,414754
451
- udata/static/chunks/10.a99bb538cfbadb38dbcb.js.map,sha256=QMI1uyh2UWliioC37gmATE6nLKO-hZf6EgTOiWDCNrQ,2736101
452
- udata/static/chunks/11.727465d72948bc466d43.js,sha256=5i_Qj8YIte6UqAJ7DsuCFBongXHUDaOrZq7C_pTx9_Q,395574
453
- udata/static/chunks/11.727465d72948bc466d43.js.map,sha256=QBDjp6L13MBDpGpMU4PIUPpU8PJZIEiqPM0ELnkAVG4,2268995
450
+ udata/static/chunks/10.dac55d18d0b4ef3cdacf.js,sha256=c3ejDZX8oodAICnsK9DD7XiTkXcwdpg9n6yZERMRAS8,414754
451
+ udata/static/chunks/10.dac55d18d0b4ef3cdacf.js.map,sha256=BfJN2xNQn2SzMBi7YdFcHr1tewmZ3XFcPoSpZMVIXak,2736101
452
+ udata/static/chunks/11.4a20a75f827c5a1125c3.js,sha256=cLd6OKdXjQ_d5Qmr4LmICq7gYEL8ts8Jly0NL8GskzY,395574
453
+ udata/static/chunks/11.4a20a75f827c5a1125c3.js.map,sha256=iQCrqSBVgnAjqpa0o23BBaX-BcZIZW92039V32-F0TQ,2268995
454
454
  udata/static/chunks/12.50d20132d60ff7279de9.js,sha256=lRNALcaIjoAGN9QM5IZUlqhBpm5dK4CbztsivF2Fyao,421111
455
455
  udata/static/chunks/12.50d20132d60ff7279de9.js.map,sha256=r-tf7oHdBfmLrVTvjTHLngL6zmnTQKv4cWCvAKM5eU0,2442272
456
- udata/static/chunks/13.3c8337bec315adcd2700.js,sha256=JsYW85tkqnpB_N60leHIaFC_TQDQghttECDrlqZ2E7M,420602
457
- udata/static/chunks/13.3c8337bec315adcd2700.js.map,sha256=ONaUg9VHJTE2a-NbORi6-asrd-hzdT0fMoRVhr13vsg,2430671
456
+ udata/static/chunks/13.645dd0b7c0b9210f1b56.js,sha256=zrRt72PIX18yLCDj3H39yxnFt7DkDC_3-oa0jmz9Y88,420602
457
+ udata/static/chunks/13.645dd0b7c0b9210f1b56.js.map,sha256=aFy9nWtbaIdFCbh2G8sZ_67wQBR8PNnsId938DV4cqs,2430671
458
458
  udata/static/chunks/14.8b85221f000b80696e52.js,sha256=vOHALILZfLu8rO9JL4gqj4nPOkM-6xtgNEDkN_55qAg,290380
459
459
  udata/static/chunks/14.8b85221f000b80696e52.js.map,sha256=JSIqNCUualQT7ToosUasQSYNzyjiOZgz2gVZxuIAh1Q,1636958
460
460
  udata/static/chunks/15.10e44b70e118e7ebc13a.js,sha256=Zpij6dc8Ez3ICH_mmu0ZewDV1BrA3cqRdfAsEsr1k2E,138978
461
461
  udata/static/chunks/15.10e44b70e118e7ebc13a.js.map,sha256=kb98MHzOFYpoQBU0JE_ZtjGhUIovXDjn1H15SVcimY0,702655
462
462
  udata/static/chunks/16.a43cef89812c95f1b02e.js,sha256=0ac9EXmEmDqN5p7wupMAro-6MAKOBgPCHVa0rAQghwY,228573
463
463
  udata/static/chunks/16.a43cef89812c95f1b02e.js.map,sha256=qf44iF_w2_I9Qkb43pyLQ7-11nIM1hCGhKlhcWSD_UI,1574433
464
- udata/static/chunks/17.cbeb6d95129cad6481c2.js,sha256=lKSIhD_5D4lDddq8lTShnqW561RQin85K7A82hDTztc,236713
465
- udata/static/chunks/17.cbeb6d95129cad6481c2.js.map,sha256=FsFbuijiRho-F1giuDSN9tu0S_4bVUuqZfkwkbad47Q,1290033
464
+ udata/static/chunks/17.8e19985c4d12a3b7b0c0.js,sha256=JNS-jE2C1z-hCUZJFFMIeXyD2aBfq_JQ4hLYl6zukWg,236713
465
+ udata/static/chunks/17.8e19985c4d12a3b7b0c0.js.map,sha256=BFOTMP5OaCfqn99a9J2qunMDjxuSYZCMVdnmWxshLUQ,1290033
466
466
  udata/static/chunks/18.3b5ad23785c7be62ee30.js,sha256=CSsL3HD_l4R_WFDi-dmdUfjmBg_3rHSHIOqX2lqkLvQ,50398
467
467
  udata/static/chunks/18.3b5ad23785c7be62ee30.js.map,sha256=yQyQTLhjMCVwf0A-GvXp_aiuBj4RNUIDLjI9JoZWSGw,277843
468
- udata/static/chunks/19.4f7a5b71ef006ac268c1.js,sha256=PNV3qF42Hl9aMu9qtw6jXMi-ynfIScjX2owqCrXYXWY,203430
469
- udata/static/chunks/19.4f7a5b71ef006ac268c1.js.map,sha256=wbEdEy1DNz6PbotZheeiSj7W4RyRFAd9M2bOr1Rwa8M,1080009
468
+ udata/static/chunks/19.825a43c330157e351fca.js,sha256=p466HYvdKK2GZpZ-TlcwvCPcf2qxCwD70J0S2Cl9h_0,203430
469
+ udata/static/chunks/19.825a43c330157e351fca.js.map,sha256=bfMKGTcY8JCx6QJiRKvdvB2xLmK4fb9PCnLjw1q_IPA,1080009
470
470
  udata/static/chunks/2.c67aa76cc078c193aed5.js,sha256=BjpQndwBdg9AT2lrY1TAgMfPbMvRytp33yI9YOgCOqc,276597
471
471
  udata/static/chunks/2.c67aa76cc078c193aed5.js.map,sha256=FnPh12lCwilnq1jRp-d7226H5kpaA4-raWEk1Q0p42M,1556097
472
472
  udata/static/chunks/20.727bc4349ebdc499fff7.js,sha256=_9bDJsQybRmitoaVotYU9_PIKZ_QExxsJUTQNCohH0E,36778
@@ -503,10 +503,10 @@ udata/static/chunks/6.037369868acc94a7533f.js,sha256=IoBa0GeUdPXgtoRp2iqd8Eur87p
503
503
  udata/static/chunks/6.037369868acc94a7533f.js.map,sha256=e7PI2w49pqthO8RoF674NG_hrzahNBQOOFvlmpnbYZw,3783237
504
504
  udata/static/chunks/7.5237c02df1fdd7c2449a.js,sha256=pRz3iTHC8-EUqFFiotIP1VMVEXzGiUfYLGX3bOZ8ZWU,157164
505
505
  udata/static/chunks/7.5237c02df1fdd7c2449a.js.map,sha256=YLmWzRFjhWdndddIIQoazvrmp4JAGiC7k8IBziUylUI,813053
506
- udata/static/chunks/8.60610fd40b95ca119141.js,sha256=uH_PMfV8ppnbAyYRt5RCK0XoFuCBcroKhKIdvZkBseY,222870
507
- udata/static/chunks/8.60610fd40b95ca119141.js.map,sha256=Ot2nmb-SmMElXRpn8uNYNf_wVONK5GvisxBiT5mq0YU,1205115
508
- udata/static/chunks/9.985935421e62c97a9f86.js,sha256=p_QF3tBLLdcD2FHk5MuJ6M2YYnXO5sTJ6tmHWIVazIQ,416730
509
- udata/static/chunks/9.985935421e62c97a9f86.js.map,sha256=S8jEqQl29luHv-nIORwMIt1fCQ3QNwQQ_CUwah8Dric,2746345
506
+ udata/static/chunks/8.5ee0cf635c848abbfc05.js,sha256=bx1FVWw1fJ4Vcl_eMoLQNETloPEwtAfgRXXxIa52Ewc,222870
507
+ udata/static/chunks/8.5ee0cf635c848abbfc05.js.map,sha256=YbSxJcvJFY_M1GBz0u-mLYyw0ycnEsuv_MyarjP6J3I,1205115
508
+ udata/static/chunks/9.df3c36f8d0d210621fbb.js,sha256=WpvSa-6nF0_qnbXnt5s4Pya3D5mKMaDAEbLNv0ay2Vs,416730
509
+ udata/static/chunks/9.df3c36f8d0d210621fbb.js.map,sha256=ZRw1vre9rZ4qVOW6gGQtN2SMTdaMdcyCldp-pf_YSSE,2746345
510
510
  udata/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
511
511
  udata/storage/s3.py,sha256=enxbTm1IZksiKLkbafASrO2bqO44OTCn4F7_FeMjhgg,1557
512
512
  udata/templates/admin.html,sha256=RfX03rUOW7NIlgMYNhFfx0pL-p2j8BtAKvEFUadaIIs,787
@@ -586,6 +586,7 @@ udata/tests/models.py,sha256=5oTC-cgKSL0sUdlqjUiJ6U8-YZBQanObb-MhZhQIV3M,238
586
586
  udata/tests/plugin.py,sha256=dT3KfQiVYwLM61TbB894wzTelnlPIsCHaiPEH-Jirfk,11580
587
587
  udata/tests/schemas.json,sha256=szM1jDpkogfOG4xWbjIGjLgG8l9-ZyE3JKQtecJyD1E,4990
588
588
  udata/tests/test_activity.py,sha256=x-pDK6VW9wAG0uxYRZQ3DWTRjfCU729iaMGMJb1rWYU,3195
589
+ udata/tests/test_api_fields.py,sha256=c_EezPhAJSxNBMK8e5J5XVNcxL0QZKciH5gQ_dkowMo,10266
589
590
  udata/tests/test_cors.py,sha256=b_pyxKeIyqhnsXxXryPf4d0V0QxaLQ1P_VjY89Q_j3g,3233
590
591
  udata/tests/test_discussions.py,sha256=Qo7nhIUY7YAATZfWl5Mgo0XhngGwFULgqEoMhsHZtFE,33587
591
592
  udata/tests/test_i18n.py,sha256=u60344JNRG_8s0t89ghXtQ1FbF4TayEHBzuBFxqnQ_Y,3152
@@ -704,9 +705,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=TpMlhwj07t7CPkzXn-qmHG4aTq6ZT7
704
705
  udata/translations/pt/LC_MESSAGES/udata.po,sha256=vRqSEt9Jds--Wic-hYMkdjYaWzeHFnUn3wD5XvQL-qE,44877
705
706
  udata/translations/sr/LC_MESSAGES/udata.mo,sha256=bc-BmgT91ZJJB9DKc5YDsHqyxBhOjDJdbOy-UPo-NjA,28163
706
707
  udata/translations/sr/LC_MESSAGES/udata.po,sha256=BKVmr4M88pfgZMU4sHIyDObV5M9E8ezZ9m7jviy2PE4,51369
707
- udata-10.0.1.dev32334.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
708
- udata-10.0.1.dev32334.dist-info/METADATA,sha256=Z_gL9Ev8boB5u62D2MVE1vOdrsqMq_bRifTtXnkeV70,134044
709
- udata-10.0.1.dev32334.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
710
- udata-10.0.1.dev32334.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
711
- udata-10.0.1.dev32334.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
712
- udata-10.0.1.dev32334.dist-info/RECORD,,
708
+ udata-10.0.1.dev32350.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
709
+ udata-10.0.1.dev32350.dist-info/METADATA,sha256=GCpVTvUetj2TSV5zyJhW6J39bdSk18651TcM-_W4I4M,134145
710
+ udata-10.0.1.dev32350.dist-info/WHEEL,sha256=DZajD4pwLWue70CAfc7YaxT1wLUciNBvN_TTcvXpltE,110
711
+ udata-10.0.1.dev32350.dist-info/entry_points.txt,sha256=3SKiqVy4HUqxf6iWspgMqH8d88Htk6KoLbG1BU-UddQ,451
712
+ udata-10.0.1.dev32350.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
713
+ udata-10.0.1.dev32350.dist-info/RECORD,,