FAI-CIVL / FAI-Airscore

AirScore - online paragliding / hanggliding GAP-based scoring software.
https://airscore.cc/
GNU General Public License v3.0
13 stars 17 forks source link

Invalid cross-device link bulk importing tracks #243

Closed philderbeast closed 3 years ago

philderbeast commented 3 years ago

With FAI-AirScore v0.4.0, if I import Spring Meeting 2020 Class 1.fsdb, convert to internal, delete existing tracks, zip tracklogs using fsdb_igc.py and then bulk import a task's zipped tracks, I get this error:

Traceback (most recent call last):
  File "/home/sid/.local/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/sid/.local/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
    response = self.handle_exception(e)
  File "/home/sid/.local/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/home/sid/.local/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/sid/.local/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/sid/.local/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/sid/.local/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/sid/.local/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/sid/.local/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/sid/.local/lib/python3.8/site-packages/flask_debugtoolbar/__init__.py", line 125, in dispatch_request
    return view_func(**req.view_args)
  File "/home/sid/.local/lib/python3.8/site-packages/flask_login/utils.py", line 272, in decorated_view
    return func(*args, **kwargs)
  File "/app/airscore/user/views.py", line 55, in decorated_view
    return func(*args, **kwargs)
  File "/app/airscore/user/views.py", line 1235, in _upload_track_zip
    resp = frontendUtils.process_zip_file(zip_file=zip_file,
  File "/app/airscore/core/frontendUtils.py", line 965, in process_zip_file
    data = process_archive(task, zip_file, check_g_record=grecord, track_source=track_source)
  File "/app/airscore/core/frontendUtils.py", line 943, in process_archive
    assign_and_import_tracks(tracks, task, track_source, check_g_record=check_g_record)
  File "/app/airscore/core/trackUtils.py", line 128, in assign_and_import_tracks
    pilot.track_file = save_igc_file(file, task.file_path, task.date, pilot.name, pilot.ID)
  File "/app/airscore/core/trackUtils.py", line 465, in save_igc_file
    file.rename(fullname)
  File "/usr/local/lib/python3.8/pathlib.py", line 1353, in rename
    self._accessor.rename(self, target)
OSError: [Errno 18] Invalid cross-device link: '/tmp/tmp1laznji5/Rousselet_Simon_124.igc' ->
 '/app/airscore/data/tracks/2020/sprmee20/t1_20200910/rousselet_simon_2020-09-10_01.124.igc'
biuti commented 3 years ago

Fixed (https://github.com/FAI-CIVL/FAI-Airscore/commit/58c51de24615d14b69cb2f2fd78db0b09e931308). Thanks.