hosein
hosein

Reputation: 519

django bulk user import user django-import-export

i want use import export to bulk user import in django

i get a file include list of users then create users according to file rows

i try implement before_import like this

from import_export import resources
class UserResource(resources.ModelResource):
    def before_import(self,dataset, dry_run, **kwargs):
        #dataset is  tablib.Dataset()
        for i in dataset:
            i[1]=make_password(i[1])
        return super(UserResource, self).before_import(dataset, dry_run, **kwargs)

but it return tuple' object does not support item assignment

Upvotes: 0

Views: 1085

Answers (2)

PNR
PNR

Reputation: 119

I hope you are trying to hash your password before importing. it helps you:

    from import_export import resources, fields
    from import_export.admin import ImportExportModelAdmin
    from django.contrib.auth.hashers import make_password

    class UserResource(resources.ModelResource):

       groups = fields.Field(
           column_name='group_name',
           attribute='groups',
           widget=ManyToManyWidget(Group, ',','name')
       )
       def before_import_row(self,row, **kwargs):
           value = row['password']
           row['password'] = make_password(value)
       class Meta:
           model = User

Upvotes: 0

Dr.Ü
Dr.Ü

Reputation: 121

For Passwords you could write your own password widget, which turns the plain password into a hash. Like this (untested):

class PassWidget(Widget):
    def clean(self, value):
        if self.is_empty(value):
            return None
        return make_password(value)
    def render(self, value):
        return force_text(value)

Upvotes: 1

Related Questions