mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-18 03:10:39 +01:00
Add error checking for data import
This commit is contained in:
@@ -10,6 +10,7 @@ import gitbucket.core.util.Implicits._
|
|||||||
import org.eclipse.jgit.api.Git
|
import org.eclipse.jgit.api.Git
|
||||||
import org.eclipse.jgit.dircache.DirCache
|
import org.eclipse.jgit.dircache.DirCache
|
||||||
import org.eclipse.jgit.lib.{FileMode, Constants}
|
import org.eclipse.jgit.lib.{FileMode, Constants}
|
||||||
|
import org.scalatra
|
||||||
import org.scalatra._
|
import org.scalatra._
|
||||||
import org.scalatra.servlet.{MultipartConfig, FileUploadSupport, FileItem}
|
import org.scalatra.servlet.{MultipartConfig, FileUploadSupport, FileItem}
|
||||||
import org.apache.commons.io.{IOUtils, FileUtils}
|
import org.apache.commons.io.{IOUtils, FileUtils}
|
||||||
@@ -80,9 +81,13 @@ class FileUploadController extends ScalatraServlet with FileUploadSupport with R
|
|||||||
post("/import") {
|
post("/import") {
|
||||||
session.get(Keys.Session.LoginAccount).collect { case loginAccount: Account if loginAccount.isAdmin =>
|
session.get(Keys.Session.LoginAccount).collect { case loginAccount: Account if loginAccount.isAdmin =>
|
||||||
execute({ (file, fileId) =>
|
execute({ (file, fileId) =>
|
||||||
import JDBCUtil._
|
if(file.getName.endsWith(".xml")){
|
||||||
val conn = request2Session(request).conn
|
import JDBCUtil._
|
||||||
conn.importAsXML(file.getInputStream)
|
val conn = request2Session(request).conn
|
||||||
|
conn.importAsXML(file.getInputStream)
|
||||||
|
} else {
|
||||||
|
throw new RuntimeException("Import is available for only the XML file.")
|
||||||
|
}
|
||||||
}, _ => true)
|
}, _ => true)
|
||||||
}
|
}
|
||||||
redirect("/admin/data")
|
redirect("/admin/data")
|
||||||
|
|||||||
@@ -30,10 +30,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="panel panel-default">
|
<div class="panel panel-default">
|
||||||
<div class="panel-heading strong">Import</div>
|
<div class="panel-heading strong">Import (only XML)</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
<form class="form form-horizontal" action="@path/upload/import" method="POST" enctype="multipart/form-data">
|
<form class="form form-horizontal" action="@path/upload/import" method="POST" enctype="multipart/form-data" id="import-form">
|
||||||
<input type="file" name="file">
|
<input type="file" name="file" id="file">
|
||||||
<input type="submit" class="btn btn-success pull-right" value="Import" id="import">
|
<input type="submit" class="btn btn-success pull-right" value="Import" id="import">
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
@@ -42,7 +42,14 @@
|
|||||||
}
|
}
|
||||||
<script>
|
<script>
|
||||||
$(function(){
|
$(function(){
|
||||||
$('#import').click(function(){
|
$('#import-form').submit(function(){
|
||||||
|
if(!$('#file').val() == ''){
|
||||||
|
alert('Choose an import XML file.');
|
||||||
|
return false;
|
||||||
|
} else if(!$('#file').val().endsWith(".xml")){
|
||||||
|
alert('Import is available for only the XML file.');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
return confirm('All existing data is deleted before importing.\nAre you sure?');
|
return confirm('All existing data is deleted before importing.\nAre you sure?');
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user