Changeset d1c4782 in OpenWorkouts-current for ow/models


Ignore:
Timestamp:
Jan 21, 2019, 10:43:20 AM (5 years ago)
Author:
borja <borja@…>
Branches:
current, feature/docs, master
Children:
be40b02
Parents:
ceae158
Message:

Show a capture of the workout map, as an image, in the dashboard:

  • Added a view to render the tracking map of a workout full screen
  • Added a small shell script that uses chrome to grabs a screenshot of the full screen map view of a workout, then uses imagemagick convert to crop/resize it and finally saves it in a given location
  • Added a static/maps directory to store maps captures
  • Added static/maps to the boring/ignore file
  • Added a tool in utilities.py to call the shell script that captures the screenshot of the map
  • Added a method to the Workout model, that returns the static path to the workout map capture (valid to use with request.static_url()). If there is no capture yet, call the tool to make one
  • Added code to dashboard.pt to show the capture of the map
  • Added a new parameter to te ow maps js code, allowing us to hide/show the zoom controls of the map when building a new one
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ow/models/workout.py

    rceae158 rd1c4782  
    1 
     1import os
    22from datetime import datetime, timedelta, timezone
    33from decimal import Decimal
     
    1212    copy_blob,
    1313    create_blob,
    14     mps_to_kmph
     14    mps_to_kmph,
     15    save_map_screenshot
    1516)
    1617
     
    419420    def has_fit(self):
    420421        return self.fit_file is not None
     422
     423    @property
     424    def map_screenshot(self):
     425        """
     426        Return the static path to the screenshot image of the map for
     427        this workout (works only for workouts with gps tracking)
     428        """
     429        if not self.has_gpx:
     430            return None
     431
     432        current_path = os.path.abspath(os.path.dirname(__file__))
     433        screenshot_path = os.path.join(
     434            current_path, '../static/maps',
     435            str(self.owner.uid), str(self.workout_id)) + '.png'
     436
     437        if not os.path.exists(screenshot_path):
     438            # screenshot does not exist, generate it
     439            save_map_screenshot(self)
     440
     441        # the value returned is relative to the static files served
     442        # by the app, so we can use request.static_url() with it
     443        static_path = os.path.join('static/maps', str(self.owner.uid),
     444                                   str(self.workout_id))
     445        return 'ow:' + static_path + '.png'
Note: See TracChangeset for help on using the changeset viewer.