Ejemplo n.º 1
0
    def update_contact(self, req):
        message = "Contact has been saved"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        c = tools.getKey(req.contact_key).get()

        a = req.address
        address = [a.street, a.city, a.state, a.zipcode]

        # Check to see if a new email was added and see if it already exists
        list_diff = tools.listDiff(c.email, req.email)

        if list_diff:
            email_exists = s.exists.contact(email=list_diff)[0]
        else:
            email_exists = False

        if email_exists == True:
            success = False
            message = "Whoops! You entered an email address already in use by another contact."
        else:
            c.update(req.name, req.email, req.phone, req.notes, address)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 2
0
    def semi_get_individual_donations(self, req):
        isAdmin, s = tools.checkAuthentication(self, False, from_endpoints=True)
        query = "individual_key:" + str(req.individual_key)

        results = s.search.donation(query, query_cursor=req.query_cursor)
        logging.info("Getting individual donations with query: " + query)

        donations = []
        new_cursor = tools.getWebsafeCursor(results[1])

        for d in results[0]:
            f = d.fields

            team_name = f[6].value
            if team_name == None:
                team_name = ""

            donation = Donation_Data(key=f[0].value, formatted_donation_date=f[9].value, name=f[2].value,
                                     email=tools.truncateEmail(f[3].value),
                                     payment_type=f[5].value, amount_donated=tools.moneyAmount(f[4].value),
                                     team_name=team_name)

            donations.append(donation)

        return Donations_Out(objects=donations, new_cursor=new_cursor)
Ejemplo n.º 3
0
    def new_offline_donation(self, req):
        message = "Offline donation created"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        # Make req variables local
        name, email, amount_donated, notes, address, team_key, individual_key, \
        add_deposit = req.name, req.email, tools.toDecimal(req.amount_donated), req.notes, \
                      req.address, req.team_key, req.individual_key, req.add_deposit

        # Check for null value in individual field
        if individual_key == "none":
            individual_key = None

        if address:
            address = [address.street, address.city, address.state, address.zipcode]

        if team_key:
            team_key = tools.getKey(team_key)

        if individual_key:
            individual_key = tools.getKey(individual_key)

        s.create.donation(name, email, amount_donated, "offline", address=address, team_key=team_key,
                          individual_key=individual_key, add_deposit=add_deposit, special_notes=notes)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 4
0
    def get_team_donation_total(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        t = tools.getKey(req.team_key).get()
        donation_total = tools.moneyAmount(t.data.donation_total)

        return GetTeamDonationTotal_Out(donation_total=donation_total)
Ejemplo n.º 5
0
    def new_team(self, req):
        message = "<b>" + req.name + "</b> created"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)
        s.create.team(req.name)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 6
0
    def get(self):
        # By default, need admin priveleges to view
        isAdmin, s = tools.checkAuthentication(self, True)

        if isAdmin == None and s == None:
            self.redirect("/login")
        else:
            return self.task(isAdmin, s)
Ejemplo n.º 7
0
    def contact_delete(self, req):
        message = "Contact deleted"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        tools.getKey(req.contact_key).delete()

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 8
0
    def deleteTeam(self, req):
        message = "Team deleted"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        tools.getKey(req.team_key).delete()

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 9
0
    def confirmation_annual_report(self, req):
        message = "Annual report sent"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        taskqueue.add(queue_name="annualreport", url="/tasks/annualreport",
                      params={'contact_key': req.contact_key, 'year': req.year})

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 10
0
    def new_impression(self, req):
        message = "Impression saved"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        c = tools.getKey(req.contact_key).get()
        c.create.impression(req.impression, req.notes)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 11
0
    def donation_archive(self, req):
        message = "Donation archived"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        d = tools.getKey(req.donation_key).get()
        d.review.archive()

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 12
0
    def donation_mark_unreviewed(self, req):
        message = "Donation marked as unreviewed"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        d = tools.getKey(req.donation_key).get()
        d.review.markUnreviewed()

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 13
0
    def update_team(self, req):
        message = "Team has been updated"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        t = tools.getKey(req.team_key).get()
        t.update(req.name, req.show_team)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 14
0
    def update_settings(self, req):
        message = "Settings have been updated"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        s.update(req.name, req.email, req.mc_use, req.mc_apikey, req.mc_donorlist,
                 req.paypal_id, req.impressions, req.donate_parent, req.amount1, req.amount2, req.amount3,
                 req.amount4, req.use_custom, req.confirmation_header, req.confirmation_info,
                 req.confirmation_footer, req.confirmation_text, req.donor_report_text)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 15
0
    def get(self):
        isAdmin, s = tools.checkAuthentication(self, True)

        str_blob_key = urllib.unquote(self.request.get("blob_key"))
        blob_key = blobstore.BlobInfo.get(str_blob_key)

        if not blobstore.get(str_blob_key):
            logging.error("404 on blob key: " + str_blob_key)
            self.error(404)
        else:
            logging.info("Serving blob: " + str_blob_key)
            self.send_blob(blob_key, save_as=True)
Ejemplo n.º 16
0
    def spreadsheet_check(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        completed, gcs_file_key = tools.checkTaskCompletion(s, req.job_id)
        status = tools.pipelineStatus(req.job_id)

        if completed:
            download_url = "http://commondatastorage.googleapis.com/" + gcs_file_key[1:]
        else:
            download_url = None

        return SpreadsheetCheck_Out(completed=completed, download_url=download_url, status=status)
Ejemplo n.º 17
0
    def printReceipt(self, req):
        message = "Receipt open for printing"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)
        d = tools.getKey(req.donation_key).get()

        # Print receipt to donor
        d.review.archive()
        print_url = d.confirmation.print_url(None)

        return ConfirmationPrint_Out(success=success, message=message, print_url=print_url)
Ejemplo n.º 18
0
    def merge_contacts(self, req):
        message = "Contacts merged"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        c1 = tools.getKey(req.contact1)
        c2 = tools.getKey(req.contact2)

        tools.mergeContacts(c1, c2)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 19
0
    def semi_get_team_members(self, req):
        # Returns team information
        isAdmin, s = tools.checkAuthentication(self, False, from_endpoints=True)

        t = tools.getKey(req.team_key).get()
        members_list = t.data.members_list

        members = []
        for m in members_list:
            member = SemiGetTeamMembers_Data(key=m[2], name=m[0])
            members.append(member)

        return SemiGetTeamMembers_Out(objects=members)
Ejemplo n.º 20
0
    def deposits_remove(self, req):
        message = "Donations removed from deposits."
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        if req.donation_keys != []:
            donation_keys = []
            for k in req.donation_keys:
                donation_keys.append(str(k))

            deferred.defer(s.deposits.remove, donation_keys, _queue="backend")

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 21
0
    def mailchimp_lists(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        response = tools.getMailchimpLists(self, req.mc_apikey)
        mc_lists = None
        error_message = None

        if response[0] == True:
            mc_lists = json.dumps(response[1])
        else:
            mc_lists = None
            error_message = response[1]

        return MailchimpLists_Out(success=response[0], mc_lists=mc_lists, error_message=error_message)
Ejemplo n.º 22
0
    def spreadsheet_start(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        if req.mode not in ["contacts", "donations", "individuals"]:
            raise endpoints.NotFoundException("Incorrect spreadsheet mode")

        # Create unique identifier for this job
        job_id = str(uuid.uuid4())
        memcache.set(job_id, 0)

        stage = spreadsheet_pipelines.GenerateReport(s.websafe, req.mode, job_id)
        stage.start(queue_name='spreadsheet')

        pipeline_id = stage.pipeline_id
        memcache.set("id" + job_id, pipeline_id)

        return SpreadsheetStart_Out(job_id=job_id)
Ejemplo n.º 23
0
    def get_contacts(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        if req.query == None:
            req.query = ""

        results = s.search.contact(req.query, query_cursor=req.query_cursor)
        logging.info("Getting contacts with query: " + req.query)

        contacts = []
        new_cursor = tools.getWebsafeCursor(results[1])

        for c in results[0]:
            f = c.fields
            contact = Contact_Data(key=f[0].value, name=f[1].value, email=tools.truncateEmail(f[2].value))
            contacts.append(contact)

        return Contacts_Out(objects=contacts, new_cursor=new_cursor)
Ejemplo n.º 24
0
    def get_team_members(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)
        query = "team_key:" + str(req.team_key)

        results = s.search.individual(query, query_cursor=req.query_cursor)
        logging.info("Getting team members with query: " + query)

        individuals = []
        new_cursor = tools.getWebsafeCursor(results[1])

        for i in results[0]:
            f = i.fields

            individual = Individual_Data(key=f[0].value, name=f[1].value, email=f[2].value,
                                         raised=tools.moneyAmount(f[4].value))
            individuals.append(individual)

        return Individuals_Out(objects=individuals, new_cursor=new_cursor)
Ejemplo n.º 25
0
    def new_contact(self, req):
        message = "<b>" + req.name + "</b> created"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)
        contact_exists = s.exists.contact(email=req.email)

        address = [req.address.street, req.address.city, req.address.state, req.address.zipcode]

        if contact_exists[0] == False:
            s.create.contact(req.name, email=req.email, phone=req.phone, address=address, notes=req.notes, add_mc=True)

        else:
            # If this email address already exists for a user
            message = "Whoops! You entered an email address already in use by another contact."
            success = False

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 26
0
    def confirmation_email(self, req):
        message = "Email sent"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        d = tools.getKey(req.donation_key).get()

        if not d.email or d.email == ['']:
            success = False
            message = "Email not sent. Contact doesn't have an email address."

        else:
            # Email receipt to donor
            d.review.archive()
            d.confirmation.task(60)

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 27
0
    def deposits_add(self, req):
        message = "Donations deposited."
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        if req.donation_keys != []:
            donation_keys = []
            for k in req.donation_keys:
                donation_keys.append(str(k))

            deferred.defer(s.deposits.deposit, donation_keys, _queue="backend")

        else:
            message = "No donations to deposit."
            success = False

        return SuccessMessage_Out(success=success, message=message)
Ejemplo n.º 28
0
    def get_deposits(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        if req.query == None:
            req.query = ""

        results = s.search.deposit(req.query, query_cursor=req.query_cursor)
        logging.info("Getting deposits with query: " + req.query)

        deposits = []
        new_cursor = tools.getWebsafeCursor(results[1])

        for de in results[0]:
            f = de.fields

            deposit = Deposit_Data(key=f[0].value, time_deposited=f[1].value)
            deposits.append(deposit)

        return Deposits_Out(objects=deposits, new_cursor=new_cursor)
Ejemplo n.º 29
0
    def get_teams(self, req):
        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)

        if req.query == None:
            req.query = ""

        results = s.search.team(req.query, query_cursor=req.query_cursor)
        logging.info("Getting teams with query: " + req.query)

        teams = []
        new_cursor = tools.getWebsafeCursor(results[1])

        for t in results[0]:
            f = t.fields

            team = Team_Data(key=f[0].value, name=f[1].value, donation_total=tools.moneyAmount(f[2].value))
            teams.append(team)

        return Teams_Out(objects=teams, new_cursor=new_cursor)
Ejemplo n.º 30
0
    def new_individual(self, req):
        message = "<b>" + req.name + "</b> created"
        success = True

        isAdmin, s = tools.checkAuthentication(self, True, from_endpoints=True)
        exists = s.exists.individual(req.email)

        email, team_key = req.email, req.team_key

        if email == "": email = None
        if team_key == "team": team_key = None

        if email == None or exists[0] == False:
            s.create.individual(req.name, tools.getKey(team_key), email, req.password, admin=req.admin)

        else:
            # If this email address already exists for a user
            message = "Sorry, but this email address is already being used."
            success = False

        return SuccessMessage_Out(success=success, message=message)