def main()

in analytics-hub/snippets/request-access/main.py [0:0]


def main(environment_name: str = None, project_id: str = None, database: str = 'ahsubscribers'):
  st.title('Analytics Hub Demo')
  st.header('Submit subscription request')
  if environment_name:
    st.subheader(f"Environment: {environment_name}")

  subscribe_form = st.form("subscribe_form", clear_on_submit=False)
  with subscribe_form:
    subscriber_email = st.text_input('''Subscriber e-mail address

  This user will get access to add the linked dataset to the target project.''', key='subscriber_email')

    subscriber_project_number = st.text_input('''Subscriber project number

  This project will be allowed to add the linked dataset. 
  The project number is show in Cloud Console Dashboard, or 
  the `gcloud projects describe [project_id]` gcloud command 
  can be used to get the project number.''', key='subscriber_project_number')

    st.write('''Data handling / data processing policy

  Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
  Ut neque augue, sodales eu suscipit ac, venenatis nec sapien. 
  Praesent gravida, mauris eget porta viverra, mi nunc tempor ex, 
  gravida aliquam dui erat at lacus. Donec nec sollicitudin justo, 
  sed commodo sapien. Sed felis urna, tempor nec molestie ac, 
  pellentesque eu magna. Nulla vitae massa accumsan, blandit erat 
  vitae, pretium enim. Aenean fermentum ligula vitae luctus dignissim. 
  Suspendisse eleifend vulputate nulla et finibus. 
  Sed vulputate ipsum nulla, vel vestibulum tellus porttitor in.
    ''')
    data_policy_accepted = st.checkbox('Consent to data the policy', key='accept_dp')

    submit = st.form_submit_button('Send access request')

  status_text = st.text('')

  if submit:
      import validators

      errors = []
      if not validators.email(subscriber_email):
        errors.append('Please enter a valid e-mail address.')
      if not subscriber_project_number.isnumeric():
        errors.append('Please enter a valid project number.')
      if not data_policy_accepted:
        errors.append('Please accept the data handling policy.')
      
      if len(errors) == 0:
        submit_to_firestore(subscriber_email, subscriber_project_number)
        st.success('Your access request has been submitted!', icon="✅")
      else:
        for error in errors:
          st.error(f'Error: {error}')