Ejemplo n.º 1
0
 def display_single_email_get(self, campaign_key, prospect_id):
     campaign = db.get_from_urlsafe_key(campaign_key)
     prospect = db.get_prospect_from_prospect_id(prospect_id)
     logging.info('Displaying Email for prospect %s' % prospect)
     if prospect:
         self.render_campaign_details(campaign, prospect=prospect, show_modal='email')
     else:
         self.render_campaign_details(campaign, error_message='Prospect not found')
Ejemplo n.º 2
0
 def get(self, campaign_key):
     campaign = db.get_from_urlsafe_key(campaign_key)
     if campaign and isinstance(campaign, Campaign):
         logging.info('Deleting campaign %s' % campaign)
         campaign.key.delete()
     else:
         logging.warn('Delete skipped, campaign not found for %s' % campaign_key)
     # back to campaign admin page
     self.redirect('/admin/campaigns')
Ejemplo n.º 3
0
 def post(self, campaign_key):
     ''' Edit Campaign Info '''
     campaign = db.get_from_urlsafe_key(campaign_key)
     edit_campaign_form = EditCampaignForm().get_form(self.request.POST)
     if edit_campaign_form.validate():
         edit_campaign_form.populate_obj(campaign)
         campaign.put()
         self.render_campaign_details(campaign, success_message='Campaign saved!')
     else:
         self.render_campaign_details(campaign, edit_campaign_form=edit_campaign_form)       
Ejemplo n.º 4
0
 def edit_prospects_post(self, campaign_key):
     '''
         Handle POST form edit prospects modal window
     '''
     campaign = db.get_from_urlsafe_key(campaign_key)
     prospect_urlsafe_keys = self.request.get_all('prospect')
     prospect_keys = map(lambda usk: ndb.Key(urlsafe=usk), prospect_urlsafe_keys)
     logging.info('Setting prospects count %s' % len(prospect_keys))
     campaign.prospects = prospect_keys
     campaign.put() 
     self.render_campaign_details(campaign=campaign)
Ejemplo n.º 5
0
 def mark_as_sent_post(self, campaign_key, prospect_id):
     campaign = db.get_from_urlsafe_key(campaign_key)
     prospect = db.get_prospect_from_prospect_id(prospect_id)
     logging.info('Marking email as sent for prospect %s' % prospect)
     if prospect:
         logging.info('POST %s' % self.request.POST)
         email_text = self.request.get("email_body")
         self.create_prospect_email_note(prospect, campaign, email_text)
         #prospect_url = '/admin/prospect'
         self.render_campaign_details(campaign, prospect=prospect, show_modal='email', modal_success_message='Email marked as sent and note created for <a href="/admin/prospects/%s">%s %s</a>' % (prospect.prospect_id, prospect.first_name, prospect.last_name))
     else:
         self.render_campaign_details(campaign, error_message='Prospect not found')
Ejemplo n.º 6
0
    def post(self, vanity_url=None):
        provider = db.get_provider_from_vanity_url(vanity_url)

        patient_form = RegistrationDetailsForNewPatient().get_form(
            self.request.POST)

        if patient_form.validate():
            booking_key_urlsafe = patient_form['booking_key'].data
            booking = db.get_from_urlsafe_key(booking_key_urlsafe)

            # create a new patient
            patient = Patient()

            patient_form.populate_obj(patient)
            self.set_gae_geography_from_headers(patient)
            patient.put()

            # create a new user
            user = self.create_empty_user_for_patient(patient)
            user.language = self.get_language()

            # set the password
            password = patient_form['password'].data
            password_hash = security.generate_password_hash(password,
                                                            length=12)
            user.password = password_hash
            user.put()

            # login with new password
            self.login_user(user.get_email(), password)

            # store booking
            user = patient.user.get()
            booking.patient = patient.key
            booking.confirmed = user.confirmed = False
            booking.put()

            # send a confirmation/activation email
            url_obj = urlparse.urlparse(self.request.url)
            activation_url = urlparse.urlunparse(
                (url_obj.scheme, url_obj.netloc,
                 '/login/booking/' + booking.key.urlsafe(), '', '', ''))
            logging.info(
                '(NewPatientHandler.post) generated activation url for user %s : %s '
                % (patient.email, activation_url))
            mail.email_booking_to_patient(self, booking, activation_url)

            PatientBaseHandler.render_confirmation_email_sent(self, booking)
        else:
            self.render_template('provider/public/booking_new_patient.html',
                                 provider=provider,
                                 patient_form=patient_form)
Ejemplo n.º 7
0
    def post(self, prospect_id=None):
        prospect = db.get_prospect_from_prospect_id(prospect_id)
        add_to_campaign_form = ProspectAddToCampaignForm().get_form(self.request.POST)
        if add_to_campaign_form.validate():
            campaign_urlsafe_key = add_to_campaign_form.campaign.data
            campaign = db.get_from_urlsafe_key(campaign_urlsafe_key)
            if prospect.key not in campaign.prospects:
                campaign.prospects.append(prospect.key)
                # TODO: create admin note
                campaign.put()
            else:
                error_message = "Prospect is already a member of the campaign %s" % campaign.name
                logging.error(error_message)

        self.redirect("/admin/prospects/" + prospect.prospect_id)
Ejemplo n.º 8
0
    def post(self, prospect_id=None):
        prospect = db.get_prospect_from_prospect_id(prospect_id)
        add_to_campaign_form = ProspectAddToCampaignForm().get_form(
            self.request.POST)
        if add_to_campaign_form.validate():
            campaign_urlsafe_key = add_to_campaign_form.campaign.data
            campaign = db.get_from_urlsafe_key(campaign_urlsafe_key)
            if prospect.key not in campaign.prospects:
                campaign.prospects.append(prospect.key)
                # TODO: create admin note
                campaign.put()
            else:
                error_message = 'Prospect is already a member of the campaign %s' % campaign.name
                logging.error(error_message)

        self.redirect('/admin/prospects/' + prospect.prospect_id)
Ejemplo n.º 9
0
    def post(self, vanity_url=None):
        provider = db.get_provider_from_vanity_url(vanity_url)

        patient_form = RegistrationDetailsForNewPatient().get_form(self.request.POST)
        
        if patient_form.validate():
            booking_key_urlsafe = patient_form['booking_key'].data
            booking = db.get_from_urlsafe_key(booking_key_urlsafe)

            # create a new patient
            patient = Patient()
                    
            patient_form.populate_obj(patient)
            self.set_gae_geography_from_headers(patient)
            patient.put()

            # create a new user
            user = self.create_empty_user_for_patient(patient)
            user.language = self.get_language()

            # set the password            
            password = patient_form['password'].data
            password_hash = security.generate_password_hash(password, length=12)    
            user.password = password_hash
            user.put()
            
            # login with new password
            self.login_user(user.get_email(), password)

            # store booking
            user = patient.user.get()
            booking.patient = patient.key
            booking.confirmed = user.confirmed = False
            booking.put()

            # send a confirmation/activation email
            url_obj = urlparse.urlparse(self.request.url)
            activation_url = urlparse.urlunparse((url_obj.scheme, url_obj.netloc, '/login/booking/' + booking.key.urlsafe(), '', '', ''))
            logging.info('(NewPatientHandler.post) generated activation url for user %s : %s ' %  (patient.email, activation_url))
            mail.email_booking_to_patient(self, booking, activation_url)
            
            PatientBaseHandler.render_confirmation_email_sent(self, booking)
        else:
            self.render_template('provider/public/booking_new_patient.html', provider=provider, patient_form=patient_form)

                
Ejemplo n.º 10
0
 def generate_emails_get(self, campaign_key):
     ''' generate emails from prospect list'''
     campaign = db.get_from_urlsafe_key(campaign_key)
     self.render_template('admin/campaign_email.html', campaign=campaign)
Ejemplo n.º 11
0
 def edit_prospects_get(self, campaign_key):
     '''
         Handle GET to display modal to edit prospects
     '''
     campaign = db.get_from_urlsafe_key(campaign_key)
     self.render_campaign_details(campaign=campaign, show_modal='campaign_prospects')
Ejemplo n.º 12
0
 def get(self, campaign_key):
     ''' Display Campaign details '''
     campaign = db.get_from_urlsafe_key(campaign_key)
     # split this out into Edit handler with paging
     self.render_campaign_details(campaign)