Exemple #1
0
 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))