def update_reg_info(self): fields = ['11', '10', '9', '2', '3', '5', '651'] def add_field(field, nr): self.browser.open(URI['reg_form'].format(event_id=self.event_id)) self.browser.select_form(nr=nr) form = self.browser.form try: form['info_id'] = [field] except ItemNotFoundError: return self.browser.open(form.click()) title("ADD REGISTRATION FORM FIELDS") print "Adding registration fields..." for field in fields: add_field(field, 1) fields = ['2385'] for field in fields: add_field(field, 2) print "Registration fields added..." print "Marking mandatory fields..." self.browser.select_form(nr=0) form = self.browser.form form['reqd_info[]'] = self._get_reg_info_field_ids()[:6] self.browser.open(form.click()) print "Mandatory fields marked..."
def payment_options(self, payment_info): title("PAYMENT INFO") print "Setting up payment info..." self.browser.open(URI['ticketing_info'].format(event_id=self.event_id)) self.browser.select_form(nr=0) form = self._fill_form(self.browser.form, payment_info, 'payment_info') self.browser.open(form.click()) if self.browser.geturl() == URI['tickets'].format(event_id=self.event_id): print "Payment info has been set..." else: print "There was an error in setting up payment info..."
def create_event(self, event): title("CREATE EVENT") print "Creating Event %s, %s..." % (event['name']['data'], event['year']['data']) self.browser.open(URI['new_event']) self.browser.select_form(nr=0) form = self._fill_form(self.browser.form, event, 'event') if event['venue']['data']: form = self._fill_form(form, event['venue']['data'], 'venue') form.click() self.browser.open(form.click()) self.event_id = urlparse(self.browser.geturl()).path.split('/')[2] print 'Event created with the ID %s' % self.event_id
def _login(self): title("LOGIN") print "Logging into Funnel..." self.browser.open(URI['login']) self.browser.select_form(nr=1) form = self.browser.form form['username'] = config.get('FUNNEL_USERNAME', None) or raw_input('Please enter your registered Funnel username: '******'password'] = config.get('FUNNEL_PASSWORD', None) or getpass.getpass('Please enter your Funnel password: '******'lastuser_login']: print "The credentials you provided are incorrect..." sys.exit(1) else: print "Successfully logged into Funnel..."
def _login(self): title("LOGIN") print "Logging into DoAttend..." self.browser.open(URI['login']) self.browser.select_form(nr=0) form = self.browser.form form['account[email]'] = config.get('DOATTEND_EMAIL', None) or raw_input('Please enter your registered DoAttend email address: ') form['account[password]'] = config.get('DOATTEND_PASS', None) or getpass.getpass('Please enter your DoAttend password: '******'login']: print "The credentials you provided are incorrect..." sys.exit(1) else: print "Successfully logged into DoAttend..."
def _process_discounts(self): title("PROCESS PROPOSAL DISCOUNTS") csv = unicodecsv.writer(self.sent_discounts_file, delimiter=",", quotechar='"') for person in self.queues["discount"]: now = datetime.now() person["submitted"] = person["submitted"].replace(tzinfo=None) slot_ticket, book_ticket = None, None for ticket in self.conf_tickets: if ( not slot_ticket and ticket["start_date"].date() <= person["submitted"].date() and person["submitted"].date() <= ticket["end_date"].date() ): slot_ticket = ticket if ( not book_ticket and ticket["start_date"].date() <= now.date() and now.date() <= ticket["end_date"].date() ): book_ticket = ticket if not person["code"] and book_ticket != slot_ticket: person["code"] = self._discount_code( 1, "Proposal Discount", percentage=False, value=int(float(book_ticket["price"])) - int(float(slot_ticket["price"])), ending=book_ticket["end_date"], ) if not self.sent_discounts[person["email"]]: self.sent_discounts[person["email"]] = [person["email"], person["code"], "0"] csv.writerow(self.sent_discounts[person["email"]]) if person["code"] or int(float(book_ticket["price"])) <= int(float(slot_ticket["price"])): self.sent_discounts[person["email"]][1] = person["code"] try: self._discount_email(person, book_ticket, slot_ticket) self.sent_discounts[person["email"]][2] = "1" print "Discount code sent to %s..." % person["name"] except: print "Unable to send discount code email to %s..." % person["name"] with open(self.sent_discounts_path, "w") as f: csv = unicodecsv.writer(f, delimiter=",", quotechar='"') for discount in self.sent_discounts.values(): csv.writerow(discount)
def _process_bookings(self): title("PROCESS TICKET BOOKINGS") # Cannot book multiple people in same order, as cancelling single tickets will not be possible # max_qty = min([int(ticket['max']) for ticket in self.selected_tickets]) # index = 0 # while index < len(people): # to = index + max_qty if index + max_qty < len(people) else len(people) # for i in range(index, to): # people[i] = self._speaker_info(people[i]) # print "Book tickets for %s..." % ", ".join([person['name'].encode('utf-8') for person in people[index:to]]) # self.doattend.book_ticket([ticket['id'] for ticket in self.selected_tickets], people[index:to], self._discount_code(to - index)) # index = to for person in self.queues["booking"]: person = self._speaker_info(person) self.doattend.book_ticket( [ticket["id"] for ticket in self.selected_tickets], [person], self._discount_code(1, name="Speaker Discount"), )
def create_tickets(self, tickets): def get_parent_tickets(types): ticks = [] for category, tickets_of_type in tickets.iteritems(): if category in types: for ticket in tickets_of_type: if 'id' in ticket: ticks.append(ticket['id']) return ticks def tcreate(ticket, addon=False): print "Creating {} {}...".format('addon' if addon else 'ticket', ticket['name']['data']) self.browser.open(URI['new_ticket'].format(event_id=self.event_id)) self.browser.select_form(nr=0) form = self._fill_form(self.browser.form, ticket, 'ticket') if addon: form['ticket_type[parent_ticket_ids][]'] = get_parent_tickets(ticket['addon_for']['data']) self.browser.open(form.click()) if self.browser.geturl() == URI['tickets'].format(event_id=self.event_id): print "{} {} has been created...".format('Addon' if addon else 'Ticket', ticket['name']['data']) else: print "There was a problem creating {} {}...".format('addon' if addon else 'ticket', ticket['name']['data']) title("CREATE TICKETS") for category, tickets_of_type in tickets.iteritems(): for ticket in tickets_of_type: if ticket['type']['data'] in ['ticket', 'both']: tcreate(ticket) pass self.browser.open(URI['tickets'].format(event_id=self.event_id)) n = 0 for category, tickets_of_type in tickets.iteritems(): for ticket in tickets_of_type: if ticket['type']['data'] in ['ticket', 'both']: try: ticket['id'] = self.browser.find_link(text='Edit', nr=n).url.split('/')[4] except LinkNotFoundError: pass n += 1 title("CREATE ADDONS") for category, tickets_of_type in tickets.iteritems(): for ticket in tickets_of_type: if ticket['type']['data'] in ['addon', 'both']: tcreate(ticket, addon=True)
def show_duplicates(self): title("SHOWING DUPLICATE TICKET HOLDERS") for email, order in self.orders.iteritems(): tickets = [] status = False for ticket in order: if ticket["ticket_type"] in tickets: status = True tickets.append(ticket["ticket_type"]) if ticket["addons"]: tickets.append(ticket["addons"]) if status: title("EMAIL:" + email.upper()) print "Name\t\t\t | Phone\t | Order ID\t | Ticket ID\t | Ticket Type\t\t\t | Addons\t |" for ticket in order: print ticket["name"] + ("\t" if len(ticket["name"]) < 16 else "") + "\t | " + ticket[ "phone" ] + "\t | " + ticket["order_id"] + "\t | " + ticket["ticket_number"] + "\t | " + ticket[ "ticket_type" ] + "\t | " + ticket[ "addons" ] + "\t |"
print("Please select one target in") print(" all_tests") for target in targets: print(" " + target) def test(file): os.system("python3 " + file) if __name__ == "__main__": if len(sys.argv) <= 1: usage() target = sys.argv[1] if target == "all_tests": print("Target " + str(target) + " selected") for x in targets: helpers.title(x) test(target_files[targets.index(x)]) elif target == "help": usage() elif target in targets: print("Target " + str(target) + " selected") helpers.title(target) test(target_files[targets.index(target)]) else: print("Invalid target: ", target) usage()
def _process_cancellations(self): title("PROCESS TICKET CANCELLATIONS") for person, ticket in self.queues["cancellation"]: webbrowser.open_new_tab(ticket["order_url"]) getpass.getpass("Opening order page for %s. Please press ENTER once done..." % person["name"])