udata 10.4.2.dev35475__py2.py3-none-any.whl → 10.4.3__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.
- udata/__init__.py +1 -1
- udata/api_fields.py +27 -2
- udata/commands/fixtures.py +11 -1
- udata/core/dataservices/api.py +12 -10
- udata/core/dataservices/apiv2.py +4 -1
- udata/core/dataservices/constants.py +19 -0
- udata/core/dataservices/models.py +54 -1
- udata/core/dataset/api.py +33 -27
- udata/core/dataset/api_fields.py +21 -0
- udata/core/dataset/apiv2.py +14 -11
- udata/core/dataset/models.py +60 -15
- udata/core/dataset/rdf.py +1 -1
- udata/core/dataset/tasks.py +3 -2
- udata/core/organization/api.py +11 -0
- udata/core/organization/models.py +29 -2
- udata/core/reuse/api.py +4 -5
- udata/core/reuse/api_fields.py +8 -0
- udata/core/reuse/apiv2.py +2 -0
- udata/core/reuse/models.py +18 -1
- udata/core/spatial/models.py +9 -0
- udata/core/user/models.py +11 -5
- udata/harvest/api.py +2 -1
- udata/harvest/tests/dcat/bnodes.xml +5 -0
- udata/harvest/tests/test_dcat_backend.py +1 -0
- udata/migrations/2025-06-18-clean-spatial-coverages.py +25 -0
- udata/static/chunks/{11.0f04e49a40a0a381bcce.js → 11.b6f741fcc366abfad9c4.js} +3 -3
- udata/static/chunks/{11.0f04e49a40a0a381bcce.js.map → 11.b6f741fcc366abfad9c4.js.map} +1 -1
- udata/static/chunks/{13.d9c1735d14038b94c17e.js → 13.2d06442dd9a05d9777b5.js} +2 -2
- udata/static/chunks/{13.d9c1735d14038b94c17e.js.map → 13.2d06442dd9a05d9777b5.js.map} +1 -1
- udata/static/chunks/{17.81c57c0dedf812e43013.js → 17.e8e4caaad5cb0cc0bacc.js} +2 -2
- udata/static/chunks/{17.81c57c0dedf812e43013.js.map → 17.e8e4caaad5cb0cc0bacc.js.map} +1 -1
- udata/static/chunks/{19.8da42e8359d72afc2618.js → 19.f03a102365af4315f9db.js} +3 -3
- udata/static/chunks/{19.8da42e8359d72afc2618.js.map → 19.f03a102365af4315f9db.js.map} +1 -1
- udata/static/chunks/{8.494b003a94383b142c18.js → 8.778091d55cd8ea39af6b.js} +2 -2
- udata/static/chunks/{8.494b003a94383b142c18.js.map → 8.778091d55cd8ea39af6b.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/api/test_dataservices_api.py +78 -0
- udata/tests/api/test_follow_api.py +20 -0
- udata/tests/api/test_organizations_api.py +25 -0
- udata/tests/test_api_fields.py +35 -0
- udata/translations/ar/LC_MESSAGES/udata.mo +0 -0
- udata/translations/ar/LC_MESSAGES/udata.po +98 -38
- udata/translations/de/LC_MESSAGES/udata.mo +0 -0
- udata/translations/de/LC_MESSAGES/udata.po +98 -38
- udata/translations/es/LC_MESSAGES/udata.mo +0 -0
- udata/translations/es/LC_MESSAGES/udata.po +98 -38
- udata/translations/fr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/fr/LC_MESSAGES/udata.po +98 -38
- udata/translations/it/LC_MESSAGES/udata.mo +0 -0
- udata/translations/it/LC_MESSAGES/udata.po +98 -38
- udata/translations/pt/LC_MESSAGES/udata.mo +0 -0
- udata/translations/pt/LC_MESSAGES/udata.po +98 -38
- udata/translations/sr/LC_MESSAGES/udata.mo +0 -0
- udata/translations/sr/LC_MESSAGES/udata.po +98 -38
- udata/translations/udata.pot +98 -38
- {udata-10.4.2.dev35475.dist-info → udata-10.4.3.dist-info}/METADATA +16 -4
- {udata-10.4.2.dev35475.dist-info → udata-10.4.3.dist-info}/RECORD +62 -61
- {udata-10.4.2.dev35475.dist-info → udata-10.4.3.dist-info}/LICENSE +0 -0
- {udata-10.4.2.dev35475.dist-info → udata-10.4.3.dist-info}/WHEEL +0 -0
- {udata-10.4.2.dev35475.dist-info → udata-10.4.3.dist-info}/entry_points.txt +0 -0
- {udata-10.4.2.dev35475.dist-info → udata-10.4.3.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 r=a[c]={exports:{},id:c,loaded:!1};return e[c].call(r.exports,r,r.exports,__webpack_require__),r.loaded=!0,r.exports}var c=window.webpackJsonp;window.webpackJsonp=function(f,d){for(var t,b,_=0,n=[];_<f.length;_++)b=f[_],r[b]&&n.push.apply(n,r[b]),r[b]=0;for(t in d){var i=d[t];switch(typeof i){case"object":e[t]=function(c){var a=c.slice(1),r=c[0];return function(c,f,d){e[r].apply(this,[c,f,d].concat(a))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(c&&c(f,d);n.length;)n.shift().call(null,__webpack_require__);if(d[0])return a[0]=0,__webpack_require__(0)};var a={},r={31:0};__webpack_require__.e=function(e,c){if(0===r[e])return c.call(null,__webpack_require__);if(void 0!==r[e])r[e].push(c);else{r[e]=[c];var a=document.getElementsByTagName("head")[0],f=document.createElement("script");f.type="text/javascript",f.charset="utf-8",f.async=!0,f.src=__webpack_require__.p+"chunks/"+e+"."+{0:"4dd4f378428d1eed85c8",1:"0a96f54313c89e541ccb",2:"c67aa76cc078c193aed5",3:"174a03e48d267820919b",4:"98dca3045c034c154d5f",5:"0fa1408dae4e76b87b2e",6:"d663709d877baa44a71e",7:"896bbffe39433bb598f7",8:"
|
|
1
|
+
!function(e){function __webpack_require__(c){if(a[c])return a[c].exports;var r=a[c]={exports:{},id:c,loaded:!1};return e[c].call(r.exports,r,r.exports,__webpack_require__),r.loaded=!0,r.exports}var c=window.webpackJsonp;window.webpackJsonp=function(f,d){for(var t,b,_=0,n=[];_<f.length;_++)b=f[_],r[b]&&n.push.apply(n,r[b]),r[b]=0;for(t in d){var i=d[t];switch(typeof i){case"object":e[t]=function(c){var a=c.slice(1),r=c[0];return function(c,f,d){e[r].apply(this,[c,f,d].concat(a))}}(i);break;case"function":e[t]=i;break;default:e[t]=e[i]}}for(c&&c(f,d);n.length;)n.shift().call(null,__webpack_require__);if(d[0])return a[0]=0,__webpack_require__(0)};var a={},r={31:0};__webpack_require__.e=function(e,c){if(0===r[e])return c.call(null,__webpack_require__);if(void 0!==r[e])r[e].push(c);else{r[e]=[c];var a=document.getElementsByTagName("head")[0],f=document.createElement("script");f.type="text/javascript",f.charset="utf-8",f.async=!0,f.src=__webpack_require__.p+"chunks/"+e+"."+{0:"4dd4f378428d1eed85c8",1:"0a96f54313c89e541ccb",2:"c67aa76cc078c193aed5",3:"174a03e48d267820919b",4:"98dca3045c034c154d5f",5:"0fa1408dae4e76b87b2e",6:"d663709d877baa44a71e",7:"896bbffe39433bb598f7",8:"778091d55cd8ea39af6b",9:"033d7e190ca9e226a5d0",10:"8ca60413647062717b1e",11:"b6f741fcc366abfad9c4",12:"1be61e0201691821bff6",13:"2d06442dd9a05d9777b5",14:"bc3f6bc0a67517e7b30f",15:"2f5d8e3d4aa4c46188d7",16:"aaa39ef2d7e82594efc8",17:"e8e4caaad5cb0cc0bacc",18:"56444ebd2456a4ba2201",19:"f03a102365af4315f9db",20:"3d4e02d1205a3c9e26c5",21:"af1610ce169cf6d1cf4e",22:"6a69068a7dd9d767dea1",23:"663b89b79d755a70deef",24:"d149cf025cbbca231d88",25:"1fafd6424761185cc14b",26:"402064cda3665d56f7fc",27:"997802f273a0c88f7b6d",28:"e68c475c6ca1e2eec92c",29:"2f4a04c61d75f2ef18ab",30:"e97e10c9246818e2b4b2",32:"03cc9867716dd58b9302",33:"011b367beb543774f950"}[e]+".js",a.appendChild(f)}},__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),r=e[c[0]];return function(e,c,f){r.apply(this,[e,c,f].concat(a))}}(e[c]);break;default:e[c]=e[e[c]]}return e}([]));
|
|
2
2
|
//# sourceMappingURL=common.js.map
|
udata/static/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap 496b4fb3bcc208e01bbb"],"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\":\"4dd4f378428d1eed85c8\",\"1\":\"0a96f54313c89e541ccb\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"98dca3045c034c154d5f\",\"5\":\"0fa1408dae4e76b87b2e\",\"6\":\"d663709d877baa44a71e\",\"7\":\"896bbffe39433bb598f7\",\"8\":\"494b003a94383b142c18\",\"9\":\"033d7e190ca9e226a5d0\",\"10\":\"8ca60413647062717b1e\",\"11\":\"0f04e49a40a0a381bcce\",\"12\":\"1be61e0201691821bff6\",\"13\":\"d9c1735d14038b94c17e\",\"14\":\"bc3f6bc0a67517e7b30f\",\"15\":\"2f5d8e3d4aa4c46188d7\",\"16\":\"aaa39ef2d7e82594efc8\",\"17\":\"81c57c0dedf812e43013\",\"18\":\"56444ebd2456a4ba2201\",\"19\":\"8da42e8359d72afc2618\",\"20\":\"3d4e02d1205a3c9e26c5\",\"21\":\"af1610ce169cf6d1cf4e\",\"22\":\"6a69068a7dd9d767dea1\",\"23\":\"663b89b79d755a70deef\",\"24\":\"d149cf025cbbca231d88\",\"25\":\"1fafd6424761185cc14b\",\"26\":\"402064cda3665d56f7fc\",\"27\":\"997802f273a0c88f7b6d\",\"28\":\"e68c475c6ca1e2eec92c\",\"29\":\"2f4a04c61d75f2ef18ab\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"03cc9867716dd58b9302\",\"33\":\"011b367beb543774f950\"}[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\":\"4dd4f378428d1eed85c8\",\"1\":\"0a96f54313c89e541ccb\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"98dca3045c034c154d5f\",\"5\":\"0fa1408dae4e76b87b2e\",\"6\":\"d663709d877baa44a71e\",\"7\":\"896bbffe39433bb598f7\",\"8\":\"494b003a94383b142c18\",\"9\":\"033d7e190ca9e226a5d0\",\"10\":\"8ca60413647062717b1e\",\"11\":\"0f04e49a40a0a381bcce\",\"12\":\"1be61e0201691821bff6\",\"13\":\"d9c1735d14038b94c17e\",\"14\":\"bc3f6bc0a67517e7b30f\",\"15\":\"2f5d8e3d4aa4c46188d7\",\"16\":\"aaa39ef2d7e82594efc8\",\"17\":\"81c57c0dedf812e43013\",\"18\":\"56444ebd2456a4ba2201\",\"19\":\"8da42e8359d72afc2618\",\"20\":\"3d4e02d1205a3c9e26c5\",\"21\":\"af1610ce169cf6d1cf4e\",\"22\":\"6a69068a7dd9d767dea1\",\"23\":\"663b89b79d755a70deef\",\"24\":\"d149cf025cbbca231d88\",\"25\":\"1fafd6424761185cc14b\",\"26\":\"402064cda3665d56f7fc\",\"27\":\"997802f273a0c88f7b6d\",\"28\":\"e68c475c6ca1e2eec92c\",\"29\":\"2f4a04c61d75f2ef18ab\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"03cc9867716dd58b9302\",\"33\":\"011b367beb543774f950\"}[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 496b4fb3bcc208e01bbb\n **/"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:///common.js","webpack:///webpack/bootstrap 44a61f162b1337addb9e"],"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\":\"4dd4f378428d1eed85c8\",\"1\":\"0a96f54313c89e541ccb\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"98dca3045c034c154d5f\",\"5\":\"0fa1408dae4e76b87b2e\",\"6\":\"d663709d877baa44a71e\",\"7\":\"896bbffe39433bb598f7\",\"8\":\"778091d55cd8ea39af6b\",\"9\":\"033d7e190ca9e226a5d0\",\"10\":\"8ca60413647062717b1e\",\"11\":\"b6f741fcc366abfad9c4\",\"12\":\"1be61e0201691821bff6\",\"13\":\"2d06442dd9a05d9777b5\",\"14\":\"bc3f6bc0a67517e7b30f\",\"15\":\"2f5d8e3d4aa4c46188d7\",\"16\":\"aaa39ef2d7e82594efc8\",\"17\":\"e8e4caaad5cb0cc0bacc\",\"18\":\"56444ebd2456a4ba2201\",\"19\":\"f03a102365af4315f9db\",\"20\":\"3d4e02d1205a3c9e26c5\",\"21\":\"af1610ce169cf6d1cf4e\",\"22\":\"6a69068a7dd9d767dea1\",\"23\":\"663b89b79d755a70deef\",\"24\":\"d149cf025cbbca231d88\",\"25\":\"1fafd6424761185cc14b\",\"26\":\"402064cda3665d56f7fc\",\"27\":\"997802f273a0c88f7b6d\",\"28\":\"e68c475c6ca1e2eec92c\",\"29\":\"2f4a04c61d75f2ef18ab\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"03cc9867716dd58b9302\",\"33\":\"011b367beb543774f950\"}[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\":\"4dd4f378428d1eed85c8\",\"1\":\"0a96f54313c89e541ccb\",\"2\":\"c67aa76cc078c193aed5\",\"3\":\"174a03e48d267820919b\",\"4\":\"98dca3045c034c154d5f\",\"5\":\"0fa1408dae4e76b87b2e\",\"6\":\"d663709d877baa44a71e\",\"7\":\"896bbffe39433bb598f7\",\"8\":\"778091d55cd8ea39af6b\",\"9\":\"033d7e190ca9e226a5d0\",\"10\":\"8ca60413647062717b1e\",\"11\":\"b6f741fcc366abfad9c4\",\"12\":\"1be61e0201691821bff6\",\"13\":\"2d06442dd9a05d9777b5\",\"14\":\"bc3f6bc0a67517e7b30f\",\"15\":\"2f5d8e3d4aa4c46188d7\",\"16\":\"aaa39ef2d7e82594efc8\",\"17\":\"e8e4caaad5cb0cc0bacc\",\"18\":\"56444ebd2456a4ba2201\",\"19\":\"f03a102365af4315f9db\",\"20\":\"3d4e02d1205a3c9e26c5\",\"21\":\"af1610ce169cf6d1cf4e\",\"22\":\"6a69068a7dd9d767dea1\",\"23\":\"663b89b79d755a70deef\",\"24\":\"d149cf025cbbca231d88\",\"25\":\"1fafd6424761185cc14b\",\"26\":\"402064cda3665d56f7fc\",\"27\":\"997802f273a0c88f7b6d\",\"28\":\"e68c475c6ca1e2eec92c\",\"29\":\"2f4a04c61d75f2ef18ab\",\"30\":\"e97e10c9246818e2b4b2\",\"32\":\"03cc9867716dd58b9302\",\"33\":\"011b367beb543774f950\"}[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 44a61f162b1337addb9e\n **/"],"sourceRoot":""}
|
|
@@ -8,6 +8,10 @@ from werkzeug.test import TestResponse
|
|
|
8
8
|
|
|
9
9
|
import udata.core.organization.constants as org_constants
|
|
10
10
|
from udata.core.dataservices.constants import (
|
|
11
|
+
DATASERVICE_ACCESS_AUDIENCE_ADMINISTRATION,
|
|
12
|
+
DATASERVICE_ACCESS_AUDIENCE_COMPANY,
|
|
13
|
+
DATASERVICE_ACCESS_AUDIENCE_UNDER_CONDITIONS,
|
|
14
|
+
DATASERVICE_ACCESS_AUDIENCE_YES,
|
|
11
15
|
DATASERVICE_ACCESS_TYPE_OPEN,
|
|
12
16
|
DATASERVICE_ACCESS_TYPE_OPEN_WITH_ACCOUNT,
|
|
13
17
|
DATASERVICE_ACCESS_TYPE_RESTRICTED,
|
|
@@ -127,6 +131,17 @@ class DataserviceAPITest(APITestCase):
|
|
|
127
131
|
"extras": {
|
|
128
132
|
"foo": "bar",
|
|
129
133
|
},
|
|
134
|
+
"access_type": DATASERVICE_ACCESS_TYPE_RESTRICTED,
|
|
135
|
+
"access_audiences": [
|
|
136
|
+
{
|
|
137
|
+
"role": DATASERVICE_ACCESS_AUDIENCE_ADMINISTRATION,
|
|
138
|
+
"condition": DATASERVICE_ACCESS_AUDIENCE_YES,
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"role": DATASERVICE_ACCESS_AUDIENCE_COMPANY,
|
|
142
|
+
"condition": DATASERVICE_ACCESS_AUDIENCE_UNDER_CONDITIONS,
|
|
143
|
+
},
|
|
144
|
+
],
|
|
130
145
|
},
|
|
131
146
|
)
|
|
132
147
|
self.assert200(response)
|
|
@@ -140,6 +155,21 @@ class DataserviceAPITest(APITestCase):
|
|
|
140
155
|
self.assertEqual(
|
|
141
156
|
response.json["self_api_url"], "http://local.test/api/1/dataservices/updated-title/"
|
|
142
157
|
)
|
|
158
|
+
self.assertEqual(response.json["access_type"], DATASERVICE_ACCESS_TYPE_RESTRICTED)
|
|
159
|
+
self.assertEqual(len(response.json["access_audiences"]), 2)
|
|
160
|
+
self.assertEqual(
|
|
161
|
+
response.json["access_audiences"][0]["role"], DATASERVICE_ACCESS_AUDIENCE_ADMINISTRATION
|
|
162
|
+
)
|
|
163
|
+
self.assertEqual(
|
|
164
|
+
response.json["access_audiences"][0]["condition"], DATASERVICE_ACCESS_AUDIENCE_YES
|
|
165
|
+
)
|
|
166
|
+
self.assertEqual(
|
|
167
|
+
response.json["access_audiences"][1]["role"], DATASERVICE_ACCESS_AUDIENCE_COMPANY
|
|
168
|
+
)
|
|
169
|
+
self.assertEqual(
|
|
170
|
+
response.json["access_audiences"][1]["condition"],
|
|
171
|
+
DATASERVICE_ACCESS_AUDIENCE_UNDER_CONDITIONS,
|
|
172
|
+
)
|
|
143
173
|
# metadata_modified_at should have been updated during the patch
|
|
144
174
|
self.assertNotEqual(
|
|
145
175
|
response.json["metadata_modified_at"].split("+")[0],
|
|
@@ -550,6 +580,54 @@ class DataserviceAPITest(APITestCase):
|
|
|
550
580
|
self.assertEqual(dataservice.owner, None)
|
|
551
581
|
self.assertEqual(dataservice.organization.id, me_org.id)
|
|
552
582
|
|
|
583
|
+
def test_dataservice_api_create_with_multiple_conditions_for_a_role(self):
|
|
584
|
+
"""It shouldn't create a dataservice with multiple conditions for the same role"""
|
|
585
|
+
self.login()
|
|
586
|
+
|
|
587
|
+
response = self.post(
|
|
588
|
+
url_for("api.dataservices"),
|
|
589
|
+
{
|
|
590
|
+
"title": "My title",
|
|
591
|
+
"base_api_url": "https://example.org",
|
|
592
|
+
"access_type": DATASERVICE_ACCESS_TYPE_RESTRICTED,
|
|
593
|
+
"access_audiences": [
|
|
594
|
+
{
|
|
595
|
+
"role": DATASERVICE_ACCESS_AUDIENCE_ADMINISTRATION,
|
|
596
|
+
"condition": DATASERVICE_ACCESS_AUDIENCE_YES,
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"role": DATASERVICE_ACCESS_AUDIENCE_ADMINISTRATION,
|
|
600
|
+
"condition": DATASERVICE_ACCESS_AUDIENCE_UNDER_CONDITIONS,
|
|
601
|
+
},
|
|
602
|
+
],
|
|
603
|
+
},
|
|
604
|
+
)
|
|
605
|
+
self.assert400(response)
|
|
606
|
+
self.assertEqual(Dataservice.objects.count(), 0)
|
|
607
|
+
|
|
608
|
+
def test_dataservice_api_multiple_conditions_for_a_role(self):
|
|
609
|
+
"""It shouldn't update the dataservice with multiple conditions for the same role"""
|
|
610
|
+
user = self.login()
|
|
611
|
+
original_member = Member(user=user, role="editor")
|
|
612
|
+
original_org = OrganizationFactory(members=[original_member])
|
|
613
|
+
dataservice = DataserviceFactory(owner=user, organization=original_org)
|
|
614
|
+
|
|
615
|
+
data = dataservice.to_dict()
|
|
616
|
+
data["access_type"] = DATASERVICE_ACCESS_TYPE_RESTRICTED
|
|
617
|
+
data["access_audiences"] = [
|
|
618
|
+
{
|
|
619
|
+
"role": DATASERVICE_ACCESS_AUDIENCE_ADMINISTRATION,
|
|
620
|
+
"condition": DATASERVICE_ACCESS_AUDIENCE_YES,
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
"role": DATASERVICE_ACCESS_AUDIENCE_ADMINISTRATION,
|
|
624
|
+
"condition": DATASERVICE_ACCESS_AUDIENCE_UNDER_CONDITIONS,
|
|
625
|
+
},
|
|
626
|
+
]
|
|
627
|
+
response = self.patch(url_for("api.dataservice", dataservice=dataservice), data)
|
|
628
|
+
self.assert400(response)
|
|
629
|
+
self.assertEqual(Dataservice.objects.count(), 1)
|
|
630
|
+
|
|
553
631
|
def test_dataservice_api_update_org(self):
|
|
554
632
|
"""It shouldn't update the dataservice org"""
|
|
555
633
|
user = self.login()
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from flask import url_for
|
|
2
2
|
|
|
3
3
|
from udata.api import api
|
|
4
|
+
from udata.core.dataset.factories import DatasetFactory
|
|
4
5
|
from udata.core.followers.api import FollowAPI
|
|
5
6
|
from udata.core.followers.signals import on_follow, on_unfollow
|
|
6
7
|
from udata.core.user.factories import UserFactory
|
|
@@ -139,3 +140,22 @@ class FollowAPITest(APITestCase):
|
|
|
139
140
|
|
|
140
141
|
response = self.delete(url_for("api.follow_fake", id=to_follow.id))
|
|
141
142
|
self.assert404(response)
|
|
143
|
+
|
|
144
|
+
def test_get_followed_datasets_for_user(self):
|
|
145
|
+
user_a = UserFactory()
|
|
146
|
+
user_b = UserFactory()
|
|
147
|
+
dataset_a = DatasetFactory()
|
|
148
|
+
dataset_b = DatasetFactory()
|
|
149
|
+
dataset_c = DatasetFactory()
|
|
150
|
+
|
|
151
|
+
Follow.objects.create(follower=user_a, following=dataset_a)
|
|
152
|
+
Follow.objects.create(follower=user_a, following=dataset_b)
|
|
153
|
+
Follow.objects.create(follower=user_b, following=dataset_a)
|
|
154
|
+
Follow.objects.create(follower=user_b, following=dataset_b)
|
|
155
|
+
Follow.objects.create(follower=user_b, following=dataset_c)
|
|
156
|
+
|
|
157
|
+
response = self.get(url_for("api.datasets", followed_by=user_a.id))
|
|
158
|
+
self.assertEqual(response.json["total"], 2)
|
|
159
|
+
|
|
160
|
+
response = self.get(url_for("api.datasets", followed_by=user_b.id))
|
|
161
|
+
self.assertEqual(response.json["total"], 3)
|
|
@@ -8,6 +8,7 @@ import udata.core.organization.constants as org_constants
|
|
|
8
8
|
from udata.core import csv
|
|
9
9
|
from udata.core.badges.factories import badge_factory
|
|
10
10
|
from udata.core.badges.signals import on_badge_added, on_badge_removed
|
|
11
|
+
from udata.core.dataservices.factories import DataserviceFactory
|
|
11
12
|
from udata.core.dataset.factories import DatasetFactory, ResourceFactory
|
|
12
13
|
from udata.core.discussions.factories import DiscussionFactory
|
|
13
14
|
from udata.core.organization.factories import OrganizationFactory
|
|
@@ -1042,6 +1043,30 @@ class OrganizationCsvExportsTest:
|
|
|
1042
1043
|
assert str(hidden_dataset.id) not in dataset_ids
|
|
1043
1044
|
assert str(not_org_dataset.id) not in dataset_ids
|
|
1044
1045
|
|
|
1046
|
+
def test_dataservices_csv(self, api):
|
|
1047
|
+
org = OrganizationFactory()
|
|
1048
|
+
[DataserviceFactory(organization=org) for _ in range(3)]
|
|
1049
|
+
|
|
1050
|
+
response = api.get(url_for("api.organization_dataservices_csv", org=org))
|
|
1051
|
+
|
|
1052
|
+
assert200(response)
|
|
1053
|
+
assert response.mimetype == "text/csv"
|
|
1054
|
+
assert response.charset == "utf-8"
|
|
1055
|
+
|
|
1056
|
+
csvfile = StringIO(response.data.decode("utf-8"))
|
|
1057
|
+
reader = csv.get_reader(csvfile)
|
|
1058
|
+
header = next(reader)
|
|
1059
|
+
|
|
1060
|
+
assert header[0] == "id"
|
|
1061
|
+
assert "title" in header
|
|
1062
|
+
assert "url" in header
|
|
1063
|
+
assert "description" in header
|
|
1064
|
+
assert "created_at" in header
|
|
1065
|
+
assert "metadata_modified_at" in header
|
|
1066
|
+
assert "tags" in header
|
|
1067
|
+
assert "metric.views" in header
|
|
1068
|
+
assert "datasets" in header
|
|
1069
|
+
|
|
1045
1070
|
def test_discussions_csv_content_empty(self, api):
|
|
1046
1071
|
organization = OrganizationFactory()
|
|
1047
1072
|
response = api.get(url_for("api.organization_discussions_csv", org=organization))
|
udata/tests/test_api_fields.py
CHANGED
|
@@ -45,6 +45,19 @@ class FakeBadgeMixin(BadgeMixin):
|
|
|
45
45
|
__badges__ = BADGES
|
|
46
46
|
|
|
47
47
|
|
|
48
|
+
@generate_fields()
|
|
49
|
+
class FakeEmbedded(db.EmbeddedDocument):
|
|
50
|
+
title = field(
|
|
51
|
+
db.StringField(required=True),
|
|
52
|
+
sortable=True,
|
|
53
|
+
show_as_ref=True,
|
|
54
|
+
)
|
|
55
|
+
description = field(
|
|
56
|
+
db.StringField(required=True),
|
|
57
|
+
markdown=True,
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
|
|
48
61
|
@generate_fields(
|
|
49
62
|
searchable=True,
|
|
50
63
|
additional_sorts=[
|
|
@@ -113,6 +126,8 @@ class Fake(WithMetrics, FakeBadgeMixin, Owned, db.Document):
|
|
|
113
126
|
db.DateTimeField(),
|
|
114
127
|
)
|
|
115
128
|
|
|
129
|
+
embedded = field(db.EmbeddedDocumentField(FakeEmbedded))
|
|
130
|
+
|
|
116
131
|
def __str__(self) -> str:
|
|
117
132
|
return self.title or ""
|
|
118
133
|
|
|
@@ -228,6 +243,26 @@ class PatchTest:
|
|
|
228
243
|
patch_and_save(fake, fake_request)
|
|
229
244
|
|
|
230
245
|
|
|
246
|
+
class PatchEmbeddedTest:
|
|
247
|
+
class FakeRequest:
|
|
248
|
+
json = {
|
|
249
|
+
"url": URL_RAISE_ERROR,
|
|
250
|
+
"description": "desc",
|
|
251
|
+
"embedded": {"title": "embedded title", "description": "d2"},
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
def test_patch_check(self) -> None:
|
|
255
|
+
fake: Fake = FakeFactory.create()
|
|
256
|
+
with pytest.raises(ValueError, match=URL_EXISTS_ERROR_MESSAGE):
|
|
257
|
+
patch(fake, self.FakeRequest())
|
|
258
|
+
|
|
259
|
+
def test_patch_and_save(self) -> None:
|
|
260
|
+
fake: Fake = FakeFactory.create()
|
|
261
|
+
fake_request = self.FakeRequest()
|
|
262
|
+
fake_request.json["url"] = "ok url"
|
|
263
|
+
patch_and_save(fake, fake_request)
|
|
264
|
+
|
|
265
|
+
|
|
231
266
|
class ApplySortAndFiltersTest:
|
|
232
267
|
def test_filterable_field(self, app) -> None:
|
|
233
268
|
"""A filterable field filters the results."""
|
|
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: 2025-
|
|
6
|
-
"PO-Revision-Date: 2025-
|
|
5
|
+
"POT-Creation-Date: 2025-06-23 10:12+0200\n"
|
|
6
|
+
"PO-Revision-Date: 2025-06-23 09:34\n"
|
|
7
7
|
"Last-Translator: Open Data Team <i18n@opendata.team>\n"
|
|
8
8
|
"Language: ar\n"
|
|
9
9
|
"Language-Team: Arabic\n"
|
|
@@ -51,7 +51,7 @@ msgstr ""
|
|
|
51
51
|
msgid "Invalid URL \"{url}\": {reason}"
|
|
52
52
|
msgstr ""
|
|
53
53
|
|
|
54
|
-
#: udata/tests/api/test_datasets_api.py:
|
|
54
|
+
#: udata/tests/api/test_datasets_api.py:1113 udata/tests/test_model.py:403
|
|
55
55
|
#: udata/uris.py:55
|
|
56
56
|
#, python-brace-format
|
|
57
57
|
msgid "Invalid URL \"{url}\""
|
|
@@ -208,7 +208,7 @@ msgid "Your udata instance is ready!"
|
|
|
208
208
|
msgstr ""
|
|
209
209
|
|
|
210
210
|
#: udata/core/owned.py:64 udata/forms/fields.py:752
|
|
211
|
-
#: udata/tests/api/test_dataservices_api.py:
|
|
211
|
+
#: udata/tests/api/test_dataservices_api.py:540
|
|
212
212
|
msgid "You can only set yourself as owner"
|
|
213
213
|
msgstr "يمكنك تعيين نفسك فقط كمالك"
|
|
214
214
|
|
|
@@ -217,7 +217,7 @@ msgid "Unknown organization"
|
|
|
217
217
|
msgstr ""
|
|
218
218
|
|
|
219
219
|
#: udata/core/owned.py:77 udata/forms/fields.py:784
|
|
220
|
-
#: udata/tests/api/test_dataservices_api.py:
|
|
220
|
+
#: udata/tests/api/test_dataservices_api.py:553
|
|
221
221
|
msgid "Permission denied for this organization"
|
|
222
222
|
msgstr "تم رفض الإذن لهذه المؤسسة"
|
|
223
223
|
|
|
@@ -275,16 +275,36 @@ msgstr ""
|
|
|
275
275
|
msgid "At least an email or a contact form is required for a contact point"
|
|
276
276
|
msgstr ""
|
|
277
277
|
|
|
278
|
-
#: udata/core/dataservices/
|
|
278
|
+
#: udata/core/dataservices/activities.py:21
|
|
279
|
+
msgid "created a dataservice"
|
|
280
|
+
msgstr ""
|
|
281
|
+
|
|
282
|
+
#: udata/core/dataservices/activities.py:27
|
|
283
|
+
msgid "updated a dataservice"
|
|
284
|
+
msgstr ""
|
|
285
|
+
|
|
286
|
+
#: udata/core/dataservices/activities.py:34
|
|
287
|
+
msgid "deleted a dataservice"
|
|
288
|
+
msgstr ""
|
|
289
|
+
|
|
290
|
+
#: udata/core/dataservices/api.py:62
|
|
291
|
+
msgid "Latest APIs"
|
|
292
|
+
msgstr ""
|
|
293
|
+
|
|
294
|
+
#: udata/core/dataservices/models.py:128
|
|
295
|
+
msgid "You can only set one condition for a given access audience role"
|
|
296
|
+
msgstr ""
|
|
297
|
+
|
|
298
|
+
#: udata/core/dataservices/models.py:158
|
|
279
299
|
msgid "dataservice"
|
|
280
300
|
msgstr ""
|
|
281
301
|
|
|
282
|
-
#: udata/core/dataservices/models.py:
|
|
302
|
+
#: udata/core/dataservices/models.py:240 udata/core/dataset/models.py:585
|
|
283
303
|
#: udata/mongo/datetime_fields.py:60
|
|
284
304
|
msgid "Creation date"
|
|
285
305
|
msgstr "تاريخ الإنشاء"
|
|
286
306
|
|
|
287
|
-
#: udata/core/dataservices/models.py:
|
|
307
|
+
#: udata/core/dataservices/models.py:246 udata/core/dataset/models.py:590
|
|
288
308
|
#: udata/mongo/datetime_fields.py:66
|
|
289
309
|
msgid "Last modification date"
|
|
290
310
|
msgstr "تاريخ التعديل الأخير"
|
|
@@ -301,6 +321,22 @@ msgstr "قام بتحديث مجموعة بيانات"
|
|
|
301
321
|
msgid "deleted a dataset"
|
|
302
322
|
msgstr "قام بحذف مجموعة بيانات"
|
|
303
323
|
|
|
324
|
+
#: udata/core/dataset/activities.py:41
|
|
325
|
+
msgid "added a resource to a dataset"
|
|
326
|
+
msgstr ""
|
|
327
|
+
|
|
328
|
+
#: udata/core/dataset/activities.py:47
|
|
329
|
+
msgid "updated a resource"
|
|
330
|
+
msgstr ""
|
|
331
|
+
|
|
332
|
+
#: udata/core/dataset/activities.py:53
|
|
333
|
+
msgid "removed a resource from a dataset"
|
|
334
|
+
msgstr ""
|
|
335
|
+
|
|
336
|
+
#: udata/core/dataset/api.py:321
|
|
337
|
+
msgid "Latest datasets"
|
|
338
|
+
msgstr ""
|
|
339
|
+
|
|
304
340
|
#: udata/core/dataset/constants.py:10
|
|
305
341
|
msgid "Unknown"
|
|
306
342
|
msgstr "غير معروف"
|
|
@@ -507,7 +543,7 @@ msgstr "حجم الملف بالبايت"
|
|
|
507
543
|
msgid "Related dataset"
|
|
508
544
|
msgstr "مجموعة البيانات متعلقة"
|
|
509
545
|
|
|
510
|
-
#: udata/core/dataset/forms.py:138 udata/tests/api/test_datasets_api.py:
|
|
546
|
+
#: udata/core/dataset/forms.py:138 udata/tests/api/test_datasets_api.py:1025
|
|
511
547
|
msgid "Wrong contact point id or contact point ownership mismatch"
|
|
512
548
|
msgstr ""
|
|
513
549
|
|
|
@@ -573,36 +609,36 @@ msgstr "خاص"
|
|
|
573
609
|
msgid "Restrict the dataset visibility to you or your organization only."
|
|
574
610
|
msgstr "قم بتقييد رؤية البيانات لك أو لمؤسستك فقط."
|
|
575
611
|
|
|
576
|
-
#: udata/core/dataset/models.py:
|
|
612
|
+
#: udata/core/dataset/models.py:63
|
|
577
613
|
msgid "Pivotal data"
|
|
578
614
|
msgstr "بيانات محورية"
|
|
579
615
|
|
|
580
|
-
#: udata/core/dataset/models.py:
|
|
616
|
+
#: udata/core/dataset/models.py:139
|
|
581
617
|
msgid "A schema must contains a name or an URL when a version is provided."
|
|
582
618
|
msgstr ""
|
|
583
619
|
|
|
584
|
-
#: udata/core/dataset/models.py:
|
|
585
|
-
#: udata/tests/api/test_datasets_api.py:
|
|
620
|
+
#: udata/core/dataset/models.py:171 udata/tests/api/test_datasets_api.py:1121
|
|
621
|
+
#: udata/tests/api/test_datasets_api.py:1132
|
|
586
622
|
#, python-brace-format
|
|
587
623
|
msgid "Schema name \"{schema}\" is not an allowed value. Allowed values: {values}"
|
|
588
624
|
msgstr ""
|
|
589
625
|
|
|
590
|
-
#: udata/core/dataset/models.py:
|
|
626
|
+
#: udata/core/dataset/models.py:190 udata/tests/api/test_datasets_api.py:1144
|
|
591
627
|
#, python-brace-format
|
|
592
628
|
msgid "Version \"{version}\" is not an allowed value for the schema \"{name}\". Allowed versions: {values}"
|
|
593
629
|
msgstr ""
|
|
594
630
|
|
|
595
|
-
#: udata/core/dataset/models.py:
|
|
631
|
+
#: udata/core/dataset/models.py:469 udata/core/dataset/rdf.py:603
|
|
596
632
|
#: udata/tests/dataset/test_dataset_rdf.py:687
|
|
597
633
|
#: udata/tests/dataset/test_dataset_rdf.py:700
|
|
598
634
|
msgid "Nameless resource"
|
|
599
635
|
msgstr "مورد مجهول"
|
|
600
636
|
|
|
601
|
-
#: udata/core/dataset/models.py:
|
|
637
|
+
#: udata/core/dataset/models.py:564
|
|
602
638
|
msgid "Future date of update"
|
|
603
639
|
msgstr "تاريخ التحديث في المستقبل"
|
|
604
640
|
|
|
605
|
-
#: udata/core/dataset/models.py:
|
|
641
|
+
#: udata/core/dataset/models.py:640
|
|
606
642
|
msgid "dataset"
|
|
607
643
|
msgstr "مجموعة البيانات"
|
|
608
644
|
|
|
@@ -611,7 +647,7 @@ msgstr "مجموعة البيانات"
|
|
|
611
647
|
msgid "{format} resource"
|
|
612
648
|
msgstr ""
|
|
613
649
|
|
|
614
|
-
#: udata/core/dataset/tasks.py:
|
|
650
|
+
#: udata/core/dataset/tasks.py:112
|
|
615
651
|
msgid "You need to update some frequency-based datasets"
|
|
616
652
|
msgstr "يجب تحديث بعض مجموعات البيانات المستندة إلى الترددات"
|
|
617
653
|
|
|
@@ -689,17 +725,17 @@ msgid "Refused"
|
|
|
689
725
|
msgstr "مرفوض"
|
|
690
726
|
|
|
691
727
|
#: udata/core/organization/forms.py:25
|
|
692
|
-
#: udata/tests/api/test_organizations_api.py:
|
|
728
|
+
#: udata/tests/api/test_organizations_api.py:137
|
|
693
729
|
msgid "A siret number is made of 14 digits"
|
|
694
730
|
msgstr ""
|
|
695
731
|
|
|
696
732
|
#: udata/core/organization/forms.py:36
|
|
697
|
-
#: udata/tests/api/test_organizations_api.py:
|
|
733
|
+
#: udata/tests/api/test_organizations_api.py:149
|
|
698
734
|
msgid "A siret number is only made of digits"
|
|
699
735
|
msgstr ""
|
|
700
736
|
|
|
701
737
|
#: udata/core/organization/forms.py:39
|
|
702
|
-
#: udata/tests/api/test_organizations_api.py:
|
|
738
|
+
#: udata/tests/api/test_organizations_api.py:143
|
|
703
739
|
msgid "Invalid Siret number"
|
|
704
740
|
msgstr ""
|
|
705
741
|
|
|
@@ -731,23 +767,23 @@ msgstr ""
|
|
|
731
767
|
msgid "Business identification number"
|
|
732
768
|
msgstr ""
|
|
733
769
|
|
|
734
|
-
#: udata/core/organization/models.py:
|
|
770
|
+
#: udata/core/organization/models.py:37
|
|
735
771
|
msgid "Public Service"
|
|
736
772
|
msgstr "خدمات عامة"
|
|
737
773
|
|
|
738
|
-
#: udata/core/organization/models.py:
|
|
774
|
+
#: udata/core/organization/models.py:38
|
|
739
775
|
msgid "Certified"
|
|
740
776
|
msgstr "معتمد"
|
|
741
777
|
|
|
742
|
-
#: udata/core/organization/models.py:
|
|
778
|
+
#: udata/core/organization/models.py:39
|
|
743
779
|
msgid "Association"
|
|
744
780
|
msgstr ""
|
|
745
781
|
|
|
746
|
-
#: udata/core/organization/models.py:
|
|
782
|
+
#: udata/core/organization/models.py:40
|
|
747
783
|
msgid "Company"
|
|
748
784
|
msgstr ""
|
|
749
785
|
|
|
750
|
-
#: udata/core/organization/models.py:
|
|
786
|
+
#: udata/core/organization/models.py:41
|
|
751
787
|
msgid "Local authority"
|
|
752
788
|
msgstr ""
|
|
753
789
|
|
|
@@ -789,6 +825,10 @@ msgstr ""
|
|
|
789
825
|
msgid "Your organization \"%(name)s\" has been identified as a local authority"
|
|
790
826
|
msgstr ""
|
|
791
827
|
|
|
828
|
+
#: udata/core/post/api.py:119
|
|
829
|
+
msgid "Latests posts"
|
|
830
|
+
msgstr ""
|
|
831
|
+
|
|
792
832
|
#: udata/core/post/constants.py:9
|
|
793
833
|
msgid "Markdown"
|
|
794
834
|
msgstr ""
|
|
@@ -873,6 +913,10 @@ msgstr "قام بتحديث استخدام"
|
|
|
873
913
|
msgid "deleted a reuse"
|
|
874
914
|
msgstr "قام بحذف استخدام"
|
|
875
915
|
|
|
916
|
+
#: udata/core/reuse/api.py:141
|
|
917
|
+
msgid "Latests reuses"
|
|
918
|
+
msgstr ""
|
|
919
|
+
|
|
876
920
|
#: udata/core/reuse/constants.py:5
|
|
877
921
|
msgid "Application"
|
|
878
922
|
msgstr "تطبيق"
|
|
@@ -957,11 +1001,11 @@ msgstr ""
|
|
|
957
1001
|
msgid "Open data tools"
|
|
958
1002
|
msgstr ""
|
|
959
1003
|
|
|
960
|
-
#: udata/core/reuse/models.py:
|
|
1004
|
+
#: udata/core/reuse/models.py:38
|
|
961
1005
|
msgid "This URL is already registered"
|
|
962
1006
|
msgstr "هذا العنوان الإلكتروني مسجل من قبل"
|
|
963
1007
|
|
|
964
|
-
#: udata/core/reuse/models.py:
|
|
1008
|
+
#: udata/core/reuse/models.py:183
|
|
965
1009
|
msgid "reuse"
|
|
966
1010
|
msgstr "استخدام"
|
|
967
1011
|
|
|
@@ -1070,34 +1114,50 @@ msgstr ""
|
|
|
1070
1114
|
msgid "French arrondissement"
|
|
1071
1115
|
msgstr ""
|
|
1072
1116
|
|
|
1117
|
+
#: udata/core/topic/activities.py:17
|
|
1118
|
+
msgid "created a topic"
|
|
1119
|
+
msgstr ""
|
|
1120
|
+
|
|
1121
|
+
#: udata/core/topic/activities.py:23
|
|
1122
|
+
msgid "updated a topic"
|
|
1123
|
+
msgstr ""
|
|
1124
|
+
|
|
1073
1125
|
#: udata/core/topic/forms.py:28
|
|
1074
1126
|
msgid "Featured"
|
|
1075
1127
|
msgstr "مميز"
|
|
1076
1128
|
|
|
1077
|
-
#: udata/core/user/activities.py:
|
|
1078
|
-
msgid "followed an organization"
|
|
1079
|
-
msgstr "تابع منظمة"
|
|
1080
|
-
|
|
1081
|
-
#: udata/core/user/activities.py:38
|
|
1129
|
+
#: udata/core/user/activities.py:35
|
|
1082
1130
|
msgid "followed a user"
|
|
1083
1131
|
msgstr "تابع مستعمل"
|
|
1084
1132
|
|
|
1085
|
-
#: udata/core/user/activities.py:
|
|
1133
|
+
#: udata/core/user/activities.py:42
|
|
1134
|
+
msgid "discussed a dataservice"
|
|
1135
|
+
msgstr ""
|
|
1136
|
+
|
|
1137
|
+
#: udata/core/user/activities.py:47
|
|
1086
1138
|
msgid "discussed a dataset"
|
|
1087
1139
|
msgstr "ناقش مجموعة بيانات"
|
|
1088
1140
|
|
|
1089
|
-
#: udata/core/user/activities.py:
|
|
1141
|
+
#: udata/core/user/activities.py:52
|
|
1090
1142
|
msgid "discussed a reuse"
|
|
1091
1143
|
msgstr "ناقش إعادة إستخدام"
|
|
1092
1144
|
|
|
1093
|
-
#: udata/core/user/activities.py:
|
|
1145
|
+
#: udata/core/user/activities.py:57
|
|
1146
|
+
msgid "followed a dataservice"
|
|
1147
|
+
msgstr ""
|
|
1148
|
+
|
|
1149
|
+
#: udata/core/user/activities.py:62
|
|
1094
1150
|
msgid "followed a dataset"
|
|
1095
1151
|
msgstr "تابع مجموعة بيانات"
|
|
1096
1152
|
|
|
1097
|
-
#: udata/core/user/activities.py:
|
|
1153
|
+
#: udata/core/user/activities.py:67
|
|
1098
1154
|
msgid "followed a reuse"
|
|
1099
1155
|
msgstr "تابع إعادة إستخدام"
|
|
1100
1156
|
|
|
1157
|
+
#: udata/core/user/activities.py:72
|
|
1158
|
+
msgid "followed an organization"
|
|
1159
|
+
msgstr "تابع منظمة"
|
|
1160
|
+
|
|
1101
1161
|
#: udata/core/user/forms.py:22
|
|
1102
1162
|
msgid "Avatar"
|
|
1103
1163
|
msgstr "الصورة الرمزية"
|
|
@@ -1110,7 +1170,7 @@ msgstr "حول"
|
|
|
1110
1170
|
msgid "Roles"
|
|
1111
1171
|
msgstr "الأدوار"
|
|
1112
1172
|
|
|
1113
|
-
#: udata/core/user/models.py:
|
|
1173
|
+
#: udata/core/user/models.py:304 udata/tests/api/test_me_api.py:297
|
|
1114
1174
|
msgid "Account deletion"
|
|
1115
1175
|
msgstr "حذف الحساب"
|
|
1116
1176
|
|
|
Binary file
|