Long email subject, but this might be a long email.

Hello developers!  I'd like to introduce myself, I'm Alan.  And now here's
my situation:

I work for the system administration group in the Math and Computer
Science Division at Argonne Nat'l Lab (www.mcs.anl.gov), near Chicago.  We
have thousands of computers (lots in cluster form) and maybe a thousand
users which fluctuates due to students and collaborators and such.  I'm
generally in charge of the software to keep track of all the user accounts
and making sure the accounts have access to the proper computers.  Also we
provide web access for people to access details of their account,
request access to other computers, and other various tasks we don't want
to have to do for them.  Plus the whole admin side of things, that us in
the sysadmin group can do.

4 years ago or so, when tackling this project, we started working on a
database access layer, which, in the present day, looks VERY similar to
Django.  This was actually done with similar results in Python and PHP.
Python for our command line utilities, and PHP for.. duh.  Besides one
other individual near the beginning, I've been the main designer on it, on
and off (since I've discontinued working here and came back more than
once).  If you want to look at our database access code and object model,
respectively, here you go:

http://www.mcs.anl.gov/~bailey/dbase.py.txt
http://www.mcs.anl.gov/~bailey/userbase.py.txt

Our class for single objects is DBase. and a list of objects is ObjectSet.
You can take a subclass of DBase to define an object, and can define
functions like GetAllUsers (in django: users.get_list()).

It might be vaguely eerie to look at the classes in userbase.py.txt and
see how similar or different they are to Django.  We didn't list all the
fields in the class but just read from the database, but we also have
_editrules and _default which I saw had synonyms in Django.  We have
relation representation as well, with _array_cook for many-many or
one-many relations, and _scalar_cook for foreignkey or one-one.  Those
files are currently from my development directory, so I know I added some
stuff which isn't current.

Anyways, two days ago we discovered Django and thought we had found
heaven.  At least two of us in the group.  I was also disheartened that
all of the work I had put into our DBase project seemed already done here
with Django (along with tons more features... and a bit more polished...
and docs!).  But I've played along with django and have it setup with our
test database here and it's really good.  Of course.

There are some things that we do though, that I don't see in Django.  The
biggest is our logging system, which I really like.  In Django I've
just seen logging in the admin page with the 'History'.  Our setup is that
we have a class LogEntry (actually action_log but i would change it now)
correspding to a table in the db with all of the changes.  Anytime
someone makes a change (through webpages or through cmdline) a changelog
is inserted into the Log table, behind the scenes in the DBase library,
with the fields changed and sometimes a user-provided log message.  Since
it's a DBase object, you can then do a user.GetLog() to see what has
changed with a user's account, or check the log of any other type of
object and also the log of everything changed by a certain user.  This is
a difference in application really, as django was designed for a news site
where things get out of date each day.  But in our world, we need to know
what happened to the user's account in the whole lifetime of the user.

Also in our implementation were triggers.  If a certain field was edited,
this would prompt another change in a field.  Yes, I know triggers are now
in MySQL 5 and always were in PostgreSQL, but that's what we were using.
Similar to that is our 'Push Changes' functionality, for example, if you
change a user's password or their access permissions, this needs to
be enacted in the real world by some UNIXy command line or change of
config file.  So whenever a field was changed it would prompt a certain
cmd to be run.  But hopefully I will use MySQL 5 and implement these in
the DB.

We have authentication in our website that is tied to the user's main
password, which we want to keep.  This brings up two things - Is there a
way to have the admin interface pwcheck based on a different method?  In
our case, NIS.  And having an easy way to slip an authentication page into
Django 'apps' is good.  There might be something like that already.

We also might be needing to access Oracle databases in the near future
(politics and a change of the scope of the project).  We currently don't
do that in our DBase but I spent a while starting to add it.

So finally, after all this blabber, I can tell you I'd be interested in
contributing to Django to maybe get some of these features in there,
specifically the logging and Oracle.  Let me know what you think.  It
would make it much easier to use at our site.

Oh, I almost forgot, because it's essentially an application.  We also
have the equivalent of the Django admin interface in command line form.
We have a program called 'userbase' which sysadmins can do to query
anything about a user or users.  For example:

  userbase -look activeusers -with resources cluster1,cluster2 \
      -with 0 sponsors -query name_first='Alan' -get name_last

That grabs the last names of users that have access to cluster1 and
cluster2 and have 0 sponsors and a first name of Alan.  Good for sysadmins
that need commands to use in scripts or don't like webpages.  -with looks
at relations and -query looks at the fields of the table/object.  And this
program is a wrapper (albeit a big one) over the DBase library.  I'm
currently working on having this work on top of my new Django models.
This could be added into django too, initially as part of 'manage.py' as a
way to look at your objects.

Later!
Alan

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-developers
-~----------~----~----~----~------~----~------~--~---

Reply via email to