def prepare(): response.headers["Content-Type"] = "application/json" package_id = request.params.get('package_id') # get package by name or id context = {'model': model, 'user': c.user} ckanPackage = logic.get_action('package_show')(context, {'id': package_id}) if ckanPackage == None: raise Exception('Invalid package ID') force = request.params.get('force') clean = request.params.get('clean') if force == None: force = False # remove old unused packages workspace.clean(current_package_id=package_id) if clean == "true": workspace.cleanPackage(ckanPackage.get("id")) result = workspace.prepare(ckanPackage.get("id"), force) if clean == "true": result['cleaned'] = True return jsonStringify(result)
def process(): response.headers["Content-Type"] = "application/json" package_id = request.params.get('package_id') hasAccess(package_id) if hasAppliedDoi(package_id): return {'error':True, 'message':'Cannot edit resource of package with applied DOI'} sheet_id = request.params.get('sheet_id') resource_id = request.params.get('resource_id') ids = request.params.get('resource_ids') if sheet_id == "": sheet_id = None try: options = json.loads(request.params.get('options')) except: options = {} # option, if a resource id and a datasheet id are passed, then the full 'merged' view will be return # only allow specified options safeOptions = {} for option in parseOptions: if option in options: safeOptions[option] = options[option] # see if we are editing multiple files or just one result = [] if ids is not None: ids = json.loads(ids) for resource_id in ids: workspace.prepareFile(package_id, resource_id, sheet_id, safeOptions) result.append(query.getResource(resource_id)) else: workspace.prepareFile(package_id, resource_id, sheet_id, safeOptions) result = query.getResource(resource_id, sheet_id) # update the dataset, so the metadata timestamp changes context = {'model': model, 'user': c.user} pkg = logic.get_action('package_show')(context, {'id': package_id}) # use this counter to poke the dataset. This will update the last modified timestamps # required for 'updated since last pushed UI' resourceUpdateCount = utils.getPackageExtra('resourceUpdateCount', pkg) if resourceUpdateCount is None: resourceUpdateCount = 1 else: resourceUpdateCount = int(resourceUpdateCount) + 1 utils.setPackageExtra('resourceUpdateCount', resourceUpdateCount, pkg) pkg = logic.get_action('package_update')(context, pkg) result = { 'metadata_modified' : pkg.get('metadata_modified'), 'result' : result } return jsonStringify(result)
def suggestAttributeName(): response.headers["Content-Type"] = "application/json" name = request.params.get('name') if name is None: name = "" return jsonStringify(top.suggest(name))
def suggestGCMD(): response.headers["Content-Type"] = "application/json" query = request.params.get('query') if query is None: query = "" return jsonStringify(gcmd.suggest(query))
def get(): response.headers["Content-Type"] = "application/json" package_id = request.params.get('package_id') resource_id = request.params.get('resource_id') sheet_id = request.params.get('sheet_id') return jsonStringify(query.get(package_id, resource_id, sheet_id, _getIndex(), showProcessInfo=True))
def get(): response.headers["Content-Type"] = "application/json" package_id = request.params.get('package_id') # get package by name or id context = {'model': model, 'user': c.user} ckanPackage = logic.get_action('package_show')(context, {'id': package_id}) return jsonStringify(workspaceQuery.get(ckanPackage.get("id")))
def getSpectraCount(): response.headers["Content-Type"] = "application/json" package_id = request.params.get('package_id') resource_id = request.params.get('resource_id') sheet_id = request.params.get('sheet_id') if sheet_id == "": sheet_id = None return jsonStringify(query.total(package_id, resource_id, sheet_id))
def getMetadataChunk(): response.headers["Content-Type"] = "application/json" package_id = request.params.get('package_id') resource_id = request.params.get('resource_id') sheet_id = request.params.get('sheet_id') if sheet_id == "": sheet_id = None return jsonStringify(query.getMetadataChunk(package_id, resource_id, sheet_id, _getIndex()))
def deleteMany(): response.headers["Content-Type"] = "application/json" params = utils.get_request_data(request) ids = params.get('ids') resp = [] for id in ids: resp.append(_delete({'id': id})) return jsonStringify(resp)
def get(): response.headers["Content-Type"] = "application/json" pid = request.params.get('package_id') rid = request.params.get('resource_id') sid = request.params.get('sheet_id') if sid == "": sid = None hasAccess(pid) return jsonStringify(query.getResource(rid, sid))
def suggestOverview(): response.headers["Content-Type"] = "application/json" params = {} try: keys = request.POST.keys() if 'names' in keys: params['names'] = request.POST['names'] except Exception as e: params = {'names': request.params.get('names')} if params.get('names') is None: raise Exception('Name list not provided') return jsonStringify(top.overview(json.loads(params.get('names'))))
def verifyWorkspace(collections): if not isAdmin(): raise Exception('Nope.') packages = collections.get('package').find({},{"packageId":1,"prepared":1,"lastTouched":1}) packageInfo = {} ids = [] repeatPackages = [] pCount = 0 for package in packages: packageInfo[package.get("packageId")] = { "prepared" : package.get("prepared"), "lastTouched" : package.get("lastTouched"), "workspaceSpectra" : collections.get('spectra').count({"packageId": package.get("packageId")}) } if package.get("packageId") in ids: repeatPackages.append(package.get("packageId")) else: pCount += 1 ids.append(package.get("packageId")) resources = collections.get('resource').find({},{"resourceId":1,"sheetId": 1}) ids = [] repeatResources = [] rCount = 0 for resource in resources: id = "%s %s" % (resource.get("resourceId"), resource.get("sheetId")) if id in ids: repeatResources.append(id) else: rCount += 1 ids.append(id) return jsonStringify({ "packageCount" : pCount, "resourceCount" : rCount, "spectraCount" : collections.get('spectra').count({"type": "data"}), "metadataCount" : collections.get('spectra').count({"type": "metadata"}), "repeats" : { "resources" : repeatResources, "packages" : repeatPackages }, "packageInfo" : packageInfo })
def pushToSearch(): response.headers["Content-Type"] = "application/json" package_id = request.params.get('package_id') email = request.params.get('email') if email is None: email = "false" context = {'model': model, 'user': c.user} ckanPackage = logic.get_action('package_show')(context, {"id": package_id}) if email == True or email.lower() == "true": email = True else: email = False push = Push() return jsonStringify(push.run(ckanPackage, email, c.userobj.email, c.userobj.display_name))
def fixUnits(): if not isAdmin(): raise Exception('Nope.') return jsonStringify(runFixUnits())
def upgrade(): if not isAdmin(): raise Exception('Nope.') return jsonStringify(runUpgrade())