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')
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')
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)
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)
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')
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)
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)
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)
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)
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)
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')
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)