def handle(self, *args, **options): if len(args) != 1: raise CommandError( 'Please specify the path to your TIM data directory') dbname = settings.DATABASES['default']['NAME'] if not confirm("Gonna reset your database (%s).\nAre you sure (y/n) ?" % dbname): raise CommandError("User abort.") options.update(interactive=False) dblogger.info("Lino initdb_tim started on database %s." % dbname) dblogger.info(lino.welcome_text()) apps = app_labels() call_command('reset', *apps, **options) #~ call_command('reset', #~ 'contacts','pcsw','countries','auth','notes', #~ 'countries','links','uploads', #~ interactive=False) call_command('syncdb', **options) #~ NoteType = resolve_model('notes.NoteType') #~ n = NoteType.objects.all().count() #~ assert n == 21, 'NoteType.objects.all().count() == %d (expected 21)' % n #~ lino_site.initdb() #~ for o in tim_fixture_objects(): #~ o.save() #~ logger.info('lino_site.fill() done. Starting load_tim_data()...') load_tim_data(args[0]) dblogger.info("Lino initdb_tim done on database %s." % dbname)
def handle(self, *args, **options): dbname = settings.DATABASES['default']['NAME'] if options.get('interactive'): if not confirm("This is going to GARBLE your database (%s).\nAre you sure (y/n) ?" % dbname): raise CommandError("User abort.") contacts = dd.resolve_app('contacts') User = dd.resolve_model(settings.SITE.user_model) Person = dd.resolve_model('contacts.Person') Household = dd.resolve_model('households.Household') Member = dd.resolve_model('households.Member') Role = dd.resolve_model('households.Role') Country = dd.resolve_model('countries.Country') for p in Person.objects.order_by('id'): if User.objects.filter(partner=p).count() > 0: # users keep their original name pass else: p.nationality = Country.objects.get( isocode=NATIONALITIES.pop()) p.last_name = LAST_NAMES.pop() if p.gender == dd.Genders.male: p.first_name = MALES.pop() FEMALES.pop() else: p.first_name = FEMALES.pop() MALES.pop() #~ dblogger.log_changes(REQUEST,p) p.name = join_words(p.last_name, p.first_name) p.save() dblogger.info("%s from %s", unicode(p), unicode(p.nationality)) MEN = Cycler(Person.objects.filter(gender=dd.Genders.male) .order_by('id')) WOMEN = Cycler( Person.objects.filter(gender=dd.Genders.female).order_by('id')) for h in Household.objects.all(): if h.member_set.all().count() == 0: he = MEN.pop() she = WOMEN.pop() h.name = he.last_name + "-" + she.last_name Member(household=h, person=he, role=Role.objects.get(pk=1)).save() Member(household=h, person=she, role=Role.objects.get(pk=2)).save() else: h.name = '' h.full_clean() h.save() dblogger.info(unicode(h)) dblogger.info("GARBLE done on database %s." % dbname)
def handle(self, *args, **options): dbname = settings.DATABASES['default']['NAME'] if options.get('interactive'): if not confirm("This is going to GARBLE your database (%s).\n" "Are you sure (y/n) ?" % dbname): raise CommandError("User abort.") def build_dist(k): k = k.upper() if k == 'BE': return BelgianDistribution() if k == 'EE': return EstonianDistribution() raise CommandError("Invalid distribution key %r." % k) dist = build_dist(options.get('distribution')) User = dd.resolve_model(settings.SITE.user_model) Person = rt.models.contacts.Person for p in Person.objects.order_by('id'): if User.objects.filter(partner=p).count() > 0: # users keep their original name pass else: p.last_name = dist.LAST_NAMES.pop() if p.gender == dd.Genders.male: p.first_name = dist.MALES.pop() dist.FEMALES.pop() else: p.first_name = dist.FEMALES.pop() dist.MALES.pop() p.name = join_words(p.last_name, p.first_name) dist.before_save(p) p.save() dblogger.info(p.get_address(', '))