home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

4 rows where author_association = "NONE" and user = 3747136 sorted by updated_at descending

✖
✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: issue_url, reactions, created_at (date), updated_at (date)

issue 2

  • I18n and L10n support 2
  • I'm creating a plugin to export a spreadsheet file (.ods or .xlsx) 2

user 1

  • ColinMaudry · 4 ✖

author_association 1

  • NONE · 4 ✖
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
829885904 https://github.com/simonw/datasette/issues/1310#issuecomment-829885904 https://api.github.com/repos/simonw/datasette/issues/1310 MDEyOklzc3VlQ29tbWVudDgyOTg4NTkwNA== ColinMaudry 3747136 2021-04-30T06:58:46Z 2021-04-30T07:26:11Z NONE

I made it work with openpyxl. I'm not sure all the code under @hookimpl is necessary... but it works :)

```python from datasette import hookimpl from datasette.utils.asgi import Response from openpyxl import Workbook from openpyxl.writer.excel import save_virtual_workbook from openpyxl.cell import WriteOnlyCell from openpyxl.styles import Alignment, Font, PatternFill from tempfile import NamedTemporaryFile

def render_spreadsheet(rows): wb = Workbook(write_only=True) ws = wb.create_sheet() ws = wb.active ws.title = "decp"

columns = rows[0].keys()
headers = []
for col in columns :
    c = WriteOnlyCell(ws, col)
    c.fill = PatternFill("solid", fgColor="DDEFFF")
    headers.append(c)
ws.append(headers)

for row in rows:
    wsRow = []
    for col in columns:
        c = WriteOnlyCell(ws, row[col])
        if col == "objet" :
            c.alignment = Alignment(wrapText = True)
        wsRow.append(c)
    ws.append(wsRow)

with NamedTemporaryFile() as tmp:
    wb.save(tmp.name)
    tmp.seek(0)
    return Response(
        tmp.read(),
        headers={
            'Content-Disposition': 'attachment; filename=decp.xlsx',
            'Content-type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        }
    )

@hookimpl def register_output_renderer(): return {"extension": "xlsx", "render": render_spreadsheet, "can_render": lambda: False}

```

The key part was to find the right function to wrap the spreadsheet object wb. NamedTemporaryFile() did it!

I'll update this issue when the plugin is packaged and ready for broader use.

{
    "total_count": 1,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 1,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
I'm creating a plugin to export a spreadsheet file (.ods or .xlsx) 870125126  
828670621 https://github.com/simonw/datasette/issues/1310#issuecomment-828670621 https://api.github.com/repos/simonw/datasette/issues/1310 MDEyOklzc3VlQ29tbWVudDgyODY3MDYyMQ== ColinMaudry 3747136 2021-04-28T18:12:08Z 2021-04-28T18:12:08Z NONE

Apparently, beside a string, Reponse could also work with bytes.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
I'm creating a plugin to export a spreadsheet file (.ods or .xlsx) 870125126  
826784306 https://github.com/simonw/datasette/issues/173#issuecomment-826784306 https://api.github.com/repos/simonw/datasette/issues/173 MDEyOklzc3VlQ29tbWVudDgyNjc4NDMwNg== ColinMaudry 3747136 2021-04-26T12:10:01Z 2021-04-26T12:10:01Z NONE

I found a neat tutorial to set up gettext with jinja2: http://siongui.github.io/2016/01/17/i18n-python-web-application-by-gettext-jinja2/

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
I18n and L10n support 281110295  
823961091 https://github.com/simonw/datasette/issues/173#issuecomment-823961091 https://api.github.com/repos/simonw/datasette/issues/173 MDEyOklzc3VlQ29tbWVudDgyMzk2MTA5MQ== ColinMaudry 3747136 2021-04-21T10:37:05Z 2021-04-21T10:37:36Z NONE

I have the feeling that the text visible to users is 95% present in template files (datasette/templates). The python code mainly contains error messages.

In the current situation, the best way to provide a localized frontend is to translate the templates and configure datasette to use them. I think I'm going to do it for French.

If we want localization to be better integrated, for the python code, I think gettext is the way to go. The .po can be translated in user-friendly tools such as Transifex and Crowdin.

For the templates, I'm not sure how we could do it cleanly and easy to maintain. Maybe the tools above could parse HTML and detect the strings to be translated.

In any case, localization implementing l10n is just the first step: a continuous process must be setup to maintain the translations and produce new ones while datasette keeps getting new features.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
I18n and L10n support 281110295  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

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]);
Powered by Datasette · Queries took 26.628ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows