Skip to content
Snippets Groups Projects
Commit 27ada00b authored by frekk's avatar frekk
Browse files

add some simple and placeholder management commands

including a hook for ucc-adduser-ad to update MemberDB with usernames
and a script to mark users in MemberDB as having accounts based on
actual lists of users from AD.
parent e5d6ab1b
No related merge requests found
from django.core.management.base import BaseCommand, CommandError
from datetime import datetime
class Command(BaseCommand):
help = 'Locks unpaid accounts for the current year'
def add_arguments(self, parser):
parser.add_argument('year', nargs='?', type=int, default=datetime.now().year)
def handle(self, *args, **options):
self.stdout.write(self.style.SUCCESS('Not implemented: locking accounts for year %d' % options['year']))
\ No newline at end of file
from django.core.management.base import BaseCommand, CommandError
from memberdb.models import Member, Membership
import sys
class Command(BaseCommand):
help = 'Hook to be called by `ucc-adduser-ad` to make sure usernames are properly matched with new accounts'
def add_arguments(self, parser):
# usage: manage.py ucc-adduser-hook <member-id> <username>
parser.add_argument('memberid', nargs=1, type=int)
parser.add_argument('username', nargs=1)
def handle(self, *args, **options):
mid = options['memberid'][0]
username = options['username'][0]
self.stdout.write('Updating Member record id %d for new user %s' % (mid, username))
try:
m = Member.objects.get(id=mid)
self.stdout.write('Found Member record: %s' % str(m))
if m.memberships.count() > 1:
self.stdout.write('Suspicious: given member id has multiple renewal records')
if m.username is not None and m.username == username:
self.stdout.write('Congrats! Username was already correct!')
return
else:
# update username
m.username = username
m.save()
except Member.DoesNotExist:
# exit with error code
sys.exit(1)
from django.core.management.base import BaseCommand, CommandError
from memberdb.models import Member, Membership
from memberdb.account_backend import enumerate_users
import sys
class Command(BaseCommand):
"""
try to keep the database in sync with AD, make sure Member records are more or less correct
when it comes to the existence of a user account in AD
"""
help = 'Search for users in LDAP and mark Member records as having accounts if usernames match'
def add_arguments(self, parser):
pass
def handle(self, *args, **options):
self.stderr.write("Enumerating users...")
users = enumerate_users()
num_updated = 0
for u in users:
try:
m = Member.objects.get(username=u)
# clean the member tokens and mark as having an account
m.login_token = None
m.has_account = True
num_updated += 1
self.stdout.write("updated user %s: has Member record" % u)
m.save()
except Member.MultipleObjectsReturned:
pass
except Member.DoesNotExist:
pass
self.stderr.write("Done, got %d users total, %d updated" % (len(users), num_updated))
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment