def _editprofile (): # Get user's details to be edited profile = User.query.filter(User.login_id == get_user()).first() form = UserForm(obj=profile) # If we are GET'ing the form then add data and show correct form & template if request.method == "GET": return render_template("profile.html", data=profile, form=form) del form.role # user can't change this in their profile del form.last_login # they aren't logging in at this stage # If we are POST'ing then we are making a change, so show message if form.validate_on_submit(): if form.savebtn.data: # delete password if they haven't entered text to change it. if not form.password.data: del form.password form.populate_obj(profile) profile.last_modified = datetime.now() profile.modified_by = session["login_id"] db.session.commit() flash ("Saved Profile Details", 'success') return redirect(url_for('gui_blueprint._index')) else: flash_errors(form) return render_template("profile.html", data=profile, form=form)
def __init__(self, *args, **kwargs): super(BookingForm, self).__init__(*args, **kwargs) self.description.render_kw = {'style': 'resize:none;'} self.tmp_start_t.render_kw = { 'data-target': '#datetimepicker1', 'data-toggle': 'datetimepicker', 'readonly': '', 'data-placement': 'top', 'title': 'Click to choose start time' } self.tmp_end_t.render_kw = { 'data-target': '#datetimepicker2', 'data-toggle': 'datetimepicker', 'readonly': '', 'data-placement': 'top', 'title': 'Click to choose end time' } self.complex.choices = [ (a.id, a.complex_name) for a in Complex.query.order_by(Complex.complex_name) ] # Complex Names self.cluster.choices = [ (a.id, a.param_name) for a in Parameter.query.filter( Parameter.param_group == 97).order_by(Parameter.param_name) ] # Cluster Names self.owner_id.default = get_user()
def _index (): if current_user.is_authenticated: admin = Booking.query.all() bookings = Booking.query.filter(Booking.owner_id.ilike(get_user())).all() return render_template("dashboard.html", data1=admin, data2=bookings) else: return redirect(url_for('gui_blueprint._login'))
def _approvebooking (id): if is_admin(): booking = Booking.query.filter_by(id=id).first() if booking.approved_date: booking.approved_date = None booking.approved_by = None booking.approval_reason = "Manually set to not approved by " + get_user() else: booking.approved_date = datetime.now() booking.approved_by = get_user() booking.approval_reason = "Approved by " + get_user() flash("Toggled approval date for booking <{}>".format(booking.title)) db.session.commit() else: flash ("Cannot toggle booking approval unless an administrator") return redirect(url_for('gui_blueprint._index'))
def _editbooking (id): #for key, value in request.form.items(): # print(key, value) booking = Booking.query.filter_by(id=id).first() form = BookingForm(obj=booking) if request.method == "GET": complex = Complex.query.filter(Complex.id==int(form.complex.data)).first() # Get complex object from query form.tmp_date.data = datetime.strptime(form.start_dt.data.split()[0], '%Y-%m-%d').strftime('%d-%m-%Y') form.tmp_start_t.data = form.start_dt.data.split()[1] form.tmp_end_t.data = form.end_dt.data.split()[1] form.complex_text.data = complex.complex_name flash_errors(form) return render_template("editbooking.html", form=form) if request.method == "POST": if request.form.get("deletebtn", False): db.session.delete(booking) db.session.commit() flash("Booking deleted successfully", 'success') return redirect(url_for('gui_blueprint._index')) # check from initial select form submitted as "Next" if request.form.get("nextbtn", False): cplx = int(request.form.get("complex_select", 1)) # Get Complex ID complex = Complex.query.filter(Complex.id==int(cplx)).first() # Get complex object from query s_time = complex.complex_push_start e_time = complex.complex_push_end form.start_dt.default = request.form.get("start") + " " + s_time form.end_dt.default = request.form.get("start") + " " + e_time form.tmp_date.default = request.form.get("start").replace("-","/") form.tmp_start_t.default = s_time form.tmp_end_t.default = e_time form.owner_id.data = get_user() if is_day_allowed(request.form.get("start"), complex.complex_push_days): form.approval_required.default = "0" # may change once the booking has been checked else: form.approval_required.default = "1" form.complex.default = request.form.get("complex_select", 1) form.complex_text.default = complex.complex_name form.process() return render_template("editbooking.html", form=form) # This is the actual booking page and we're trying to save the record # VALID if form.validate_on_submit(): # We have made it to the process/checking section. Data is valid so we determine if the booking # needs to be approved or not. Bookings are always saved, but either as auto-approved or pending approval if request.form.get("checkbtn", False): db.session.autoflush = False complex = Complex.query.filter(Complex.id==int(form.complex.data)).first() # Get complex object from query if not booking: # this is a new record booking = Booking() db.session.add(booking) form.populate_obj(booking) booking.start_dt = datetime.strptime(form.start_dt.data, '%d-%m-%Y %H:%M') booking.end_dt = datetime.strptime(form.end_dt.data, '%d-%m-%Y %H:%M') booking.logged = datetime.now() # Check the booking meets the rules set out in the system for auto approvals # Does the booking meet the core rules? flag_core = is_booking_core_ok(form.tmp_date.data, form.complex.data) # Does this deviate from the standard day/time combination in the complex record? flag_cust = is_booking_custom(form.tmp_start_t.data, form.tmp_end_t.data, form.complex.data) # Does the booking have an approval flag already set? flag_reqd = (str(form.approval_required.data) != '1') if flag_core and not flag_cust and flag_reqd: booking.approved_date = datetime.now() booking.approved_by = 'Automatic Approval' booking.approval_reason = booking.approved_by flash ('Booking was saved and automatically approved', 'success') else: # The booking will be saved, but pending approval del booking.approved_date del booking.approved_by booking.approval_reason = 'Booking pending' if not flag_core: booking.approval_reason += ', too many bookings per day/complex)' if flag_cust or not flag_reqd: booking.approval_reason += ', non-standard start/end times requested' flash ('Booking was saved but is pending approval by the Operations team', 'warning') db.session.autoflush = True db.session.commit() # we are just saving the record if request.form.get("savebtn", False): try: form.start_dt.data = datetime.strptime(form.tmp_date.data + " " + form.tmp_start_t.data, '%d-%m-%Y %H:%M') form.end_dt.data = datetime.strptime(form.tmp_date.data + " " + form.tmp_end_t.data, '%d-%m-%Y %H:%M') except: pass form.populate_obj(booking) db.session.commit() return redirect(url_for('gui_blueprint._index')) # INVALID, so go back to edit page and get corrections by user. else: flash_errors(form) return render_template("editbooking.html", form=form)