Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Event(db.Model):
- id = db.Column(db.Integer(), primary_key=True)
- aircraft = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=5))
- training_under_part = db.Column(db.Integer())
- event_type = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=50))
- event_start_time = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=10))
- event_date = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=10))
- client = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=50))
- notes = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=50))
- assigned = db.Column(db.Integer())
- instructor_accepted = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=30))
- def to_dict(self):
- return {
- 'id': self.id,
- 'aircraft': self.aircraft,
- 'training_under_part': self.training_under_part,
- 'event_type': self.event_type,
- 'event_start_time': self.event_start_time,
- 'event_date': self.event_date,
- 'client': self.client,
- 'notes': self.notes,
- 'assigned': self.assigned,
- 'instructor_accepted': self.instructor_accepted,
- 'delete_link': "<a href='{{{{ url_for('delete_event', id = {}) }}}}'>Delete</a>".format(self.id)
- }
- @app.route('/manage_events')
- def list_events():
- return render_template('manage_events.html')
- @app.route('/api/data')
- def data():
- query = Event.query
- # search filter
- search = request.args.get('search')
- if search:
- query = query.filter(db.or_(
- Event.client.like(f'%{search}%'),
- Event.aircraft.like(f'%{search}%'),
- Event.notes.like(f'%{search}%'),
- Event.training_under_part.like(f'%{search}%'),
- Event.event_type.like(f'%{search}%')
- ))
- total = query.count()
- # sorting
- sort = request.args.get('sort')
- if sort:
- order = []
- for s in sort.split(','):
- direction = s[0]
- name = s[1:]
- if name not in ['aircraft', 'training_under_part']:
- name = 'name'
- col = getattr(Event, name)
- if direction == '-':
- col = col.desc()
- order.append(col)
- if order:
- query = query.order_by(*order)
- # pagination
- start = request.args.get('start', type=int, default=-1)
- length = request.args.get('length', type=int, default=-1)
- if start != -1 and length != -1:
- query = query.offset(start).limit(length)
- # response
- return {
- 'data': [user.to_dict() for user in query],
- 'total': total,
- }
- @app.route('/api/data', methods=['POST'])
- def update():
- data = request.get_json()
- print(data)
- if 'id' not in data:
- abort(400)
- user = Event.query.get(data['id'])
- for field in ['aircraft', 'training_under_part', 'event_type', 'event_start_time', 'event_date', 'client', 'notes', 'assigned', 'instructor_accepted']:
- if field in data:
- setattr(user, field, data[field])
- db.session.commit()
- return '', 204
- @app.route('/add_events', methods=['POST','GET'])
- def add_events():
- form = NewEventForm()
- if form.validate_on_submit():
- event_start_time = (f'{form.start_hour.data}:{form.start_minute.data}')
- add_event (form.aircraft.data, form.training_under_part.data, form.event_type.data, event_start_time,
- form.start_date.data, form.client.data, form.notes.data)
- return render_template('success.html',
- aircraft=form.aircraft.data,
- training_under_part=form.training_under_part.data,
- start_date=form.start_date.data,
- start_hour=form.start_hour.data,
- start_minute=form.start_minute.data,
- event_type=form.event_type.data,
- client=form.client.data,
- notes=form.notes.data,)
- return render_template('create_event.html', form = form)
- @app.route('/delete_event/<int:id>')
- def delete_event(event_id):
- delete_event(event_id)
- if __name__ == '__main__':
- app.run(host='0.0.0.0', port=8090, debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement