def main(event, context):
    """Process input arguments, get user config settings,
     create User/Instance class instances, and get the commit history for the user.
     """

    # Get input arguments, create api instance (checks for secrets info)
    print("%s: Lambda executing main:")
    print("Event: %s" % (event))
    print("Context: %s" % (context))
    input_arguments = parse_input_commands()

    auth_instance = git_models.Instance()

    queried_user = input_arguments['username']

    # Create User instance and pass in CLI user, followed by an auth instance
    user = git_models.User(queried_user, auth_instance)
    user.get_user_repositories()

    if user.user_repos:
        commits = user.get_user_commit_history()
        commit_length = len(commits)
        message = format_sms_message(commit_length)
        send_sms(message)

    else:
        return "No results returned from API."
Example #2
0
def response_submitted(alert_id):
    """
    Action performed when a response is provided.

    Text the creator of the alert:
        - email, phone, and things able to help with of the responding user.
    """
    if request.method == 'POST':
        submitted_message = request.form['message']
        responding_user = current_user
        try:
            alert = Alert.query.get(int(alert_id))
        except Exception as e:
            return 'Error {}'.format(e), 404

        user_to_message = alert.user
        response_message = "%s" % responding_user.email
        if responding_user.phone_number:
            response_message += ", %s" % responding_user.phone_number

        response_message += " is availble for: "
        availble = {
            "shelter": responding_user.shelter,
            "clothes": responding_user.clothes,
            "food": responding_user.food,
            "other": responding_user.other,
        }
        response_message += "%s" % ", ".join(k for k, v in availble.items() if v)
        response_message += " Message: " + submitted_message

        if user_to_message.phone_number:
            send_sms(
                user_to_message.phone_number,
                response_message
            )

        send_email(
            to=user_to_message.email,
            subject="Alert Response",
            body=response_message,
        )

        Response(user=current_user, alert=alert, message=submitted_message).save()

        flash('Your response has been sent to the advocate, thank you!', 'success')
        return redirect(url_for('dashboard'))
    else:
        try:
            alert = Alert.query.get(int(alert_id))
        except Exception as e:
            return 'Error {}'.format(e), 404

        return render_template('respond_to.html', alert=alert, user=current_user, form=ResponseForm())
Example #3
0
def _webhook():
    if request.method == "GET":
        msg = request.args.get("msg")
        num = request.args.get("num")
        send_sms(num,msg)
        return '1'
    if request.method == "POST":
        data = request.get_json()
        msg = data['msg']

        message = urllib.quote(msg, safe='')
       

        num = data['num']

        call_num(num,message)
Example #4
0
def dashboard():
    """Dashboard."""
    if current_user.role == 'admin':
        # Admin user, show register form
        form = RegisterForm()
        form_error = False
        deleted_user = session.pop('deleted_user', False)
        if request.method == 'POST' and form.validate_on_submit():
            user = User(
                email=form.email.data,
                password=form.password.data,
                phone_number=form.phone_number.data,
                other=form.other.data,
                shelter=form.shelter.data,
                food=form.food.data,
                clothes=form.clothes.data,
                role=form.role.data
            )
            user.save()
            verify_email(user.email)
            flash('User registered succesfully', 'success')
            return redirect(url_for('dashboard'))
        elif request.method == 'POST' and not form.validate_on_submit():
            form_error = True
        return render_template('dashboard/admin.html', 
            form=form, 
            form_error=form_error,
            users=User.get_users(),
            alerts=Alert.get_alerts(),
            delete_user_form=DeleteUserForm(),
            deleted_user=deleted_user)
    elif current_user.role == 'advocate':
        # Advocate user, show alert form
        form = AlertForm()
        if request.method == 'POST' and form.validate_on_submit():
            alert = Alert(
                description=form.description.data,
                other=form.other.data,
                shelter=form.shelter.data,
                food=form.food.data,
                clothes=form.clothes.data,
                gender=form.gender.data,
                age=form.age.data,
                user=current_user
            )
            alert.save()
            users_to_notify = User.get_provider(alert.food, alert.clothes, alert.shelter, alert.other)
            for user in users_to_notify:
                print("found user to notify {}".format(user))
                body = "There is a new 15th night alert. Go to " + \
                       HOST_NAME + \
                       "/respond_to/" + \
                       str(alert.id) + " to respond."
                send_sms(to_number=user.phone_number, body=body)
                send_email(user.email, '15th Night Alert', body)
            flash('Alert sent successfully', 'success')
            return redirect(url_for('dashboard'))

        return render_template('dashboard/advocate.html', form=form)
    else:
        # Provider user, show alerts
        return render_template(
                'dashboard/provider.html',
                user=current_user,
                alerts=Alert.get_active_alerts_for_provider(current_user)
        )