200 self.fields['role'] = role_field |
200 self.fields['role'] = role_field |
201 |
201 |
202 class UserProfileForm(ModelForm): |
202 class UserProfileForm(ModelForm): |
203 class Meta: |
203 class Meta: |
204 model = UserProfile |
204 model = UserProfile |
205 fields = ('allow_contact', 'preferred_language', 'is_suspended', 'tags') |
205 fields = ('is_suspended', 'tags') |
206 |
206 |
207 class MyUserProfileForm(ModelForm): |
207 class MyUserProfileForm(ModelForm): |
208 class Meta: |
208 class Meta: |
209 model = UserProfile |
209 model = UserProfile |
210 fields = ('allow_contact', 'preferred_language', 'tags') |
210 fields = ('tags',) |
211 |
211 |
212 class UserProfileAddForm(ModelForm): |
212 class UserProfileAddForm(ModelForm): |
213 class Meta: |
213 class Meta: |
214 model = UserProfile |
214 model = UserProfile |
215 fields = ('preferred_language', 'tags') |
215 fields = ('tags',) |
216 |
216 |
217 class UserProfileRegisterForm(ModelForm): |
217 class UserProfileRegisterForm(ModelForm): |
218 class Meta: |
218 class Meta: |
219 model = UserProfile |
219 model = UserProfile |
220 fields = ('preferred_language', ) |
|
221 |
220 |
222 class UserAddForm(forms.Form): |
221 class UserAddForm(forms.Form): |
223 note = forms.CharField(label=ugettext_lazy(u'Note'), |
222 note = forms.CharField(label=ugettext_lazy(u'Note'), |
224 help_text=ugettext_lazy(u'Optional text to add to invitation email'), |
223 help_text=ugettext_lazy(u'Optional text to add to invitation email'), |
225 widget=forms.Textarea, |
224 widget=forms.Textarea, |
226 required=False) |
225 required=False) |
227 |
226 |
228 |
227 |
229 SEPARATORS_RE = re.compile('[;,\n]+') |
228 SEPARATORS_RE = re.compile('[;,\n]+') |
230 |
229 |
231 @has_global_perm('can_manage_workspace') |
230 @has_global_perm_or_perm_on_text('can_manage_workspace', 'can_manage_text') |
232 def user_mass_add(request, key=None): |
231 def user_mass_add(request, key=None): |
233 return user_add(request, key=key, mass=True) |
232 return user_add(request, key=key, mass=True) |
234 |
233 |
235 @has_global_perm('can_manage_workspace') |
234 @has_global_perm_or_perm_on_text('can_manage_workspace', 'can_manage_text') |
236 def user_add(request, key=None, mass=False): |
235 def user_add(request, key=None, mass=False): |
237 text = get_text_by_keys_or_404(key) if key else None |
236 text = get_text_by_keys_or_404(key) if key else None |
238 if request.method == 'POST': |
237 if request.method == 'POST': |
239 userform = UserForm(request.POST) if not mass else MassUserForm(request.POST) |
238 userform = UserForm(request.POST) if not mass else MassUserForm(request.POST) |
240 userroleform = UserRoleForm(request.POST) |
239 userroleform = UserRoleForm(request.POST) if not(key) else None |
241 noteform = UserAddForm(request.POST) |
240 noteform = UserAddForm(request.POST) |
242 userprofileform = UserProfileAddForm(request.POST) |
241 userprofileform = UserProfileAddForm(request.POST) |
243 localroleform = UserRoleTextForm(request.POST, prefix="local") if key else None |
242 localroleform = UserRoleTextForm(request.POST, prefix="local") if key else None |
244 if userform.is_valid() and userroleform.is_valid() and noteform.is_valid() and userprofileform.is_valid() and (not localroleform or localroleform.is_valid()): |
243 if userform.is_valid() and (not userroleform or userroleform.is_valid()) and noteform.is_valid() and userprofileform.is_valid() and (not localroleform or localroleform.is_valid()): |
245 data = userform.cleaned_data |
244 data = userform.cleaned_data |
246 data.update(userprofileform.cleaned_data) |
245 data.update(userprofileform.cleaned_data) |
247 data.update(noteform.cleaned_data) |
246 data.update(noteform.cleaned_data) |
248 emails = data['email'] |
247 emails = data['email'] |
249 del data['email'] |
248 del data['email'] |
250 email_created = set() |
249 email_created = set() |
251 for email in [s.strip() for s in SEPARATORS_RE.split(emails)]: |
250 for email in [s.strip() for s in SEPARATORS_RE.split(emails)]: |
252 if email and not User.objects.filter(email__iexact=email) and email not in email_created: |
251 if email and not User.objects.filter(email__iexact=email) and email not in email_created: |
253 user = UserProfile.objects.create_inactive_user(email, True, **data) |
252 user = UserProfile.objects.create_inactive_user(email, True, **data) |
254 userrole = UserRole.objects.create(user=user, role=userroleform.cleaned_data['role'], text=None) |
|
255 if key: |
253 if key: |
256 localuserrole = UserRole.objects.create(user=user, role=localroleform.cleaned_data['role'], text=text) |
254 localuserrole = UserRole.objects.create(user=user, role=localroleform.cleaned_data['role'], text=text) |
|
255 else: |
|
256 userrole = UserRole.objects.create(user=user, role=userroleform.cleaned_data['role'], text=None) |
257 email_created.add(email) |
257 email_created.add(email) |
258 register_activity(request, "user_created", user=user) |
258 register_activity(request, "user_created", user=user) |
259 display_message(request, ungettext(u'%(nb_users)d user added', u'%(nb_users)d users added', len(email_created)) % {'nb_users': len(email_created)}) |
259 display_message(request, ungettext(u'%(nb_users)d user added', u'%(nb_users)d users added', len(email_created)) % {'nb_users': len(email_created)}) |
260 if key: |
260 if key: |
261 return HttpResponseRedirect(reverse('text-share', args=[text.key])) |
261 return HttpResponseRedirect(reverse('text-share', args=[text.key])) |
262 else: |
262 else: |
263 return HttpResponseRedirect(reverse('user')) |
263 return HttpResponseRedirect(reverse('user')) |
264 else: |
264 else: |
265 userform = UserForm() if not mass else MassUserForm() |
265 userform = UserForm() if not mass else MassUserForm() |
266 userroleform = UserRoleForm() |
266 userroleform = UserRoleForm() if not(key) else None |
267 userprofileform = UserProfileAddForm({'preferred_language' : request.LANGUAGE_CODE}) |
267 userprofileform = UserProfileAddForm() |
268 noteform = UserAddForm() |
268 noteform = UserAddForm() |
269 localroleform = UserRoleTextForm(prefix="local") if key else None |
269 localroleform = UserRoleTextForm(prefix="local") if key else None |
270 |
270 |
271 if key: |
271 if key: |
272 template = 'site/user_mass_add_text.html' if mass else 'site/user_add_text.html' |
272 template = 'site/user_mass_add_text.html' if mass else 'site/user_add_text.html' |