kopia lustrzana https://github.com/OpenDroneMap/WebODM
Add delete button for read only projects
rodzic
1e5356f74d
commit
ce108ec119
|
@ -197,10 +197,12 @@ class ProjectViewSet(viewsets.ModelViewSet):
|
||||||
return Response({'success': True}, status=status.HTTP_200_OK)
|
return Response({'success': True}, status=status.HTTP_200_OK)
|
||||||
|
|
||||||
def destroy(self, request, pk=None):
|
def destroy(self, request, pk=None):
|
||||||
project = get_and_check_project(request, pk, ('delete_project', ))
|
project = get_and_check_project(request, pk, ('view_project', ))
|
||||||
|
|
||||||
# Owner? Delete the project
|
# Owner? Delete the project
|
||||||
if project.owner == request.user or request.user.is_superuser:
|
if project.owner == request.user or request.user.is_superuser:
|
||||||
|
get_and_check_project(request, pk, ('delete_project', ))
|
||||||
|
|
||||||
return super().destroy(self, request, pk=pk)
|
return super().destroy(self, request, pk=pk)
|
||||||
else:
|
else:
|
||||||
# Do not remove the project, simply remove all user's permissions to the project
|
# Do not remove the project, simply remove all user's permissions to the project
|
||||||
|
|
|
@ -400,6 +400,20 @@ class ProjectListItem extends React.Component {
|
||||||
this.editProjectDialog.show();
|
this.editProjectDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
handleHideProject = (deleteWarning, deleteAction) => {
|
||||||
|
return () => {
|
||||||
|
if (window.confirm(deleteWarning)){
|
||||||
|
this.setState({error: "", refreshing: true});
|
||||||
|
deleteAction()
|
||||||
|
.fail(e => {
|
||||||
|
this.setState({error: e.message || (e.responseJSON || {}).detail || e.responseText || _("Could not delete item")});
|
||||||
|
}).always(() => {
|
||||||
|
this.setState({refreshing: false});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
updateProject(project){
|
updateProject(project){
|
||||||
return $.ajax({
|
return $.ajax({
|
||||||
url: `/api/projects/${this.state.data.id}/edit/`,
|
url: `/api/projects/${this.state.data.id}/edit/`,
|
||||||
|
@ -683,6 +697,12 @@ class ProjectListItem extends React.Component {
|
||||||
</a>]
|
</a>]
|
||||||
: ""}
|
: ""}
|
||||||
|
|
||||||
|
{!canEdit && !data.owned ?
|
||||||
|
[<i key="edit-icon" className='far fa-eye-slash'></i>
|
||||||
|
,<a key="edit-text" href="javascript:void(0);" onClick={this.handleHideProject(deleteWarning, this.handleDelete)}> {_("Delete")}
|
||||||
|
</a>]
|
||||||
|
: ""}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<i className="drag-drop-icon fa fa-inbox"></i>
|
<i className="drag-drop-icon fa fa-inbox"></i>
|
||||||
|
|
|
@ -253,14 +253,17 @@ class TestApi(BootTestCase):
|
||||||
for perm in ['delete', 'change', 'add']:
|
for perm in ['delete', 'change', 'add']:
|
||||||
self.assertFalse(perm in res.data['permissions'])
|
self.assertFalse(perm in res.data['permissions'])
|
||||||
|
|
||||||
# Can't delete a project for which we just have view permissions
|
# Can delete a project for which we just have view permissions
|
||||||
res = client.delete('/api/projects/{}/'.format(other_temp_project.id))
|
# (we will just remove our read permissions without deleting the project)
|
||||||
self.assertTrue(res.status_code == status.HTTP_404_NOT_FOUND)
|
|
||||||
|
|
||||||
# Can delete a project for which we have delete permissions
|
|
||||||
assign_perm('delete_project', user, other_temp_project)
|
|
||||||
res = client.delete('/api/projects/{}/'.format(other_temp_project.id))
|
res = client.delete('/api/projects/{}/'.format(other_temp_project.id))
|
||||||
self.assertTrue(res.status_code == status.HTTP_204_NO_CONTENT)
|
self.assertTrue(res.status_code == status.HTTP_204_NO_CONTENT)
|
||||||
|
|
||||||
|
# Project still exists
|
||||||
|
self.assertTrue(Project.objects.filter(id=other_temp_project.id).count() == 1)
|
||||||
|
|
||||||
|
# We just can't access it
|
||||||
|
res = client.get('/api/projects/{}/'.format(other_temp_project.id))
|
||||||
|
self.assertTrue(res.status_code == status.HTTP_404_NOT_FOUND)
|
||||||
|
|
||||||
# A user cannot reassign a task to a
|
# A user cannot reassign a task to a
|
||||||
# project for which he/she has no permissions
|
# project for which he/she has no permissions
|
||||||
|
|
Ładowanie…
Reference in New Issue