Ejemplo n.º 1
0
 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..."
Ejemplo n.º 2
0
 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..."
Ejemplo n.º 3
0
 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
Ejemplo n.º 4
0
 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..."
Ejemplo n.º 5
0
 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..."
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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"),
         )
Ejemplo n.º 8
0
 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)
Ejemplo n.º 9
0
 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 |"
Ejemplo n.º 10
0
    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()
Ejemplo n.º 11
0
 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"])