On Sat, May 2, 2009 at 11:09 AM, Jeff <[email protected]> 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', '[email protected]', '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(), '[email protected]', pw )
# User.objects.create_user('john', '[email protected]', '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 "[email protected]"
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---