def test_ticket_barcode_already_exists(self): ticket_type = TicketType.objects.create(name="Test Type") initial_ticket = Ticket.objects.create( barcode=12345, email=self.user_email, type=ticket_type, user=None) import_ticket(12345, "Test Type", self.user_email) [ticket] = Ticket.objects.all() self.assertEqual(ticket, initial_ticket)
def test_simple_import_without_user(self): import_ticket(12345, "Individual", self.user_email) ticket_type = TicketType.objects.get(name="Individual") ticket = Ticket.objects.get(barcode=12345) self.assertEqual(ticket.barcode, 12345) self.assertEqual(ticket.email, self.user_email) self.assertEqual(ticket.type, ticket_type) self.assertEqual(ticket.user, None)
def test_ticket_barcode_already_exists(self): ticket_type = TicketType.objects.create(name="Test Type") initial_ticket = Ticket.objects.create(barcode=12345, email=self.user_email, type=ticket_type, user=None) import_ticket(12345, "Test Type", self.user_email) [ticket] = Ticket.objects.all() self.assertEqual(ticket, initial_ticket)
def test_simple_import_with_user(self): user = create_user("User Foo", email=self.user_email) import_ticket(12345, "Individual", self.user_email) ticket_type = TicketType.objects.get(name="Individual") ticket = Ticket.objects.get(barcode=12345) self.assertEqual(ticket.barcode, 12345) self.assertEqual(ticket.email, self.user_email) self.assertEqual(ticket.type, ticket_type) self.assertEqual(ticket.user, user)
def test_long_ticket_type(self): long_type = "Foo" * TicketType.MAX_NAME_LENGTH truncated_type = long_type[:TicketType.MAX_NAME_LENGTH] import_ticket(12345, long_type, self.user_email) ticket_type = TicketType.objects.get(name=truncated_type) ticket = Ticket.objects.get(barcode=12345) self.assertEqual(ticket.barcode, 12345) self.assertEqual(ticket.email, self.user_email) self.assertEqual(ticket.type, ticket_type) self.assertEqual(ticket.user, None)
def handle(self, *args, **options): if len(args) != 1: raise CommandError('1 CSV File required') logging.basicConfig(level=logging.INFO) columns = ('Ticket Number', 'Ticket Barcode', 'Purchase Date', 'Ticket Type', 'Ticket Holder', 'Email', 'Cellphone', 'Checked in', 'Checked in date', 'Checked in by', 'Complimentary') keys = [column.lower().replace(' ', '_') for column in columns] with open(args[0], 'r') as f: reader = csv.reader(f) header = tuple(next(reader)) if header != columns: raise CommandError('CSV format has changed. Update wafer') for row in reader: ticket = dict(zip(keys, row)) import_ticket(ticket['ticket_barcode'], ticket['ticket_type'], ticket['email'])