Advertisement
MD500_Pilot

routes.py

Sep 3rd, 2022
1,169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.34 KB | None | 0 0
  1. class Event(db.Model):
  2.     id = db.Column(db.Integer(), primary_key=True)
  3.     aircraft = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=5))
  4.     training_under_part = db.Column(db.Integer())
  5.     event_type = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=50))
  6.     event_start_time = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=10))
  7.     event_date = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=10))
  8.     client = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=50))
  9.     notes = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=50))
  10.     assigned = db.Column(db.Integer())
  11.     instructor_accepted = db.Column(db.VARCHAR(collation='utf8_unicode_ci', length=30))
  12.  
  13.  
  14.     def to_dict(self):
  15.         return {
  16.             'id': self.id,
  17.             'aircraft': self.aircraft,
  18.             'training_under_part': self.training_under_part,
  19.             'event_type': self.event_type,
  20.             'event_start_time': self.event_start_time,
  21.             'event_date': self.event_date,
  22.             'client': self.client,
  23.             'notes': self.notes,
  24.             'assigned': self.assigned,
  25.             'instructor_accepted': self.instructor_accepted,
  26.             'delete_link': "<a href='{{{{ url_for('delete_event', id = {}) }}}}'>Delete</a>".format(self.id)
  27.         }
  28.  
  29.  
  30. @app.route('/manage_events')
  31. def list_events():
  32.     return render_template('manage_events.html')
  33.  
  34.  
  35. @app.route('/api/data')
  36. def data():
  37.     query = Event.query
  38.  
  39.     # search filter
  40.     search = request.args.get('search')
  41.     if search:
  42.         query = query.filter(db.or_(
  43.             Event.client.like(f'%{search}%'),
  44.             Event.aircraft.like(f'%{search}%'),
  45.             Event.notes.like(f'%{search}%'),
  46.             Event.training_under_part.like(f'%{search}%'),
  47.             Event.event_type.like(f'%{search}%')
  48.         ))
  49.     total = query.count()
  50.  
  51.     # sorting
  52.     sort = request.args.get('sort')
  53.     if sort:
  54.         order = []
  55.         for s in sort.split(','):
  56.             direction = s[0]
  57.             name = s[1:]
  58.             if name not in ['aircraft', 'training_under_part']:
  59.                 name = 'name'
  60.             col = getattr(Event, name)
  61.             if direction == '-':
  62.                 col = col.desc()
  63.             order.append(col)
  64.         if order:
  65.             query = query.order_by(*order)
  66.  
  67.     # pagination
  68.     start = request.args.get('start', type=int, default=-1)
  69.     length = request.args.get('length', type=int, default=-1)
  70.     if start != -1 and length != -1:
  71.         query = query.offset(start).limit(length)
  72.  
  73.     # response
  74.     return {
  75.         'data': [user.to_dict() for user in query],
  76.         'total': total,
  77.     }
  78.  
  79.  
  80. @app.route('/api/data', methods=['POST'])
  81. def update():
  82.     data = request.get_json()
  83.     print(data)
  84.     if 'id' not in data:
  85.         abort(400)
  86.     user = Event.query.get(data['id'])
  87.     for field in ['aircraft', 'training_under_part', 'event_type', 'event_start_time', 'event_date', 'client', 'notes', 'assigned', 'instructor_accepted']:
  88.         if field in data:
  89.             setattr(user, field, data[field])
  90.     db.session.commit()
  91.     return '', 204
  92.  
  93.  
  94. @app.route('/add_events', methods=['POST','GET'])
  95. def add_events():
  96.     form = NewEventForm()
  97.     if form.validate_on_submit():
  98.         event_start_time = (f'{form.start_hour.data}:{form.start_minute.data}')
  99.         add_event (form.aircraft.data, form.training_under_part.data, form.event_type.data, event_start_time,
  100.                    form.start_date.data, form.client.data, form.notes.data)
  101.         return render_template('success.html',
  102.                                aircraft=form.aircraft.data,
  103.                                training_under_part=form.training_under_part.data,
  104.                                start_date=form.start_date.data,
  105.                                start_hour=form.start_hour.data,
  106.                                start_minute=form.start_minute.data,
  107.                                event_type=form.event_type.data,
  108.                                client=form.client.data,
  109.                                notes=form.notes.data,)
  110.  
  111.     return render_template('create_event.html', form = form)
  112.  
  113.  
  114. @app.route('/delete_event/<int:id>')
  115. def delete_event(event_id):
  116.     delete_event(event_id)
  117.  
  118.  
  119.  
  120. if __name__ == '__main__':
  121.     app.run(host='0.0.0.0', port=8090, debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement