Skip to content

Commit b68a7ab

Browse files
authored
Merge pull request #159 from MerginMaps/free-space-check
remove space available check on upload
2 parents f5761fc + 95220e0 commit b68a7ab

File tree

3 files changed

+25
-28
lines changed

3 files changed

+25
-28
lines changed

mergin/client.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -646,17 +646,6 @@ def download_project(self, project_path, directory, version=None):
646646
download_project_wait(job)
647647
download_project_finalize(job)
648648

649-
def enough_storage_available(self, data):
650-
info = self.user_info()
651-
free_space = int(info["storage_limit"]) - int(info["disk_usage"])
652-
upload_files_sizes = [f["size"] for f in data["updated"] + data["added"]]
653-
size_to_upload = sum(upload_files_sizes)
654-
655-
if size_to_upload > free_space:
656-
return False, free_space
657-
658-
return True, free_space
659-
660649
def user_info(self):
661650
server_type = self.server_type()
662651
if server_type == ServerType.OLD:

mergin/client_push.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -133,14 +133,6 @@ def push_project_async(mc, directory):
133133
if mp.is_versioned_file(f["path"]):
134134
mp.copy_versioned_file_for_upload(f, tmp_dir.name)
135135

136-
# currently proceed storage limit check only if a project is own by a current user.
137-
if username == project_path.split("/")[0]:
138-
enough_free_space, freespace = mc.enough_storage_available(changes)
139-
if not enough_free_space:
140-
freespace = int(freespace / (1024 * 1024))
141-
mp.log.error(f"--- push {project_path} - not enough space")
142-
raise ClientError("Storage limit has been reached. Only " + str(freespace) + "MB left")
143-
144136
if not sum(len(v) for v in changes.values()):
145137
mp.log.info(f"--- push {project_path} - nothing to do")
146138
return

mergin/test/test_client.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import sqlite3
1111

1212
from .. import InvalidProject
13-
from ..client import MerginClient, ClientError, MerginProject, LoginError, decode_token_data, TokenError
13+
from ..client import MerginClient, ClientError, MerginProject, LoginError, decode_token_data, TokenError, ServerType
1414
from ..client_push import push_project_async, push_project_cancel
1515
from ..utils import (
1616
generate_checksum,
@@ -586,9 +586,17 @@ def test_available_storage_validation(mc):
586586
# download project
587587
mc.download_project(test_project_fullname, project_dir)
588588

589-
# get user_info about storage capacity
590-
user_info = mc.user_info()
591-
storage_remaining = user_info["storage"] - user_info["disk_usage"]
589+
# get info about storage capacity
590+
storage_remaining = 0
591+
592+
if mc.server_type() == ServerType.OLD:
593+
user_info = mc.user_info()
594+
storage_remaining = user_info["storage"] - user_info["disk_usage"]
595+
else:
596+
for workspace in mc.workspaces_list():
597+
if workspace["name"] == API_USER:
598+
storage_remaining = workspace["storage"] - workspace["disk_usage"]
599+
break
592600

593601
# generate dummy data (remaining storage + extra 1024b)
594602
dummy_data_path = project_dir + "/data"
@@ -600,8 +608,8 @@ def test_available_storage_validation(mc):
600608
try:
601609
mc.push_project(project_dir)
602610
except ClientError as e:
603-
# Expecting "Storage limit has been reached" error msg.
604-
assert str(e).startswith("Storage limit has been reached")
611+
# Expecting "You have reached a data limit" 400 server error msg.
612+
assert str(e) == "You have reached a data limit"
605613
got_right_err = True
606614
assert got_right_err
607615

@@ -610,6 +618,9 @@ def test_available_storage_validation(mc):
610618
assert project_info["version"] == "v0"
611619
assert project_info["disk_usage"] == 0
612620

621+
# remove dummy big file from a disk
622+
remove_folders([project_dir])
623+
613624

614625
def test_available_storage_validation2(mc, mc2):
615626
"""
@@ -643,9 +654,14 @@ def test_available_storage_validation2(mc, mc2):
643654
# download project
644655
mc.download_project(test_project_fullname, project_dir)
645656

646-
# get user_info about storage capacity
647-
user_info = mc.user_info()
648-
storage_remaining = user_info["storage"] - user_info["disk_usage"]
657+
# get info about storage capacity
658+
storage_remaining = 0
659+
if mc.server_type() == ServerType.OLD:
660+
user_info = mc.user_info()
661+
storage_remaining = user_info["storage"] - user_info["disk_usage"]
662+
else:
663+
# This test does not make sense in newer servers as quotas are tied to workspaces, not users
664+
return
649665

650666
# generate dummy data (remaining storage + extra 1024b)
651667
dummy_data_path = project_dir + "/data"

0 commit comments

Comments
 (0)