Beispiel #1
0
def message_users():
  db = db_client()
  if(int(user_manager.get_access_level(db, current_user.id)) < 2):
    return redirect(url_for('dashboard'))
  elif(request.method == 'GET'):
    message_user_list = user_manager.get_all_users(db)
    groups = ["Camp A", "Camp B", "Camp C", "Camp D"]
    temp = []
    i = 0
    for row in message_user_list:
      user_data = {}
      user_data['uid'] = str(row[4])
      user_data['username'] = row[3]
      user_data['phone'] = row[0]
      user_data['groups'] = groups[i] #Make sure it works with multigroups/user
      temp.append(user_data)
      i += 1
      if(i>3):
        i=0
    data = {}
    data['data'] = temp

    return render_template('message_users.html', user=current_user.username, data = data, groups = list(groups),
      access_level=user_manager.get_access_level(db_client(), current_user.id))
  elif(request.method == 'POST'):
    return render_template('message_users.html', user=current_user.username, access_level=current_user.access)
  return render_template('index.html', user=current_user.username, error="TEST", 
      access_level=user_manager.get_access_level(db_client(), current_user.id))
Beispiel #2
0
def manage_users():
    if (int(user_manager.get_access_level(db_client(), current_user.id)) < 2):
        return redirect(url_for('dashboard'))
    if (request.method == 'GET'):
        db = db_client()
        user_list = user_manager.get_all_users(db)
        temp = []
        for user in user_list:
            user_data = {}
            user_data['username'] = user[3]
            user_data['uid'] = str(user[4])
            user_data['position'] = user[2]
            user_data['access_level'] = user[2]
            user_data['email'] = user[1]
            user_data['phone'] = user[0]
            user_data['groups'] = 'TODO'
            user_data['last_login'] = user[5].strftime("%Y-%M-%d @ %H:%M:%S")
            user_data['deleted'] = user[6]
            temp.append(user_data)
        data = {}
        data['data'] = temp
        return render_template('manage_users.html',
                               user=current_user.username,
                               data=data,
                               access_level=user_manager.get_access_level(
                                   db_client(), current_user.id))
    else:
        #POST
        db = db_client()
        post_args = json.loads(request.values.get("data"))
        user_id = next(iter(post_args['data']))
        if (post_args['action'] == "remove"):
            result = user_manager.delete_user(db, user_id)
            if (result == False):
                print("FAILED TO DELETE USER")
            return {}
        elif (post_args['action'] == "unremove"):
            #TODO?: Fix the post data setn to match others
            user_id = post_args['data']['uid']
            user_manager.update_user(db, user_id, {"deleted": "0"})
            return {}
        else:
            response_data = {}
            response_data['data'] = []
            post_args['data'][user_id]['uid'] = user_id
            response_data['data'].append(post_args['data'][user_id])

            new_user_data = {}
            new_user_data['access_level'] = int(
                response_data['data'][0]['access_level'])
            new_user_data['position'] = response_data['data'][0]['position']

            user_manager.update_user(db, user_id, new_user_data)
            return response_data
def signin():
    form = LoginForm()
    message = ""
    if (request.method == 'POST'):
        if (form.validate_on_submit()):
            email = form.email.data
            pw = form.password.data
            db = db_client()

            if (user_manager.validate_user(db, email, pw)):
                # Change user_profile to recno
                user_profile = user_manager.get_username(db, email)
                user_id = user_manager.get_user_id(db, user_profile)
                user_access_level = user_manager.get_access_level(
                    db, str(user_id))
                new_user = User(user_profile, form.password.data, str(user_id),
                                user_access_level)
                user_list.append(new_user)
                login_user(new_user, remember=form.remember.data)
                return redirect(url_for('dashboard'))
            else:
                message = "Incorrect username or password"
        else:
            message = ""
    elif (request.method == 'GET'):
        return render_template("signin.html", form=form)
    return render_template("signin.html", form=form, error=message)
Beispiel #4
0
def user_profile():
  if(request.method == 'GET'):
    db = db_client()
    #print(current_user.password)
    print(current_user)
    if(str(request.args.get('type')) == "1"):
      user_id = request.args.get('user')
    else:
      user_id = current_user.id
    userdata = user_manager.get_user_profile(db, str(user_id))
    
    if(userdata):
      username = userdata['username']
      phonenumber = userdata['phone']
      email = userdata['email']
      position = userdata['position']
      position_map = {'3': "Director", '2': "Senior Doc", '1': "Researcher"}
      position = position_map.get(position, 0)

      return render_template('user_profile.html', user=username, email=email, 
        phonenumber=phonenumber, position=position, 
        profile_img="static/data/"+str(user_id)+"/profile",
        user_links = user_manager.get_profile_ahref_links(db, str(user_id)),
        access_level = user_manager.get_access_level(db_client(), current_user.id))
  elif(request.method=='POST'):
    data = {}
    return render_template('user_profile.html', data=data)
    
  return redirect(url_for('dashboard')) 
def manage_groups():
    db = db_client()
    if (user_manager.get_access_level(db, current_user.username) < 2):
        return redirect(
            url_for('dashboard',
                    user=current_user.username,
                    access_level=current_user.access))
    if (request.method == 'GET'):
        '''
    TODO: Get all users and display on page
    MODEL TEAM: Handle requests to function in group_manager.py

    TO GET PARARMS BASED ON ID:

    username = request.args.get('ID')
    groups = group_manage.<method>

    This can change based on a version of python, so could be request(s)
    '''
        return render_template('manage_groups.html',
                               user=current_user.username,
                               access_level=current_user.access)
    elif (request.method == 'POST'):
        return render_template('manage_groups.html',
                               user=current_user.username,
                               access_level=current_user.access)
    else:
        return render_template('index.html',
                               user=current_user.username,
                               access_level=current_user.access,
                               error="TEST")
def send_email():
    db = db_client()
    if (user_manager.get_access_level(db, current_user.username) < 2):
        return redirect(
            url_for('dashboard',
                    user=current_user.username,
                    access_level=current_user.access))
    if (request.method == 'GET'):
        print("ERROR -- INVALID GET REQUEST")
        return redirect(
            url_for('dashboard',
                    user=current_user.username,
                    access_level=current_user.access))
    elif (request.method == 'POST'):
        print("TRYING TO SEND EMAIL")
        # emailmsg
        # txtmsg
        email = request.form['email']
        message = request.form['message'][1:-1]

        port = 465
        password = ""

        context = ssl.create_default_context()
        sender = "*****@*****.**"
        reciever = email
        smtp_server = "smtp.gmail.com"

        with smtplib.SMTP_SSL("smtp.gmail.com", port,
                              context=context) as server:
            server.login(sender, password)
            server.sendmail(sender, reciever, message)
        return ("EMAIL SENT")
def send_sms():
    db = db_client()
    if (user_manager.get_access_level(db, current_user.username) < 2):
        return redirect(
            url_for('dashboard',
                    user=current_user.username,
                    access_level=current_user.access))

    if (request.method == 'GET'):
        print("do something")
    elif (request.method == 'POST'):
        numbers = ast.literal_eval(request.form['numbers'])
        message = request.form['message'][1:-1]

        client = boto3.client('sns')
        topic = client.create_topic(Name="message")
        topic_arn = topic['TopicArn']

        for num in numbers:
            client.subscribe(TopicArn=topic_arn,
                             Protocol='sms',
                             Endpoint="+1" + num)

        client.publish(Message=message, TopicArn=topic_arn)

        for sub in client.list_subscriptions()['Subscriptions']:
            client.unsubscribe(SubscriptionArn=sub['SubscriptionArn'])
        client.delete_topic(TopicArn=topic_arn)

        #flash("Message sent") # Doesnt work
    else:
        print("do something")
    return ("testing")
def signin():
    form = LoginForm()
    message = ""
    if (request.method == 'POST'):
        if (form.validate_on_submit()):
            user = form.username.data
            pw = form.password.data

            db = db_client()
            print(user)

            if (user_manager.validate_user(db, user, pw)):
                user_profile = user_manager.get_username_profile(db, user)
                user_access_level = user_manager.get_access_level(db, user)
                new_user = User(user, form.password.data,
                                str(user_profile['_id']), user_access_level)
                user_list.append(new_user)
                login_user(new_user, remember=form.remember.data)
                return redirect(
                    url_for('dashboard',
                            user=current_user.username,
                            access_level=current_user.access))
            else:
                message = "Incorrect username or password"
        else:
            message = ""
    elif (request.method == 'GET'):
        render_template("signin.html", form=form)
    return render_template("signin.html", form=form, error=message)
Beispiel #9
0
def table_reload():
  db = db_client()
  user_list = user_manager.get_all_users(db)
  temp = []
  for user in user_list:
    user_data = {}
    user_data['username'] = user[3]
    user_data['uid'] = str(user[4])
    user_data['position'] = user[2]
    user_data['access_level'] = user_manager.get_access_level(db, str(user[4])) 
    user_data['email'] = user[1]
    user_data['phone'] = user[0]
    user_data['groups'] = 'TODO'
    user_data['last_login'] = user[5].strftime("%Y-%M-%d @ %H:%M:%S")
    user_data['deleted'] = user[6]
    temp.append(user_data)
  data = {}
  data['data'] = temp
  return data
Beispiel #10
0
def send_sms():
    if (int(user_manager.get_access_level(db_client(), current_user.id)) < 2):
        return redirect(url_for('dashboard'))

    if (request.method == 'GET'):
        print("do something")
    elif (request.method == 'POST'):
        numbers = ast.literal_eval(request.form['numbers'])
        message = request.form['message'][1:-1]
        print("SEND MESSAGE")
        print(numbers)
        print(message)

        f = open("/home/aggie/.aws/credentials", "rt")
        data = f.read().split("\n")
        client = boto3.client(
            'sns',
            aws_access_key_id=data[1].split("=")[1].lstrip(),
            aws_secret_access_key=data[2].split("=")[1].lstrip(),
            region_name="us-east-1")

        print(data[1].split("=")[1].lstrip())
        print(data[2].split("=")[1].lstrip())
        topic = client.create_topic(Name="message")
        topic_arn = topic['TopicArn']

        for num in numbers:
            client.subscribe(TopicArn=topic_arn,
                             Protocol='sms',
                             Endpoint="+1" + num)

        client.publish(Message="Aggie STEM DL: \n\n" + message,
                       TopicArn=topic_arn)

        for sub in client.list_subscriptions()['Subscriptions']:
            client.unsubscribe(SubscriptionArn=sub['SubscriptionArn'])
        client.delete_topic(TopicArn=topic_arn)
        print("Message Sent")
        #flash("Message sent") # Doesnt work
    return ("testing")
Beispiel #11
0
def signin():
    form = LoginForm()
    message = ""
    if (request.method == 'POST'):
        if (form.validate_on_submit()):
            email = form.email.data
            pw = form.password.data
            db = db_client()

            if (user_manager.validate_user(db, email, pw)):
                # Change user_profile to recno
                user_profile = user_manager.get_username(db, email)
                user_id = user_manager.get_user_id(db, user_profile)
                user_access_level = user_manager.get_access_level(
                    db, str(user_id))
                new_user = User(user_profile, form.password.data, user_id,
                                user_access_level)
                user_login_list.append(new_user)
                login_user(new_user, remember=form.remember.data)
                # Check if they have a /data/<DIR>, if not then create
                try:
                    os.makedirs(APP_ROOT + "/static/data/" + str(user_id))
                except:
                    print("Directory already exists for user = %s" %
                          str(user_id))
                return redirect(url_for('dashboard'))
            else:
                message = "Incorrect username or password"
        else:
            message = ""
    elif (request.method == 'GET'):
        next_url = request.args.get("next")
        # TODO: Bug with user somehoe not being authenticated or is removed from user_login_list
        if (current_user.is_authenticated):
            if (next_url):
                if (len(next_url) > 0):
                    next_url = next_url[1:]  #cannot have / in url_for
                return redirect(url_for(next_url))
        return render_template("signin.html", form=form)
    return render_template("signin.html", form=form, error=message)
Beispiel #12
0
 def get_user(user_id):
   db = db_client()
   check_user = user_manager.check_login(db, str(user_id))
   if(check_user):
     return User(check_user[1], user_id, user_manager.get_access_level(db, str(user_id)))
def manage_users():
    if (request.method == 'GET'):
        '''
    TODO:
    MODEL TEAM:

       1) Finish user_manager.last_login(db,user)

       2) group_manager.get_all_groups(db, username)

    username = request.args.get('ID')

    '''
        db = db_client()
        if (user_manager.get_access_level(db, current_user.username) < 2):
            return redirect(
                url_for('dashboard',
                        user=current_user.username,
                        access_level=current_user.access))

        group_user_list = user_manager.get_all_users(db)
        # TODO: Fix get_all_groups()
        temp = []
        for row in group_user_list:
            user_data = {}
            user_data['uid'] = str(row['_id'])
            user_data['username'] = row['username']
            user_data['position'] = row['position']
            user_data['access_level'] = row['access_level']
            user_data['email'] = row['email']
            user_data['phone'] = row['phone']
            user_data[
                'groups'] = 'TODO'  #group_manager.get_all_groups(db, str(row['_id']))
            user_data['last_login'] = row['login_timestamp'][0:16]
            user_data['deleted'] = str(row['deleted'])
            temp.append(user_data)
        data = {}
        data['data'] = temp
        return render_template('manage_users.html',
                               user=current_user.username,
                               data=data,
                               access_level=current_user.access)
    elif (request.method == 'POST'):
        db = db_client()
        post_args = json.loads(request.values.get("data"))
        print("POST REQUEST")
        print(post_args)
        user_id = next(iter(post_args['data']))
        if (post_args['action'] == "remove"):
            result = user_manager.delete_user(db, user_id)
            if (result == False):
                print("FAILED")
            return {}
        elif (post_args['action'] == "unremove"):
            print("HERE UNREMOVE USER")
            #TODO: fix the post dat sent to match others
            user_id = post_args['data']['uid']
            user_manager.update_user(db, user_id, {"deleted": False})
            return {}
        else:
            response_data = {}
            response_data['data'] = []
            post_args['data'][user_id]['uid'] = user_id
            response_data['data'].append(post_args['data'][user_id])

            new_user_data = {}
            new_user_data['access_level'] = int(
                response_data['data'][0]['access_level'])
            new_user_data['position'] = response_data['data'][0]['position']

            user_manager.update_user(db, user_id, new_user_data)
            return response_data
    else:
        print("SHIT")
        return render_template('index.html',
                               user=current_user.username,
                               error="TEST",
                               access_level=current_user.access)