Skip to content

Commit 0819d56

Browse files
oiokicursoragent
andauthored
ref(web): remove unused form field classes from sentry.web.forms.fields (#108326)
## Summary Remove dead code from `sentry.web.forms.fields`: `ReadOnlyTextWidget`, `ReadOnlyTextField`, and `UserField`. ## Why these are safe to delete - **ReadOnlyTextWidget** and **ReadOnlyTextField**: Added in commit c5f224a (Aug 2014, "Implement managed users feature") for read-only fields on managed users. Last used in `AccountSettingsForm` in `web/forms/accounts.py` (managed users' username/email/name). That usage was removed in commit **90d1d243fc4** (Jul 14, 2020, "chore(frontend): Remove unused django forms" #19873). The admin `ChangeUserForm` usage was removed in a031b32 (Jul 2019) when the user edit page was converted to React. No references remain in Sentry or getsentry. - **UserField** (Django form field): Last used in `web/forms/teams.py` in `NewAccessGroupMemberForm` (`user = UserField()`). That file was removed in commit **8d0505ac3b8** (Jun 3, 2015, "Remove usage of AccessGroup"), so this field has been unused for ~10 years. The `UserField` that remains in use is the DRF serializer in `sentry.api.fields.user` (e.g. release owner field); it is unchanged. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent d9e7760 commit 0819d56

File tree

1 file changed

+1
-47
lines changed

1 file changed

+1
-47
lines changed

src/sentry/web/forms/fields.py

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
1-
from django.forms import CharField, EmailField, Field, TypedChoiceField, ValidationError
2-
from django.forms.utils import flatatt
3-
from django.forms.widgets import TextInput, Widget
4-
from django.utils.html import format_html
5-
from django.utils.safestring import mark_safe
1+
from django.forms import EmailField, TypedChoiceField, ValidationError
62
from django.utils.translation import gettext_lazy as _
73

8-
from sentry.users.models.user import User
94
from sentry.utils.email.address import is_valid_email_address
105

116

@@ -28,47 +23,6 @@ def validate(self, value):
2823
)
2924

3025

31-
class UserField(CharField):
32-
class widget(TextInput):
33-
def render(self, name, value, attrs=None, renderer=None):
34-
if not attrs:
35-
attrs = {}
36-
attrs.setdefault("placeholder", "username")
37-
if isinstance(value, int):
38-
value = User.objects.get(id=value).username
39-
return super().render(name, value, attrs=attrs, renderer=renderer)
40-
41-
def clean(self, value):
42-
value = super().clean(value)
43-
if not value:
44-
return None
45-
try:
46-
return User.objects.get(username=value, is_active=True)
47-
except User.DoesNotExist:
48-
raise ValidationError(_("Invalid username"))
49-
50-
51-
class ReadOnlyTextWidget(Widget):
52-
def render(self, name, value, attrs=None, renderer=None):
53-
final_attrs = self.build_attrs(attrs)
54-
if not value:
55-
value = mark_safe("<em>%s</em>" % _("Not set"))
56-
return format_html("<div{0}>{1}</div>", flatatt(final_attrs), value)
57-
58-
59-
class ReadOnlyTextField(Field):
60-
widget = ReadOnlyTextWidget
61-
62-
def __init__(self, *args, **kwargs):
63-
kwargs.setdefault("required", False)
64-
super().__init__(*args, **kwargs)
65-
66-
def bound_data(self, data, initial):
67-
# Always return initial because the widget doesn't
68-
# render an input field.
69-
return initial
70-
71-
7226
def email_address_validator(value):
7327
if not is_valid_email_address(value):
7428
raise ValidationError(_("Enter a valid email address."), code="invalid")

0 commit comments

Comments
 (0)