mirror of
https://github.com/9001/copyparty.git
synced 2026-01-13 08:12:39 -07:00
up2k: add "skip if file exists" (#1128)
This commit is contained in:
parent
2d1d295a4d
commit
fa32e15958
|
|
@ -2875,7 +2875,7 @@ class HttpCli(object):
|
||||||
body["addr"] = self.ip
|
body["addr"] = self.ip
|
||||||
body["vcfg"] = dbv.flags
|
body["vcfg"] = dbv.flags
|
||||||
|
|
||||||
if not self.can_delete:
|
if not self.can_delete and not body.get("replace") == "skip":
|
||||||
body.pop("replace", None)
|
body.pop("replace", None)
|
||||||
|
|
||||||
if rem:
|
if rem:
|
||||||
|
|
|
||||||
|
|
@ -3468,7 +3468,15 @@ class Up2k(object):
|
||||||
fp = djoin(fdir, fname)
|
fp = djoin(fdir, fname)
|
||||||
|
|
||||||
ow = job.get("replace") and bos.path.exists(fp)
|
ow = job.get("replace") and bos.path.exists(fp)
|
||||||
if ow and "mt" in str(job["replace"]).lower():
|
if ow:
|
||||||
|
replace_arg = str(job["replace"]).lower()
|
||||||
|
|
||||||
|
if ow and "skip" in replace_arg:
|
||||||
|
self.log("skipping upload, filename already exists: %r" % fp)
|
||||||
|
err = "upload rejected, a file with that name already exists"
|
||||||
|
raise Pebkac(409, err)
|
||||||
|
|
||||||
|
if ow and "mt" in replace_arg:
|
||||||
mts = bos.stat(fp).st_mtime
|
mts = bos.stat(fp).st_mtime
|
||||||
mtc = job["lmod"]
|
mtc = job["lmod"]
|
||||||
if mtc < mts:
|
if mtc < mts:
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,7 @@ if (1)
|
||||||
"ul_par": "parallel uploads:",
|
"ul_par": "parallel uploads:",
|
||||||
"ut_rand": "randomize filenames",
|
"ut_rand": "randomize filenames",
|
||||||
"ut_u2ts": "copy the last-modified timestamp$Nfrom your filesystem to the server\">📅",
|
"ut_u2ts": "copy the last-modified timestamp$Nfrom your filesystem to the server\">📅",
|
||||||
"ut_ow": "overwrite existing files on the server?$N🛡️: never (will generate a new filename instead)$N🕒: overwrite if server-file is older than yours$N♻️: always overwrite if the files are different",
|
"ut_ow": "overwrite existing files on the server?$N🛡️: never (will generate a new filename instead)$N🕒: overwrite if server-file is older than yours$N♻️: always overwrite if the files are different$N⏭️: skip uploading if the server-file exists, regardless of contents",
|
||||||
"ut_mt": "continue hashing other files while uploading$N$Nmaybe disable if your CPU or HDD is a bottleneck",
|
"ut_mt": "continue hashing other files while uploading$N$Nmaybe disable if your CPU or HDD is a bottleneck",
|
||||||
"ut_ask": 'ask for confirmation before upload starts">💭',
|
"ut_ask": 'ask for confirmation before upload starts">💭',
|
||||||
"ut_pot": "improve upload speed on slow devices$Nby making the UI less complex",
|
"ut_pot": "improve upload speed on slow devices$Nby making the UI less complex",
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ Ls.deu = {
|
||||||
"ul_par": "Parallele Uploads:",
|
"ul_par": "Parallele Uploads:",
|
||||||
"ut_rand": "Zufällige Dateinamen",
|
"ut_rand": "Zufällige Dateinamen",
|
||||||
"ut_u2ts": "Zuletzt geändert-Zeitstempel von$Ndeinem Dateisystem auf den Server übertragen\">📅",
|
"ut_u2ts": "Zuletzt geändert-Zeitstempel von$Ndeinem Dateisystem auf den Server übertragen\">📅",
|
||||||
"ut_ow": "Existierende Dateien auf dem Server überschreiben?$N🛡️: Nie (generiert einen neuen Dateinamen)$N🕒: Überschreiben, wenn Server-Datei älter ist als meine$N♻️: Überschreiben, wenn der Dateiinhalt anders ist",
|
"ut_ow": "Existierende Dateien auf dem Server überschreiben?$N🛡️: Nie (generiert einen neuen Dateinamen)$N🕒: Überschreiben, wenn Server-Datei älter ist als meine$N♻️: Überschreiben, wenn der Dateiinhalt anders ist$N⏭️: Nur hochladen, wenn keine Datei mit dem gleichen Namen existiert",
|
||||||
"ut_mt": "Andere Dateien während des Uploads hashen$N$Nsolltest du deaktivieren, falls deine CPU oder Festplatte zum Flaschenhals werden könnte",
|
"ut_mt": "Andere Dateien während des Uploads hashen$N$Nsolltest du deaktivieren, falls deine CPU oder Festplatte zum Flaschenhals werden könnte",
|
||||||
"ut_ask": 'Vor dem Upload nach Bestätigung fragen">💭',
|
"ut_ask": 'Vor dem Upload nach Bestätigung fragen">💭',
|
||||||
"ut_pot": "Verbessert Upload-Geschwindigkeit$Nindem das UI weniger komplex gemacht wird",
|
"ut_pot": "Verbessert Upload-Geschwindigkeit$Nindem das UI weniger komplex gemacht wird",
|
||||||
|
|
|
||||||
|
|
@ -900,19 +900,19 @@ function up2k_init(subtle) {
|
||||||
bcfg_bind(uc, 'upnag', 'upnag', false, set_upnag);
|
bcfg_bind(uc, 'upnag', 'upnag', false, set_upnag);
|
||||||
bcfg_bind(uc, 'upsfx', 'upsfx', false, set_upsfx);
|
bcfg_bind(uc, 'upsfx', 'upsfx', false, set_upsfx);
|
||||||
|
|
||||||
uc.ow = parseInt(sread('u2ow', ['0', '1', '2']) || u2ow);
|
uc.ow = parseInt(sread('u2ow', ['0', '1', '2', '3']) || u2ow);
|
||||||
uc.owt = ['🛡️', '🕒', '♻️'];
|
uc.owt = ['🛡️', '🕒', '♻️', '⏭️'];
|
||||||
function set_ow() {
|
function set_ow() {
|
||||||
QS('label[for="u2ow"]').innerHTML = uc.owt[uc.ow];
|
QS('label[for="u2ow"]').innerHTML = uc.owt[uc.ow];
|
||||||
ebi('u2ow').checked = true; //cosmetic
|
ebi('u2ow').checked = true; //cosmetic
|
||||||
}
|
}
|
||||||
ebi('u2ow').onclick = function (e) {
|
ebi('u2ow').onclick = function (e) {
|
||||||
ev(e);
|
ev(e);
|
||||||
if (++uc.ow > 2)
|
if (++uc.ow > 3)
|
||||||
uc.ow = 0;
|
uc.ow = 0;
|
||||||
swrite('u2ow', uc.ow);
|
swrite('u2ow', uc.ow);
|
||||||
set_ow();
|
set_ow();
|
||||||
if (uc.ow && !has(perms, 'delete'))
|
if (uc.ow && uc.ow !== 3 && !has(perms, 'delete'))
|
||||||
toast.warn(10, L.u_enoow, 'noow');
|
toast.warn(10, L.u_enoow, 'noow');
|
||||||
else if (toast.tag == 'noow')
|
else if (toast.tag == 'noow')
|
||||||
toast.hide();
|
toast.hide();
|
||||||
|
|
@ -2727,9 +2727,10 @@ function up2k_init(subtle) {
|
||||||
var err_pend = rsp.indexOf('partial upload exists at a different') + 1,
|
var err_pend = rsp.indexOf('partial upload exists at a different') + 1,
|
||||||
err_srcb = rsp.indexOf('source file busy; please try again') + 1,
|
err_srcb = rsp.indexOf('source file busy; please try again') + 1,
|
||||||
err_plug = rsp.indexOf('upload blocked by x') + 1,
|
err_plug = rsp.indexOf('upload blocked by x') + 1,
|
||||||
err_dupe = rsp.indexOf('upload rejected, file already exists') + 1;
|
err_dupe = rsp.indexOf('upload rejected, file already exists') + 1,
|
||||||
|
err_exists = rsp.indexOf('upload rejected, a file with that name already exists') + 1;
|
||||||
|
|
||||||
if (err_pend || err_srcb || err_plug || err_dupe) {
|
if (err_pend || err_srcb || err_plug || err_dupe || err_exists) {
|
||||||
err = rsp;
|
err = rsp;
|
||||||
ofs = err.indexOf('\n/');
|
ofs = err.indexOf('\n/');
|
||||||
if (ofs !== -1) {
|
if (ofs !== -1) {
|
||||||
|
|
@ -2793,6 +2794,8 @@ function up2k_init(subtle) {
|
||||||
req.replace = 'mt';
|
req.replace = 'mt';
|
||||||
if (uc.ow == 2)
|
if (uc.ow == 2)
|
||||||
req.replace = true;
|
req.replace = true;
|
||||||
|
if (uc.ow == 3)
|
||||||
|
req.replace = 'skip';
|
||||||
}
|
}
|
||||||
|
|
||||||
xhr.open('POST', t.purl, true);
|
xhr.open('POST', t.purl, true);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue