issue_comments
27 rows where "created_at" is on date 2020-05-30 sorted by issue
This data as json, CSV (advanced)
Suggested facets: issue_url, updated_at (date)
id | html_url | issue_url | node_id | user | created_at | updated_at | author_association | body | reactions | issue ▼ | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
636360861 | https://github.com/simonw/datasette/issues/37#issuecomment-636360861 | https://api.github.com/repos/simonw/datasette/issues/37 | MDEyOklzc3VlQ29tbWVudDYzNjM2MDg2MQ== | simonw 9599 | 2020-05-30T17:29:20Z | 2020-05-30T17:29:20Z | OWNER | I'm not going to do this: 2.5 years later I have yet to run into anything that makes me think that JSON serialization performance is worth any extra work. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Ability to serialize massive JSON without blocking event loop 268453968 | |
636360574 | https://github.com/simonw/datasette/issues/498#issuecomment-636360574 | https://api.github.com/repos/simonw/datasette/issues/498 | MDEyOklzc3VlQ29tbWVudDYzNjM2MDU3NA== | simonw 9599 | 2020-05-30T17:26:02Z | 2020-05-30T17:26:02Z | OWNER | I released a plugin that implements an early version of this a while ago: https://github.com/simonw/datasette-search-all I'm still thinking about how a plugin / separate tool could work that builds a single FTS index over the content from multiple tables such that you can run relevance-calculated queries against those multiple tables. Since that's going to be a plugin / separate tool too, I'm closing this issue. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Full text search of all tables at once? 451513541 | |
636329468 | https://github.com/simonw/datasette/issues/519#issuecomment-636329468 | https://api.github.com/repos/simonw/datasette/issues/519 | MDEyOklzc3VlQ29tbWVudDYzNjMyOTQ2OA== | simonw 9599 | 2020-05-30T13:14:52Z | 2020-05-30T13:21:03Z | OWNER | I've made a lot of progress towards this recently:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Decide what goes into Datasette 1.0 459590021 | |
636330023 | https://github.com/simonw/datasette/issues/519#issuecomment-636330023 | https://api.github.com/repos/simonw/datasette/issues/519 | MDEyOklzc3VlQ29tbWVudDYzNjMzMDAyMw== | simonw 9599 | 2020-05-30T13:19:24Z | 2020-05-30T13:19:24Z | OWNER | Goals for Datasette 1.0:
I think I'm very nearly there for the plugin API. The harder ones are JSON APIs and template authors. For JSON APIs: The default JSON just isn't right. I find myself using The template part is harder. I think I need to fully document the template variables for every view - and add protective unit tests that match that documentation. The CSS theme part is so hard it may not be possible. How do you guarantee stable HTML that won't break with custom CSS when you'll be adding new features during the 1.x release run? The pattern portfolio from #151 should hopefully help a lot there, but I still don't have a complete idea of what this entails or how feasible it is. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Decide what goes into Datasette 1.0 459590021 | |
636329095 | https://github.com/simonw/datasette/issues/576#issuecomment-636329095 | https://api.github.com/repos/simonw/datasette/issues/576 | MDEyOklzc3VlQ29tbWVudDYzNjMyOTA5NQ== | simonw 9599 | 2020-05-30T13:11:39Z | 2020-05-30T13:25:10Z | OWNER | I need to document the Idea: |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented internals API for use in plugins 497170355 | |
636330438 | https://github.com/simonw/datasette/issues/576#issuecomment-636330438 | https://api.github.com/repos/simonw/datasette/issues/576 | MDEyOklzc3VlQ29tbWVudDYzNjMzMDQzOA== | simonw 9599 | 2020-05-30T13:23:04Z | 2020-05-30T13:23:04Z | OWNER | Need to document |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented internals API for use in plugins 497170355 | |
636330843 | https://github.com/simonw/datasette/issues/576#issuecomment-636330843 | https://api.github.com/repos/simonw/datasette/issues/576 | MDEyOklzc3VlQ29tbWVudDYzNjMzMDg0Mw== | simonw 9599 | 2020-05-30T13:26:38Z | 2020-05-30T13:26:38Z | OWNER | There's a bunch of methods on that class which I could add a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented internals API for use in plugins 497170355 | |
636332083 | https://github.com/simonw/datasette/issues/576#issuecomment-636332083 | https://api.github.com/repos/simonw/datasette/issues/576 | MDEyOklzc3VlQ29tbWVudDYzNjMzMjA4Mw== | simonw 9599 | 2020-05-30T13:36:55Z | 2020-05-30T13:36:55Z | OWNER | Here's the current |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented internals API for use in plugins 497170355 | |
636332183 | https://github.com/simonw/datasette/issues/576#issuecomment-636332183 | https://api.github.com/repos/simonw/datasette/issues/576 | MDEyOklzc3VlQ29tbWVudDYzNjMzMjE4Mw== | simonw 9599 | 2020-05-30T13:37:51Z | 2020-05-30T13:38:35Z | OWNER | __init__(self, files, immutables=None, cache_headers=True, cors=False, inspect_data=None, metadata=None, sqlite_extensions=None, template_dir=None, plugins_dir=None, static_mounts=None, memory=False, config=None, version_note=None, config_dir=None)
absolute_url(self, request, path) add_database(self, name, db) app(self)
app_css_hash(self) config(self, key) config_dict(self) connected_databases(self) execute(self, db_name, sql, params=None, truncate=False, custom_time_limit=None, page_size=None, log_sql_errors=True) expand_foreign_keys(self, database, table, column, values)
get_canned_queries(self, database_name) get_canned_query(self, database_name, query_name) metadata(self, key=None, database=None, table=None, fallback=True)
plugin_config(self, plugin_name, database=None, table=None, fallback=True)
plugins(self, show_all=False) prepare_connection(self, conn, database) register_custom_units(self)
register_renderers(self)
remove_database(self, name) render_template(self, templates, context=None, request=None, view_name=None) table_metadata(self, database, table)
threads(self) update_with_inherited_metadata(self, metadata) versions(self) |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented internals API for use in plugins 497170355 | |
636340618 | https://github.com/simonw/datasette/issues/576#issuecomment-636340618 | https://api.github.com/repos/simonw/datasette/issues/576 | MDEyOklzc3VlQ29tbWVudDYzNjM0MDYxOA== | simonw 9599 | 2020-05-30T14:46:04Z | 2020-05-30T18:41:41Z | OWNER | I should also think about the class properties (as opposed to methods) that are setup in the Datasette constructor. Many of these should be private, some should be documented.
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Documented internals API for use in plugins 497170355 | |
636376209 | https://github.com/simonw/datasette/issues/699#issuecomment-636376209 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3NjIwOQ== | simonw 9599 | 2020-05-30T19:53:28Z | 2020-05-30T20:09:10Z | OWNER | I think there are two hooks here:
A non-None value means the request is authenticated in some way. The shape of that dictionary is entirely undefined. The second hook is for checking permissions. It can look something like this:
I don't know if Datasette should provide default implementations of these hooks. It may be that leaving them completely up to plugins is the way to go. I think I need to prototype this quickly to start feeling for how well it might work. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636376893 | https://github.com/simonw/datasette/issues/699#issuecomment-636376893 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3Njg5Mw== | simonw 9599 | 2020-05-30T19:57:54Z | 2020-05-30T20:09:05Z | OWNER |
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636376974 | https://github.com/simonw/datasette/issues/699#issuecomment-636376974 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3Njk3NA== | simonw 9599 | 2020-05-30T19:58:40Z | 2020-05-30T20:08:59Z | OWNER | Maybe call that |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636377235 | https://github.com/simonw/datasette/issues/699#issuecomment-636377235 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3NzIzNQ== | simonw 9599 | 2020-05-30T20:00:42Z | 2020-05-30T20:01:35Z | OWNER | I'm changing |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636377755 | https://github.com/simonw/datasette/issues/699#issuecomment-636377755 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3Nzc1NQ== | simonw 9599 | 2020-05-30T20:04:23Z | 2020-05-30T20:04:23Z | OWNER | My usage of the term |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636378121 | https://github.com/simonw/datasette/issues/699#issuecomment-636378121 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3ODEyMQ== | simonw 9599 | 2020-05-30T20:06:47Z | 2020-05-30T20:06:47Z | OWNER | In AWS IAM world the following terminology is used: https://aws.amazon.com/iam/features/manage-permissions/
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636378228 | https://github.com/simonw/datasette/issues/699#issuecomment-636378228 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3ODIyOA== | simonw 9599 | 2020-05-30T20:07:25Z | 2020-05-30T20:07:25Z | OWNER | I like "actor" better than "entity" to mean "the user or API key that is authenticated for this request". I'm going to use "resource" instead of "subject" - updating the design comment again. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636379067 | https://github.com/simonw/datasette/issues/699#issuecomment-636379067 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM3OTA2Nw== | simonw 9599 | 2020-05-30T20:12:47Z | 2020-05-30T20:40:42Z | OWNER | I could bake some permission checks into default Datasette, which are all treated as allow by default but can then be locked down by plugins. Maybe the following:
Checks that current user can execute arbitrary SQL queries against a specific database (or use the
Can the user download the database file? Like allow_download. Maybe one for allow_csv_stream too. Having a permission check (defaulting to True) on every single "view" would be useful:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636381732 | https://github.com/simonw/datasette/issues/699#issuecomment-636381732 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM4MTczMg== | simonw 9599 | 2020-05-30T20:32:11Z | 2020-05-30T20:39:11Z | OWNER | I started sketching this out in the authentication branch. Here's the documentation so far: https://github.com/simonw/datasette/blob/8871c20/docs/plugins.rst#actor_from_requestdatasette-request |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636388288 | https://github.com/simonw/datasette/issues/699#issuecomment-636388288 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM4ODI4OA== | simonw 9599 | 2020-05-30T21:34:50Z | 2020-05-30T21:34:50Z | OWNER | Debugging permissions is going to be important. Optional tooling that supports the following would be useful:
That last one is tricky if permissions are just strings that might be passed to |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636391331 | https://github.com/simonw/datasette/issues/699#issuecomment-636391331 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM5MTMzMQ== | simonw 9599 | 2020-05-30T22:08:21Z | 2020-05-30T22:08:21Z | OWNER | I'm going to add an awaitable utility method to the Datasette class for checking permissions:
The second two arguments will be optional. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636392850 | https://github.com/simonw/datasette/issues/699#issuecomment-636392850 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM5Mjg1MA== | simonw 9599 | 2020-05-30T22:25:19Z | 2020-05-30T22:25:19Z | OWNER | The branch is now usable! Next step: write some experimental plugins that exercise some real authentication use-cases with it. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636393204 | https://github.com/simonw/datasette/issues/699#issuecomment-636393204 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM5MzIwNA== | simonw 9599 | 2020-05-30T22:29:44Z | 2020-05-30T22:30:15Z | OWNER | Robust testing of permissions is really important. I should think about utilities I may be able to add to Datasette's unit testing tools that make it as easy as possible to confirm which permission checks were carried out on a specific HTTP request. That way I can set a good example that any Datasette plugin which makes permission checks can follow. |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636395263 | https://github.com/simonw/datasette/issues/699#issuecomment-636395263 | https://api.github.com/repos/simonw/datasette/issues/699 | MDEyOklzc3VlQ29tbWVudDYzNjM5NTI2Mw== | simonw 9599 | 2020-05-30T22:54:09Z | 2020-05-30T22:54:09Z | OWNER | Idea: add a |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Authentication (and permissions) as a core concept 582526961 | |
636322089 | https://github.com/simonw/sqlite-utils/issues/114#issuecomment-636322089 | https://api.github.com/repos/simonw/sqlite-utils/issues/114 | MDEyOklzc3VlQ29tbWVudDYzNjMyMjA4OQ== | simonw 9599 | 2020-05-30T12:08:43Z | 2020-05-30T12:08:43Z | OWNER | Idea: use a chained API to define a complex transition and then execute it all at once. For example:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
table.transform() method for advanced alter table 621989740 | |
636369978 | https://github.com/simonw/datasette/issues/782#issuecomment-636369978 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDYzNjM2OTk3OA== | simonw 9599 | 2020-05-30T18:50:31Z | 2020-05-30T18:50:31Z | OWNER | Here's the default JSON at the moment: https://latest.datasette.io/fixtures/compound_three_primary_keys.json?_size=2
It returns rows as a list of lists of values, and expects you to correlate these with the list of columns. I originally designed it like this because I thought this was a more efficient representation than repeating the column names in a dictionary for every row. With hindsight this was a bad optimization - I always use |
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 | |
636370064 | https://github.com/simonw/datasette/issues/782#issuecomment-636370064 | https://api.github.com/repos/simonw/datasette/issues/782 | MDEyOklzc3VlQ29tbWVudDYzNjM3MDA2NA== | simonw 9599 | 2020-05-30T18:51:19Z | 2020-05-30T18:51:19Z | OWNER | https://latest.datasette.io/fixtures/compound_three_primary_keys.json?_size=2&_shape=array returns this:
|
{ "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
Redesign default .json format 627794879 |
Advanced export
JSON shape: default, array, newline-delimited, object
CREATE TABLE [issue_comments] ( [html_url] TEXT, [issue_url] TEXT, [id] INTEGER PRIMARY KEY, [node_id] TEXT, [user] INTEGER REFERENCES [users]([id]), [created_at] TEXT, [updated_at] TEXT, [author_association] TEXT, [body] TEXT, [reactions] TEXT, [issue] INTEGER REFERENCES [issues]([id]) , [performed_via_github_app] TEXT); CREATE INDEX [idx_issue_comments_issue] ON [issue_comments] ([issue]); CREATE INDEX [idx_issue_comments_user] ON [issue_comments] ([user]);
issue 7