udata 9.0.1.dev29716__py2.py3-none-any.whl → 9.0.1.dev29760__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 (45) hide show
  1. udata/api/__init__.py +1 -0
  2. udata/api_fields.py +3 -0
  3. udata/core/reports/__init__.py +0 -0
  4. udata/core/reports/api.py +43 -0
  5. udata/core/reports/constants.py +28 -0
  6. udata/core/reports/models.py +57 -0
  7. udata/models/__init__.py +1 -0
  8. udata/static/chunks/{11.7266fef2dddc1db403d9.js → 11.ae54612e36c6d46f85db.js} +3 -3
  9. udata/static/chunks/{11.7266fef2dddc1db403d9.js.map → 11.ae54612e36c6d46f85db.js.map} +1 -1
  10. udata/static/chunks/{13.91b177d7d531fd55cf5d.js → 13.d8ccb992a49875966313.js} +2 -2
  11. udata/static/chunks/{13.91b177d7d531fd55cf5d.js.map → 13.d8ccb992a49875966313.js.map} +1 -1
  12. udata/static/chunks/{16.e866757bab9f6b0a3f1b.js → 16.4565605e68bab129a471.js} +2 -2
  13. udata/static/chunks/{16.e866757bab9f6b0a3f1b.js.map → 16.4565605e68bab129a471.js.map} +1 -1
  14. udata/static/chunks/{19.619b83ac597516dcd03e.js → 19.f993a75d5bfe2382548d.js} +3 -3
  15. udata/static/chunks/{19.619b83ac597516dcd03e.js.map → 19.f993a75d5bfe2382548d.js.map} +1 -1
  16. udata/static/chunks/{5.48417db6b33328fa9d6a.js → 5.cc2e7bf65ef32f9c8604.js} +3 -3
  17. udata/static/chunks/{5.48417db6b33328fa9d6a.js.map → 5.cc2e7bf65ef32f9c8604.js.map} +1 -1
  18. udata/static/chunks/{6.f84539bd4c419b36cc19.js → 6.cad898a38692eda28965.js} +3 -3
  19. udata/static/chunks/{6.f84539bd4c419b36cc19.js.map → 6.cad898a38692eda28965.js.map} +1 -1
  20. udata/static/chunks/{9.07503e7f7ec02919f696.js → 9.d5b992e9ef51921aeb57.js} +2 -2
  21. udata/static/chunks/{9.07503e7f7ec02919f696.js.map → 9.d5b992e9ef51921aeb57.js.map} +1 -1
  22. udata/static/common.js +1 -1
  23. udata/static/common.js.map +1 -1
  24. udata/tests/api/test_reports_api.py +88 -0
  25. udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
  26. udata/translations/ar/LC_MESSAGES/udata.po +32 -12
  27. udata/translations/de/LC_MESSAGES/udata.mo +0 -0
  28. udata/translations/de/LC_MESSAGES/udata.po +32 -12
  29. udata/translations/es/LC_MESSAGES/udata.mo +0 -0
  30. udata/translations/es/LC_MESSAGES/udata.po +31 -11
  31. udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
  32. udata/translations/fr/LC_MESSAGES/udata.po +32 -12
  33. udata/translations/it/LC_MESSAGES/udata.mo +0 -0
  34. udata/translations/it/LC_MESSAGES/udata.po +32 -12
  35. udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
  36. udata/translations/pt/LC_MESSAGES/udata.po +32 -12
  37. udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
  38. udata/translations/sr/LC_MESSAGES/udata.po +32 -12
  39. udata/translations/udata.pot +31 -11
  40. {udata-9.0.1.dev29716.dist-info → udata-9.0.1.dev29760.dist-info}/METADATA +2 -1
  41. {udata-9.0.1.dev29716.dist-info → udata-9.0.1.dev29760.dist-info}/RECORD +45 -40
  42. {udata-9.0.1.dev29716.dist-info → udata-9.0.1.dev29760.dist-info}/LICENSE +0 -0
  43. {udata-9.0.1.dev29716.dist-info → udata-9.0.1.dev29760.dist-info}/WHEEL +0 -0
  44. {udata-9.0.1.dev29716.dist-info → udata-9.0.1.dev29760.dist-info}/entry_points.txt +0 -0
  45. {udata-9.0.1.dev29716.dist-info → udata-9.0.1.dev29760.dist-info}/top_level.txt +0 -0
udata/static/common.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e){function __webpack_require__(a){if(c[a])return c[a].exports;var f=c[a]={exports:{},id:a,loaded:!1};return e[a].call(f.exports,f,f.exports,__webpack_require__),f.loaded=!0,f.exports}var a=window.webpackJsonp;window.webpackJsonp=function(b,r){for(var t,d,_=0,n=[];_<b.length;_++)d=b[_],f[d]&&n.push.apply(n,f[d]),f[d]=0;for(t in r){var i=r[t];switch(typeof i){case"object":e[t]=function(a){var c=a.slice(1),f=a[0];return function(a,b,r){e[f].apply(this,[a,b,r].concat(c))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(a&&a(b,r);n.length;)n.shift().call(null,__webpack_require__);if(r[0])return c[0]=0,__webpack_require__(0)};var c={},f={31:0};__webpack_require__.e=function(e,a){if(0===f[e])return a.call(null,__webpack_require__);if(void 0!==f[e])f[e].push(a);else{f[e]=[a];var c=document.getElementsByTagName("head")[0],b=document.createElement("script");b.type="text/javascript",b.charset="utf-8",b.async=!0,b.src=__webpack_require__.p+"chunks/"+e+"."+{0:"93c3ae13b5b94753ee80",1:"ff8196d42cab0f031d3f",2:"614b3e73b072982fd9b1",3:"1ca609753b5a02de0ca3",4:"95e6a070a0eb2ed08fdd",5:"48417db6b33328fa9d6a",6:"f84539bd4c419b36cc19",7:"e2106342e94ee09393b1",8:"17d1afb591ad1495bd03",9:"07503e7f7ec02919f696",10:"e97ea231893dc435d6b5",11:"7266fef2dddc1db403d9",12:"59f035a9438e2baf5126",13:"91b177d7d531fd55cf5d",14:"e64890872b31c55fcdf7",15:"92b2cef3032ea35da04a",16:"e866757bab9f6b0a3f1b",17:"15ecbcf8f0b2968689e8",18:"1922fd0b2b7fad122991",19:"619b83ac597516dcd03e",20:"14a92e5c503f74ff40df",21:"ccbfce6680a2b11a5284",22:"bc79367e5f4c8ad00038",23:"5486b3fc83b194d55191",24:"e905e3f6ba089a34b07c",25:"e20b4daac9fb2bdceee6",26:"c8f33e73b9117b70aef8",27:"6779f92692327013b446",28:"280c392f19bc9e908abf",29:"daadfa33135efe4e5534",30:"b2464d08ccbeb40ec74e",32:"1a2e06fc4fa771fb27be",33:"70f8e7b1964892a24e67"}[e]+".js",c.appendChild(b)}},__webpack_require__.m=e,__webpack_require__.c=c,__webpack_require__.p="/static/"}(function(e){for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a))switch(typeof e[a]){case"function":break;case"object":e[a]=function(a){var c=a.slice(1),f=e[a[0]];return function(e,a,b){f.apply(this,[e,a,b].concat(c))}}(e[a]);break;default:e[a]=e[e[a]]}return e}([]));
1
+ !function(e){function __webpack_require__(a){if(c[a])return c[a].exports;var f=c[a]={exports:{},id:a,loaded:!1};return e[a].call(f.exports,f,f.exports,__webpack_require__),f.loaded=!0,f.exports}var a=window.webpackJsonp;window.webpackJsonp=function(b,r){for(var t,_,n=0,d=[];n<b.length;n++)_=b[n],f[_]&&d.push.apply(d,f[_]),f[_]=0;for(t in r){var i=r[t];switch(typeof i){case"object":e[t]=function(a){var c=a.slice(1),f=a[0];return function(a,b,r){e[f].apply(this,[a,b,r].concat(c))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(a&&a(b,r);d.length;)d.shift().call(null,__webpack_require__);if(r[0])return c[0]=0,__webpack_require__(0)};var c={},f={31:0};__webpack_require__.e=function(e,a){if(0===f[e])return a.call(null,__webpack_require__);if(void 0!==f[e])f[e].push(a);else{f[e]=[a];var c=document.getElementsByTagName("head")[0],b=document.createElement("script");b.type="text/javascript",b.charset="utf-8",b.async=!0,b.src=__webpack_require__.p+"chunks/"+e+"."+{0:"93c3ae13b5b94753ee80",1:"ff8196d42cab0f031d3f",2:"614b3e73b072982fd9b1",3:"1ca609753b5a02de0ca3",4:"95e6a070a0eb2ed08fdd",5:"cc2e7bf65ef32f9c8604",6:"cad898a38692eda28965",7:"e2106342e94ee09393b1",8:"17d1afb591ad1495bd03",9:"d5b992e9ef51921aeb57",10:"e97ea231893dc435d6b5",11:"ae54612e36c6d46f85db",12:"59f035a9438e2baf5126",13:"d8ccb992a49875966313",14:"e64890872b31c55fcdf7",15:"92b2cef3032ea35da04a",16:"4565605e68bab129a471",17:"15ecbcf8f0b2968689e8",18:"1922fd0b2b7fad122991",19:"f993a75d5bfe2382548d",20:"14a92e5c503f74ff40df",21:"ccbfce6680a2b11a5284",22:"bc79367e5f4c8ad00038",23:"5486b3fc83b194d55191",24:"e905e3f6ba089a34b07c",25:"e20b4daac9fb2bdceee6",26:"c8f33e73b9117b70aef8",27:"6779f92692327013b446",28:"280c392f19bc9e908abf",29:"daadfa33135efe4e5534",30:"b2464d08ccbeb40ec74e",32:"1a2e06fc4fa771fb27be",33:"70f8e7b1964892a24e67"}[e]+".js",c.appendChild(b)}},__webpack_require__.m=e,__webpack_require__.c=c,__webpack_require__.p="/static/"}(function(e){for(var a in e)if(Object.prototype.hasOwnProperty.call(e,a))switch(typeof e[a]){case"function":break;case"object":e[a]=function(a){var c=a.slice(1),f=e[a[0]];return function(e,a,b){f.apply(this,[e,a,b].concat(c))}}(e[a]);break;default:e[a]=e[e[a]]}return e}([]));
2
2
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap e7b65707b95946bef828"],"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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"48417db6b33328fa9d6a\",\"6\":\"f84539bd4c419b36cc19\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"07503e7f7ec02919f696\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"7266fef2dddc1db403d9\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"91b177d7d531fd55cf5d\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"e866757bab9f6b0a3f1b\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"619b83ac597516dcd03e\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"1a2e06fc4fa771fb27be\",\"33\":\"70f8e7b1964892a24e67\"}[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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"48417db6b33328fa9d6a\",\"6\":\"f84539bd4c419b36cc19\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"07503e7f7ec02919f696\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"7266fef2dddc1db403d9\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"91b177d7d531fd55cf5d\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"e866757bab9f6b0a3f1b\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"619b83ac597516dcd03e\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"1a2e06fc4fa771fb27be\",\"33\":\"70f8e7b1964892a24e67\"}[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 e7b65707b95946bef828\n **/"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap 7ceb0f0554bc8763530d"],"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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"cc2e7bf65ef32f9c8604\",\"6\":\"cad898a38692eda28965\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"d5b992e9ef51921aeb57\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"ae54612e36c6d46f85db\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"d8ccb992a49875966313\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"4565605e68bab129a471\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"f993a75d5bfe2382548d\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"1a2e06fc4fa771fb27be\",\"33\":\"70f8e7b1964892a24e67\"}[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\":\"93c3ae13b5b94753ee80\",\"1\":\"ff8196d42cab0f031d3f\",\"2\":\"614b3e73b072982fd9b1\",\"3\":\"1ca609753b5a02de0ca3\",\"4\":\"95e6a070a0eb2ed08fdd\",\"5\":\"cc2e7bf65ef32f9c8604\",\"6\":\"cad898a38692eda28965\",\"7\":\"e2106342e94ee09393b1\",\"8\":\"17d1afb591ad1495bd03\",\"9\":\"d5b992e9ef51921aeb57\",\"10\":\"e97ea231893dc435d6b5\",\"11\":\"ae54612e36c6d46f85db\",\"12\":\"59f035a9438e2baf5126\",\"13\":\"d8ccb992a49875966313\",\"14\":\"e64890872b31c55fcdf7\",\"15\":\"92b2cef3032ea35da04a\",\"16\":\"4565605e68bab129a471\",\"17\":\"15ecbcf8f0b2968689e8\",\"18\":\"1922fd0b2b7fad122991\",\"19\":\"f993a75d5bfe2382548d\",\"20\":\"14a92e5c503f74ff40df\",\"21\":\"ccbfce6680a2b11a5284\",\"22\":\"bc79367e5f4c8ad00038\",\"23\":\"5486b3fc83b194d55191\",\"24\":\"e905e3f6ba089a34b07c\",\"25\":\"e20b4daac9fb2bdceee6\",\"26\":\"c8f33e73b9117b70aef8\",\"27\":\"6779f92692327013b446\",\"28\":\"280c392f19bc9e908abf\",\"29\":\"daadfa33135efe4e5534\",\"30\":\"b2464d08ccbeb40ec74e\",\"32\":\"1a2e06fc4fa771fb27be\",\"33\":\"70f8e7b1964892a24e67\"}[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 7ceb0f0554bc8763530d\n **/"],"sourceRoot":""}
@@ -0,0 +1,88 @@
1
+ from typing import List
2
+ from flask import url_for
3
+
4
+ from udata.core.dataset.factories import (DatasetFactory)
5
+ from udata.core.dataset.models import Dataset
6
+ from udata.core.reports.models import Report
7
+ from udata.core.reports.constants import REASON_ILLEGAL_CONTENT, REASON_SPAM, reports_reasons_translations
8
+ from udata.i18n import gettext as _
9
+
10
+ from . import APITestCase
11
+
12
+
13
+ class ReportsReasonsAPITest(APITestCase):
14
+ modules = []
15
+
16
+ def test_reports_reasons_api(self):
17
+ response = self.get(url_for('api.reports_reasons'))
18
+ self.assert200(response)
19
+ self.assertEqual(response.json, reports_reasons_translations())
20
+
21
+ class ReportsAPITest(APITestCase):
22
+ modules = []
23
+
24
+ def test_reports_api_create(self):
25
+ user = self.login()
26
+ illegal_dataset = DatasetFactory.create(owner=user)
27
+ spam_dataset = DatasetFactory.create(owner=user)
28
+
29
+ response = self.post(url_for('api.reports'), {
30
+ 'object_type': 'Dataset',
31
+ 'object_id': illegal_dataset.id,
32
+ 'message': 'This is not appropriate',
33
+ 'reason': REASON_ILLEGAL_CONTENT,
34
+ })
35
+ self.assert201(response)
36
+ self.assertEqual(Report.objects.count(), 1)
37
+
38
+ response = self.post(url_for('api.reports'), {
39
+ 'object_type': 'Dataset',
40
+ 'object_id': spam_dataset.id,
41
+ 'message': 'This is spammy',
42
+ 'reason': REASON_SPAM,
43
+ })
44
+ self.assert201(response)
45
+ self.assertEqual(Report.objects.count(), 2)
46
+
47
+ reports: List[Report] = list(Report.objects())
48
+ self.assertEqual(Dataset.__name__, reports[0].object_type)
49
+ self.assertEqual(illegal_dataset.id, reports[0].object_id)
50
+ self.assertEqual('This is not appropriate', reports[0].message)
51
+ self.assertEqual(REASON_ILLEGAL_CONTENT, reports[0].reason)
52
+ self.assertEqual(user.id, reports[0].by.id)
53
+
54
+ self.assertEqual(Dataset.__name__, reports[1].object_type)
55
+ self.assertEqual(spam_dataset.id, reports[1].object_id)
56
+ self.assertEqual('This is spammy', reports[1].message)
57
+ self.assertEqual(REASON_SPAM, reports[1].reason)
58
+ self.assertEqual(user.id, reports[1].by.id)
59
+
60
+ response = self.delete(url_for('api.dataset', dataset=illegal_dataset))
61
+ self.assert204(response)
62
+
63
+ reports[0].reload()
64
+ self.assertEqual(Dataset.__name__, reports[0].object_type)
65
+ self.assertEqual(illegal_dataset.id, reports[0].object_id)
66
+ self.assertEqual('This is not appropriate', reports[0].message)
67
+ self.assertEqual(REASON_ILLEGAL_CONTENT, reports[0].reason)
68
+ self.assertEqual(user.id, reports[0].by.id)
69
+ self.assertIsNotNone(reports[0].object_deleted_at)
70
+
71
+ reports[1].reload()
72
+ self.assertEqual(Dataset.__name__, reports[1].object_type)
73
+ self.assertEqual(spam_dataset.id, reports[1].object_id)
74
+ self.assertEqual('This is spammy', reports[1].message)
75
+ self.assertEqual(REASON_SPAM, reports[1].reason)
76
+ self.assertEqual(user.id, reports[1].by.id)
77
+ self.assertIsNone(reports[1].object_deleted_at)
78
+
79
+ # We should take action on manual delete in the database too
80
+ spam_dataset.delete()
81
+
82
+ reports[1].reload()
83
+ self.assertIsNotNone(reports[1].object_deleted_at)
84
+
85
+ response = self.get(url_for('api.reports'))
86
+ self.assert200(response)
87
+ self.assertEqual(len(response.json['data']), 2)
88
+
Binary file
@@ -2,8 +2,8 @@ msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: udata\n"
4
4
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
5
- "POT-Creation-Date: 2024-06-14 11:31+0200\n"
6
- "PO-Revision-Date: 2024-06-14 11:37\n"
5
+ "POT-Creation-Date: 2024-07-01 13:45+0200\n"
6
+ "PO-Revision-Date: 2024-07-01 14:35\n"
7
7
  "Last-Translator: Open Data Team <i18n@opendata.team>\n"
8
8
  "Language: ar\n"
9
9
  "Language-Team: Arabic\n"
@@ -42,7 +42,7 @@ msgstr "تم تغيير كلمة المرور الخاصه بك"
42
42
  msgid "Password reset instructions"
43
43
  msgstr "إرشادات إعادة تعيين كلمة المرور"
44
44
 
45
- #: udata/settings.py:433
45
+ #: udata/settings.py:435
46
46
  msgid "This dataset has been archived"
47
47
  msgstr ""
48
48
 
@@ -50,7 +50,7 @@ msgstr ""
50
50
  msgid "Invalid URL \"{url}\": {reason}"
51
51
  msgstr ""
52
52
 
53
- #: udata/uris.py:54
53
+ #: udata/tests/test_model.py:370 udata/uris.py:54
54
54
  msgid "Invalid URL \"{url}\""
55
55
  msgstr ""
56
56
 
@@ -547,7 +547,7 @@ msgstr ""
547
547
  msgid "Version \"{version}\" is not an allowed value for the schema \"{name}\". Allowed versions: {values}"
548
548
  msgstr ""
549
549
 
550
- #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:430
550
+ #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:436
551
551
  #: udata/tests/dataset/test_dataset_rdf.py:517
552
552
  #: udata/tests/dataset/test_dataset_rdf.py:530
553
553
  msgid "Nameless resource"
@@ -565,7 +565,7 @@ msgstr "بيانات محورية"
565
565
  msgid "dataset"
566
566
  msgstr "مجموعة البيانات"
567
567
 
568
- #: udata/core/dataset/rdf.py:428 udata/tests/dataset/test_dataset_rdf.py:504
568
+ #: udata/core/dataset/rdf.py:434 udata/tests/dataset/test_dataset_rdf.py:504
569
569
  msgid "{format} resource"
570
570
  msgstr ""
571
571
 
@@ -797,6 +797,30 @@ msgstr ""
797
797
  msgid "post"
798
798
  msgstr ""
799
799
 
800
+ #: udata/core/reports/constants.py:19
801
+ msgid "Spam"
802
+ msgstr ""
803
+
804
+ #: udata/core/reports/constants.py:20
805
+ msgid "Personal data"
806
+ msgstr ""
807
+
808
+ #: udata/core/reports/constants.py:21
809
+ msgid "Explicit content"
810
+ msgstr ""
811
+
812
+ #: udata/core/reports/constants.py:22
813
+ msgid "Illegal content"
814
+ msgstr ""
815
+
816
+ #: udata/core/reports/constants.py:23
817
+ msgid "Security"
818
+ msgstr ""
819
+
820
+ #: udata/core/reports/constants.py:24 udata/core/reuse/constants.py:29
821
+ msgid "Others"
822
+ msgstr ""
823
+
800
824
  #: udata/core/reuse/activities.py:22
801
825
  msgid "created a reuse"
802
826
  msgstr "قام بإنشاء استخدام"
@@ -893,10 +917,6 @@ msgstr ""
893
917
  msgid "Open data tools"
894
918
  msgstr ""
895
919
 
896
- #: udata/core/reuse/constants.py:29
897
- msgid "Others"
898
- msgstr ""
899
-
900
920
  #: udata/core/reuse/forms.py:14
901
921
  msgid "This URL is already registered"
902
922
  msgstr "هذا العنوان الإلكتروني مسجل من قبل"
@@ -1573,8 +1593,8 @@ msgid "Here"
1573
1593
  msgstr ""
1574
1594
 
1575
1595
  #: udata/tests/api/test_datasets_api.py:764
1576
- msgid "Invalid URL"
1577
- msgstr "عنوان إليكتروني غير صالح"
1596
+ msgid "Invalid URL \"test\""
1597
+ msgstr ""
1578
1598
 
1579
1599
  #: udata/tests/forms/test_model_field.py:155
1580
1600
  msgid "Expect a \"Target\" class but \"Wrong\" was found"
Binary file
@@ -2,8 +2,8 @@ msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: udata\n"
4
4
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
5
- "POT-Creation-Date: 2024-06-14 11:31+0200\n"
6
- "PO-Revision-Date: 2024-06-14 11:37\n"
5
+ "POT-Creation-Date: 2024-07-01 13:45+0200\n"
6
+ "PO-Revision-Date: 2024-07-01 14:36\n"
7
7
  "Last-Translator: Open Data Team <i18n@opendata.team>\n"
8
8
  "Language: de\n"
9
9
  "Language-Team: German\n"
@@ -42,7 +42,7 @@ msgstr "Das Passwort wurde geändert"
42
42
  msgid "Password reset instructions"
43
43
  msgstr "Anleitung zum Zurücksetzen des Passworts"
44
44
 
45
- #: udata/settings.py:433
45
+ #: udata/settings.py:435
46
46
  msgid "This dataset has been archived"
47
47
  msgstr "Dieser Datensatz wurde archiviert"
48
48
 
@@ -50,7 +50,7 @@ msgstr "Dieser Datensatz wurde archiviert"
50
50
  msgid "Invalid URL \"{url}\": {reason}"
51
51
  msgstr ""
52
52
 
53
- #: udata/uris.py:54
53
+ #: udata/tests/test_model.py:370 udata/uris.py:54
54
54
  msgid "Invalid URL \"{url}\""
55
55
  msgstr ""
56
56
 
@@ -547,7 +547,7 @@ msgstr ""
547
547
  msgid "Version \"{version}\" is not an allowed value for the schema \"{name}\". Allowed versions: {values}"
548
548
  msgstr ""
549
549
 
550
- #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:430
550
+ #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:436
551
551
  #: udata/tests/dataset/test_dataset_rdf.py:517
552
552
  #: udata/tests/dataset/test_dataset_rdf.py:530
553
553
  msgid "Nameless resource"
@@ -565,7 +565,7 @@ msgstr ""
565
565
  msgid "dataset"
566
566
  msgstr "Datensatz"
567
567
 
568
- #: udata/core/dataset/rdf.py:428 udata/tests/dataset/test_dataset_rdf.py:504
568
+ #: udata/core/dataset/rdf.py:434 udata/tests/dataset/test_dataset_rdf.py:504
569
569
  msgid "{format} resource"
570
570
  msgstr ""
571
571
 
@@ -797,6 +797,30 @@ msgstr ""
797
797
  msgid "post"
798
798
  msgstr ""
799
799
 
800
+ #: udata/core/reports/constants.py:19
801
+ msgid "Spam"
802
+ msgstr ""
803
+
804
+ #: udata/core/reports/constants.py:20
805
+ msgid "Personal data"
806
+ msgstr ""
807
+
808
+ #: udata/core/reports/constants.py:21
809
+ msgid "Explicit content"
810
+ msgstr ""
811
+
812
+ #: udata/core/reports/constants.py:22
813
+ msgid "Illegal content"
814
+ msgstr ""
815
+
816
+ #: udata/core/reports/constants.py:23
817
+ msgid "Security"
818
+ msgstr ""
819
+
820
+ #: udata/core/reports/constants.py:24 udata/core/reuse/constants.py:29
821
+ msgid "Others"
822
+ msgstr ""
823
+
800
824
  #: udata/core/reuse/activities.py:22
801
825
  msgid "created a reuse"
802
826
  msgstr "Wiederverwendung angelegt"
@@ -893,10 +917,6 @@ msgstr "Recht und Justiz"
893
917
  msgid "Open data tools"
894
918
  msgstr "Open Data-Werkzeuge"
895
919
 
896
- #: udata/core/reuse/constants.py:29
897
- msgid "Others"
898
- msgstr ""
899
-
900
920
  #: udata/core/reuse/forms.py:14
901
921
  msgid "This URL is already registered"
902
922
  msgstr "Diese URL ist bereits registriert"
@@ -1573,8 +1593,8 @@ msgid "Here"
1573
1593
  msgstr ""
1574
1594
 
1575
1595
  #: udata/tests/api/test_datasets_api.py:764
1576
- msgid "Invalid URL"
1577
- msgstr "Ungültiger URL"
1596
+ msgid "Invalid URL \"test\""
1597
+ msgstr ""
1578
1598
 
1579
1599
  #: udata/tests/forms/test_model_field.py:155
1580
1600
  msgid "Expect a \"Target\" class but \"Wrong\" was found"
Binary file
@@ -2,8 +2,8 @@ msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: udata\n"
4
4
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
5
- "POT-Creation-Date: 2024-06-14 11:31+0200\n"
6
- "PO-Revision-Date: 2024-06-14 11:37\n"
5
+ "POT-Creation-Date: 2024-07-01 13:45+0200\n"
6
+ "PO-Revision-Date: 2024-07-01 14:35\n"
7
7
  "Last-Translator: Open Data Team <i18n@opendata.team>\n"
8
8
  "Language: es\n"
9
9
  "Language-Team: Spanish\n"
@@ -42,7 +42,7 @@ msgstr ""
42
42
  msgid "Password reset instructions"
43
43
  msgstr ""
44
44
 
45
- #: udata/settings.py:433
45
+ #: udata/settings.py:435
46
46
  msgid "This dataset has been archived"
47
47
  msgstr ""
48
48
 
@@ -50,7 +50,7 @@ msgstr ""
50
50
  msgid "Invalid URL \"{url}\": {reason}"
51
51
  msgstr ""
52
52
 
53
- #: udata/uris.py:54
53
+ #: udata/tests/test_model.py:370 udata/uris.py:54
54
54
  msgid "Invalid URL \"{url}\""
55
55
  msgstr ""
56
56
 
@@ -547,7 +547,7 @@ msgstr ""
547
547
  msgid "Version \"{version}\" is not an allowed value for the schema \"{name}\". Allowed versions: {values}"
548
548
  msgstr ""
549
549
 
550
- #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:430
550
+ #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:436
551
551
  #: udata/tests/dataset/test_dataset_rdf.py:517
552
552
  #: udata/tests/dataset/test_dataset_rdf.py:530
553
553
  msgid "Nameless resource"
@@ -565,7 +565,7 @@ msgstr "Datos centrales"
565
565
  msgid "dataset"
566
566
  msgstr "conjunto de datos"
567
567
 
568
- #: udata/core/dataset/rdf.py:428 udata/tests/dataset/test_dataset_rdf.py:504
568
+ #: udata/core/dataset/rdf.py:434 udata/tests/dataset/test_dataset_rdf.py:504
569
569
  msgid "{format} resource"
570
570
  msgstr ""
571
571
 
@@ -797,6 +797,30 @@ msgstr ""
797
797
  msgid "post"
798
798
  msgstr ""
799
799
 
800
+ #: udata/core/reports/constants.py:19
801
+ msgid "Spam"
802
+ msgstr ""
803
+
804
+ #: udata/core/reports/constants.py:20
805
+ msgid "Personal data"
806
+ msgstr ""
807
+
808
+ #: udata/core/reports/constants.py:21
809
+ msgid "Explicit content"
810
+ msgstr ""
811
+
812
+ #: udata/core/reports/constants.py:22
813
+ msgid "Illegal content"
814
+ msgstr ""
815
+
816
+ #: udata/core/reports/constants.py:23
817
+ msgid "Security"
818
+ msgstr ""
819
+
820
+ #: udata/core/reports/constants.py:24 udata/core/reuse/constants.py:29
821
+ msgid "Others"
822
+ msgstr ""
823
+
800
824
  #: udata/core/reuse/activities.py:22
801
825
  msgid "created a reuse"
802
826
  msgstr "ha creado una reutilización"
@@ -893,10 +917,6 @@ msgstr ""
893
917
  msgid "Open data tools"
894
918
  msgstr ""
895
919
 
896
- #: udata/core/reuse/constants.py:29
897
- msgid "Others"
898
- msgstr ""
899
-
900
920
  #: udata/core/reuse/forms.py:14
901
921
  msgid "This URL is already registered"
902
922
  msgstr "Esta URL ya está registrada"
@@ -1573,7 +1593,7 @@ msgid "Here"
1573
1593
  msgstr ""
1574
1594
 
1575
1595
  #: udata/tests/api/test_datasets_api.py:764
1576
- msgid "Invalid URL"
1596
+ msgid "Invalid URL \"test\""
1577
1597
  msgstr ""
1578
1598
 
1579
1599
  #: udata/tests/forms/test_model_field.py:155
Binary file
@@ -2,8 +2,8 @@ msgid ""
2
2
  msgstr ""
3
3
  "Project-Id-Version: udata\n"
4
4
  "Report-Msgid-Bugs-To: i18n@opendata.team\n"
5
- "POT-Creation-Date: 2024-06-14 11:31+0200\n"
6
- "PO-Revision-Date: 2024-06-14 11:37\n"
5
+ "POT-Creation-Date: 2024-07-01 13:45+0200\n"
6
+ "PO-Revision-Date: 2024-07-01 14:35\n"
7
7
  "Last-Translator: Open Data Team <i18n@opendata.team>\n"
8
8
  "Language: fr\n"
9
9
  "Language-Team: French\n"
@@ -42,7 +42,7 @@ msgstr "Votre mot de passe a été modifié"
42
42
  msgid "Password reset instructions"
43
43
  msgstr "Instructions de réinitialisation du mot de passe"
44
44
 
45
- #: udata/settings.py:433
45
+ #: udata/settings.py:435
46
46
  msgid "This dataset has been archived"
47
47
  msgstr "Ce jeu de données a été archivé"
48
48
 
@@ -50,7 +50,7 @@ msgstr "Ce jeu de données a été archivé"
50
50
  msgid "Invalid URL \"{url}\": {reason}"
51
51
  msgstr ""
52
52
 
53
- #: udata/uris.py:54
53
+ #: udata/tests/test_model.py:370 udata/uris.py:54
54
54
  msgid "Invalid URL \"{url}\""
55
55
  msgstr ""
56
56
 
@@ -547,7 +547,7 @@ msgstr "Le nom du schéma \"{schema}\" n'est pas une valeur autorisée. Valeurs
547
547
  msgid "Version \"{version}\" is not an allowed value for the schema \"{name}\". Allowed versions: {values}"
548
548
  msgstr "La version \"{version}\" n'est pas une valeur autorisée pour le schéma \"{name}\". Versions autorisées : {values}"
549
549
 
550
- #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:430
550
+ #: udata/core/dataset/models.py:401 udata/core/dataset/rdf.py:436
551
551
  #: udata/tests/dataset/test_dataset_rdf.py:517
552
552
  #: udata/tests/dataset/test_dataset_rdf.py:530
553
553
  msgid "Nameless resource"
@@ -565,7 +565,7 @@ msgstr "Données pivot"
565
565
  msgid "dataset"
566
566
  msgstr "jeu de données"
567
567
 
568
- #: udata/core/dataset/rdf.py:428 udata/tests/dataset/test_dataset_rdf.py:504
568
+ #: udata/core/dataset/rdf.py:434 udata/tests/dataset/test_dataset_rdf.py:504
569
569
  msgid "{format} resource"
570
570
  msgstr "Ressource {format}"
571
571
 
@@ -797,6 +797,30 @@ msgstr "Spécifiez votre type de contenu (HTML ou markdown)"
797
797
  msgid "post"
798
798
  msgstr "article"
799
799
 
800
+ #: udata/core/reports/constants.py:19
801
+ msgid "Spam"
802
+ msgstr ""
803
+
804
+ #: udata/core/reports/constants.py:20
805
+ msgid "Personal data"
806
+ msgstr ""
807
+
808
+ #: udata/core/reports/constants.py:21
809
+ msgid "Explicit content"
810
+ msgstr ""
811
+
812
+ #: udata/core/reports/constants.py:22
813
+ msgid "Illegal content"
814
+ msgstr ""
815
+
816
+ #: udata/core/reports/constants.py:23
817
+ msgid "Security"
818
+ msgstr ""
819
+
820
+ #: udata/core/reports/constants.py:24 udata/core/reuse/constants.py:29
821
+ msgid "Others"
822
+ msgstr "Autres"
823
+
800
824
  #: udata/core/reuse/activities.py:22
801
825
  msgid "created a reuse"
802
826
  msgstr "a créé une réutilisation"
@@ -893,10 +917,6 @@ msgstr "Droit et justice"
893
917
  msgid "Open data tools"
894
918
  msgstr "Outils open data"
895
919
 
896
- #: udata/core/reuse/constants.py:29
897
- msgid "Others"
898
- msgstr "Autres"
899
-
900
920
  #: udata/core/reuse/forms.py:14
901
921
  msgid "This URL is already registered"
902
922
  msgstr "Cette URL est déjà enregistrée"
@@ -1576,8 +1596,8 @@ msgid "Here"
1576
1596
  msgstr "Ici"
1577
1597
 
1578
1598
  #: udata/tests/api/test_datasets_api.py:764
1579
- msgid "Invalid URL"
1580
- msgstr "URL invalide"
1599
+ msgid "Invalid URL \"test\""
1600
+ msgstr ""
1581
1601
 
1582
1602
  #: udata/tests/forms/test_model_field.py:155
1583
1603
  msgid "Expect a \"Target\" class but \"Wrong\" was found"
Binary file