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