Skip to content

Commit 08046fb

Browse files
authored
Merge pull request #25 from byte-power/fix/fix_fork_dashboard
修复因slug不唯一导致的fork功能缺陷
2 parents 49ca53d + 228346a commit 08046fb

File tree

4 files changed

+7
-7
lines changed

4 files changed

+7
-7
lines changed

client/app/pages/dashboards/hooks/useDuplicateDashboard.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ export default function useDuplicateDashboard(dashboard) {
2525
const tab = window.open("", tabName);
2626

2727
setIsDuplicating(true);
28-
Dashboard.fork({ slug: dashboard.slug })
28+
Dashboard.fork({ id: dashboard.id })
2929
.then(newDashboard => {
3030
tab.location = keepCurrentUrlParams(newDashboard.url);
3131
})
3232
.finally(() => {
3333
setIsDuplicating(false);
3434
});
35-
}, [dashboard.slug]);
35+
}, [dashboard.id]);
3636

3737
return [isDuplicating, isDuplicating ? noop : duplicateDashboard];
3838
}

client/app/services/dashboard.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ const DashboardService = {
166166
getByToken: ({ token }) => axios.get(`api/dashboards/public/${token}`).then(transformResponse),
167167
getEmbed: ({ dashboard_id, token }) =>
168168
axios.get(`/api/dashboards/embed/${dashboard_id}` + token).then(transformResponse),
169-
fork: ({ slug }) => axios.post("api/dashboards/fork", { slug }).then(transformResponse),
169+
fork: ({ id }) => axios.post("api/dashboards/fork", { id }).then(transformResponse),
170170
save: data => axios.post(saveOrCreateUrl(data), data).then(transformResponse),
171171
delete: ({ id }) => axios.delete(`api/dashboards/${id}`).then(transformResponse),
172172
query: params => axios.get("api/dashboards", { params }).then(transformResponse),

redash/handlers/dashboards.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -391,8 +391,8 @@ class DashboardForkResource(BaseResource):
391391
@require_permission('edit_dashboard')
392392
def post(self):
393393
dashboard_properties = request.get_json(force=True)
394-
dashboard_slug = dashboard_properties['slug']
395-
dashboard = models.Dashboard.get_by_slug_and_org(dashboard_slug, self.current_org)
394+
dashboard_id = dashboard_properties['id']
395+
dashboard = models.Dashboard.get_by_id_and_org(dashboard_id, self.current_org)
396396

397397
require_admin_or_owner(dashboard.user_id)
398398

@@ -401,7 +401,7 @@ def post(self):
401401
.outerjoin(models.Visualization)
402402
.outerjoin(models.Query))
403403

404-
dashboard_duplicate = models.Dashboard(name=u'fork-of-{}'.format(dashboard.name, dashboard_slug),
404+
dashboard_duplicate = models.Dashboard(name=u'fork-of-{}'.format(dashboard.name),
405405
org=self.current_org,
406406
user=self.current_user,
407407
is_draft=True,

tests/handlers/test_dashboards.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ def test_fork_success(self):
261261

262262
res = self.make_request(
263263
"POST", "/api/dashboards/fork",
264-
data={"slug": dashboard.slug}
264+
data={"id": dashboard.id}
265265
)
266266
self.assertEqual(res.status_code, 200)
267267
n = json_loads(res.data)

0 commit comments

Comments
 (0)