Merge pull request #9616 from nextcloud/zero-quota-fix

Allow 0 quota by provisioning api
This commit is contained in:
John Molakvoæ 2018-06-07 13:54:44 +02:00 committed by GitHub
commit 44c6d22b22
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 29 additions and 20 deletions

View File

@ -174,9 +174,12 @@ abstract class AUserData extends OCSController {
if ($user === null) { if ($user === null) {
throw new OCSException('User does not exist', 101); throw new OCSException('User does not exist', 101);
} }
$quota = OC_Helper::computerFileSize($user->getQuota()); $quota = $user->getQuota();
if ($quota !== 'none') {
$quota = OC_Helper::computerFileSize($quota);
}
$data = [ $data = [
'quota' => $quota ? $quota : 'none', 'quota' => $quota !== false ? $quota : 'none',
'used' => 0 'used' => 0
]; ];
} }

View File

@ -487,9 +487,7 @@ class UsersController extends AUserData {
if ($quota === false) { if ($quota === false) {
throw new OCSException('Invalid quota value '.$value, 103); throw new OCSException('Invalid quota value '.$value, 103);
} }
if ($quota === 0) { if ($quota === -1) {
$quota = 'default';
}else if ($quota === -1) {
$quota = 'none'; $quota = 'none';
} else { } else {
$quota = \OCP\Util::humanFileSize($quota); $quota = \OCP\Util::humanFileSize($quota);

View File

@ -202,7 +202,8 @@ class Quota extends Wrapper {
} }
public function mkdir($path) { public function mkdir($path) {
if ($this->quota === 0.0) { $free = $this->free_space($path);
if ($free === 0.0) {
return false; return false;
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -179,7 +179,7 @@ export default {
} }
return disabledUsers; return disabledUsers;
} }
if (!settings.isAdmin) { if (!this.settings.isAdmin) {
// We don't want subadmins to edit themselves // We don't want subadmins to edit themselves
return this.users.filter(user => user.enabled !== false && user.id !== oc_current_user); return this.users.filter(user => user.enabled !== false && user.id !== oc_current_user);
} }
@ -249,7 +249,7 @@ export default {
validateQuota(quota) { validateQuota(quota) {
// only used for new presets sent through @Tag // only used for new presets sent through @Tag
let validQuota = OC.Util.computerFileSize(quota); let validQuota = OC.Util.computerFileSize(quota);
if (validQuota !== null && validQuota > 0) { if (validQuota !== null && validQuota >= 0) {
// unify format output // unify format output
quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota)); quota = OC.Util.humanFileSize(OC.Util.computerFileSize(quota));
return this.newUser.quota = {id: quota, label: quota}; return this.newUser.quota = {id: quota, label: quota};

View File

@ -175,12 +175,12 @@ export default {
}, },
// Mapping saved values to objects // Mapping saved values to objects
userQuota() { userQuota() {
if (this.user.quota.quota > 0) { if (this.user.quota.quota >= 0) {
// if value is valid, let's map the quotaOptions or return custom quota // if value is valid, let's map the quotaOptions or return custom quota
let humanQuota = OC.Util.humanFileSize(this.user.quota.quota); let humanQuota = OC.Util.humanFileSize(this.user.quota.quota);
let userQuota = this.quotaOptions.find(quota => quota.id === humanQuota); let userQuota = this.quotaOptions.find(quota => quota.id === humanQuota);
return userQuota ? userQuota : {id:humanQuota, label:humanQuota}; return userQuota ? userQuota : {id:humanQuota, label:humanQuota};
} else if (this.user.quota.quota === 0 || this.user.quota.quota === 'default') { } else if (this.user.quota.quota === 'default') {
// default quota is replaced by the proper value on load // default quota is replaced by the proper value on load
return this.quotaOptions[0]; return this.quotaOptions[0];
} }
@ -437,9 +437,7 @@ export default {
validateQuota(quota) { validateQuota(quota) {
// only used for new presets sent through @Tag // only used for new presets sent through @Tag
let validQuota = OC.Util.computerFileSize(quota); let validQuota = OC.Util.computerFileSize(quota);
if (validQuota === 0) { if (validQuota !== null && validQuota >= 0) {
return this.setUserQuota('none');
} else if (validQuota !== null) {
// unify format output // unify format output
return this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota))); return this.setUserQuota(OC.Util.humanFileSize(OC.Util.computerFileSize(quota)));
} }

View File

@ -118,7 +118,7 @@ const mutations = {
setUserData(state, { userid, key, value }) { setUserData(state, { userid, key, value }) {
if (key === 'quota') { if (key === 'quota') {
let humanValue = OC.Util.computerFileSize(value); let humanValue = OC.Util.computerFileSize(value);
state.users.find(user => user.id == userid)[key][key] = humanValue?humanValue:value; state.users.find(user => user.id == userid)[key][key] = humanValue!==null ? humanValue : value;
} else { } else {
state.users.find(user => user.id == userid)[key] = value; state.users.find(user => user.id == userid)[key] = value;
} }

View File

@ -63,8 +63,8 @@ export default {
}, },
data() { data() {
return { return {
// default quota is unlimited // default quota is set to unlimited
unlimitedQuota: {id:'default', label:t('settings', 'Unlimited')}, unlimitedQuota: {id: 'none', label: t('settings', 'Unlimited')},
// temporary value used for multiselect change // temporary value used for multiselect change
selectedQuota: false, selectedQuota: false,
showConfig: { showConfig: {

View File

@ -113,3 +113,12 @@ Feature: users
# When I set the user user0 quota to 1GB # When I set the user user0 quota to 1GB
# And I see that the quota cell for user user0 is done loading # And I see that the quota cell for user user0 is done loading
# Then I see that the user quota of user0 is "1 GB" # Then I see that the user quota of user0 is "1 GB"
# When I set the user user0 quota to Unlimited
# And I see that the quota cell for user user0 is done loading
# Then I see that the user quota of user0 is Unlimited
# When I set the user user0 quota to 0
# And I see that the quota cell for user user0 is done loading
# Then I see that the user quota of user0 is "0 B"
# When I set the user user0 quota to Default
# And I see that the quota cell for user user0 is done loading
# Then I see that the user quota of user0 is "Default quota"