Sounds cool. Thanks for the tip!

David

Am Montag, 5. Juli 2010, 23:19:55 schrieb Christian Hammond:
> Hi David,
> 
> In Review Board 1.5, you can actually write custom management commands,
> which would make it much easier to run this script. To do this, you create
> a "commands" directory in your site directory and put the file in there as
> "mycommandname.py".
> 
> The command would need to follow the standard Django management command
> format, described here:
> 
> http://docs.djangoproject.com/en/dev/howto/custom-management-commands/
> 
> Yours looks to be simple, as it doesn't require parameters, so you could
> do:
> 
>     from django.core.management.base import NoArgsCommand
> 
>     class Command(NoArgsCommand):
>         def handle_noargs(self, **options):
>             # All your existing logic below goes here
> 
> Then to run it: rb-site manage /path/to/site mycommandname
> 
> Christian
> 
> > Hi,
> > 
> > a while ago I asked in this mailing list how to delete the accounts of
> > 'fake
> > users' or spam accounts in a public reviewboard instance.
> > 
> > Today I managed to do it via a little script that can be run from a
> > python console. Maybe it can help some of you to do the same. The script
> > walks over
> > all users in the database and deletes all users who have never done
> > anything
> > else in reviewboard but registering and visiting a review.
> > 
> > So every user who is associated to at least one ReviewComment or some
> > other meaningful object in the database is spared.
> > 
> > Here is the script:
> > 
> > # -*- coding: utf-8 -*-
> > 
> > from django.contrib.auth.models import User
> > from django.db.models.query_utils import CollectedObjects
> > 
> > spam = 0
> > ham = 0
> > 
> > for user in User.objects.all():
> >  print "User: %s ..." % user,
> >  isactive = False
> >  seen_objs = None
> >  seen_objs = CollectedObjects(seen_objs)
> >  user._collect_sub_objects(seen_objs)
> >  
> >  for obj in seen_objs.keys():
> >    if (obj.__name__ != "Profile") and (obj.__name__ !=
> > 
> > "ReviewRequestVisit"):
> >      isactive = True
> >      break
> >  
> >  if (isactive):
> >    print "Active (found associated %s)" % obj
> >    ham = ham + 1
> >  
> >  else:
> >    spam = spam + 1
> >    #user.delete()
> >    print "DELETED"
> > 
> > print "Total HAM  %d" % ham
> > print "Total SPAM %d" % spam
> > 
> > 
> > You can simply run it by typing
> > 
> > rb-site manage /path/to/site shell
> > 
> > and then pasting the script above. (make sure you have a backup of you
> > database!)
> > 
> > Cheers,
> > 
> > David
> > 
> > PS: note that I commented the line that actually does the deletion, so
> > you can
> > do a dry run  before
> > 
> > --
> > Want to help the Review Board project? Donate today at
> > http://www.reviewboard.org/donate/
> > Happy user? Let us know at http://www.reviewboard.org/users/
> > -~----------~----~----~----~------~----~------~--~---
> > To unsubscribe from this group, send email to
> > reviewboard+unsubscr...@googlegroups.com<reviewboard%2bunsubscr...@google
> > groups.com> For more options, visit this group at
> > http://groups.google.com/group/reviewboard?hl=en

-- 
Want to help the Review Board project? Donate today at 
http://www.reviewboard.org/donate/
Happy user? Let us know at http://www.reviewboard.org/users/
-~----------~----~----~----~------~----~------~--~---
To unsubscribe from this group, send email to 
reviewboard+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/reviewboard?hl=en

Reply via email to