def create_data_course(): role_teacher = Role.objects(name='teacher').first() list_teacher = User.objects(role=role_teacher) role_student = Role.objects(name='student').first() list_student = User.objects(role=role_student) list_shift = Shift.objects.all() Course(id_course="SD-001", name="Word - Excel - Power Point", tuition=120, teacher=list_teacher[0], shift=list_shift[0]).save() Course(id_course="DB-001", name="DataBase System", tuition=199, teacher=list_teacher[1], shift=list_shift[1]).save() Course(id_course="WEB-001", name="Web Interface", tuition=149, teacher=list_teacher[2], shift=list_shift[2]).save() Course(id_course="JAVA-001", name="Java Application", tuition=299, teacher=list_teacher[3], shift=list_shift[0]).save() Course(id_course="RJ-001", name="React - Redux JavaScript", tuition=289, teacher=list_teacher[4], shift=list_shift[2]).save()
def create_data_account(): role_admin = Role.objects(name="admin").first() role_academic = Role.objects(name="academic").first() role_cashier = Role.objects(name="cashier").first() list_admin = User.objects(role=role_admin) list_academic = User.objects(role=role_academic) list_cashier = User.objects(role=role_cashier) hashed_password = bcrypt.generate_password_hash("1").decode('utf-8') num = 1 for item in list_admin: Account(username="******" + str(num), password=hashed_password, user=item).save() num += 1 num = 1 for item in list_academic: Account(username="******" + str(num), password=hashed_password, user=item).save() num += 1 num = 1 for item in list_cashier: Account(username="******" + str(num), password=hashed_password, user=item).save() num += 1
def staff_removed(page): if current_user.user.role.name != 'admin': flash('You\'re not admin. You can not access this page') return redirect(url_for('main.index')) activate = list(range(10)) activate[4] = "active" page = int(page) role_academic = Role.objects(name='academic').first() role_cashier = Role.objects(name='cashier').first() if page is None or page == 1: page = request.args.get('page', 1, type=int) users_1 = User.objects(role=role_academic,is_activate=False).limit(5) users_2 = User.objects(role=role_cashier,is_activate=False).limit(5) print(users_2) elif page <=-1: page = int((User.objects(role=role,is_activate=False).count()-10) /10) + 2 num_skip= User.objects(role=role).count()-5 if num_skip < 0: num_skip = 0 users_1 = User.objects(role=role_academic,is_activate=False).skip(num_skip) users_2 = User.objects(role=role_cashier,is_activate=False).skip(num_skip) else: users_1 = User.objects(role=role_academic,is_activate=False).skip(page*5-5).limit(5) users_2 = User.objects(role=role_cashier,is_activate=False).skip(page*5-5).limit(5) users = list() for item in users_1: users.append(item) for item in users_2: users.append(item) return render_template('staff_removed.html', title='Staff',activate=activate,staffs=users,page_num=page)
def index(page): if current_user.is_authenticated: activate = list(range(10)) activate[1] = "active" page = int(page) role = Role.objects(name='student').first() if page is None or page == 1: page = request.args.get('page', 1, type=int) students = User.objects(role=role, is_activate=True).limit(10) elif page <= -1: page = int( (User.objects(role=role, is_activate=True).count() - 10) / 10) + 2 num_skip = User.objects(role=role).count() - 10 if num_skip < 0: num_skip = 0 students = User.objects(role=role, is_activate=True).skip(num_skip) else: students = User.objects( role=role, is_activate=True).skip(page * 10 - 10).limit(10) return render_template('student.html', title='Student', activate=activate, students=students, page_num=page) return redirect(url_for('users.login'))
def create(): activate = list(range(10)) activate[1] = "active" form = UpdateUserForm() if form.validate_on_submit(): if form.picture.data: picture_file = save_picture(form.picture.data) image_file = picture_file first_name = form.first_name.data last_name = form.last_name.data phone = form.phone.data email = form.email.data address = form.address.data birth = form.birth.data gender = form.gender.data role = Role.objects(name='student').first() user = User(first_name=first_name, last_name=last_name, phone=phone, email=email, address=address, birth=birth, gender=gender, role=role) user.save() flash('Student has been created!', 'success') return redirect(url_for('student.student_info', id=user.id)) return render_template('student_create.html', title='Create Student\'s Info', activate=activate, form=form)
def staff_info(id): if current_user.user.role.name == 'admin' or current_user.user.role.name == 'cashier': activate = list(range(10)) activate[4] = "active" is_activate = True if current_user.is_authenticated: user = User.objects(id=id,is_activate=True).first() form = UpdateStaffForm() if id is None or user is None: return redirect(url_for('staff.index',page=1)) if form.validate_on_submit(): if form.picture.data: picture_file = save_picture(form.picture.data) user.image_file = picture_file user.first_name=form.first_name.data user.last_name=form.last_name.data user.phone =form.phone.data user.email =form.email.data user.salary =form.salary.data user.address =form.address.data user.birth =form.birth.data user.gender = form.gender.data role = form.role.data if role == 'cashier' or role == 'academic': role = Role.objects(name=role).first() # print(role.name) user.role = role # print(user.role.id,role.id) else: flash('Can\'t find role, please reload page', 'danger') return redirect(url_for('staff.staff_info',id=id)) user.save() flash('Staff has been updated!', 'success') return redirect(url_for('staff.staff_info',id=id)) elif request.method == 'GET': form.first_name.data = user.first_name form.last_name.data = user.last_name form.phone.data = user.phone form.email.data = user.email form.salary.data = user.salary form.address.data = user.address form.gender.data = user.gender form.birth.data = user.birth form.role.data = user.role receipts = PaymentReceipt.objects(staff=user) account = Account.objects(user=user).first() if account and account.is_activate == False: flash('Account of staff hasn\'t been acitved yet !!', 'info') is_activate = False return render_template('staff_info.html', title='Staff Info',activate=activate,staff=user,form=form,receipts=receipts,is_activate = is_activate) return redirect(url_for('staff.index',page=1)) else: flash('You\'re not admin. You can not access this page') return redirect(url_for('main.index'))
def staff_inactived(page): if current_user.user.role.name != 'admin': flash('You\'re not admin. You can not access this page') return redirect(url_for('main.index')) activate = list(range(10)) activate[4] = "active" page = int(page) role_academic = Role.objects(name='academic').first() role_cashier = Role.objects(name='cashier').first() if page is None or page == 1: page = request.args.get('page', 1, type=int) accounts = Account.objects(is_activate=False).limit(10) elif page <=-1: page = int((Account.objects(is_activate=False).count()-10) /10) + 2 accounts = Account.objects(is_activate=False).skip(Account.objects().count()-10) else: accounts = Account.objects(is_activate=False).skip(page*10-10).limit(10) users = list() for item in accounts: users.append(item.user) return render_template('staff_inactived.html', title='Staff Inactive Yet',activate=activate,staffs=users,page_num=page)
def restore(id): activate = list(range(10)) activate[2] = "active" role = Role.objects(name="teacher").first() teacher = User.objects(role=role, id=id, is_activate=False).first() if teacher: teacher.is_activate = True teacher.save() flash('Teacher restore success !!', 'success') return redirect(url_for('teacher.teacher_removed', page=1)) else: flash('Teacher with id ' + id + ' can\'t find !!', 'danger') return redirect(url_for('teacher.teacher_removed', page=1))
def restore(id): activate = list(range(10)) activate[1] = "active" role = Role.objects(name="student").first() student = User.objects(role=role, id=id, is_activate=False).first() if student: student.is_activate = True student.save() flash('Student restore success !!', 'success') return redirect(url_for('student.student_removed', page=1)) else: flash('Student with id ' + id + ' can\'t find !!', 'danger') return redirect(url_for('student.student_removed', page=1))
def remove(id): activate = list(range(10)) activate[2] = "active" role = Role.objects(name="teacher").first() teacher = User.objects(role=role, id=id, is_activate=True).first() if teacher: receipts = PaymentReceipt.objects(staff=teacher) if len(receipts) > 0: flash('Teacher can\'t remove !!', 'danger') return redirect(url_for('teacher.teacher_info', id=teacher.id)) teacher.is_activate = False teacher.save() flash('Teacher delete success !!', 'success') return redirect(url_for('teacher.index', page=1))
def remove(id): activate = list(range(10)) activate[1] = "active" role = Role.objects(name="student").first() student = User.objects(role=role, id=id, is_activate=True).first() if student: receipts = TuitionReceipt.objects(student=student) if len(receipts) > 0: flash('Student can\'t remove !!', 'danger') return redirect(url_for('student.student_info', id=student.id)) student.is_activate = False student.save() flash('Student delete success !!', 'success') return redirect(url_for('student.index', page=1))
def educate_info(id): if current_user.is_authenticated: activate = list(range(10)) activate[3] = "active" form = UpdateCourseForm() if id is None: return redirect(url_for('educate.index')) course = Course.objects(id=id).first_or_404() if form.validate_on_submit(): role_teacher = Role.objects(name='teacher').first() list_teacher = User.objects(role=role_teacher, is_activate=True) course.name = form.name.data course.start_date = form.start_date.data course.finish_date = form.finish_date.data course.tuition = float(form.tuition.data) shift = Shift.objects(name=form.shift.data).first() course.shift = shift for item in list_teacher: if item.first_name + ' ' + item.last_name == form.teacher.data: course.teacher = item break if form.status.data == 'True': course.status = True else: course.status = False course.save() flash('Course has been updated!', 'success') return redirect(url_for('educate.educate_info', id=id)) elif request.method == 'GET': form.id_course.data = course.id_course form.name.data = course.name form.start_date.data = course.start_date form.finish_date.data = course.finish_date form.tuition.data = course.tuition form.shift.data = course.shift.name form.teacher.data = course.teacher.first_name + ' ' + course.teacher.last_name form.status.data = course.status TuitionReceipts = TuitionReceipt.objects(course=course) return render_template('educate_info.html', title='Educate Info', activate=activate, form=form, students=course.list_student, id_course=id, TuitionReceipts=TuitionReceipts) return redirect(url_for('users.login'))
def create_data_user(num_admin=2, num_academic=5, num_cashier=5, num_teacher=10): num = 0 with open('it_center/data/user.json') as f: list_user = json.load(f) roles = ["admin", "academic", "cashier", "teacher", "student"] ro = dict() num_role = 4 for item in list_user: if ro.get('admin') and ro.get('admin') == num_admin: num_admin = 0 roles.pop(roles.index('admin')) num_role -= 1 if ro.get('academic') and ro['academic'] == num_academic: num_academic = 0 roles.pop(roles.index('academic')) num_role -= 1 if ro.get('cashier') and ro['cashier'] == num_cashier: num_cashier = 0 roles.pop(roles.index('cashier')) num_role -= 1 if ro.get('teacher') and ro['teacher'] == num_teacher: num_teacher = 0 roles.pop(roles.index('teacher')) num_role -= 1 num = random.randint(0, num_role) if ro.get(roles[num]): count = ro[roles[num]] + 1 else: count = 1 ro[roles[num]] = count role = Role.objects(name=roles[num]).first() birth = datetime.datetime.strptime(item['birth']['$date'], '%Y-%m-%dT%H:%M:%S.%fZ') if role: num += 1 User(first_name=item['first_name'], last_name=item['last_name'], email=item['email'], phone=item['phone'], role=role, birth=birth, address=item['address'], gender=item['gender'], image_file=item['image_file']).save() print("create success", num, "data user")
def validate_teacher(self, teacher): if current_user.user.role.name == 'admin' or current_user.user.role.name == 'academic': flag = False role_teacher = Role.objects(name='teacher').first() list_teacher = User.objects(role=role_teacher, is_activate=True) for item in list_teacher: if item.first_name + ' ' + item.last_name == teacher.data: flag = True break if flag == False: raise ValidationError( 'Name teacher isn\'t exist. Please reload page and input again' ) else: raise ValidationError( 'You\'re not a member of system. Please contact to manager.')
def remove(id): activate = list(range(10)) activate[4] = "active" role = Role.objects(name="staff").first() staff = User.objects(id=id,is_activate=True).first() account = Account.objects(user=staff).first() if staff and account: TuitionReceipts = TuitionReceipt.objects(student=staff) if len(TuitionReceipts) > 0: flash('Staff can\'t remove !!', 'danger') return redirect(url_for('staff.staff_info',id=staff.id)) staff.is_activate = False account.is_activate = False staff.save() account.save() flash('Staff delete success !!', 'success') return redirect(url_for('staff.index',page=1)) flash('Can\'t find staff !!', 'danger') return redirect(url_for('staff.index',page=1))
def create(): activate = list(range(10)) activate[3] = "active" if current_user.is_authenticated: form = CreateCourseForm() if form.validate_on_submit(): id_course = form.id_course.data course = Course.objects(id_course=id_course).first() if course is None: name = form.name.data start_date = form.start_date.data finish_date = form.finish_date.data tuition = float(form.tuition.data) shift = Shift.objects(name=form.shift.data).first() role_teacher = Role.objects(name='teacher').first() list_teacher = User.objects(role=role_teacher, is_activate=True) for item in list_teacher: if item.first_name + ' ' + item.last_name == form.teacher.data: teacher = item break course = Course(id_course=id_course, name=name, start_date=start_date, finish_date=finish_date, tuition=tuition, shift=shift, teacher=teacher) course.save() flash('Course has been created!', 'success') return redirect(url_for('educate.educate_info', id=course.id)) flash('Course is exist!, please check again', 'danger') return redirect(url_for('educate.create')) return render_template('educate_create.html', title='Educate Create Course', activate=activate, form=form) return redirect(url_for('users.login'))
def student_removed(page): activate = list(range(10)) activate[1] = "active" page = int(page) role = Role.objects(name='student').first() if page is None or page == 1: page = request.args.get('page', 1, type=int) students = User.objects(role=role, is_activate=False).limit(10) elif page <= -1: page = int( (User.objects(role=role, is_activate=False).count() - 10) / 10) + 2 num_skip = User.objects(role=role).count() - 10 if num_skip < 0: num_skip = 0 students = User.objects(role=role, is_activate=False).skip(num_skip) else: students = User.objects( role=role, is_activate=False).skip(page * 10 - 10).limit(10) return render_template('student_removed.html', title='Removed Student', activate=activate, students=students, page_num=page)
def index(page): activate = list(range(10)) activate[2] = "active" page = int(page) role = Role.objects(name='teacher').first() if page is None or page == 1: page = request.args.get('page', 1, type=int) teachers = User.objects(role=role, is_activate=True).limit(10) elif page <= -1: page = int( (User.objects(role=role, is_activate=True).count() - 10) / 10) + 2 num_skip = User.objects(role=role).count() - 10 if num_skip < 0: num_skip = 0 teachers = User.objects(role=role, is_activate=True).skip(num_skip) else: teachers = User.objects(role=role, is_activate=True).skip(page * 10 - 10).limit(10) return render_template('teacher.html', title='Teacher', activate=activate, teachers=teachers, page_num=page)
def create(): if current_user.user.role.name != 'admin': flash('You\'re not admin. You can not access this page') return redirect(url_for('main.index')) activate = list(range(10)) activate[4] = "active" form = CreateStaffForm() image_file = "" if id is None: return redirect(url_for('staff.index',page=1)) if form.validate_on_submit(): if form.picture.data: picture_file = save_picture(form.picture.data) image_file = picture_file first_name=form.first_name.data last_name=form.last_name.data phone =form.phone.data salary = form.salary.data email =form.email.data address =form.address.data birth =form.birth.data gender = form.gender.data if form.role.data == 'cashier' or form.role.data == 'academic' or form.role.data == 'admin': role = Role.objects(name=form.role.data).first() else: flash('Can\'t find role, please reload page', 'danger') return redirect(url_for('staff.create')) if image_file == "": user = User(first_name=first_name,last_name=last_name,phone=phone,email=email,gender=gender,address=address,birth=birth,role=role,image_file=image_file,salary=salary).save() else: user = User(first_name=first_name,last_name=last_name,phone=phone,email=email,gender=gender,address=address,birth=birth,role=role,salary=salary).save() account = Account(username=phone,password="******",user=user,is_activate=False).save() send_reset_email(user) flash('Staff has been created! Your account is also created, please use phone to login to system. Verify is sending to your gmail, please wait a few minutes. Within 3 hour, you must login to system to change your new password', 'success') return redirect(url_for('staff.staff_info',id=user.id)) return render_template('staff_create.html', title='Staff Create Staff\'s Info',activate=activate,form=form)
def get_removed_student(key_word): if current_user.is_authenticated: data = list() role = Role.objects(name='student').first() if key_word == 'all': students = User.objects(role=role, is_activate=False).limit(10) if students: for item in students: ele = { "id": str(item.id), "address": item.address, "birth": item.birth.strftime("%m-%d-%Y"), "email": item.email, "first_name": item.first_name, "gender": item.gender, "image_file": item.image_file, "last_name": item.last_name, "phone": item.phone, "is_activate": item.is_activate } data.append(ele) response = { 'status': True, 'message': 'Get Students Success', 'data': data } else: students = User.objects(role=role, is_activate=False, first_name__istartswith=key_word).limit(5) if students: for item in students: ele = { "id": str(item.id), "address": item.address, "birth": item.birth.strftime("%m-%d-%Y"), "email": item.email, "first_name": item.first_name, "gender": item.gender, "image_file": item.image_file, "last_name": item.last_name, "phone": item.phone, "is_activate": item.is_activate } data.append(ele) students = User.objects(role=role, is_activate=False, last_name__istartswith=key_word).limit(5) if students: for item in students: flag = False for ele in data: if ele['id'] == item.id: flag = True break if flag == False: ele = { "id": str(item.id), "address": item.address, "birth": item.birth.strftime("%m-%d-%Y"), "email": item.email, "first_name": item.first_name, "gender": item.gender, "image_file": item.image_file, "last_name": item.last_name, "phone": item.phone, "is_activate": item.is_activate } data.append(ele) students = User.objects(role=role, is_activate=False, phone__istartswith=key_word).limit(5) if students: for item in students: flag = False for ele in data: if ele['id'] == item.id: flag = True break if flag == False: ele = { "id": str(item.id), "address": item.address, "birth": item.birth.strftime("%m-%d-%Y"), "email": item.email, "first_name": item.first_name, "gender": item.gender, "image_file": item.image_file, "last_name": item.last_name, "phone": item.phone, "is_activate": item.is_activate } data.append(ele) students = User.objects(role=role, is_activate=False, email__istartswith=key_word).limit(5) if students: for item in students: flag = False for ele in data: if ele['id'] == item.id: flag = True break if flag == False: ele = { "id": str(item.id), "address": item.address, "birth": item.birth.strftime("%m-%d-%Y"), "email": item.email, "first_name": item.first_name, "gender": item.gender, "image_file": item.image_file, "last_name": item.last_name, "phone": item.phone, "is_activate": item.is_activate } data.append(ele) response = { 'status': True, 'message': 'Get Students Success', 'data': data } else: response = { 'status': False, 'message': 'Get Students Failed', 'data': None } return response
def statistic(): if current_user.user.role.name != 'admin': flash('You\'re not admin. You can not access this page') return redirect(url_for('main.index')) activate = list(range(10)) activate[6] = "active" legend = 'Monthly Payment Data' labels = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ] salaries = PaymentReceipt.objects.all() money_monthly = dict() payment_values = list() tuition_values = list() year = 2019 for i in range(1, 13, 1): money_monthly[i] = 0 for key, value in money_monthly.items(): for item in salaries: if item.created_date.month == key and item.created_date.year == year: value = money_monthly[item.created_date.month] money_monthly[item.created_date.month] = item.money + value for i in list(money_monthly.items()): payment_values.append(i[1]) for i in range(1, 13, 1): money_monthly[i] = 0 tuitions = TuitionReceipt.objects.all() for key, value in money_monthly.items(): for item in tuitions: for element in item.list_detail: if element.created_date.month == key and element.created_date.year == year: value = money_monthly[element.created_date.month] money_monthly[element.created_date.month] = ( element.tuition - element.money_return) + value for i in list(money_monthly.items()): tuition_values.append(i[1]) now = datetime.utcnow() role = Role.objects(name='student').first() student_in_system = User.objects(role=role).all() student_in_class = list() class_in_active = list() for item in tuitions: if item.course.finish_date >= now and item.course.start_date <= now: if item.student in student_in_class: continue student_in_class.append(item.student) class_in_system = Course.objects.all() for item in class_in_system: if item.finish_date >= now: class_in_active.append(item) now = datetime.utcnow() print(payment_values, int(now.month)) now_payment_values = payment_values[int(now.month) - 1] now_tuition_values = tuition_values[int(now.month) - 1] colors = [ '#a991ff', '#f48fff', '#61ffdd', '#00a879', '#73ff9f', '#ff6395', '#ffcdbf', '#7857ff', '#b1b0b5', '#362a69', '#659476', '#ffa578' ] return render_template('statistic.html', title='Statistic', activate=activate, now_payment_values=now_payment_values, now_tuition_values=now_tuition_values, payment_values=payment_values, tuition_values=tuition_values, colors=colors, labels=labels, now=now, legend=legend, class_in_system=class_in_system, class_in_active=class_in_active, student_in_class=student_in_class, student_in_system=student_in_system)
def create_data_role(): Role(name="admin").save() Role(name="academic").save() Role(name="cashier").save() Role(name="student").save() Role(name="teacher").save()
from flask_wtf import FlaskForm from flask_wtf.file import FileField, FileAllowed from wtforms import StringField, PasswordField, SubmitField, BooleanField, SelectField, widgets, FieldList, FormField from wtforms.validators import DataRequired, Email, Length, EqualTo, ValidationError from flask_login import current_user from it_center.models import Course, User, Shift, Role from wtforms.fields.html5 import DateField list_shift = Shift.objects.all() shift_choices = [(str(c['name']), c['name']) for c in list_shift] role_teacher = Role.objects(name='teacher').first() list_teacher = User.objects(role=role_teacher, is_activate=True) teacher_choices = [(c['first_name'] + ' ' + c['last_name'], c['first_name'] + ' ' + c['last_name']) for c in list_teacher] class UpdateCourseForm(FlaskForm): id_course = StringField('Code', validators=[DataRequired(), Length(min=2, max=30)]) name = StringField('Course Name', validators=[DataRequired(), Length(min=2, max=50)]) start_date = DateField('Start Date', validators=[DataRequired()]) finish_date = DateField('Finish Date', validators=[DataRequired()]) tuition = StringField('Tuition', validators=[DataRequired()]) shift = SelectField('Shift', choices=shift_choices, validators=[DataRequired()])