Skip to content

Commit 85640cf

Browse files
authored
feat: add code snippets to your files teams folders (#2817)
* feat: add code snippets to your files teams folders * feat: add built js
1 parent 8d1634e commit 85640cf

8 files changed

+76
-44
lines changed

dataworkspace/dataworkspace/apps/core/utils.py

+8-1
Original file line numberDiff line numberDiff line change
@@ -1489,7 +1489,14 @@ def get_user_s3_prefixes(user):
14891489

14901490

14911491
def get_team_prefixes(user):
1492-
return [f'teams/{x["schema_name"]}/' for x in get_team_schemas_for_user(user)]
1492+
return [
1493+
{
1494+
"name": x["name"],
1495+
"env_var": f"S3_PREFIX_TEAM_{clean_db_identifier(x['name']).upper()}",
1496+
"prefix": f'teams/{x["schema_name"]}/',
1497+
}
1498+
for x in get_team_schemas_for_user(user)
1499+
]
14931500

14941501

14951502
def update_user_tool_access_policy(user, access_point_id):

dataworkspace/dataworkspace/static/js/bundles/yourfiles.2e3320d0c45a8054b2c0.js

-2
This file was deleted.

dataworkspace/dataworkspace/static/js/bundles/yourfiles.70fed0402f7640f5dcc1.js

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dataworkspace/dataworkspace/static/js/bundles/yourfiles.bfc1dceee24b64203abb.js

-2
This file was deleted.

dataworkspace/dataworkspace/static/js/bundles/yourfiles.c93bfed2dd8a9c6f4718.js

-2
This file was deleted.

dataworkspace/dataworkspace/static/js/react_apps/src/your-files/App.jsx

+8-2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { getBreadcrumbs, getFolderName } from "./utils";
88
import { AddFolderPopup, UploadFilesPopup } from "./popups";
99
import { DeleteObjectsPopup } from "./popups/DeleteObjects";
1010
import { ErrorModal } from "./popups/ErrorModal";
11+
import { TeamsPrefixMessage } from "./TeamsPrefixMessage";
1112

1213
const popupTypes = {
1314
ADD_FOLDER: "addFolder",
@@ -251,8 +252,8 @@ export default class App extends React.Component {
251252

252253
const teamsFolders =
253254
params.Prefix === rootPrefix
254-
? this.props.config.teamsPrefixes.map((prefix) => ({
255-
Prefix: prefix,
255+
? this.props.config.teamsPrefixes.map((team) => ({
256+
Prefix: team.prefix,
256257
isSharedFolder: true,
257258
isSelected: false,
258259
}))
@@ -501,6 +502,11 @@ export default class App extends React.Component {
501502
bucketName={this.state.bucketName}
502503
/>
503504
) : null}
505+
{this.state.currentPrefix.startsWith("teams/") ?
506+
<TeamsPrefixMessage
507+
team={this.props.config.teamsPrefixes.find(t => this.state.currentPrefix.startsWith(t.prefix))}
508+
bucketName={this.state.bucketName}
509+
/> : null}
504510
</div>
505511
</div>
506512
);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import React from "react";
2+
export function TeamsPrefixMessage({ team, bucketName }) {
3+
const relativePath = team.prefix.replace(/^teams/, '');
4+
return (
5+
<div className="govuk-inset-text">
6+
<p className="govuk-body">
7+
Files in the <code>{relativePath}</code> folder are not
8+
automatically accessible from your tools in the same way other files
9+
are. However, they can be manually accessed. For example, after
10+
uploading a file <code>{relativePath}file.csv</code>, you can
11+
create a Pandas DataFrame in a JupyterLab Python notebook by running the
12+
following code.
13+
</p>
14+
<code>
15+
<pre>
16+
{`import os
17+
import pandas as pd
18+
import boto3
19+
20+
client = boto3.client('s3', region_name='eu-west-2')
21+
response = client.get_object(
22+
Bucket='${bucketName}',
23+
Key=os.environ['${team.env_var}'] + 'file.csv' )
24+
df = pd.read_csv(response['Body'])
25+
`}
26+
</pre>
27+
</code>
28+
<p className="govuk-body govuk-!-margin-top-2">
29+
You can also create a tibble from this file in R by running the
30+
following code.
31+
</p>
32+
33+
<code>
34+
<pre>{`library("aws.s3")
35+
library("readr")
36+
filename <- "file.csv"
37+
conn = s3connection(paste(c(
38+
"s3://${bucketName}/",
39+
Sys.getenv("${team.env_var}"), filename),
40+
collapse=""
41+
))
42+
43+
tb = read_csv(conn)
44+
close(conn)
45+
`}</pre>
46+
</code>
47+
</div>
48+
)
49+
}

dataworkspace/dataworkspace/static/js/stats/react_apps-stats.json

+9-35
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,20 @@
11
{
22
"status": "done",
33
"assets": {
4-
"builder.58dd439c3a0d51aa7543.js.LICENSE.txt": {
5-
"name": "builder.58dd439c3a0d51aa7543.js.LICENSE.txt",
6-
"path": "builder.58dd439c3a0d51aa7543.js.LICENSE.txt",
7-
"publicPath": "/__django_static/js/bundles/builder.58dd439c3a0d51aa7543.js.LICENSE.txt"
4+
"yourfiles.70fed0402f7640f5dcc1.js": {
5+
"name": "yourfiles.70fed0402f7640f5dcc1.js",
6+
"path": "yourfiles.70fed0402f7640f5dcc1.js",
7+
"publicPath": "/__django_static/js/bundles/yourfiles.70fed0402f7640f5dcc1.js"
88
},
9-
"viewer.08734df7339e28c342cc.js.LICENSE.txt": {
10-
"name": "viewer.08734df7339e28c342cc.js.LICENSE.txt",
11-
"path": "viewer.08734df7339e28c342cc.js.LICENSE.txt",
12-
"publicPath": "/__django_static/js/bundles/viewer.08734df7339e28c342cc.js.LICENSE.txt"
13-
},
14-
"yourfiles.c93bfed2dd8a9c6f4718.js.LICENSE.txt": {
15-
"name": "yourfiles.c93bfed2dd8a9c6f4718.js.LICENSE.txt",
16-
"path": "yourfiles.c93bfed2dd8a9c6f4718.js.LICENSE.txt",
17-
"publicPath": "/__django_static/js/bundles/yourfiles.c93bfed2dd8a9c6f4718.js.LICENSE.txt"
18-
},
19-
"builder.58dd439c3a0d51aa7543.js": {
20-
"name": "builder.58dd439c3a0d51aa7543.js",
21-
"path": "builder.58dd439c3a0d51aa7543.js",
22-
"publicPath": "/__django_static/js/bundles/builder.58dd439c3a0d51aa7543.js"
23-
},
24-
"viewer.08734df7339e28c342cc.js": {
25-
"name": "viewer.08734df7339e28c342cc.js",
26-
"path": "viewer.08734df7339e28c342cc.js",
27-
"publicPath": "/__django_static/js/bundles/viewer.08734df7339e28c342cc.js"
28-
},
29-
"yourfiles.c93bfed2dd8a9c6f4718.js": {
30-
"name": "yourfiles.c93bfed2dd8a9c6f4718.js",
31-
"path": "yourfiles.c93bfed2dd8a9c6f4718.js",
32-
"publicPath": "/__django_static/js/bundles/yourfiles.c93bfed2dd8a9c6f4718.js"
9+
"yourfiles.70fed0402f7640f5dcc1.js.LICENSE.txt": {
10+
"name": "yourfiles.70fed0402f7640f5dcc1.js.LICENSE.txt",
11+
"path": "yourfiles.70fed0402f7640f5dcc1.js.LICENSE.txt",
12+
"publicPath": "/__django_static/js/bundles/yourfiles.70fed0402f7640f5dcc1.js.LICENSE.txt"
3313
}
3414
},
3515
"chunks": {
36-
"builder": [
37-
"builder.58dd439c3a0d51aa7543.js"
38-
],
39-
"viewer": [
40-
"viewer.08734df7339e28c342cc.js"
41-
],
4216
"yourfiles": [
43-
"yourfiles.c93bfed2dd8a9c6f4718.js"
17+
"yourfiles.70fed0402f7640f5dcc1.js"
4418
]
4519
},
4620
"publicPath": "/__django_static/js/bundles/"

0 commit comments

Comments
 (0)