def handle(self, *args, **options): event_name = options['event_name'][0] try: event = Event.objects.get(name=event_name) except Event.DoesNotExist: self.stdout.write('event does not exist') return if options['flush']: self.stdout.write('Removing all applicants in event %s...' % event_name) self.stdout.write('%s users in the database' % Applicant.objects.all().count()) applicants = Applicant.objects.filter(event__name=event_name) self.stdout.write('%s users in the event %s' % (applicants.count(), event_name)) applicants.delete() self.stdout.write('%s users left in the database' % Applicant.objects.all().count()) if options['applicants']: if not os.path.exists('tmp'): os.makedirs('tmp') with open(options['applicants'], 'rU') as csvfile: applicants = list(csv.reader(csvfile)) event = Event.objects.get_or_create( name=options['event_name'][0])[0] for applicant in applicants[1:]: self.add_applicant( { key: value for (key, value) in zip(applicants[0], applicant) }, event_name) if options['testing']: for _ in xrange(10): applicant = Applicant() applicant.first_name = randomString(10) applicant.last_name = randomString(10) applicant.high_school = '%s High School ' % randomString(8) applicant.hometown = randomString(7) applicant.hometown_state = random.choice(US_STATES)[0] applicant.gender = random.choice(['Mr.', 'Ms.']) applicant.event = event applicant.save() self.stdout.write('Created user %s' % applicant.get_full_name()) if options['feedback']: scholars = McUser.objects.all() applicants = Applicant.objects.all() for scholar in scholars: chance = random.random() / 3 for applicant in applicants: if random.random() < chance: try: f = Feedback.objects.get(scholar=scholar, applicant=applicant) except Feedback.DoesNotExist: f = Feedback(scholar=scholar, applicant=applicant) f.rating = random.choice([0, 1, 2, 3, 4, 5]) f.interest = random.choice([0, 1, 3, 4, 5]) f.comments = randomWords(random.randint(4, 15)) f.save() if options['pics']: for f in os.listdir('tmp'): f_split = f.split('.')[0].split(',') scholar_name = normalize_name('%s%s' % (f_split[1], f_split[0])) try: app = Applicant.objects.get(norm_name=scholar_name, event__name=event_name) except Applicant.DoesNotExist: self.stdout.write('Could not find user %s for pic %s' % (scholar_name, f)) continue extension = f.split('.')[-1] file_name = '%s,%s-fw.%s' % (app.last_name, app.first_name, extension) with open('tmp/%s' % f, 'rb') as img_file: app.actual_pic.save(file_name, File(img_file), save=True) app.save() self.stdout.write('Saved pic %s for %s' % (f, scholar_name))
def handle(self, *args, **options): event_name = options['event_name'][0] try: event = Event.objects.get(name=event_name) except Event.DoesNotExist: self.stdout.write('event does not exist') return if options['flush']: self.stdout.write('Removing all applicants in event %s...' % event_name) self.stdout.write('%s users in the database' % Applicant.objects.all().count()) applicants = Applicant.objects.filter(event__name=event_name) self.stdout.write('%s users in the event %s' % (applicants.count(), event_name)) applicants.delete() self.stdout.write('%s users left in the database' % Applicant.objects.all().count()) if options['applicants']: if not os.path.exists('tmp'): os.makedirs('tmp') with open(options['applicants'], 'rU') as csvfile: applicants = list(csv.reader(csvfile)) event = Event.objects.get_or_create(name=options['event_name'][0])[0] for applicant in applicants[1:]: self.add_applicant({key: value for (key, value) in zip(applicants[0], applicant)}, event_name) if options['testing']: for _ in xrange(10): applicant = Applicant() applicant.first_name = randomString(10) applicant.last_name = randomString(10) applicant.high_school = '%s High School ' % randomString(8) applicant.hometown = randomString(7) applicant.hometown_state = random.choice(US_STATES)[0] applicant.gender = random.choice(['Mr.', 'Ms.']) applicant.event = event applicant.save() self.stdout.write('Created user %s' % applicant.get_full_name()) if options['feedback']: scholars = McUser.objects.all() applicants = Applicant.objects.all() for scholar in scholars: chance = random.random() / 3 for applicant in applicants: if random.random() < chance: try: f = Feedback.objects.get(scholar=scholar, applicant=applicant) except Feedback.DoesNotExist: f = Feedback(scholar=scholar, applicant=applicant) f.rating = random.choice([0, 1, 2, 3, 4, 5]) f.interest = random.choice([0, 1, 3, 4, 5]) f.comments = randomWords(random.randint(4, 15)) f.save() if options['pics']: for f in os.listdir('tmp'): f_split = f.split('.')[0].split(',') scholar_name = normalize_name('%s%s' % (f_split[1], f_split[0])) try: app = Applicant.objects.get(norm_name=scholar_name, event__name=event_name) except Applicant.DoesNotExist: self.stdout.write('Could not find user %s for pic %s' % (scholar_name, f)) continue extension = f.split('.')[-1] file_name = '%s,%s-fw.%s' % (app.last_name, app.first_name, extension) with open('tmp/%s' % f, 'rb') as img_file: app.actual_pic.save(file_name, File(img_file), save=True) app.save() self.stdout.write('Saved pic %s for %s' % (f, scholar_name))