Comments (3)
Sharing many objects with one or more users and groups seems like a great utility. I think it can be even used immediately for e.g. #198. What about the following interface?
share_objects(ids, object_type, users = NULL, groups = NULL)
We should also have error handling in case some users or groups cannot be shared on the items.
I think get_report_ids
should be a generic fetcher of items from projects analogous to fetch_output
and fetch_output_file_ids
for working with scripts.
We could even write a read_civis
generic for projects that uses these utilities to download items in the project automatically.
read_civis(civis_project(id), ...)
from civis-r.
I like the share_objects
interface! So the idea here is a user provides one or more objects of a given type per call of share_objects
?
Working on that error handling will be fun, since I've never actually had to build in good manual error handling before. Do you have strong preferences about how it should work? Just try
and then catch the exception and surface as a warning to the user that the object doesn't exist or they don't have sufficient permissions (which, if memory serves, is close to or exactly what the API does currently, albeit as an error)?
And oh I really like the idea of fetch_project_objects
(or whatever name you feel like calling it) as a generic function, because we have sufficient information from the projects_get
to pick the appropriate sharing functions for a given object, right? Woah, that's fun.
from civis-r.
I like the share_objects interface! So the idea here is a user provides one or more objects of a given type per call of share_objects?
Yes!
Do you have strong preferences about how it should work?
Something like tryCatch(f(...), error = function(e) warning(e) e)
where f
is the sharing function. This turns an error into a warning, and then returns the error object. And yes, we want to return the API error object back to the user.
I'm thinking that the output should be a list list(users = ...., groups = ...)
. The item of each of these lists should be either the error or the output of the sharing api call.
because we have sufficient information from the projects_get to pick the appropriate sharing functions for a given object, right?
Yes, from the documentation it seems that projects_get
returns what we need to know to pick the right sharing function! So fetch_project_objects
should return a named vector of ids, with names being the object type from projects_get
. Then we'll just have a mapping of these object names to the API functions that we can lookup.
from civis-r.
Related Issues (20)
- ENH helper function to list models
- ENH helper function to share models
- ENH automatically deploy docs on release
- ENH provide option to override default polling interval HOT 1
- ENH: Automatically retry on all verbs when rate limit is exeeded
- ENH: Point civis_ml script templates to aliases HOT 1
- Add `patch` option to `get_script_fun` HOT 4
- Generalize `write_job_output` to an arbitrary object instead of "File" HOT 2
- Generalized `patch` function (plus a motivating example) HOT 3
- ENH: retry more than 3 times
- Is there any use in writing a file locally first before calling `write_civis_file`? HOT 3
- BUG: error handling on 429
- Switch to CSVImports for Redshift upload
- DOC: Documentation on CASS/NCOA endpoint not complete HOT 1
- BUG: `fetch_all` throws error on `aliases_list` API function HOT 3
- Argument 'local' of Future() to become defunct [breaks your package] HOT 4
- future: Rename 'state' from `"succeeded" to "finished" HOT 10
- Is this repo and the 'civis' package maintained? HOT 2
- New SQL reports will need API functions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from civis-r.