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
-~----------~----~----~----~------~----~------~--~---

Reply via email to