Skip to content

Commit 3caeb84

Browse files
committed
fix: #558 Add Nick Name field into account settings
1 parent debdd9e commit 3caeb84

File tree

10 files changed

+414
-2
lines changed

10 files changed

+414
-2
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ local/
3232
.vscode/tasks.json
3333
.vscode/extensions.json
3434

35+
.gnupg
36+
.ssh
37+
.vscode-server
3538

3639
# Generated by Docker development containers
3740
build/

src/pretix/base/forms/user.py

+5
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,14 @@ class Meta:
4646
model = User
4747
fields = [
4848
'fullname',
49+
'wikimedia_username',
4950
'locale',
5051
'timezone',
5152
'email'
5253
]
54+
labels = {
55+
'wikimedia_username': 'Nick name',
56+
}
5357
widgets = {
5458
'locale': SingleLanguageWidget
5559
}
@@ -58,6 +62,7 @@ def __init__(self, *args, **kwargs):
5862
self.user = kwargs.pop('user')
5963
super().__init__(*args, **kwargs)
6064
self.fields['email'].required = True
65+
self.fields['wikimedia_username'].widget.attrs['readonly'] = True
6166
if self.user.auth_backend != 'native':
6267
del self.fields['old_pw']
6368
del self.fields['new_pw']
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,313 @@
1+
# Generated by Django 5.1.7 on 2025-03-15 09:17
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('pretixbase', '0008_cartposition_job_title_orderposition_job_title'),
10+
]
11+
12+
operations = [
13+
migrations.AddField(
14+
model_name='user',
15+
name='wikimedia_username',
16+
field=models.CharField(max_length=255, null=True),
17+
),
18+
migrations.AlterField(
19+
model_name='cachedcombinedticket',
20+
name='id',
21+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
22+
),
23+
migrations.AlterField(
24+
model_name='cachedticket',
25+
name='id',
26+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
27+
),
28+
migrations.AlterField(
29+
model_name='cancellationrequest',
30+
name='id',
31+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
32+
),
33+
migrations.AlterField(
34+
model_name='cartposition',
35+
name='id',
36+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
37+
),
38+
migrations.AlterField(
39+
model_name='checkin',
40+
name='id',
41+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
42+
),
43+
migrations.AlterField(
44+
model_name='checkinlist',
45+
name='id',
46+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
47+
),
48+
migrations.AlterField(
49+
model_name='device',
50+
name='id',
51+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
52+
),
53+
migrations.AlterField(
54+
model_name='event',
55+
name='id',
56+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
57+
),
58+
migrations.AlterField(
59+
model_name='event_settingsstore',
60+
name='id',
61+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
62+
),
63+
migrations.AlterField(
64+
model_name='eventmetaproperty',
65+
name='id',
66+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
67+
),
68+
migrations.AlterField(
69+
model_name='eventmetavalue',
70+
name='id',
71+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
72+
),
73+
migrations.AlterField(
74+
model_name='gate',
75+
name='id',
76+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
77+
),
78+
migrations.AlterField(
79+
model_name='giftcard',
80+
name='id',
81+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
82+
),
83+
migrations.AlterField(
84+
model_name='giftcardacceptance',
85+
name='id',
86+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
87+
),
88+
migrations.AlterField(
89+
model_name='giftcardtransaction',
90+
name='id',
91+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
92+
),
93+
migrations.AlterField(
94+
model_name='globalsettingsobject_settingsstore',
95+
name='id',
96+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
97+
),
98+
migrations.AlterField(
99+
model_name='invoice',
100+
name='id',
101+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
102+
),
103+
migrations.AlterField(
104+
model_name='invoiceaddress',
105+
name='id',
106+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
107+
),
108+
migrations.AlterField(
109+
model_name='invoiceline',
110+
name='id',
111+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
112+
),
113+
migrations.AlterField(
114+
model_name='item',
115+
name='id',
116+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
117+
),
118+
migrations.AlterField(
119+
model_name='itemaddon',
120+
name='id',
121+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
122+
),
123+
migrations.AlterField(
124+
model_name='itembundle',
125+
name='id',
126+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
127+
),
128+
migrations.AlterField(
129+
model_name='itemcategory',
130+
name='id',
131+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
132+
),
133+
migrations.AlterField(
134+
model_name='itemmetaproperty',
135+
name='id',
136+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
137+
),
138+
migrations.AlterField(
139+
model_name='itemmetavalue',
140+
name='id',
141+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
142+
),
143+
migrations.AlterField(
144+
model_name='itemvariation',
145+
name='id',
146+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
147+
),
148+
migrations.AlterField(
149+
model_name='logentry',
150+
name='id',
151+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
152+
),
153+
migrations.AlterField(
154+
model_name='notificationsetting',
155+
name='id',
156+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
157+
),
158+
migrations.AlterField(
159+
model_name='order',
160+
name='id',
161+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
162+
),
163+
migrations.AlterField(
164+
model_name='orderfee',
165+
name='id',
166+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
167+
),
168+
migrations.AlterField(
169+
model_name='orderpayment',
170+
name='id',
171+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
172+
),
173+
migrations.AlterField(
174+
model_name='orderposition',
175+
name='id',
176+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
177+
),
178+
migrations.AlterField(
179+
model_name='orderrefund',
180+
name='id',
181+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
182+
),
183+
migrations.AlterField(
184+
model_name='organizer',
185+
name='id',
186+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
187+
),
188+
migrations.AlterField(
189+
model_name='organizer_settingsstore',
190+
name='id',
191+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
192+
),
193+
migrations.AlterField(
194+
model_name='question',
195+
name='id',
196+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
197+
),
198+
migrations.AlterField(
199+
model_name='questionanswer',
200+
name='id',
201+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
202+
),
203+
migrations.AlterField(
204+
model_name='questionoption',
205+
name='id',
206+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
207+
),
208+
migrations.AlterField(
209+
model_name='quota',
210+
name='id',
211+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
212+
),
213+
migrations.AlterField(
214+
model_name='requiredaction',
215+
name='id',
216+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
217+
),
218+
migrations.AlterField(
219+
model_name='revokedticketsecret',
220+
name='id',
221+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
222+
),
223+
migrations.AlterField(
224+
model_name='seat',
225+
name='id',
226+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
227+
),
228+
migrations.AlterField(
229+
model_name='seatcategorymapping',
230+
name='id',
231+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
232+
),
233+
migrations.AlterField(
234+
model_name='seatingplan',
235+
name='id',
236+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
237+
),
238+
migrations.AlterField(
239+
model_name='staffsession',
240+
name='id',
241+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
242+
),
243+
migrations.AlterField(
244+
model_name='staffsessionauditlog',
245+
name='id',
246+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
247+
),
248+
migrations.AlterField(
249+
model_name='subevent',
250+
name='id',
251+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
252+
),
253+
migrations.AlterField(
254+
model_name='subeventitem',
255+
name='id',
256+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
257+
),
258+
migrations.AlterField(
259+
model_name='subeventitemvariation',
260+
name='id',
261+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
262+
),
263+
migrations.AlterField(
264+
model_name='subeventmetavalue',
265+
name='id',
266+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
267+
),
268+
migrations.AlterField(
269+
model_name='taxrule',
270+
name='id',
271+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
272+
),
273+
migrations.AlterField(
274+
model_name='team',
275+
name='id',
276+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
277+
),
278+
migrations.AlterField(
279+
model_name='teamapitoken',
280+
name='id',
281+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
282+
),
283+
migrations.AlterField(
284+
model_name='teaminvite',
285+
name='id',
286+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
287+
),
288+
migrations.AlterField(
289+
model_name='u2fdevice',
290+
name='id',
291+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
292+
),
293+
migrations.AlterField(
294+
model_name='user',
295+
name='id',
296+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
297+
),
298+
migrations.AlterField(
299+
model_name='voucher',
300+
name='id',
301+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
302+
),
303+
migrations.AlterField(
304+
model_name='waitinglistentry',
305+
name='id',
306+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
307+
),
308+
migrations.AlterField(
309+
model_name='webauthndevice',
310+
name='id',
311+
field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False),
312+
),
313+
]

src/pretix/base/models/auth.py

+5
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ class User(AbstractBaseUser, PermissionsMixin, LoggingMixin):
8787
verbose_name=_('E-mail'), max_length=190)
8888
fullname = models.CharField(max_length=255, blank=True, null=True,
8989
verbose_name=_('Full name'))
90+
wikimedia_username = models.CharField(max_length=255, blank=True, null=True,
91+
verbose_name=('Wikimedia username'))
9092
is_active = models.BooleanField(default=True,
9193
verbose_name=_('Is active'))
9294
is_staff = models.BooleanField(default=False,
@@ -162,10 +164,13 @@ def get_full_name(self) -> str:
162164
Returns the first of the following user properties that is found to exist:
163165
164166
* Full name
167+
* wikimedia_username
165168
* Email address
166169
"""
167170
if self.fullname:
168171
return self.fullname
172+
elif self.wikimedia_username:
173+
return self.wikimedia_username
169174
else:
170175
return self.email
171176

src/pretix/control/templates/pretixcontrol/user/settings.html

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ <h1>{% trans "Account settings" %}</h1>
1010
<fieldset>
1111
<legend>{% trans "General settings" %}</legend>
1212
{% bootstrap_field form.fullname layout='horizontal' %}
13+
{% bootstrap_field form.wikimedia_username layout='horizontal' readonly='readonly' %}
1314
{% bootstrap_field form.locale layout='horizontal' %}
1415
{% bootstrap_field form.timezone layout='horizontal' %}
1516
<div class="form-group">

src/pretix/eventyay_common/templates/eventyay_common/account/settings.html

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ <h1>{% trans "Account settings" %}</h1>
1010
<fieldset>
1111
<legend>{% trans "General settings" %}</legend>
1212
{% bootstrap_field form.fullname layout='horizontal' %}
13+
{% bootstrap_field form.wikimedia_username layout='horizontal' readonly='readonly' %}
1314
{% bootstrap_field form.locale layout='horizontal' %}
1415
{% bootstrap_field form.timezone layout='horizontal' %}
1516
<div class="form-group">

0 commit comments

Comments
 (0)