Skip to content

Commit ab3a323

Browse files
committed
Add AdminFlagValue
1 parent f40b1c1 commit ab3a323

File tree

7 files changed

+21
-10
lines changed

7 files changed

+21
-10
lines changed

tests/unit/accounts/test_views.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
TokenMissing,
3232
TooManyFailedLogins,
3333
)
34-
from warehouse.admin.flags import AdminFlag
34+
from warehouse.admin.flags import AdminFlag, AdminFlagValue
3535

3636
from ...common.db.accounts import EmailFactory, UserFactory
3737

@@ -903,7 +903,9 @@ def test_register_redirect(self, db_request, monkeypatch):
903903

904904
def test_register_fails_with_admin_flag_set(self, db_request):
905905
# This flag was already set via migration, just need to enable it
906-
flag = db_request.db.query(AdminFlag).get("disallow-new-user-registration")
906+
flag = db_request.db.query(AdminFlag).get(
907+
AdminFlagValue.DISALLOW_NEW_USER_REGISTRATION
908+
)
907909
flag.enabled = True
908910

909911
db_request.method = "POST"

tests/unit/forklift/test_legacy.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from wtforms.form import Form
3232
from wtforms.validators import ValidationError
3333

34-
from warehouse.admin.flags import AdminFlag
34+
from warehouse.admin.flags import AdminFlag, AdminFlagValue
3535
from warehouse.admin.squats import Squat
3636
from warehouse.classifiers.models import Classifier
3737
from warehouse.forklift import legacy
@@ -1118,7 +1118,7 @@ def test_fails_with_stdlib_names(self, pyramid_config, db_request, name):
11181118
def test_fails_with_admin_flag_set(self, pyramid_config, db_request):
11191119
admin_flag = (
11201120
db_request.db.query(AdminFlag)
1121-
.filter(AdminFlag.id == "disallow-new-project-registration")
1121+
.filter(AdminFlag.id == AdminFlagValue.DISALLOW_NEW_PROJECT_REGISTRATION)
11221122
.first()
11231123
)
11241124
admin_flag.enabled = True

tests/unit/test_db.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from sqlalchemy.exc import OperationalError
2525

2626
from warehouse import db
27+
from warehouse.admin.flags import AdminFlagValue
2728
from warehouse.db import (
2829
DEFAULT_ISOLATION,
2930
DatabaseNotAvailable,
@@ -273,7 +274,7 @@ def test_create_session_read_only_mode(
273274
)
274275

275276
assert _create_session(request) is session_obj
276-
assert get.calls == [pretend.call("read-only")]
277+
assert get.calls == [pretend.call(AdminFlagValue.READ_ONLY)]
277278
assert request.tm.doom.calls == doom_calls
278279

279280

warehouse/accounts/views.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
TooManyFailedLogins,
4545
)
4646
from warehouse.accounts.models import Email, User
47+
from warehouse.admin.flags import AdminFlagValue
4748
from warehouse.cache.origin import origin_cache
4849
from warehouse.email import send_email_verification_email, send_password_reset_email
4950
from warehouse.packaging.models import Project, Release
@@ -377,7 +378,7 @@ def register(request, _form_class=RegistrationForm):
377378
if request.method == "POST" and request.POST.get("confirm_form"):
378379
return HTTPSeeOther(request.route_path("index"))
379380

380-
if request.flags.enabled("disallow-new-user-registration"):
381+
if request.flags.enabled(AdminFlagValue.DISALLOW_NEW_USER_REGISTRATION):
381382
request.session.flash(
382383
(
383384
"New user registration temporarily disabled. "

warehouse/admin/flags.py

+6
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@
1515
from warehouse import db
1616

1717

18+
class AdminFlagValue:
19+
DISALLOW_NEW_PROJECT_REGISTRATION = "disallow-new-project-registration"
20+
DISALLOW_NEW_USER_REGISTRATION = "disallow-new-user-registration"
21+
READ_ONLY = "read-only"
22+
23+
1824
class AdminFlag(db.ModelBase):
1925

2026
__tablename__ = "admin_flags"

warehouse/db.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,9 @@ def cleanup(request):
208208
connection.close()
209209

210210
# Check if we're in read-only mode
211-
from warehouse.admin.flags import AdminFlag
211+
from warehouse.admin.flags import AdminFlag, AdminFlagValue
212212

213-
flag = session.query(AdminFlag).get("read-only")
213+
flag = session.query(AdminFlag).get(AdminFlagValue.READ_ONLY)
214214
if flag and flag.enabled and not request.user.is_superuser:
215215
request.tm.doom()
216216

warehouse/forklift/legacy.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
from sqlalchemy.orm.exc import MultipleResultsFound, NoResultFound
4040

4141
from warehouse import forms
42+
from warehouse.admin.flags import AdminFlagValue
4243
from warehouse.admin.squats import Squat
4344
from warehouse.classifiers.models import Classifier
4445
from warehouse.metrics import IMetricsService
@@ -728,7 +729,7 @@ def validate_no_deprecated_classifiers(form, field):
728729
)
729730
def file_upload(request):
730731
# If we're in read-only mode, let upload clients know
731-
if request.flags.enabled("read-only"):
732+
if request.flags.enabled(AdminFlagValue.READ_ONLY):
732733
raise _exc_with_message(
733734
HTTPForbidden, "Read-only mode: Uploads are temporarily disabled"
734735
)
@@ -850,7 +851,7 @@ def file_upload(request):
850851
# Check for AdminFlag set by a PyPI Administrator disabling new project
851852
# registration, reasons for this include Spammers, security
852853
# vulnerabilities, or just wanting to be lazy and not worry ;)
853-
if request.flags.enabled("disallow-new-project-registration"):
854+
if request.flags.enabled(AdminFlagValue.DISALLOW_NEW_PROJECT_REGISTRATION):
854855
raise _exc_with_message(
855856
HTTPForbidden,
856857
(

0 commit comments

Comments
 (0)