def delete(self, yes=False): if not self.flight.is_writable(): raise HTTPForbidden if yes: files.delete_file(self.flight.igc_file.filename) DBSession.delete(self.flight) DBSession.delete(self.flight.igc_file) redirect('/flights/') else: return dict(title='Delete Flight', question='Are you sure you want to delete this flight?', action='', cancel='.')
def do(self, file, pilot): user = request.identity['user'] pilot_id = None club_id = user.club_id if pilot: pilot = DBSession.query(User).get(int(pilot)) if pilot: pilot_id = pilot.user_id club_id = pilot.club_id flights = [] success = False for name, f in IterateUploadFiles(file): filename = files.sanitise_filename(name) filename = files.add_file(filename, f) # check if the file already exists with files.open_file(filename) as f: md5 = file_md5(f) other = Flight.by_md5(md5) if other: files.delete_file(filename) flights.append((name, other, _('Duplicate file'))) continue igc_file = IGCFile() igc_file.owner = user igc_file.filename = filename igc_file.md5 = md5 igc_file.update_igc_headers() flight = Flight() flight.pilot_id = pilot_id flight.club_id = club_id flight.igc_file = igc_file flight.model_id = igc_file.guess_model() if igc_file.registration: flight.registration = igc_file.registration else: flight.registration = igc_file.guess_registration() if not analyse_flight(flight): files.delete_file(filename) flights.append((name, None, _('Failed to parse file'))) continue if not flight.takeoff_time or not flight.landing_time: files.delete_file(filename) flights.append((name, None, _('No flight found in file'))) continue flights.append((name, flight, None)) DBSession.add(igc_file) DBSession.add(flight) success = True DBSession.flush() return dict(page='upload', flights=flights, success=success)