datasette-edit-schema 0.8a1__py3-none-any.whl → 0.8a3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of datasette-edit-schema might be problematic. Click here for more details.
- datasette_edit_schema/__init__.py +19 -14
- datasette_edit_schema/templates/edit_schema_database.html +1 -1
- datasette_edit_schema/templates/edit_schema_table.html +14 -13
- {datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/METADATA +1 -1
- {datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/RECORD +9 -9
- {datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/WHEEL +1 -1
- {datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/LICENSE +0 -0
- {datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/entry_points.txt +0 -0
- {datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from datasette import hookimpl
|
|
2
2
|
from datasette.events import CreateTableEvent, AlterTableEvent, DropTableEvent
|
|
3
3
|
from datasette.utils.asgi import Response, NotFound, Forbidden
|
|
4
|
-
from datasette.utils import sqlite3
|
|
4
|
+
from datasette.utils import sqlite3, tilde_decode, tilde_encode
|
|
5
5
|
from urllib.parse import quote_plus, unquote_plus
|
|
6
6
|
import sqlite_utils
|
|
7
7
|
import textwrap
|
|
@@ -40,7 +40,7 @@ def table_actions(datasette, actor, database, table):
|
|
|
40
40
|
return [
|
|
41
41
|
{
|
|
42
42
|
"href": datasette.urls.path(
|
|
43
|
-
"/-/edit-schema/{}/{}".format(database,
|
|
43
|
+
"/-/edit-schema/{}/{}".format(database, tilde_encode(table))
|
|
44
44
|
),
|
|
45
45
|
"label": "Edit table schema",
|
|
46
46
|
"description": "Rename the table, add and remove columns...",
|
|
@@ -216,6 +216,7 @@ async def edit_schema_database(request, datasette):
|
|
|
216
216
|
{
|
|
217
217
|
"database": database,
|
|
218
218
|
"tables": tables,
|
|
219
|
+
"tilde_encode": tilde_encode,
|
|
219
220
|
},
|
|
220
221
|
request=request,
|
|
221
222
|
)
|
|
@@ -307,7 +308,7 @@ async def edit_schema_create_table(request, datasette):
|
|
|
307
308
|
|
|
308
309
|
|
|
309
310
|
async def edit_schema_table(request, datasette):
|
|
310
|
-
table =
|
|
311
|
+
table = tilde_decode(request.url_vars["table"])
|
|
311
312
|
databases = get_databases(datasette)
|
|
312
313
|
database_name = request.url_vars["database"]
|
|
313
314
|
|
|
@@ -548,16 +549,14 @@ async def edit_schema_table(request, datasette):
|
|
|
548
549
|
info["foreign_key"].other_column,
|
|
549
550
|
),
|
|
550
551
|
"value": "{}.{}".format(
|
|
551
|
-
info["foreign_key"].other_table,
|
|
552
|
-
info["foreign_key"].other_column,
|
|
552
|
+
tilde_encode(info["foreign_key"].other_table),
|
|
553
|
+
tilde_encode(info["foreign_key"].other_column),
|
|
553
554
|
),
|
|
554
555
|
"selected": True,
|
|
555
556
|
}
|
|
556
557
|
)
|
|
557
558
|
seen.add(
|
|
558
|
-
"
|
|
559
|
-
info["foreign_key"].other_table, info["foreign_key"].other_column
|
|
560
|
-
)
|
|
559
|
+
(info["foreign_key"].other_table, info["foreign_key"].other_column)
|
|
561
560
|
)
|
|
562
561
|
# Now add suggestions
|
|
563
562
|
for suggested_table, suggested_column in info["suggestions"]:
|
|
@@ -570,19 +569,24 @@ async def edit_schema_table(request, datasette):
|
|
|
570
569
|
"name": "{}.{} (suggested)".format(
|
|
571
570
|
suggested_table, suggested_column
|
|
572
571
|
),
|
|
573
|
-
"value": "{}.{}".format(
|
|
572
|
+
"value": "{}.{}".format(
|
|
573
|
+
tilde_encode(suggested_table),
|
|
574
|
+
tilde_encode(suggested_column),
|
|
575
|
+
),
|
|
574
576
|
"selected": False,
|
|
575
577
|
}
|
|
576
578
|
)
|
|
577
|
-
seen.add(
|
|
579
|
+
seen.add((suggested_table, suggested_column))
|
|
578
580
|
info["suggested"] = "{}.{}".format(suggested_table, suggested_column)
|
|
579
581
|
# And the rest
|
|
580
582
|
for rest_table, rest_column in info["options"]:
|
|
581
|
-
if
|
|
583
|
+
if (rest_table, rest_column) not in seen:
|
|
582
584
|
options.append(
|
|
583
585
|
{
|
|
584
586
|
"name": "{}.{}".format(rest_table, rest_column),
|
|
585
|
-
"value": "{}.{}".format(
|
|
587
|
+
"value": "{}.{}".format(
|
|
588
|
+
tilde_encode(rest_table), tilde_encode(rest_column)
|
|
589
|
+
),
|
|
586
590
|
"selected": False,
|
|
587
591
|
}
|
|
588
592
|
)
|
|
@@ -619,6 +623,7 @@ async def edit_schema_table(request, datasette):
|
|
|
619
623
|
"can_rename_table": await can_rename_table(
|
|
620
624
|
datasette, request.actor, database_name, table
|
|
621
625
|
),
|
|
626
|
+
"tilde_encode": tilde_encode,
|
|
622
627
|
},
|
|
623
628
|
request=request,
|
|
624
629
|
)
|
|
@@ -782,8 +787,8 @@ async def update_foreign_keys(request, datasette, database, table, formdata):
|
|
|
782
787
|
fks.append(
|
|
783
788
|
(
|
|
784
789
|
column,
|
|
785
|
-
split[0],
|
|
786
|
-
split[1],
|
|
790
|
+
tilde_decode(split[0]),
|
|
791
|
+
tilde_decode(split[1]),
|
|
787
792
|
)
|
|
788
793
|
)
|
|
789
794
|
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<h1>Edit tables in {{ database.name }}.db</h1>
|
|
11
11
|
|
|
12
12
|
{% for table in tables %}
|
|
13
|
-
<h2><a href="/-/edit-schema/{{ database.name|quote_plus }}/{{ table.name
|
|
13
|
+
<h2><a href="/-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table.name) }}">{{ table.name }}</a></h2>
|
|
14
14
|
<p>{% for column in table.columns %}{{ column.name }}{% if not loop.last %}, {% endif %}{% endfor %}</p>
|
|
15
15
|
{% endfor %}
|
|
16
16
|
|
|
@@ -14,13 +14,14 @@ html body input[type="search"] {
|
|
|
14
14
|
font-size: 1em;
|
|
15
15
|
font-family: Helvetica, sans-serif;
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
background-color: red;
|
|
19
|
-
border-color: red;
|
|
20
|
-
}
|
|
21
|
-
body form .button-small {
|
|
17
|
+
input[type=submit].button-small {
|
|
22
18
|
font-size: 0.7em;
|
|
23
19
|
}
|
|
20
|
+
form input[type=submit].button-red {
|
|
21
|
+
background: red;
|
|
22
|
+
border-color: rgb(171, 112, 112);
|
|
23
|
+
}
|
|
24
|
+
|
|
24
25
|
select {
|
|
25
26
|
border: 1px solid #ccc;
|
|
26
27
|
border-radius: 3px;
|
|
@@ -86,12 +87,12 @@ html body label {
|
|
|
86
87
|
{% endblock %}
|
|
87
88
|
|
|
88
89
|
{% block content %}
|
|
89
|
-
<h1>Edit table <a href="{{ base_url }}{{ database.name|quote_plus }}/{{ table
|
|
90
|
+
<h1>Edit table <a href="{{ base_url }}{{ database.name|quote_plus }}/{{ tilde_encode(table) }}">{{ database.name }}/{{ table }}</a></h1>
|
|
90
91
|
|
|
91
92
|
{% if can_rename_table %}
|
|
92
93
|
<h2>Rename table</h2>
|
|
93
94
|
|
|
94
|
-
<form action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ table
|
|
95
|
+
<form class="core" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table) }}" method="post">
|
|
95
96
|
<input type="hidden" name="csrftoken" value="{{ csrftoken() }}">
|
|
96
97
|
<p><label>New name <input type="text" name="name"></label>
|
|
97
98
|
<input type="hidden" name="rename_table" value="1">
|
|
@@ -99,7 +100,7 @@ html body label {
|
|
|
99
100
|
</form>
|
|
100
101
|
{% endif %}
|
|
101
102
|
|
|
102
|
-
<form action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ table
|
|
103
|
+
<form class="core" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table) }}" method="post">
|
|
103
104
|
<h2>Change existing columns</h2>
|
|
104
105
|
<ul class="sortable-columns">
|
|
105
106
|
{% for column in columns %}
|
|
@@ -134,7 +135,7 @@ html body label {
|
|
|
134
135
|
|
|
135
136
|
<h2>Add a column</h2>
|
|
136
137
|
|
|
137
|
-
<form action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ table
|
|
138
|
+
<form class="core" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table) }}" method="post">
|
|
138
139
|
<input type="hidden" name="csrftoken" value="{{ csrftoken() }}">
|
|
139
140
|
<input type="hidden" name="add_column" value="1">
|
|
140
141
|
<p><label>Name <input type="text" name="name"></label>
|
|
@@ -156,7 +157,7 @@ table.foreign-key-options td {
|
|
|
156
157
|
}
|
|
157
158
|
</style>
|
|
158
159
|
|
|
159
|
-
<form action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ table
|
|
160
|
+
<form class="core" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table) }}" method="post">
|
|
160
161
|
<input type="hidden" name="csrftoken" value="{{ csrftoken() }}">
|
|
161
162
|
<input type="hidden" name="action" value="update_foreign_keys">
|
|
162
163
|
<table class="foreign-key-options">
|
|
@@ -180,7 +181,7 @@ table.foreign-key-options td {
|
|
|
180
181
|
|
|
181
182
|
<p>The primary key column uniquely identifies each row in the table.</p>
|
|
182
183
|
|
|
183
|
-
<form action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ table
|
|
184
|
+
<form class="core" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table) }}" method="post">
|
|
184
185
|
<input type="hidden" name="csrftoken" value="{{ csrftoken() }}">
|
|
185
186
|
<input type="hidden" name="action" value="update_primary_key">
|
|
186
187
|
<label for="primary_key">Primary key column </label>
|
|
@@ -201,7 +202,7 @@ table.foreign-key-options td {
|
|
|
201
202
|
|
|
202
203
|
<p>Indexes can speed up filter and sort operations against indexed columns.</p>
|
|
203
204
|
|
|
204
|
-
<form action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ table
|
|
205
|
+
<form class="core" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table) }}" method="post">
|
|
205
206
|
<input type="hidden" name="csrftoken" value="{{ csrftoken() }}">
|
|
206
207
|
{% if non_primary_key_columns %}
|
|
207
208
|
<p><label for="id_add_index_column">
|
|
@@ -233,7 +234,7 @@ table.foreign-key-options td {
|
|
|
233
234
|
{% if can_drop_table %}
|
|
234
235
|
<h2>Drop table</h2>
|
|
235
236
|
|
|
236
|
-
<form id="drop-table-form" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ table
|
|
237
|
+
<form class="core" id="drop-table-form" action="{{ base_url }}-/edit-schema/{{ database.name|quote_plus }}/{{ tilde_encode(table) }}" method="post">
|
|
237
238
|
<input type="hidden" name="csrftoken" value="{{ csrftoken() }}">
|
|
238
239
|
<input type="hidden" name="drop_table" value="1">
|
|
239
240
|
<input type="submit" class="button-red" value="Drop this table">
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
datasette_edit_schema/__init__.py,sha256=
|
|
1
|
+
datasette_edit_schema/__init__.py,sha256=ImGK6H3TZQLDg3awi8csyN9qaT5zTu6enNOuEogQSgc,30998
|
|
2
2
|
datasette_edit_schema/utils.py,sha256=PURr7eOLOcZ7MQTCkZ_fDyeB39-MDhwIbBA-YeXSods,4388
|
|
3
3
|
datasette_edit_schema/static/draggable.1.0.0-beta.11.bundle.js,sha256=rpTEfd8N7sSY5n_mi6mwGz2f-dRXOgknFBuUXmwFnpY,202242
|
|
4
4
|
datasette_edit_schema/static/draggable.1.0.0-beta.11.bundle.min.js,sha256=JlHRb54CUGfor6ENxVjMq9rd_QRrRLoVJf-j3V_c52U,119723
|
|
5
5
|
datasette_edit_schema/templates/edit_schema_create_table.html,sha256=cUiS_LucrtvwpD_Nfb6ER4uZyhzTtPMzl3vkqhx9iGQ,3777
|
|
6
|
-
datasette_edit_schema/templates/edit_schema_database.html,sha256=
|
|
6
|
+
datasette_edit_schema/templates/edit_schema_database.html,sha256=gPPBVgTzdAWg4JgwrTfwHWdGBb89cObeqWneng4wQTk,543
|
|
7
7
|
datasette_edit_schema/templates/edit_schema_index.html,sha256=eNSOFFwv1gsOYP3fNQqcPh0gU5Ny5sDnngVZT5XiUNA,474
|
|
8
|
-
datasette_edit_schema/templates/edit_schema_table.html,sha256=
|
|
9
|
-
datasette_edit_schema-0.
|
|
10
|
-
datasette_edit_schema-0.
|
|
11
|
-
datasette_edit_schema-0.
|
|
12
|
-
datasette_edit_schema-0.
|
|
13
|
-
datasette_edit_schema-0.
|
|
14
|
-
datasette_edit_schema-0.
|
|
8
|
+
datasette_edit_schema/templates/edit_schema_table.html,sha256=FOTNrw6yN7hIjUqhMXRmipJ4IxkjM5ptG2hI2tM8PZ0,9528
|
|
9
|
+
datasette_edit_schema-0.8a3.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
10
|
+
datasette_edit_schema-0.8a3.dist-info/METADATA,sha256=oWvBuUThMHFYTkhmm4SwmkIAyjf-bOaMMxQoR1vdZK0,5150
|
|
11
|
+
datasette_edit_schema-0.8a3.dist-info/WHEEL,sha256=uCRv0ZEik_232NlR4YDw4Pv3Ajt5bKvMH13NUU7hFuI,91
|
|
12
|
+
datasette_edit_schema-0.8a3.dist-info/entry_points.txt,sha256=1-FeujFVTui7tFNBdz3hN5x4vRoanaAydYF5ljYsvp8,48
|
|
13
|
+
datasette_edit_schema-0.8a3.dist-info/top_level.txt,sha256=Cbx3sgneHtcDDxV5SVL8IyU8JvsSdXgpmZqw4oDuOzM,22
|
|
14
|
+
datasette_edit_schema-0.8a3.dist-info/RECORD,,
|
|
File without changes
|
{datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{datasette_edit_schema-0.8a1.dist-info → datasette_edit_schema-0.8a3.dist-info}/top_level.txt
RENAMED
|
File without changes
|