On Sat, May 2, 2009 at 11:09 AM, Jeff <google.el...@mamber.net> wrote: > > I'm using Django's authentication. I would like to add several users > through a command-line script (not through code executed via the > website). Something like manage.py createsuperuser but for normal > users and not interactive. I want to be able to put code like this in > a script I can run offline like manage.py: > >>>> from django.contrib.auth.models import User >>>> User.objects.create_user('john', 'len...@thebeatles.com', 'johnpassword') > > ...but I don't know what needs to go above that code to set up the > environment to make it work. I've started looking into how manage.py > works, but I'm getting lost in Django internals. I'd rather not > fiddle with the database manually, since I'm not sure I know > everything I'd need to touch to keep it consistent. > > Any ideas? How do I set up the environment of a Django app offline, > in a simple command line script so that Users (or other parts of the > db) can be modified without running through a web server? >
Here is some code from my mygrate.py program - it should be all you need, let me know (cc me, cuz I don't monitor this list) if you need more. # Create django Admin's def mkAdmin( name, pw ): print name, pw user = User.objects.create_user( name.lower(), 't...@example.com', pw ) # User.objects.create_user('john', 'len...@thebeatles.com', 'johnpassword') user.first_name=name user.is_superuser=True user.is_staff=True user.date_joined=datetime.datetime.today() user.last_login=datetime.datetime.today() profile = UserProfile.objects.create(user=user, datejoined=datetime.datetime(2008,1,1) ) user.save() profile.save() # bunch of accounts for the QA squad # mkAdmin('user1','pass1') # mkAdmin('user4','pass3') mkAdmin('Carl','foo') mkAdmin('Sheila','foo') mkAdmin('Tim','foo') # Create django Users # select MemberNumber, # Surname, `Given name`, `Familiar Name`, # `Email Address`, UserID, UserPassword, Telephone cSql=""" select * from RidgeMoorJonas.Member where UserID is not null and MemberNumber not in ( '271', '139', '139A', '287', '0558', '0185', '0319', '0599', '0754', '388' ) and `Date Joined` is not null limit 3000 """ cur.execute(cSql) # members = cur.fetchall() # for member in members: for member in cur: print member # for member in cur.fetchone(): email = member['Email Address'] or "buc...@ridgemoorcc.com" user = User.objects.create_user( member['UserID'], email, member['UserPassword<<>>'] ) user.last_login=datetime.datetime(2005,1,1,0,0,0) user.date_joined=datetime.datetime(2005,1,1,0,0,0) # flip some field names around maps = { 'first_name':'Given name', 'given_name':'Given name', 'givenname':'Given name', 'last_name':'Surname', 'familiarname':'Familiar Name', 'postalcode':'Postal Code', 'datejoined':'Date Joined' } # for map in maps: # member[map]=member[maps[map]] # now lower all the fids for f in member.keys(): # member[f.lower()]=member[f] maps[f.lower()]=f user.first_name=member['Given name'] user.last_name = member['Surname'] # if user.username=='LS0696': # # Make Larry staff so I can assign things to him :) # user.is_staff=True # print "Larry is staff!" # print user.id print member['Date Joined'] member['Date Joined'] = parse(member['Date Joined']) profile = UserProfile.objects.create(user=user, datejoined=member['Date Joined'] ) if member['Birthdate'] == datetime.datetime(1853, 5, 11, 0, 0): member['Birthdate'] = datetime.datetime(1953, 5, 11, 0, 0) if ' ' in member['Given name']: member['middlename']=member['Given name'].split(' ')[-1] for f in profile.__dict__: if f not in ['id','misc_info','user_id', 'nicname', 'middlename', 'picture' ]: # print f,maps[f], member[maps[f]] val= member[maps[f]] print f,maps[f],val if "date" not in f and val is None: val='' profile.__setattr__(f,val) # profile.append(member) # profile.phone_number=member['Telephone'] user.save() profile.save() -- Carl K --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---