bulk_import.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from django import forms
  2. from django.utils.translation import gettext as _
  3. from users.choices import TokenVersionChoices
  4. from users.models import *
  5. from utilities.forms import CSVModelForm
  6. from utilities.forms.fields import CSVModelChoiceField, CSVModelMultipleChoiceField
  7. __all__ = (
  8. 'GroupImportForm',
  9. 'OwnerGroupImportForm',
  10. 'OwnerImportForm',
  11. 'TokenImportForm',
  12. 'UserImportForm',
  13. )
  14. class GroupImportForm(CSVModelForm):
  15. class Meta:
  16. model = Group
  17. fields = ('name', 'description')
  18. class UserImportForm(CSVModelForm):
  19. class Meta:
  20. model = User
  21. fields = (
  22. 'username', 'first_name', 'last_name', 'email', 'password', 'is_active', 'is_superuser'
  23. )
  24. def save(self, *args, **kwargs):
  25. # Set the hashed password
  26. self.instance.set_password(self.cleaned_data.get('password'))
  27. return super().save(*args, **kwargs)
  28. class TokenImportForm(CSVModelForm):
  29. version = forms.ChoiceField(
  30. choices=TokenVersionChoices,
  31. initial=TokenVersionChoices.V2,
  32. required=False,
  33. help_text=_("Specify version 1 or 2 (v2 will be used by default)")
  34. )
  35. token = forms.CharField(
  36. label=_('Token'),
  37. required=False,
  38. help_text=_("If no token is provided, one will be generated automatically.")
  39. )
  40. class Meta:
  41. model = Token
  42. fields = ('user', 'version', 'token', 'enabled', 'write_enabled', 'expires', 'description',)
  43. class OwnerGroupImportForm(CSVModelForm):
  44. class Meta:
  45. model = OwnerGroup
  46. fields = (
  47. 'name', 'description',
  48. )
  49. class OwnerImportForm(CSVModelForm):
  50. group = CSVModelChoiceField(
  51. queryset=OwnerGroup.objects.all(),
  52. required=False,
  53. to_field_name='name',
  54. )
  55. user_groups = CSVModelMultipleChoiceField(
  56. queryset=Group.objects.all(),
  57. required=False,
  58. to_field_name='name',
  59. )
  60. users = CSVModelMultipleChoiceField(
  61. queryset=User.objects.all(),
  62. required=False,
  63. to_field_name='username',
  64. )
  65. class Meta:
  66. model = Owner
  67. fields = (
  68. 'group', 'name', 'description', 'user_groups', 'users',
  69. )