udata 10.4.2.dev35451__py2.py3-none-any.whl → 10.4.2.dev35475__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/core/activity/__init__.py +1 -0
- udata/core/dataservices/api.py +43 -0
- udata/core/dataset/api.py +44 -0
- udata/core/post/api.py +34 -0
- udata/core/reuse/api.py +42 -1
- udata/core/topic/activities.py +36 -0
- udata/core/topic/models.py +23 -15
- udata/static/chunks/{11.51d706fb9521c16976bc.js → 11.0f04e49a40a0a381bcce.js} +3 -3
- udata/static/chunks/{11.51d706fb9521c16976bc.js.map → 11.0f04e49a40a0a381bcce.js.map} +1 -1
- udata/static/chunks/{19.a348a5fff8fe2801e52a.js → 19.8da42e8359d72afc2618.js} +3 -3
- udata/static/chunks/{19.a348a5fff8fe2801e52a.js.map → 19.8da42e8359d72afc2618.js.map} +1 -1
- udata/static/chunks/{5.0652a860afda96795a53.js → 5.0fa1408dae4e76b87b2e.js} +3 -3
- udata/static/chunks/{5.0652a860afda96795a53.js.map → 5.0fa1408dae4e76b87b2e.js.map} +1 -1
- udata/static/chunks/{6.92d7c2ec6d20005774ef.js → 6.d663709d877baa44a71e.js} +3 -3
- udata/static/chunks/{6.92d7c2ec6d20005774ef.js.map → 6.d663709d877baa44a71e.js.map} +1 -1
- udata/static/chunks/{8.462bb3029de008497675.js → 8.494b003a94383b142c18.js} +2 -2
- udata/static/chunks/{8.462bb3029de008497675.js.map → 8.494b003a94383b142c18.js.map} +1 -1
- udata/static/common.js +1 -1
- udata/static/common.js.map +1 -1
- udata/tests/api/test_dataservices_api.py +53 -0
- udata/tests/api/test_datasets_api.py +53 -0
- udata/tests/api/test_reuses_api.py +54 -0
- udata/tests/dataset/test_dataset_model.py +49 -0
- udata/tests/test_topics.py +19 -0
- {udata-10.4.2.dev35451.dist-info → udata-10.4.2.dev35475.dist-info}/METADATA +5 -3
- {udata-10.4.2.dev35451.dist-info → udata-10.4.2.dev35475.dist-info}/RECORD +30 -29
- {udata-10.4.2.dev35451.dist-info → udata-10.4.2.dev35475.dist-info}/LICENSE +0 -0
- {udata-10.4.2.dev35451.dist-info → udata-10.4.2.dev35475.dist-info}/WHEEL +0 -0
- {udata-10.4.2.dev35451.dist-info → udata-10.4.2.dev35475.dist-info}/entry_points.txt +0 -0
- {udata-10.4.2.dev35451.dist-info → udata-10.4.2.dev35475.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:"
|
|
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:"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"}[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 bdd8b5f688fea53ee34a"],"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\":\"0652a860afda96795a53\",\"6\":\"92d7c2ec6d20005774ef\",\"7\":\"896bbffe39433bb598f7\",\"8\":\"462bb3029de008497675\",\"9\":\"033d7e190ca9e226a5d0\",\"10\":\"8ca60413647062717b1e\",\"11\":\"51d706fb9521c16976bc\",\"12\":\"1be61e0201691821bff6\",\"13\":\"d9c1735d14038b94c17e\",\"14\":\"bc3f6bc0a67517e7b30f\",\"15\":\"2f5d8e3d4aa4c46188d7\",\"16\":\"aaa39ef2d7e82594efc8\",\"17\":\"81c57c0dedf812e43013\",\"18\":\"56444ebd2456a4ba2201\",\"19\":\"a348a5fff8fe2801e52a\",\"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\":\"0652a860afda96795a53\",\"6\":\"92d7c2ec6d20005774ef\",\"7\":\"896bbffe39433bb598f7\",\"8\":\"462bb3029de008497675\",\"9\":\"033d7e190ca9e226a5d0\",\"10\":\"8ca60413647062717b1e\",\"11\":\"51d706fb9521c16976bc\",\"12\":\"1be61e0201691821bff6\",\"13\":\"d9c1735d14038b94c17e\",\"14\":\"bc3f6bc0a67517e7b30f\",\"15\":\"2f5d8e3d4aa4c46188d7\",\"16\":\"aaa39ef2d7e82594efc8\",\"17\":\"81c57c0dedf812e43013\",\"18\":\"56444ebd2456a4ba2201\",\"19\":\"a348a5fff8fe2801e52a\",\"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 bdd8b5f688fea53ee34a\n **/"],"sourceRoot":""}
|
|
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,6 +1,7 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
2
|
from xml.etree.ElementTree import XML
|
|
3
3
|
|
|
4
|
+
import feedparser
|
|
4
5
|
import pytest
|
|
5
6
|
from flask import url_for
|
|
6
7
|
from werkzeug.test import TestResponse
|
|
@@ -627,3 +628,55 @@ class DataserviceRdfViewsTest:
|
|
|
627
628
|
response = client.get(url, headers={"Accept": mime})
|
|
628
629
|
assert200(response)
|
|
629
630
|
assert response.content_type == mime
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
class DataservicesFeedAPItest(APITestCase):
|
|
634
|
+
def test_recent_feed(self):
|
|
635
|
+
dataservices = [DataserviceFactory() for i in range(3)]
|
|
636
|
+
|
|
637
|
+
response = self.get(url_for("api.recent_dataservices_atom_feed"))
|
|
638
|
+
|
|
639
|
+
self.assert200(response)
|
|
640
|
+
|
|
641
|
+
feed = feedparser.parse(response.data)
|
|
642
|
+
|
|
643
|
+
self.assertEqual(len(feed.entries), len(dataservices))
|
|
644
|
+
for i in range(1, len(feed.entries)):
|
|
645
|
+
published_date = feed.entries[i].published_parsed
|
|
646
|
+
prev_published_date = feed.entries[i - 1].published_parsed
|
|
647
|
+
self.assertGreaterEqual(prev_published_date, published_date)
|
|
648
|
+
|
|
649
|
+
def test_recent_feed_owner(self):
|
|
650
|
+
owner = UserFactory()
|
|
651
|
+
DataserviceFactory(owner=owner)
|
|
652
|
+
|
|
653
|
+
response = self.get(url_for("api.recent_dataservices_atom_feed"))
|
|
654
|
+
|
|
655
|
+
self.assert200(response)
|
|
656
|
+
|
|
657
|
+
feed = feedparser.parse(response.data)
|
|
658
|
+
|
|
659
|
+
self.assertEqual(len(feed.entries), 1)
|
|
660
|
+
entry = feed.entries[0]
|
|
661
|
+
self.assertEqual(len(entry.authors), 1)
|
|
662
|
+
author = entry.authors[0]
|
|
663
|
+
self.assertEqual(author.name, owner.fullname)
|
|
664
|
+
self.assertEqual(author.href, owner.external_url)
|
|
665
|
+
|
|
666
|
+
def test_recent_feed_org(self):
|
|
667
|
+
owner = UserFactory()
|
|
668
|
+
org = OrganizationFactory()
|
|
669
|
+
DataserviceFactory(owner=owner, organization=org)
|
|
670
|
+
|
|
671
|
+
response = self.get(url_for("api.recent_dataservices_atom_feed"))
|
|
672
|
+
|
|
673
|
+
self.assert200(response)
|
|
674
|
+
|
|
675
|
+
feed = feedparser.parse(response.data)
|
|
676
|
+
|
|
677
|
+
self.assertEqual(len(feed.entries), 1)
|
|
678
|
+
entry = feed.entries[0]
|
|
679
|
+
self.assertEqual(len(entry.authors), 1)
|
|
680
|
+
author = entry.authors[0]
|
|
681
|
+
self.assertEqual(author.name, org.name)
|
|
682
|
+
self.assertEqual(author.href, org.external_url)
|
|
@@ -3,6 +3,7 @@ from datetime import datetime
|
|
|
3
3
|
from io import BytesIO
|
|
4
4
|
from uuid import uuid4
|
|
5
5
|
|
|
6
|
+
import feedparser
|
|
6
7
|
import pytest
|
|
7
8
|
import pytz
|
|
8
9
|
import requests_mock
|
|
@@ -1250,6 +1251,58 @@ class DatasetAPITest(APITestCase):
|
|
|
1250
1251
|
}
|
|
1251
1252
|
|
|
1252
1253
|
|
|
1254
|
+
class DatasetsFeedAPItest(APITestCase):
|
|
1255
|
+
def test_recent_feed(self):
|
|
1256
|
+
datasets = [DatasetFactory(resources=[ResourceFactory()]) for i in range(3)]
|
|
1257
|
+
|
|
1258
|
+
response = self.get(url_for("api.recent_datasets_atom_feed"))
|
|
1259
|
+
|
|
1260
|
+
self.assert200(response)
|
|
1261
|
+
|
|
1262
|
+
feed = feedparser.parse(response.data)
|
|
1263
|
+
|
|
1264
|
+
self.assertEqual(len(feed.entries), len(datasets))
|
|
1265
|
+
for i in range(1, len(feed.entries)):
|
|
1266
|
+
published_date = feed.entries[i].published_parsed
|
|
1267
|
+
prev_published_date = feed.entries[i - 1].published_parsed
|
|
1268
|
+
self.assertGreaterEqual(prev_published_date, published_date)
|
|
1269
|
+
|
|
1270
|
+
def test_recent_feed_owner(self):
|
|
1271
|
+
owner = UserFactory()
|
|
1272
|
+
DatasetFactory(owner=owner, resources=[ResourceFactory()])
|
|
1273
|
+
|
|
1274
|
+
response = self.get(url_for("api.recent_datasets_atom_feed"))
|
|
1275
|
+
|
|
1276
|
+
self.assert200(response)
|
|
1277
|
+
|
|
1278
|
+
feed = feedparser.parse(response.data)
|
|
1279
|
+
|
|
1280
|
+
self.assertEqual(len(feed.entries), 1)
|
|
1281
|
+
entry = feed.entries[0]
|
|
1282
|
+
self.assertEqual(len(entry.authors), 1)
|
|
1283
|
+
author = entry.authors[0]
|
|
1284
|
+
self.assertEqual(author.name, owner.fullname)
|
|
1285
|
+
self.assertEqual(author.href, owner.external_url)
|
|
1286
|
+
|
|
1287
|
+
def test_recent_feed_org(self):
|
|
1288
|
+
owner = UserFactory()
|
|
1289
|
+
org = OrganizationFactory()
|
|
1290
|
+
DatasetFactory(owner=owner, organization=org, resources=[ResourceFactory()])
|
|
1291
|
+
|
|
1292
|
+
response = self.get(url_for("api.recent_datasets_atom_feed"))
|
|
1293
|
+
|
|
1294
|
+
self.assert200(response)
|
|
1295
|
+
|
|
1296
|
+
feed = feedparser.parse(response.data)
|
|
1297
|
+
|
|
1298
|
+
self.assertEqual(len(feed.entries), 1)
|
|
1299
|
+
entry = feed.entries[0]
|
|
1300
|
+
self.assertEqual(len(entry.authors), 1)
|
|
1301
|
+
author = entry.authors[0]
|
|
1302
|
+
self.assertEqual(author.name, org.name)
|
|
1303
|
+
self.assertEqual(author.href, org.external_url)
|
|
1304
|
+
|
|
1305
|
+
|
|
1253
1306
|
class DatasetBadgeAPITest(APITestCase):
|
|
1254
1307
|
@classmethod
|
|
1255
1308
|
def setUpClass(cls):
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
2
|
|
|
3
|
+
import feedparser
|
|
3
4
|
import pytest
|
|
4
5
|
from flask import url_for
|
|
5
6
|
from werkzeug.test import TestResponse
|
|
@@ -12,6 +13,7 @@ from udata.core.reuse.constants import REUSE_TOPICS, REUSE_TYPES
|
|
|
12
13
|
from udata.core.reuse.factories import ReuseFactory
|
|
13
14
|
from udata.core.user.factories import AdminFactory, UserFactory
|
|
14
15
|
from udata.models import Follow, Member, Reuse
|
|
16
|
+
from udata.tests.api import APITestCase
|
|
15
17
|
from udata.tests.helpers import (
|
|
16
18
|
assert200,
|
|
17
19
|
assert201,
|
|
@@ -569,6 +571,58 @@ class ReuseAPITest:
|
|
|
569
571
|
assert len(response.json) == 0
|
|
570
572
|
|
|
571
573
|
|
|
574
|
+
class ReusesFeedAPItest(APITestCase):
|
|
575
|
+
def test_recent_feed(self):
|
|
576
|
+
datasets = [ReuseFactory(datasets=[DatasetFactory()]) for i in range(3)]
|
|
577
|
+
|
|
578
|
+
response = self.get(url_for("api.recent_reuses_atom_feed"))
|
|
579
|
+
|
|
580
|
+
self.assert200(response)
|
|
581
|
+
|
|
582
|
+
feed = feedparser.parse(response.data)
|
|
583
|
+
|
|
584
|
+
self.assertEqual(len(feed.entries), len(datasets))
|
|
585
|
+
for i in range(1, len(feed.entries)):
|
|
586
|
+
published_date = feed.entries[i].published_parsed
|
|
587
|
+
prev_published_date = feed.entries[i - 1].published_parsed
|
|
588
|
+
self.assertGreaterEqual(prev_published_date, published_date)
|
|
589
|
+
|
|
590
|
+
def test_recent_feed_owner(self):
|
|
591
|
+
owner = UserFactory()
|
|
592
|
+
ReuseFactory(owner=owner, datasets=[DatasetFactory()])
|
|
593
|
+
|
|
594
|
+
response = self.get(url_for("api.recent_reuses_atom_feed"))
|
|
595
|
+
|
|
596
|
+
self.assert200(response)
|
|
597
|
+
|
|
598
|
+
feed = feedparser.parse(response.data)
|
|
599
|
+
|
|
600
|
+
self.assertEqual(len(feed.entries), 1)
|
|
601
|
+
entry = feed.entries[0]
|
|
602
|
+
self.assertEqual(len(entry.authors), 1)
|
|
603
|
+
author = entry.authors[0]
|
|
604
|
+
self.assertEqual(author.name, owner.fullname)
|
|
605
|
+
self.assertEqual(author.href, owner.external_url)
|
|
606
|
+
|
|
607
|
+
def test_recent_feed_org(self):
|
|
608
|
+
owner = UserFactory()
|
|
609
|
+
org = OrganizationFactory()
|
|
610
|
+
ReuseFactory(owner=owner, organization=org, datasets=[DatasetFactory()])
|
|
611
|
+
|
|
612
|
+
response = self.get(url_for("api.recent_reuses_atom_feed"))
|
|
613
|
+
|
|
614
|
+
self.assert200(response)
|
|
615
|
+
|
|
616
|
+
feed = feedparser.parse(response.data)
|
|
617
|
+
|
|
618
|
+
self.assertEqual(len(feed.entries), 1)
|
|
619
|
+
entry = feed.entries[0]
|
|
620
|
+
self.assertEqual(len(entry.authors), 1)
|
|
621
|
+
author = entry.authors[0]
|
|
622
|
+
self.assertEqual(author.name, org.name)
|
|
623
|
+
self.assertEqual(author.href, org.external_url)
|
|
624
|
+
|
|
625
|
+
|
|
572
626
|
class ReuseBadgeAPITest:
|
|
573
627
|
modules = []
|
|
574
628
|
|
|
@@ -9,6 +9,14 @@ from mongoengine import ValidationError as MongoEngineValidationError
|
|
|
9
9
|
from mongoengine import post_save
|
|
10
10
|
|
|
11
11
|
from udata.app import cache
|
|
12
|
+
from udata.core.dataset.activities import (
|
|
13
|
+
UserAddedResourceToDataset,
|
|
14
|
+
UserCreatedDataset,
|
|
15
|
+
UserDeletedDataset,
|
|
16
|
+
UserRemovedResourceFromDataset,
|
|
17
|
+
UserUpdatedDataset,
|
|
18
|
+
UserUpdatedResource,
|
|
19
|
+
)
|
|
12
20
|
from udata.core.dataset.constants import LEGACY_FREQUENCIES, UPDATE_FREQUENCIES
|
|
13
21
|
from udata.core.dataset.exceptions import (
|
|
14
22
|
SchemasCacheUnavailableException,
|
|
@@ -350,6 +358,47 @@ class DatasetModelTest:
|
|
|
350
358
|
|
|
351
359
|
assert dataset_without_resources.resources_len == 0
|
|
352
360
|
|
|
361
|
+
def test_dataset_activities(self, api, mocker):
|
|
362
|
+
# A user must be authenticated for activities to be emitted
|
|
363
|
+
user = api.login()
|
|
364
|
+
|
|
365
|
+
mock_created = mocker.patch.object(UserCreatedDataset, "emit")
|
|
366
|
+
mock_updated = mocker.patch.object(UserUpdatedDataset, "emit")
|
|
367
|
+
mock_deleted = mocker.patch.object(UserDeletedDataset, "emit")
|
|
368
|
+
mock_resource_added = mocker.patch.object(UserAddedResourceToDataset, "emit")
|
|
369
|
+
mock_resouce_updated = mocker.patch.object(UserUpdatedResource, "emit")
|
|
370
|
+
mock_resouce_removed = mocker.patch.object(UserRemovedResourceFromDataset, "emit")
|
|
371
|
+
|
|
372
|
+
with assert_emit(Dataset.on_create):
|
|
373
|
+
dataset = DatasetFactory(owner=user)
|
|
374
|
+
mock_created.assert_called()
|
|
375
|
+
|
|
376
|
+
with assert_emit(Dataset.on_update):
|
|
377
|
+
dataset.title = "new title"
|
|
378
|
+
dataset.save()
|
|
379
|
+
mock_updated.assert_called()
|
|
380
|
+
|
|
381
|
+
with assert_emit(Dataset.on_resource_added):
|
|
382
|
+
dataset.add_resource(ResourceFactory())
|
|
383
|
+
mock_resource_added.assert_called()
|
|
384
|
+
|
|
385
|
+
dataset.reload()
|
|
386
|
+
|
|
387
|
+
with assert_emit(Dataset.on_resource_updated):
|
|
388
|
+
resource = dataset.resources[0]
|
|
389
|
+
resource.description = "New description"
|
|
390
|
+
dataset.update_resource(resource)
|
|
391
|
+
mock_resouce_updated.assert_called()
|
|
392
|
+
|
|
393
|
+
with assert_emit(Dataset.on_resource_removed):
|
|
394
|
+
dataset.remove_resource(dataset.resources[-1])
|
|
395
|
+
mock_resouce_removed.assert_called()
|
|
396
|
+
|
|
397
|
+
with assert_emit(Dataset.on_delete):
|
|
398
|
+
dataset.deleted = datetime.utcnow()
|
|
399
|
+
dataset.save()
|
|
400
|
+
mock_deleted.assert_called()
|
|
401
|
+
|
|
353
402
|
|
|
354
403
|
class ResourceModelTest:
|
|
355
404
|
def test_url_is_required(self):
|
udata/tests/test_topics.py
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import pytest
|
|
2
2
|
|
|
3
3
|
from udata.core.dataset.factories import DatasetFactory
|
|
4
|
+
from udata.core.topic.activities import UserCreatedTopic, UserUpdatedTopic
|
|
4
5
|
from udata.core.topic.factories import TopicFactory
|
|
6
|
+
from udata.core.topic.models import Topic
|
|
5
7
|
from udata.search import reindex
|
|
8
|
+
from udata.tests.helpers import assert_emit
|
|
6
9
|
|
|
7
10
|
|
|
8
11
|
@pytest.fixture
|
|
@@ -45,3 +48,19 @@ class TopicModelTest:
|
|
|
45
48
|
# creates a topic with datasets, thus calls reindex
|
|
46
49
|
TopicFactory()
|
|
47
50
|
job_reindex_undelayed.assert_called()
|
|
51
|
+
|
|
52
|
+
def test_topic_activities(self, api, mocker):
|
|
53
|
+
# A user must be authenticated for activities to be emitted
|
|
54
|
+
user = api.login()
|
|
55
|
+
|
|
56
|
+
mock_created = mocker.patch.object(UserCreatedTopic, "emit")
|
|
57
|
+
mock_updated = mocker.patch.object(UserUpdatedTopic, "emit")
|
|
58
|
+
|
|
59
|
+
with assert_emit(Topic.on_create):
|
|
60
|
+
topic = TopicFactory(owner=user)
|
|
61
|
+
mock_created.assert_called()
|
|
62
|
+
|
|
63
|
+
with assert_emit(Topic.on_update):
|
|
64
|
+
topic.name = "new name"
|
|
65
|
+
topic.save()
|
|
66
|
+
mock_updated.assert_called()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: udata
|
|
3
|
-
Version: 10.4.2.
|
|
3
|
+
Version: 10.4.2.dev35475
|
|
4
4
|
Summary: Open data portal
|
|
5
5
|
Home-page: https://github.com/opendatateam/udata
|
|
6
6
|
Author: Opendata Team
|
|
@@ -48,6 +48,7 @@ Requires-Dist: dnspython==2.7.0
|
|
|
48
48
|
Requires-Dist: email-validator==2.2.0
|
|
49
49
|
Requires-Dist: factory-boy==3.3.3
|
|
50
50
|
Requires-Dist: faker==37.0.2
|
|
51
|
+
Requires-Dist: feedgenerator==2.1.0
|
|
51
52
|
Requires-Dist: filelock==3.18.0
|
|
52
53
|
Requires-Dist: flask==2.1.2
|
|
53
54
|
Requires-Dist: flask-babel==4.0.0
|
|
@@ -141,14 +142,15 @@ It is collectively taken care of by members of the
|
|
|
141
142
|
|
|
142
143
|
## Current (in progress)
|
|
143
144
|
|
|
144
|
-
- Add test for removing last contact point [#3322](https://github.com/opendatateam/udata/pull/3322)
|
|
145
|
-
- Add activities to dataservices and resources, add Auditable class to refactor improve code [#3308](https://github.com/opendatateam/udata/pull/3308)
|
|
145
|
+
- Add test for removing last contact point [#3322](https://github.com/opendatateam/udata/pull/3322)
|
|
146
|
+
- Add activities to dataservices, topics and resources, add Auditable class to refactor improve code [#3308](https://github.com/opendatateam/udata/pull/3308) [#3333](https://github.com/opendatateam/udata/pull/3333)
|
|
146
147
|
- Store activities for private objects [#3328](https://github.com/opendatateam/udata/pull/3328)
|
|
147
148
|
- :warning: Add migration to clean duplicate activities [#3327](https://github.com/opendatateam/udata/pull/3327)
|
|
148
149
|
- Do not crash if file doesn't exists during resource deletion [#3323](https://github.com/opendatateam/udata/pull/3323)
|
|
149
150
|
- Show user domain in suggest [#3324](https://github.com/opendatateam/udata/pull/3324)
|
|
150
151
|
- Add new global site metrics [#3325](https://github.com/opendatateam/udata/pull/3325)
|
|
151
152
|
- Keep the existing frequency if not found during harvesting [#3330](https://github.com/opendatateam/udata/pull/3330)
|
|
153
|
+
- Migrate atom feeds from udata-front to udata [#3326](https://github.com/opendatateam/udata/pull/3326)
|
|
152
154
|
|
|
153
155
|
## 10.4.1 (2025-05-20)
|
|
154
156
|
|
|
@@ -56,7 +56,7 @@ udata/commands/tests/test_fixtures.py,sha256=acFmE08S4B0GHJP4nN1dfRNcKjcsE88Xusy
|
|
|
56
56
|
udata/core/__init__.py,sha256=O7C9WWCXiLWnWPnPbFRszWhOmvRQiI4gD-5qkWvPGRo,385
|
|
57
57
|
udata/core/csv.py,sha256=qeRtSQXPT5n5EoWZ3_XfnOTW7ITnEzzHctODPeX63Uk,8543
|
|
58
58
|
udata/core/owned.py,sha256=OQT7wdk7dAqGvWDiJRVkKJxerDc9_Io910nvLmfBAVI,5561
|
|
59
|
-
udata/core/activity/__init__.py,sha256=
|
|
59
|
+
udata/core/activity/__init__.py,sha256=dLTseBmVYbQzxB7OR7Dz0LtIwEjNQvgUSR7SwfInb68,399
|
|
60
60
|
udata/core/activity/api.py,sha256=-2Vz5BiZ6302JDK0q1FXtuZvmTy6fyBU0DIWu1GRQ64,4283
|
|
61
61
|
udata/core/activity/models.py,sha256=ipViQMB1UMgxd9nolueanEgOB31s9pihTqkDdfo11u4,3214
|
|
62
62
|
udata/core/activity/signals.py,sha256=Io2A43as3yR-DZ5R3wzM_bTpn528pxWsZDUFZ9xtj2Y,191
|
|
@@ -82,7 +82,7 @@ udata/core/contact_point/forms.py,sha256=oBe1agSJFyx2QRgYzPRg2A7qVscaBTaKG4V-AyI
|
|
|
82
82
|
udata/core/contact_point/models.py,sha256=Xqmqg7S13gcaKxiQT52WHeQEHTaUDDGIXInXyqNh4Po,854
|
|
83
83
|
udata/core/dataservices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
84
84
|
udata/core/dataservices/activities.py,sha256=CJK9DAohrG70YZAedHk3UdyIlF9cLaYeV6TR-aHosOs,1619
|
|
85
|
-
udata/core/dataservices/api.py,sha256=
|
|
85
|
+
udata/core/dataservices/api.py,sha256=4aD-eDZGonFbs-SzKv69eoepXmemWI8FDIHkuH7_Mmc,9128
|
|
86
86
|
udata/core/dataservices/apiv2.py,sha256=XIqJq58uLtxtt52iKYo7Fl0ZXv9Sz72uA7JIGwP8Qos,995
|
|
87
87
|
udata/core/dataservices/constants.py,sha256=LBCTQ44YvjTZfQVbxFiovPxapAknSJNOZKjMP8WeFy4,351
|
|
88
88
|
udata/core/dataservices/csv.py,sha256=pcNIeGaCzBMMna3n3YqHjsoXzfLtg_ITtDmdKb9svDc,1053
|
|
@@ -95,7 +95,7 @@ udata/core/dataservices/tasks.py,sha256=d2tG1l6u8-eUKUYBOgnCsQLbLmLgJXU-DOzZWhhL
|
|
|
95
95
|
udata/core/dataset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
96
96
|
udata/core/dataset/actions.py,sha256=mX6xox0PiMrbcAPZ3VZsI26rfM-ciYfEXxN6sqqImKA,1222
|
|
97
97
|
udata/core/dataset/activities.py,sha256=RtY06G6FiEMr8NY26kaYKCXwGdcGtBJv2U8kWgFTRxE,3048
|
|
98
|
-
udata/core/dataset/api.py,sha256=
|
|
98
|
+
udata/core/dataset/api.py,sha256=gYkqtN01Eshg1UbEabrn6edkA4AJ5EarpAUfw40irGM,34936
|
|
99
99
|
udata/core/dataset/api_fields.py,sha256=SLuzWoPdMLPX28WQ9DRGUPKS27vlltiFeiTo6jXa55Q,17549
|
|
100
100
|
udata/core/dataset/apiv2.py,sha256=YOCNqQh7_OODcrzqJqdAPc0CoB9vG0DVcFiJNl9yBwQ,20749
|
|
101
101
|
udata/core/dataset/commands.py,sha256=__hPAk_6iHtgMnEG51ux0vbNWJHxUjXhi1ukH4hF5jY,3714
|
|
@@ -162,7 +162,7 @@ udata/core/organization/search.py,sha256=5XMZn7xehkTV4X9NvGys_1WyHDGlUVpCQ_uJ3oy
|
|
|
162
162
|
udata/core/organization/signals.py,sha256=Ft1MBU9S41uxFN-rUrKHhiwedR1OYGv-ncuroKg8orY,488
|
|
163
163
|
udata/core/organization/tasks.py,sha256=2Pd9ixeKNd7BGxBHrHYbR9AelhqkflX3ocnGgtoa8Uc,5641
|
|
164
164
|
udata/core/post/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
165
|
-
udata/core/post/api.py,sha256=
|
|
165
|
+
udata/core/post/api.py,sha256=2JPRSGgbkS1By9T3WXtZHNLZLJMJXtSC1pn4n0tXvJY,7265
|
|
166
166
|
udata/core/post/constants.py,sha256=W-xjOTv0lorD-RCV0YGtK0cT_RwgYmfrC8Ff6ywH7bM,215
|
|
167
167
|
udata/core/post/factories.py,sha256=lcFe3zIadG7bc1jsydkOT7GfQX53V0x09Flpclyl6gI,619
|
|
168
168
|
udata/core/post/forms.py,sha256=gY4HhteFkZr3u4EoQ5QNEHMOTtNNiEKHyehVXKYcm3Y,963
|
|
@@ -176,7 +176,7 @@ udata/core/reports/constants.py,sha256=LRZSX3unyqZeB4yQjK3ws_hGbJcXYk4bu1Rhnhi5D
|
|
|
176
176
|
udata/core/reports/models.py,sha256=AsW5p2ZIdR4c6vNzglEN7MX03It-t9u7ktOsVZqvzSs,2702
|
|
177
177
|
udata/core/reuse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
178
|
udata/core/reuse/activities.py,sha256=5D7cV-hGZnzHsp8hohZqqgK3RSGQpfAqJ_Wfq_AYfM8,1420
|
|
179
|
-
udata/core/reuse/api.py,sha256=
|
|
179
|
+
udata/core/reuse/api.py,sha256=bL4TcY7nnDcidoABQI0TUqzUZrODSH8R_3uiIQeUcsM,12453
|
|
180
180
|
udata/core/reuse/api_fields.py,sha256=c61Gl56UjiBpXS0Nbvcoi_QHdUmhnBtqWm6nNHRYKyc,1232
|
|
181
181
|
udata/core/reuse/apiv2.py,sha256=nZe-v8713aXKuv2B578NdxfrIckjbxhS3zUXAKSIKTI,835
|
|
182
182
|
udata/core/reuse/constants.py,sha256=JgDBrjOKSt9q0auv9rjzbGsch83H-Oi8YXAKeI5hO4o,1215
|
|
@@ -230,11 +230,12 @@ udata/core/tags/models.py,sha256=xzBoNwqBG5A5Ou83DWT858ccbTCkNnim_xBWgy1oyz4,550
|
|
|
230
230
|
udata/core/tags/tasks.py,sha256=-wA9iCWlwe0IBy9N5oL-ryny0QKKIqaupEgRzM3TuqE,975
|
|
231
231
|
udata/core/tags/views.py,sha256=gFbUmLDkv1uDvxPRCPTZBq0TBknEckbNTPKr8WrZMAM,380
|
|
232
232
|
udata/core/topic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
233
|
+
udata/core/topic/activities.py,sha256=Pcqhs-OxmSV2NlN18GyV12z9AW8tfS8glgwwmchcbpQ,1022
|
|
233
234
|
udata/core/topic/api.py,sha256=xVBp3EFOAEWQlt2CQvII9gq21qeIK048pSkh1uTmdBo,5472
|
|
234
235
|
udata/core/topic/apiv2.py,sha256=9-CdR-xcVp7yS7664PgRCsAthxg1VgpKgoAaVlEhF6k,10461
|
|
235
236
|
udata/core/topic/factories.py,sha256=RpUpwLd2gYwwS0vc7FcbQ-4tC0FSsAg7O8bPgozYKgE,684
|
|
236
237
|
udata/core/topic/forms.py,sha256=NGC_k6PRw8uswEHaXW1Q3ih_2sx2-dNUY--LD-me80Y,973
|
|
237
|
-
udata/core/topic/models.py,sha256=
|
|
238
|
+
udata/core/topic/models.py,sha256=gjeY1omktmq5lyfCTp0krKgcNpGbEtP1vVsWvsPy520,2406
|
|
238
239
|
udata/core/topic/parsers.py,sha256=ugkBd-w8TewInqowNF2w36UPwKYMYluK4U-grkAu-wg,2411
|
|
239
240
|
udata/core/topic/permissions.py,sha256=RtFPPlxuU_Bv7ip6LDO4AoPrKFnIOEs9cCMXaSSmEdk,118
|
|
240
241
|
udata/core/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -443,8 +444,8 @@ udata/static/admin.css,sha256=gPM7oSehylBXQXyv0-gQ1LuyJiI1STQ_swM4CHjq_cs,185748
|
|
|
443
444
|
udata/static/admin.css.map,sha256=dzFd_AL3pQPFiww5oRwqnubDGJ9HNtYuAaiggLTjjB0,627543
|
|
444
445
|
udata/static/admin.js,sha256=iQnNCFKqwiSIMyJIeDBAD_gEwv8fABrzK5CoK3PZZME,1330409
|
|
445
446
|
udata/static/admin.js.map,sha256=09cK62bu_h0M4ajLf-Y2-sQCUFYPWKRw1PCQWQvfQyM,8518351
|
|
446
|
-
udata/static/common.js,sha256=
|
|
447
|
-
udata/static/common.js.map,sha256=
|
|
447
|
+
udata/static/common.js,sha256=OISR5CAMbxkzQ_3JL12mEEnzjkHTZAIDq46AgKAwFrc,2252
|
|
448
|
+
udata/static/common.js.map,sha256=0unPu95O7PJVblG_PyD5UkVDn-XLB1hfrGSTrWGT7gI,14137
|
|
448
449
|
udata/static/fontawesome-webfont.eot,sha256=e_yrbbmdXPvxcFygU23ceFhUMsxfpBu9etDwCQM7KXk,165742
|
|
449
450
|
udata/static/fontawesome-webfont.svg,sha256=rWFXkmwWIrpOHQPUePFUE2hSS_xG9R5C_g2UX37zI-Q,444379
|
|
450
451
|
udata/static/fontawesome-webfont.ttf,sha256=qljzPyOaD7AvXHpsRcBD16msmgkzNYBmlOzW1O3A1qg,165548
|
|
@@ -463,8 +464,8 @@ udata/static/chunks/1.0a96f54313c89e541ccb.js,sha256=A-lYXUeTLFOd_al9J_EpYMsbJZR
|
|
|
463
464
|
udata/static/chunks/1.0a96f54313c89e541ccb.js.map,sha256=Z4uWu-Bwj4JnQ49hqzkbRrfbtRUm65X93JQyDV6aLTM,1741737
|
|
464
465
|
udata/static/chunks/10.8ca60413647062717b1e.js,sha256=_jYUDOKowPicIui04ekBIOQvXAcF-ypsX5oxiORA8pw,414740
|
|
465
466
|
udata/static/chunks/10.8ca60413647062717b1e.js.map,sha256=XjAwHasDgaIA5idTs79YNuDC9Zlit8Xg20vSRptk03U,2736059
|
|
466
|
-
udata/static/chunks/11.
|
|
467
|
-
udata/static/chunks/11.
|
|
467
|
+
udata/static/chunks/11.0f04e49a40a0a381bcce.js,sha256=d7tDr1DUSjNPak_PysG7bntsxZ9TjPPW_b_ODl8IR-Y,395562
|
|
468
|
+
udata/static/chunks/11.0f04e49a40a0a381bcce.js.map,sha256=MvlLcBk0Mjuxn0jSkzdeZCpaBpPjIMYy5i5VT_SIjPE,2268951
|
|
468
469
|
udata/static/chunks/12.1be61e0201691821bff6.js,sha256=oveRcMtBsi97LUeAX86LjSAEVIpNxfWGHVovetKfPTw,421097
|
|
469
470
|
udata/static/chunks/12.1be61e0201691821bff6.js.map,sha256=ikkgGwMdOXW4ZXyucmqrxLqJQHIcXJJoMMNt01QFrZM,2442221
|
|
470
471
|
udata/static/chunks/13.d9c1735d14038b94c17e.js,sha256=QVscBipWMC9Md3G5mvxJ0Ttp2a_kq9CUrScayDf-DKQ,420590
|
|
@@ -479,8 +480,8 @@ udata/static/chunks/17.81c57c0dedf812e43013.js,sha256=M1V_pkNZWVlgT1jGryWe5cOBp2
|
|
|
479
480
|
udata/static/chunks/17.81c57c0dedf812e43013.js.map,sha256=xx4zs3EBZKfoouMTgh6Xb7q1OlEqzDyeeGtv5pWknFg,1289996
|
|
480
481
|
udata/static/chunks/18.56444ebd2456a4ba2201.js,sha256=o78S_10_0k6kL0HbpDlbKZ5tZ-DCe6Y9XBex-SFS_s4,50384
|
|
481
482
|
udata/static/chunks/18.56444ebd2456a4ba2201.js.map,sha256=Xdv5UJ1TG-LZIlUjZm-yv59KA1omSq2dr8Ukfec46UE,277805
|
|
482
|
-
udata/static/chunks/19.
|
|
483
|
-
udata/static/chunks/19.
|
|
483
|
+
udata/static/chunks/19.8da42e8359d72afc2618.js,sha256=_fLL-fYLi7nXZZg5-4hEU-tbR0K9auq21h2SAg-Jta8,203418
|
|
484
|
+
udata/static/chunks/19.8da42e8359d72afc2618.js.map,sha256=xHCkZGxv7IYB4gCYmwruU8lUdeBx-2stSwJYhG0u8Co,1079969
|
|
484
485
|
udata/static/chunks/2.c67aa76cc078c193aed5.js,sha256=BjpQndwBdg9AT2lrY1TAgMfPbMvRytp33yI9YOgCOqc,276597
|
|
485
486
|
udata/static/chunks/2.c67aa76cc078c193aed5.js.map,sha256=FnPh12lCwilnq1jRp-d7226H5kpaA4-raWEk1Q0p42M,1556097
|
|
486
487
|
udata/static/chunks/20.3d4e02d1205a3c9e26c5.js,sha256=hRFQGBcks3lD-R4mNcNelqbr9kjz8jTtPee1lDWAVhY,36764
|
|
@@ -511,14 +512,14 @@ udata/static/chunks/33.011b367beb543774f950.js,sha256=pmgOHx33dbnHDnDISHjapoRmU-
|
|
|
511
512
|
udata/static/chunks/33.011b367beb543774f950.js.map,sha256=CzKVWHelXpz3DRimAGbVczh5X9Etru6qo1E_jhSZTBY,708099
|
|
512
513
|
udata/static/chunks/4.98dca3045c034c154d5f.js,sha256=HhytpLza7w6v9X_4g8xc96jdfryjT5_T1pzGMXf5owE,606930
|
|
513
514
|
udata/static/chunks/4.98dca3045c034c154d5f.js.map,sha256=QJ6SzTm_r0jThhBkZ4EtYQREZhIt_MX17XhTse06xYo,3714040
|
|
514
|
-
udata/static/chunks/5.
|
|
515
|
-
udata/static/chunks/5.
|
|
516
|
-
udata/static/chunks/6.
|
|
517
|
-
udata/static/chunks/6.
|
|
515
|
+
udata/static/chunks/5.0fa1408dae4e76b87b2e.js,sha256=acvkSfIKCSeHaZ0x2JouBDYUIw6HfdJ5zeFU3FkmgBI,579464
|
|
516
|
+
udata/static/chunks/5.0fa1408dae4e76b87b2e.js.map,sha256=wMvjf6IiGDqEFORTwnfm-bgZI_62CvYvLQbV6YRgSCU,3587779
|
|
517
|
+
udata/static/chunks/6.d663709d877baa44a71e.js,sha256=hVRqq0dmyZJ8w6MdO9wUftY_doZ2VVoNa_bwin9MnT4,609837
|
|
518
|
+
udata/static/chunks/6.d663709d877baa44a71e.js.map,sha256=WlChg1hCzjGyTO2mbICQpPhH5i7fjRC6ajr3g6unbtc,3783190
|
|
518
519
|
udata/static/chunks/7.896bbffe39433bb598f7.js,sha256=C1NrGe6wrptQFYCCmITtx12dGqfaO7136-9BD6m05Ts,157150
|
|
519
520
|
udata/static/chunks/7.896bbffe39433bb598f7.js.map,sha256=aZB8qYRkX4oqSugjG69tMlv64YIW5LPXF_8uACMHMTw,813014
|
|
520
|
-
udata/static/chunks/8.
|
|
521
|
-
udata/static/chunks/8.
|
|
521
|
+
udata/static/chunks/8.494b003a94383b142c18.js,sha256=e22kCx2kIrqp7Ok5RWIYMbdVjL1Y3_MMddm0wOerUgs,222856
|
|
522
|
+
udata/static/chunks/8.494b003a94383b142c18.js.map,sha256=XAsFe6qlreG7vQyxmTU7J4JjSxyJvsyp9MjQZXdW13k,1205076
|
|
522
523
|
udata/static/chunks/9.033d7e190ca9e226a5d0.js,sha256=NmyhScUINZKQbc3A-zIZr9vEGy59Ktb9xkI-d0oaEvo,416716
|
|
523
524
|
udata/static/chunks/9.033d7e190ca9e226a5d0.js.map,sha256=n08Lnx4NZFACwgehhaZfstLOnqDam_IUQhNLlUjMEVo,2746303
|
|
524
525
|
udata/storage/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -619,7 +620,7 @@ udata/tests/test_rdf.py,sha256=XlUjRFcvTeZx1DTwwHL4pHQTcFDcAuQzaGOY_jJMDL4,4863
|
|
|
619
620
|
udata/tests/test_routing.py,sha256=8AWHQ2yeT7jWycz9JDdSMpMe3HjLPpO_y1jGJ2DwzhE,10035
|
|
620
621
|
udata/tests/test_storages.py,sha256=OG_PnKtPlZmmhKnbbLrvL-EMEg35wAMsTC76jVEAOLU,9602
|
|
621
622
|
udata/tests/test_tags.py,sha256=y8x17-m_opa8YKjOWU60Xz6FR20FpBz61e7JJeyTwzM,3748
|
|
622
|
-
udata/tests/test_topics.py,sha256=
|
|
623
|
+
udata/tests/test_topics.py,sha256=XDRoSJbSc0s0dHNDC4-4WB4shhxxf_8nHhG6LkRbgmI,2045
|
|
623
624
|
udata/tests/test_transfer.py,sha256=_0pBwYs3T7OSZ7bO3KmQ81SjwCJyT4EVf8YYHXOkwdk,7779
|
|
624
625
|
udata/tests/test_uris.py,sha256=MxafZ0SyzSNRomVpZnH1ChzWaHOi1MQiXe1gmKnBc6o,8517
|
|
625
626
|
udata/tests/test_utils.py,sha256=3BGnlvw-GOE6tLHQteo-uUeYuzq4rsjePOuytFGkpOg,7967
|
|
@@ -628,14 +629,14 @@ udata/tests/api/test_activities_api.py,sha256=WSBScq_gMaBJJchvmyoc_LnslXemgfvdDM
|
|
|
628
629
|
udata/tests/api/test_auth_api.py,sha256=OMRlY0OQt60j5N4A-N3HdWTuffOjRlFHkz5a3jJFieI,25987
|
|
629
630
|
udata/tests/api/test_base_api.py,sha256=2w_vz0eEuq3P3aN-ByvxGc3VZAo7XtgatFfcrzf2uEU,2244
|
|
630
631
|
udata/tests/api/test_contact_points.py,sha256=X_RWD_xCfR8WchhHfKEt5mxMHY77OmTyguNKCsZftdE,5337
|
|
631
|
-
udata/tests/api/test_dataservices_api.py,sha256=
|
|
632
|
-
udata/tests/api/test_datasets_api.py,sha256=
|
|
632
|
+
udata/tests/api/test_dataservices_api.py,sha256=EzuB7HWHqvw3bPgUsLMRih97i8xeFK2Bpj5y1TBkpWA,27486
|
|
633
|
+
udata/tests/api/test_datasets_api.py,sha256=FiAF_8GT-W-I1n2ThQ-4NZyQ4hNSOEnYsMecdzh20KE,100995
|
|
633
634
|
udata/tests/api/test_fields.py,sha256=OW85Z5MES5HeWOpapeem8OvR1cIcrqW-xMWpdZO4LZ8,1033
|
|
634
635
|
udata/tests/api/test_follow_api.py,sha256=XP6I96JUNT6xjGcQOF7pug_T_i67HzCiOGLaPdpfpEQ,4912
|
|
635
636
|
udata/tests/api/test_me_api.py,sha256=YPd8zmR3zwJKtpSqz8nY1nOOMyXs66INeBwyhg5D0Us,13846
|
|
636
637
|
udata/tests/api/test_organizations_api.py,sha256=u27G6Dg3SFmTMCMQXSQWEbsvSonsDelFSojUvt2i05s,41235
|
|
637
638
|
udata/tests/api/test_reports_api.py,sha256=fCSz9NwMXBs6cxdXBVVI6y564AtovmZYw3xkgxQ9KE8,6217
|
|
638
|
-
udata/tests/api/test_reuses_api.py,sha256=
|
|
639
|
+
udata/tests/api/test_reuses_api.py,sha256=yopqenAZfnhfiUv_lcPLp8SZyIddE3ojs9G-30Cftys,27050
|
|
639
640
|
udata/tests/api/test_swagger.py,sha256=eE6La9qdTYTIUFevRVPJgtj17Jq_8uOlsDwzCNR0LL8,760
|
|
640
641
|
udata/tests/api/test_tags_api.py,sha256=36zEBgthVEn6pctJ0kDgPmEaUr-iqRAHeZRcRG2LEXQ,2425
|
|
641
642
|
udata/tests/api/test_topics_api.py,sha256=beIPbDA8PHo4FZogeio-j1MO6Eatt9oFSlp-aHpgEtQ,12200
|
|
@@ -660,7 +661,7 @@ udata/tests/dataset/test_csv_adapter.py,sha256=7U83RiuSKNVgX-mV45Txp9a828mnWE4eK
|
|
|
660
661
|
udata/tests/dataset/test_dataset_actions.py,sha256=bgDjVYjOvu3sX_FCTCzf2snZYSprsqor2nAhIVuokSs,722
|
|
661
662
|
udata/tests/dataset/test_dataset_commands.py,sha256=zMPJG2wYwKBee2zI65kmboxf59Zqa84DDjT8V5wj9uo,801
|
|
662
663
|
udata/tests/dataset/test_dataset_events.py,sha256=hlrpoOiBbnX_COUI9Pzdqlp45GZZDqu5piwupbnPiTI,3601
|
|
663
|
-
udata/tests/dataset/test_dataset_model.py,sha256=
|
|
664
|
+
udata/tests/dataset/test_dataset_model.py,sha256=av4RhOnT-52qs-WL1NCn6R2SMa_fzDcoV-06vjccsdw,33891
|
|
664
665
|
udata/tests/dataset/test_dataset_rdf.py,sha256=fWMfhJvxmRKPw7cdvksS-sJBJT4G9DepDIm5RTdvrJ4,41310
|
|
665
666
|
udata/tests/dataset/test_dataset_tasks.py,sha256=n1W2Pg0ez02d66zQG3N93kh7dpR2yLMRDqUI6PnPaI0,3088
|
|
666
667
|
udata/tests/dataset/test_resource_preview.py,sha256=fp9mSL7unhyM66GR0gwhgX3OGQ4TJt7G9xU-CjsL3HI,3908
|
|
@@ -729,9 +730,9 @@ udata/translations/pt/LC_MESSAGES/udata.mo,sha256=ViV14tUmjSydHS0TWG_mFikKQfyUaT
|
|
|
729
730
|
udata/translations/pt/LC_MESSAGES/udata.po,sha256=rzAD_MVoV54TmN3w1ECz3H2Ru5pM7hWMVH03SkY28Q8,47250
|
|
730
731
|
udata/translations/sr/LC_MESSAGES/udata.mo,sha256=EHX1_D-Uglj38832G7BrA0QC5IuY3p8dKqi9T0DgPmE,29169
|
|
731
732
|
udata/translations/sr/LC_MESSAGES/udata.po,sha256=3PMnbVhKVJh6Q8ABi1ZTZ8Dcf-sMjngLJZqLbonJoec,54225
|
|
732
|
-
udata-10.4.2.
|
|
733
|
-
udata-10.4.2.
|
|
734
|
-
udata-10.4.2.
|
|
735
|
-
udata-10.4.2.
|
|
736
|
-
udata-10.4.2.
|
|
737
|
-
udata-10.4.2.
|
|
733
|
+
udata-10.4.2.dev35475.dist-info/LICENSE,sha256=V8j_M8nAz8PvAOZQocyRDX7keai8UJ9skgmnwqETmdY,34520
|
|
734
|
+
udata-10.4.2.dev35475.dist-info/METADATA,sha256=AbvsmL3GULJV6wG_Q7NasUjHwxxrq_2JsS8mqZ0rHFA,147558
|
|
735
|
+
udata-10.4.2.dev35475.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
|
|
736
|
+
udata-10.4.2.dev35475.dist-info/entry_points.txt,sha256=ETvkR4r6G1duBsh_V_fGWENQy17GTFuobi95MYBAl1A,498
|
|
737
|
+
udata-10.4.2.dev35475.dist-info/top_level.txt,sha256=39OCg-VWFWOq4gCKnjKNu-s3OwFlZIu_dVH8Gl6ndHw,12
|
|
738
|
+
udata-10.4.2.dev35475.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|