Changes in / [1183d5a:ed7e9d7] in OpenWorkouts-current


Ignore:
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • README.txt

    r1183d5a red7e9d7  
    22============
    33
    4 TBW, if you look for installation instructions, take a look at the script
    5 bin/install
     4Getting Started
     5---------------
     6
     7- Change directory into your newly created project.
     8
     9    cd ow
     10
     11- Create a Python virtual environment.
     12
     13    python3 -m venv env
     14
     15- Upgrade packaging tools.
     16
     17    env/bin/pip install --upgrade pip setuptools
     18
     19- Install the project in editable mode with its testing requirements.
     20
     21    env/bin/pip install -e ".[testing]"
     22
     23- Run your project's tests.
     24
     25    env/bin/pytest
     26
     27- Run your project.
     28
     29    env/bin/pserve development.ini
  • bin/install

    r1183d5a red7e9d7  
    5858install_openworkouts() {
    5959    . ${env_path}/bin/activate
    60     yes | pip install --upgrade -e ${current}[testing]
     60    yes | pip install --upgrade --process-dependency-links -e ${current}[testing]
    6161    deactivate
    6262}
  • ow/static/js/ow.js

    r1183d5a red7e9d7  
    335335                        select_x_axis_label(d).attr('style', "font-weight: regular;");
    336336                    }
    337                 })
    338                 .on('click', function(d) {
    339                     window.location.href = d.url;
    340337                });
    341338
  • ow/templates/profile.pt

    r1183d5a red7e9d7  
    5959      </div>
    6060
    61       <div class="profile-bio" tal:content="getattr(context, 'bio', '')"></div>
     61      <div class="profile-bio" tal:content="getattr(context, 'bio', '')">
     62      </div>
    6263
    63       <div class="profile-workouts">
     64      <div class="workouts">
    6465        <tal:t i18n:translate="">Total number of workouts</tal:t>:
    6566        <tal:w tal:replace="context.num_workouts"></tal:w>
     67      </div>
     68
     69      <div class="latest-workouts">
     70        <p i18n:translate="">Latest workouts</p>
     71        <tal:r tal:repeat="workout context.workouts()[:5]">
     72          <div class="workout">
     73            <tal:c tal:content="workout.sport"></tal:c> -
     74            <a href="" tal:content="workout.title"
     75               tal:attributes="href request.resource_url(workout)"></a>
     76            (<tal:c tal:content="workout.start"></tal:c>,
     77            <tal:c tal:content="workout.duration"></tal:c>,
     78            <tal:c tal:content="workout.rounded_distance"></tal:c> km)
     79          </div>
     80        </tal:r>
    6681      </div>
    6782
     
    7489        </div>
    7590      </div>
    76 
    77 
    78       <tal:r tal:repeat="workout workouts">
    79 
    80         <a name="workouts"></a>
    81 
    82 
    83         <article class="workout-resume">
    84 
    85           <h2 class="workout-title">
    86             <a href="" tal:content="workout.title"
    87                tal:attributes="href request.resource_url(workout)"></a>
    88           </h2>
    89 
    90           <ul class="workout-info">
    91             <li>
    92               <tal:c tal:content="workout.start_in_timezone(context.timezone)"></tal:c>
    93             </li>
    94             <li>
    95               <!--! use the properly formatted duration instead of the timedelta object -->
    96               <tal:c tal:content="workout._duration"></tal:c>
    97             </li>
    98             <li tal:condition="workout.distance">
    99               <tal:c tal:content="workout.rounded_distance"></tal:c> km
    100             </li>
    101           </ul>
    102 
    103           <ul class="workout-info" tal:define="hr workout.hr; cad workout.cad">
    104             <li tal:condition="hr">
    105               <span i18n:translate="">HR (bpm)</span>:
    106               <tal:c tal:content="hr['min']"></tal:c>
    107               <tal:t i18n:translate="">Min.</tal:t>,
    108               <tal:c tal:content="hr['avg']"></tal:c>
    109               <tal:t i18n:translate="">Avg.</tal:t>,
    110               <tal:c tal:content="hr['max']"></tal:c>
    111               <tal:t i18n:translate="">Max.</tal:t>
    112             </li>
    113             <li tal:condition="cad">
    114               <span i18n:translate="">Cad</span>:
    115               <tal:c tal:content="cad['min']"></tal:c>
    116               <tal:t i18n:translate="">Min.</tal:t>,
    117               <tal:c tal:content="cad['avg']"></tal:c>
    118               <tal:t i18n:translate="">Avg.</tal:t>,
    119               <tal:c tal:content="cad['max']"></tal:c>
    120               <tal:t i18n:translate="">Max.</tal:t>
    121             </li>
    122           </ul>
    123 
    124           <div class="workout-intro" tal:content="workout.notes"></div>
    125 
    126           <div class="workout-map" tal:condition="workout.has_gpx">
    127             <a href="" tal:attributes="href request.resource_url(workout)">
    128               <img src="" tal:attributes="src request.static_url(workout.map_screenshot);
    129                         alt workout.title; title workout.title">
    130             </a>
    131           </div>
    132 
    133         </article>
    134 
    135       </tal:r>
    13691
    13792    </div>
  • ow/tests/views/test_user.py

    r1183d5a red7e9d7  
    267267        """
    268268        request = dummy_request
    269         # profile page for the current day (no workouts avalable)
    270269        response = user_views.profile(john, request)
    271         assert len(response.keys()) == 2
     270        assert len(response.keys()) == 1
    272271        current_month = datetime.now(timezone.utc).strftime('%Y-%m')
    273272        assert response['current_month'] == current_month
    274         assert response['workouts'] == []
    275         # profile page for a previous date, that has workouts
    276         request.GET['year'] = 2015
    277         request.GET['month'] = 8
    278         response = user_views.profile(john, request)
    279         assert len(response.keys()) == 2
    280         assert response['current_month'] == '2015-08'
    281         assert response['workouts'] == john.workouts(2015, 8)
    282273
    283274    def test_login_get(self, dummy_request):
  • ow/views/user.py

    r1183d5a red7e9d7  
    166166    """
    167167    now = datetime.now(timezone.utc)
    168     year = int(request.GET.get('year', now.year))
    169     month = int(request.GET.get('month', now.month))
    170     return {
    171         'workouts': context.workouts(year, month),
    172         'current_month': '{year}-{month}'.format(
    173             year=str(year), month=str(month).zfill(2))
     168    return {
     169        'current_month': now.strftime('%Y-%m')
    174170    }
    175171
     
    284280            'distance': int(round(stats[month]['distance'])),
    285281            'elevation': int(stats[month]['elevation']),
    286             'workouts': stats[month]['workouts'],
    287             'url': request.resource_url(
    288                 context, 'profile',
    289                 query={'year': str(month[0]), 'month': str(month[1])},
    290                 anchor='workouts')
     282            'workouts': stats[month]['workouts']
    291283        }
    292284        json_stats.append(month_stats)
  • setup.py

    r1183d5a red7e9d7  
    2121    'waitress',
    2222    'repoze.folder',
    23     'repoze.catalog @ git+https://github.com/WuShell/repoze.catalog.git@0.8.4'
    24     '#egg=repoze.catalog-0.8.4',
     23    'repoze.catalog==0.8.4',
    2524    'bcrypt',
    2625    'FormEncode',
     
    4039    'pytest-xdist',
    4140    'pytest-codestyle',
     41]
     42
     43dependency_links = [
     44    'git+https://github.com/WuShell/repoze.catalog.git@0.8.4'
     45    '#egg=repoze.catalog-0.8.4'
    4246]
    4347
     
    6064    include_package_data=True,
    6165    zip_safe=False,
     66    dependency_links=dependency_links,
    6267    extras_require={
    6368        'testing': tests_require,
Note: See TracChangeset for help on using the changeset viewer.