def post(self): category_name = request.args.get("category_name").upper() item = request.args.get("title").lower() if not item: abort(404, message="please enter name for item") if not category_name: abort(404, message="please enter category for item") if not request.form.get("ranking"): abort(404, message="please a rank for item") if request.form.get("description"): if len(request.form.get("description")) < 10: abort(404, message="please provide more description for item") titles = Item.query.filter_by(title=item) current_category = Category.query.filter_by(id=category_name).first() for title in titles: if category_name == current_category.name and title.title == item: abort(404, message="{} already exist in {}".format(item, category_name)) category_row = Category.query.filter_by(name=category_name).first() item = Item(title = request.args.get("title").lower(), description = request.args.get("description"), category_name =category_row.name,category_id=category_row.id, rank=request.args.get("ranking")) db.session.add(item) db.session.commit() reorder_priorities(int(category_row.id)) log = Logs(title=item.title,category=item.category_name, action="added") db.session.add(log) db.session.commit() return jsonify({'Success':"{} added successfully to {}".format(item.title, item.category_name)})
def get_data(url, payload, method='GET', session=None): payload['request_ts'] = int(time.time()) headers = { 'User-Agent': 'HomeLink7.7.6; Android 7.0', 'Connection': 'close', 'Authorization': get_token(payload) } q = requests.session() q.keep_alive = False q.adapters.DEFAULT_RETRIES = 30 if method == 'GET': r = q.get(url, params=payload, headers=headers) else: r = q.post(url, params=payload, data=payload, headers=headers) # if session: # if method == 'GET': # r = session.get(url, params=payload, headers=headers) # else: # r = session.post(url, data=payload, headers=headers) # else: # if method == 'GET': # r = requests.get(url, params=payload, headers=headers) # else: # r = requests.post(url, params=payload, data=payload, headers=headers) log = Logs() log.query = r.request.url log.result = r.content log.save() return (r.json())
def add_new_fav(): category_id = int(request.form.get("choose_category")) item = request.form.get("title").lower() if not item: flash("Item must have a name", category="error") return redirect("/") if not category_id: flash("please select a category", category="error") return redirect("/") if not request.form.get("ranking"): flash("Please select a rank for item", category="error") return redirect("/") if request.form.get("description"): if len(request.form.get("description")) < 10: flash('please describe the item in more details') return redirect("/") titles = Item.query.filter_by(title=item) current_category = Category.query.filter_by(id=category_id).first() for title in titles: if category_id == int(current_category.id) and title.title == item: flash(title.title + " already exist in " + current_category.name, category="error") return redirect("/") category_row = Category.query.filter_by( id=int(request.form.get("choose_category"))).first() item = Item(title=request.form.get("title").lower(), description=request.form.get("description"), category_name=category_row.name, category_id=category_row.id, rank=request.form.get("ranking")) db.session.add(item) db.session.commit() reorder_priorities(int(request.form.get("choose_category"))) titles = Item.query.filter_by( title=request.form.get("title").lower()).first() if request.form.get("no_of_tags"): n = int(request.form.get("no_of_tags")) for i in range(n): j = i + 1 key_name = "key" + str(j) value_name = "value" + str(j) if request.form.get(key_name) and request.form.get(value_name): tag = Tags(key=request.form.get(key_name), value=request.form.get(value_name), item_id=titles.id) db.session.add(tag) log = Logs(title=item.title, category=item.category_name, action="added") db.session.add(log) db.session.commit() flash(request.form.get("title") + " added to " + current_category.name, category="message") return redirect("/")
def get_logs(): if request.method == 'POST': time = str(request.json.get('time')) info = str(request.json.get('info')) log_request = Logs(id=None, time=time, info=info) db.session.add(log_request) db.session.commit() else: records = Logs.query.all() print(records) return jsonify({'logs': [record.serialize() for record in records]})
def post(self): if request.args.get("category"): new_category = request.form.get("category").upper() current = Category.query.filter_by(name=new_category).first() if current: abort(404, message="{} already exist".format(new_category)) category = Category(name=new_category) db.session.add(category) db.session.commit() log = Logs(action="added", category=category.name) db.session.add(log) db.session.commit() return jsonify({'Success':"{} added successfully".format(new_category)}) else: abort(404, message="please enter name for category")
def add_category(): if request.form.get("category"): new_category = request.form.get("category").upper() current = Category.query.filter_by(name=new_category).first() if current: flash(new_category + " already exist in categories", category=error) return redirect("/") category = Category(name=new_category) db.session.add(category) db.session.commit() log = Logs(action="added", category=category.name) db.session.add(log) db.session.commit() flash(request.form.get("category").upper() + " added to Categories", category="message") return redirect("/") else: flash("category must have a name", category="error") return redirect("/")
def post(self): if self.is_connected() and get_is_admin_from_id( self.request.cookies.get('user_id').split('|')[0]): if self.request.get('id') and self.request.get('id') != "": log_sentence = None #Update absentee entry absentee = get_absentee_from_id(self.request.get('id')) if self.request.get('justified'): absentee.justification_bool = True log_sentence = "%(admin)s accepted the absence of %(student)s. (%(lesson)s from " \ "%(hour_start)s to %(hour_end)s" else: absentee.justification_bool = False log_sentence = "%(admin)s refused the absence of %(student)s. (%(lesson)s from " \ "%(hour_start)s to %(hour_end)s" if self.request.get('justification') and self.request.get( 'justification') != "": absentee.justification_text = self.request.get( 'justification') else: absentee.justification_text = "/" absentee.put() user_id = self.request.cookies.get('user_id').split('|')[0] account = get_account_from_id(user_id) log_sentence = log_sentence % { 'admin': account.name, 'student': absentee.student_name, 'lesson': absentee.class_title, 'hour_start': absentee.start_hour, 'hour_end': absentee.end_hour } # I don't know why, the date won't accept the same way log_sentence = log_sentence + " on the " + absentee.class_date + ".)" Logs(date_time=self.date_details.now(), category="absentee control", author=account.name, description=log_sentence).put() #Redirect to correct page self.response.headers.add_header('Set-Cookie', "message=Saved; Path = '/'") self.redirect('/administration/show_absentee/?id=' + self.request.get('id')) else: self.render("message.html", title="Invalid URL", text="It seems you're using an invalid URL") else: self.render( "message.html", title="Access forbidden", text="It seems you're not an administrator nor a connected user" )
def get(self): if self.is_connected() and get_is_admin_from_id( self.request.cookies.get('user_id').split('|')[0]): accounts = get_all_accounts() error_messages = [] infos_messages = [] if self.request.get('action') and self.request.get('user'): action = self.request.get('action') user = self.request.get('user') now = datetime.datetime.now() author = get_username_from_id( self.request.cookies.get('user_id').split('|')[0]) if action == "delete": if delete_user_from_login(user): infos_messages.append("User " + user + " has been deleted") Logs(date_time=now, category="members_deletion", author=author, description=author + " deleted" + " account " + user).put() else: error_messages.append("Error while deleting user " + user + ". Please try again") elif action == "grant_admin": if grant_admin_from_login(user): infos_messages.append( "Admin privileges have been granted to user " + user) Logs(date_time=now, category="members_privileges", author=author, description=author + " granted" + " admin privileges to " + user).put() else: error_messages.append( "Error while granting admin privileges to user " + user) elif action == "remove_admin": if remove_admin_from_login(user): infos_messages.append( "Admin privileges have been removed from user " + user) Logs(date_time=now, category="members_privileges", author=author, description=author + " removed" + " admin privileges from " + user).put() else: error_messages.append( "Error while removing admin privileges from user " + user) elif action == "grant_teacher": if grant_teacher_from_login(user): infos_messages.append( "Teacher privileges have been granted to user " + user) Logs(date_time=now, category="members_privileges", author=author, description=author + " granted" + " teacher privileges to " + user).put() else: error_messages.append( "Error while granting teacher privileges to user " + user) elif action == "remove_teacher": if remove_teacher_from_login(user): infos_messages.append( "Teacher privileges have been removed from user " + user) Logs(date_time=now, category="members_privileges", author=author, description=author + " removed" + " teacher privileges from " + user).put() else: error_messages.append( "Error while removing teacher privileges from user " + user) else: error_messages.append( "It seems you are using an invalid URL. No action will be done." ) time.sleep(1) accounts = get_all_accounts() self.render("administration_members.html", accounts=accounts, error_messages=error_messages, infos_messages=infos_messages) elif self.request.get('action') and not self.request.get('user') or self.request.get('user')\ and not self.request.get('action'): error_messages.append( "It seems you are using an invalid URL. No action will be done." ) self.render("administration_members.html", accounts=accounts, error_messages=error_messages) else: self.render("administration_members.html", accounts=accounts) else: self.render( "message.html", title="Access forbidden", text="It seems you're not an administrator nor a connected user" )
def post(self): # Test user connexion and privileges if self.is_connected() and get_is_teacher_from_id( self.request.cookies.get('user_id').split('|')[0]): #First, get the class the teacher should have right now class_date = self.date_details.strftime("%d/%m/%Y") teacher_name = get_account_from_id( self.request.cookies.get('user_id').split('|')[0]).name class_to_display = self.filter_teacher_class( teacher_name, self.date_details.strftime("%H:%M"), class_date) # If there's a class if class_to_display is not None: # Then, we get the students for this class students_list = [] groups = self.ade_communicator.get_students_groups() for group_name in groups: for group_to_find in class_to_display['groups']: if re.match(group_to_find, group_name) is not None: temp = [] for student in groups[group_name]: temp.append({ "name": student, "group": group_name }) students_list.extend(temp) students_list.sort(key=lambda x: x['name']) temp = students_list students_list = [] email_uniq = [] current_month = int(self.date_details.strftime("%m")) re_2a = re.compile(r"^2A .*") re_2ag = re.compile(r"^2A G.*") for student in temp: #Diff groups if class is for 2A if re_2a.match(student['group']): #If we're on semester 2 => majors groups if 1 <= current_month <= 8: if student['name'][ 'mail'] not in email_uniq and not re_2ag.match( student['group']): students_list.append(student) email_uniq.append(student['name']['mail']) #Else normal groups else: if student['name'][ 'mail'] not in email_uniq and re_2ag.match( student['group']): students_list.append(student) email_uniq.append(student['name']['mail']) #Else we treat them normally else: if student['name']['mail'] not in email_uniq: students_list.append(student) email_uniq.append(student['name']['mail']) # Purge current absentees present_absentees = get_absentees_for_class( class_to_display['class_name'], class_to_display['teacher_name'], class_date, class_to_display['start_time'], class_to_display['end_time']) if len(present_absentees) != 0: Logs(date_time=self.date_details.now(), category="absentees mark", author=teacher_name, description=teacher_name + " deleted all absentees for class " + class_to_display['class_name'] + " (" + class_date + " from " + class_to_display['start_time'] + " to " + class_to_display['end_time'] + ")").put() db.delete(present_absentees) #Check who is present now from post argument for student in students_list: name = student['name']['name'] mail = student['name']['mail'] if self.request.get(mail + "|" + name + "|box"): absentee = Absentees( student_name=name, student_email=mail, student_group=student['group'], class_title=class_to_display['class_name'], teacher_name=class_to_display['teacher_name'], start_hour=class_to_display['start_time'], end_hour=class_to_display['end_time'], class_date=class_date, justification_bool=False, justification_text="/") absentee.put() Logs(date_time=datetime.datetime.now(), category="absentees mark", author=teacher_name, description=teacher_name + " marked " + absentee.student_name + " (" + absentee.student_group + ") as absent for " + absentee.class_title + " (" + absentee.class_date + " from " + absentee.start_hour + " to " + absentee.end_hour + ")").put() # Useful to avoid bug while writing and querying time.sleep(1) self.redirect('/students/absentees/') # Else, congrats, the teacher doesn't have to do anything else: self.redirect('/students/absentees/') else: self.render( "message.html", title="Access fobidden", text="It seems you're not a teacher nor a connected user")