/
CHANGES
627 lines (547 loc) · 35.5 KB
/
CHANGES
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
We have migrated to GitHub, for more details about changelog please see git log documentation (http://git-scm.com/docs/git-log). One simple approach: git log --oneline --stat --decorate <since>..<until>
- pytrainer changes for 1.12.2:
- Known issues:
Gtk outputs warnings about extra properties when loading the main window
- Improvements:
b2401aaf5664 Decode GTK strings on Python 2
b6534c062978 Add function to decode locale specific strings on Python 2
d43f2eba16a9 Add Python 3 support to gettext initialization
- Bugs fixed:
abd13b25d830 Handle missing altitude data in main window graphs
b4c5e315b930 Fix editing of athlete stats where some values are empty
afbe6ea3e81a Handle missing heartrate data in main window graphs
71dac3f72ab0 Record.pace_from_float: Handle null values
4029fdb80487 Stop calling str on Unicode strings returned from the DB
3e8551461f90 Handle empty activity title and comments when editing
308449c752e7 Unset athletestat values should be None
- Internals:
b55da1b34d45 Add a couple of tests for EquipmentUi
c5906600ce9f Use xvfb-run when running tests
- pytrainer changes for 1.12.1:
- Known issues:
Gtk outputs warnings about extra properties when loading the main window
- Improvements:
99e55d2d9662 Update the Garmin FIT file conversion library
b02e53de540c Don't require the Calories element in tcx v2 files
- Bugs fixed:
e77334afb081 Convert empty strings to None when importing lap data (#138)
e0de089989e2 Fixed adding of sports when no or an invalid "extra weight" is provided.
fa7a87602e20 Fixed importing activities without a sport (GPX).
9e23d98380d9 Calculate calories only when included in the data
6cdd6cc66eb8 Record: Stop storing a copy of Activity.id
a1655db8ffb7 Gpx: Set start_lat and start_lon to None if not available
32748d14ba0a Decode sport name when importing Garmin FIT files
8c959db29b54 Enforce date_time_local to a string
f7ed8aa344ed Fix date handling bug introduced when converting _formatRecordNew to sqlalchemy
4e33312a1af1 Fix record analytics view distance column being unitconverted twice
0665be634133 Fix unit conversion for the athlete weight table
- Internals:
044a6e7a1bb1 Also test insertRecord using a datetime object
4a58974eb540 Remove unused pytrainer/lib/logs.py
8eb2a8d5cc89 Remove duplicated error prints from the openstreetmap extension
294b72fad130 Remove print statement from wordpress extension
5d68e4b51d16 Remove unused extra copy of points.py from the wordpress extension
61abc074f3e9 Convert some more print statements to logging
3f91bc86ab6e Remove duplicated debug prints from xmlValidation.py
ffd4b9cfe30d Convert points.py tests to use print as a function
7197a8ed071b Convert windowimportdata.py prints to logging
2aaa8a2f0718 Fully convert the startup script to print functions
b2b3404a2300 Convert main.py prints to logging
7654af35a09b Convert WindowRecord print statements to debug logging
33c4412e7cbe Convert some prints into logging calls
6235e270d9b6 Remove TODO print from Record
d53f0392e67c Remove random debug print from the Sport tests
18b7d53d5489 Update StringIO import path in srtmdownload.py
55aa7ab39d6c Convert some imports and plugins to use BytesIO
1b0178bce2d7 Use BytesIO in Profile
2cf2d8d696e4 Remove unused StringIO imports
9a018f80e1c9 Reindent remaining files with mixed tabs and spaces
40097cd61571 Move DateRange from util.date to lib.date
fa7b90d88250 DateRange: Replace the cmp call with a simple comparison
2dafed6a69c2 Move first day of week locale call to the platform
8f14f8a98e8a Remove tabs from pytrainer/main.py
- pytrainer changes for 1.12.0:
- Known issues:
Gtk outputs warnings about extra properties when loading the main window
- Improvements:
2a5877ac2ff9 Add support for Postgresql
- Bugs fixed:
fb0e135657fa WindowMain: Move Osm and Googlemaps imports later
fe19bf5995d8 Waypoint: Fix invalid quoting in getwaypointInfo
96501a642bea Fix typo in the osm extension (#104)
- Internals:
1d176c7724ac Convert plugins to sqlalchemy
6d177a94b756 Add simple test case for the Garmin TCX v2 plugin
94cf81f771c6 Convert import tools to sqlalchemy
8f89e7f1746f Add import test case where activity exists in the db
95a60568e3f6 Make import test database queries testable
ca15fca002ab Always add mysql charset setting
ef910fff869c Remove unused DDBB methods select_dict and parseByCellType
748363f3f5dc Fixup WindowMain analytics query
58072380d4e7 Remove now unused Record methods getSportId, getrecordList and getrecordPeriod
a1023628c17b Convert Record.getRecordDayList to use get_activities_period
88bb17f62410 Add test for Record.getRecordDayList
204438c8eca3 Convert graphs to sqlalchemy
b59bf03013cb Add get_all_activities method to the activity service
f56e9da0faf1 Convert actualize_yearview to use Activity and the new helper method
b532f2023908 Convert actualize_monthview to use Activity and the new helper method
97d5335ca771 Convert actualize_weekview to use Activity and the new helper method
c5ec865304a1 Add a get_activities_period method to ActivityService
888d7072282a Use the new get_activities_for_day method in main window actualize_dayview
d721bbc43bcf Add utility method to main window for calculating activity totals
3b812970b3ec Use the new get_activities_for_day method in main window actualize_recordTreeView
84d71e79ae98 Add a get_activities_for_day method to ActivityService
6f6c6e2a95ec Convert main window lap data to sqlalchemy
c703edfc0b89 Use an Activity in main window actualize_recordTreeView
f8fb5fb4634d Add a duration property to Lap
049a2f7bf2bf Also load lap data while fetching an Activity
a994a4220778 Enable running tests against Postgresql
29b1a0a6e328 Remove the database utils and ddbbObject
159e85c09ead DDBB: Convert default data importing to sqlalchemy
94d976eac2fb Promote ddbb.select from the sqlobjects to ddbb itself
f7a381ef324e Use sqlalchemy to insert lap data
ab254aa5576e Simplify Record.getLaps to just get the laps
29fc0d15f408 Make sure that Record.insertRecord always loads lap data
227bd486b76f Add test for Record.getLaps
db8c4725415c Convert Record._formatRecordNew to Sqlalchemy
88481e97a543 Add tests for Record methods insertRecord and updateRecord
524384fb5ac6 Replace Record.get_record_equipment with Activity.equipment
04a776f8a012 Remove the unused Record.getrecordInfo and Record.getrecordPeriodSport methods
be02b31344b9 Reindent record.py
5b793b767c54 Skip tests that aren't supported on Mysql version 5.6
a9b7561cc3b8 Add mysqlclient to tests_require
d46d15db16ff Pre-truncate the lap distance in the test case
5f848ce16617 Skip tests involving check constraints on Mysql
ccb0945acec5 Also accept OperationalError for some test cases
806066c04092 Enable running tests against Mysql as well
00ddb41fade9 Shorten equipment.description column to 100 chars
850ed70963cd Add environment override for the test database url
7617b2b878e7 Travis: Attempt to work around issues between new Tornado and old Ubuntu
a256a7d4e9d9 Activity: Import sqlalchemy InvalidRequestError
3fdfcc70b05c Remove missed records.time users
003791a8e9c3 Remove the gpx file when deleting an Activity
75e941baa0a7 Call ActivityService.clear_pool between tests
8d3ee3c4aa65 Add DDBB.drop_tables, and use it in the tests
344e736b985b Move Sqlalchemy url generation from DDBB into Profile
b9704d763d6c Add database migration to match sqlalchemy generated db
c75318b69778 Remove the last users of the records time column
45038284d355 Convert windowmain analytics to sqlalchemy
beecf0d18bdd Convert stats to sqlalchemy
63253ae5b479 Convert csv import to sqlalchemy
8e747ce22c31 Convert main window lap comment editing to sqlalchemy
8c0328c8fb04 Add ActivityService.remove_activity_from_db method to replace Record.removeRecord
8b223ee50e65 Rename ActivityService.remove_activity to remove_activity_from_pool
812bf2e3d87e Convert tests to use sqlalchemy session api instead of ddbb.insert
2522e98eada1 Convert EquipmentService.get_equipment_usage to sqlalchemy
95ac0e622d62 Convert Activity to sqlalchemy
d31d4f90f536 EquipmentServiceTest: Specify a sport when inserting a record
5edcb1085699 Convert Activity.time into a deprecated property
4f36db9e37b5 Activity: Remove a couple of dependencies on Activity.pytrainer_main
33049a5677ed Convert Athlete to sqlalchemy
e39e1fb91c5b Convert laps to sqlalchemy
bbceb33d60af Use Activity.duration instead of Activity.time
ccca87b9a760 Waypoint: remove commented out connect & disconnect
340b87fb2a9f Waypoint: convert remove, update and add to sqlalchemy
80d5f0abb6be Waypoint: rename Waypoint to WaypointService
921f40d9a4c9 Modify Equipment tests to work with sqlalchemy
56e8289775ea Convert Equipment to sqlalchemy
1c4b18a1e43b When creating an Equipment object do type conversions immediately
519cee8d3d73 Modify Sport tests to work with sqlalchemy
25f0a79d9cc6 Convert Sport to sqlalchemy
062788cb829d Add a sqlalchemy type for forcing columns to integers
ff74cb8f8ee9 Create sqlalchemy Session and declarative_base
6647bcff8f15 Convert database backup functionality to sqlalchemy
1ed3884be018 Use an sqlalchemy Engine instead of using DBAPI directly
40edb1f9e655 Call commit when changing the database in mysqlUtils
4be273e3af95 Directly import gettext in uc.py and profile.py
- pytrainer changes for 1.11.0:
- Known issues:
Gtk outputs warnings about extra properties when loading the main window
- Improvements:
1a237adba0fb, 640ef4e55da8, 30fdfd9e83eb Performance improvements
fcc8f3361d4f FIT conversion updated to work with Perl 5.22
92d6a33aed16 Setuptools is now used for installation where available
4bb91436522b Start screen can now be configured (ticket #12)
086a0dd81549 The map functionality is now optional (and python-webkit is no
longer required)
- Bugs fixed:
9d1c670ea1ac Logging now works as configured
10b04c8b38e1 Sports list stays up to date
0a23585c2d25 Prior usage is included in equipment usage stats
acbe61ddbf16 Strings are now quoted correctly with sqlite
8ca54a97a9f6 Fix pace unit conversion
f52235a9d921 Missing import in gpxplus
c2f41e97022f Check that Activity.gpx exists before using it
- Internals:
a6f80a252a1d All tests are now found and executed
d82fbeee3a06 Use DDBB with an in-memory database when testing Equipment
b284fdffee3a Use DDBB with an in-memory database when testing Sport
3ade6e1dd822 Date methods converted into simple utility functions
80805b326cd0 Test cases added for date utility functions
321206a797ea Environment converted into a singleton
96e471f38958 Profile converted into a singleton
2573955d9c0c Tests added for the Athlete class
29db339f41fc Tests added for the Waypoint class
bfacd6d55598 Tests added for unit conversion
f9a93daffc28, 37982f5e214b Heavily refactor the Activity class
4c84abf522ba Tests added for the Activity class
5eab5b0a38fa unitsconversor was fully replaced with UC and removed
1ac7db0049a1 Default log level was changed to warning
005accf46b2f Stop using glade for the popup menu
0303a92fb0ef Use the locale module instead of the gtk.glade helper
4601b5f1c703 Migrated from gtk.glade to gtk.Builder
- pytrainer changes for 1.10.0:
- Known issues
Can't maximize main window. Issue related to graph subtab in register tab - SF tickets #113 #124
- New features:
Support for Garmin FIT format via file import (ticket #5)
979b7c9 Adding test case for workout summary - ticket #5
8e6f8d2 Removed print entry
9a6245e Amended recursive addition issue when indenting - ticket #5
0cb21ca Adding basic test case for TCXv2 file import - ticket #5
d4d1b2b Code refactoring - ticket #5
a0da00d Adding test case for Garmin FIT file import - ticket #5
d63ce44 Renaming directory to avoid conflict with reserved 'import' word - ticket #5
4581b67 Added perl dependency for garmin-fit plugin - ticket #5
a7eeae2 Updated version to 0.11 - ticket #5
de9a78b Updating ES localization
577b0de Including garmin-fit plugin also with external perl files needed to translate from FIT to TCXv2 - ticket #5
d17913f Plugins are executed from 'Import' tabs
3c0e645 File imports only managed via 'Import' menu. Need to migrate import processes which read data directly from GPS device
9444f5b Updating ES localization
b8da65c Prevent importing already present activities
222b89f Removed commented lines
380a940 Removed commented lines. Amended minor localization issues
6176111 First step to import Garmin FIT files. Quick parse for validation previous to actual import
43a0e56 Updating ES locale
cb936d4 Including more messages for localization. Updating status bar text when there is an error with a file
c58fb0a Extension to upload activities to Strava - credits to spaceyjase (971be41)
aa7fde6 Added gpx2garmin extension - thanks to spaceyjase (a139757)
d8f864f New "pace" column in ranking tab (thanks to cz8s)
- Improvements:
Localizations updated, added update_localizations script to automate process under utils directory
037d91d Updated FR localization. Thanks to Christian Perrier
09e40df Updating DE localization. Thanks to Wilfried
f174af1 Amended filename in update_localizations script for mo files. Updated files
dc21fa7 Removing mo binary files from repository
9780a89 Updating localizations for 1.10.0 version. Includes script to automate process under utils directory
286cba9 Updating GL localization - thanks to Aníbal
8689009 Updating ES localization
c5ccfe9 Retrieving all record related data from DB when exporting to csv - #11
cdc639d Amended path issue when testing gpx files
ba37e2a Setting current date for new athlete log entry - on behalf of Andreas Mair
0f5c84a Defining version number in one place for the whole application
d2a0153 Looking for tag instead of non intuitive list indexes when using garmintools import
3e785c8 Finally showing product description from garmin_get_info
d256862 Added tests to check lap parsing with samples
ef474c7 Accept date range object for actualize_weekview()
56c038d Accept date range object for record.getrecordPeriod()
4d10679 Accept date object for record.newRecord()
4428a3e Accept date object for record.getRecordDayList()
4af8a35 Accept date object for record.getrecordList()
81ad5f5 Accept date object for date.getNameMonth()
1a5af41 Return date object from date.getDate()
9ab01ab Use date range for week/month/year interval calculations ()
4bca25e Add date range utility class
7f4578a Add pytrainer.util and pytrainer.core packages to setup script.
25145e6 Move pytrainer.lib.color module to pytrainer.util package
e9e6674 Move sport module to pytrainer.core package
7c7ff55 Move equipment module to pytrainer.core package
8273a36 Create pytrainer.core package
- Bugs fixed:
dc795e9 Texts and units which can change when switching unit system are localized separately - ticket #16
46a1775 Fix year tab text labels/units (thanks to spaceyjase)
d4d988f Fixed unhandled exception by removing the Osmarender layer
41df1d8 Amended wrong value to average speed in totals graph. Thnx to lifo2 - ticket:173
72a84c8 Better duration estimation for activities with no laps and several breaks - ticket:167
d239c37 Matching xml parse with amended stylesheets data structure keeping backward compatibility
ac5261d Amended stylesheets to match GPXDATA schema
1dcf5fe Showing proper figures in graph title according to units. Thnx Jason for the hint
- Internal stuff:
2886ac4 (HEAD, pytrainer-git/master, master) Updated man file
bef3116 Getting closer to release: updated version
83d9e50 Updated pytrainer project url
f314697 Removed link to SourceForge and amended 'imports' directory name
5c25518 Updated links of some doc pages migrated to GitHub wiki
797b3af Update version to "1.10.0"
a6e7c49 Ignore generated artifacts
9fd8b0c Adding a description in name section. Renaming man file. No need for README file any more
e636650 Appending development suffix to version number
############################################################
- pytrainer changes for 1.9.1:
* Known issues
- Can't maximize main window. Issue related to graph subtab in register tab - tickets #113 #124
* Fixes
- Corrected german localization (thanks to Andreas) - [938]
- Amended typo in translator credits - [937]
- Coloring graph not working when selecting speed as reference - #154 [936]
- Added support for sqlalchemy-migrate 0.5.4 - #153 [935]
- pytrainer changes for 1.9.0:
* Known issues
- Can't maximize main window. Issue related to graph subtab in register tab - tickets #113 #124
* New functionality or improvement
- Updated DE localization. Thanks to Erik Pfannenstein from Debian DE group and Andreas Mair - [923] [927]
- Added portuguese localization (thanks to Pedro Ribeiro) - [896]
- Option added in localization script (utils/translator.sh) to generate only .pot file - [888 - 892]
- Galician localization (thanks to Kaptan) - [885 - 887] [893]
- Manpage for pytrainer - #125 [872] [874]
- Create sport service - #138 [838] [840 - 845] [850] [850 - 856] [875] [880]
- Provide means to run all unit tests - #139 [837]
- Discrete version migration - #132 [815 - 836] [839] [864] [865] [899 - 906] [911]
- Totals tab - #60 [766] [800] [801] [802] [803]
- Display projected times in record view, including ranking - #116 [782] [785] [811]
- Ascent and descent figures shown in all views. Added time spent moving and paused in record view (thanks to Friso) - #114 [781]
- Assign graph color to sports - #111 [780]
- Display laps information on record summary page - #109 #122 [768 - 772] [775] [777] [778] [788] [812] [813]
- Coloring Google Maps path by speed/pace - thanks to Jonathan - #107 [765]
- Added swedish localization (thanks to Per) - #98 [756 - 760]
- Added startup option for choosing console or file logging. When "console" is chosen all logging messsages are sent to stdout instead of a log file. [755]
* Fixes
- Syncing calculations of distance, time, speed and pace. Normalized pace format - #71 #152 [916] [918 - 919] [922] [924] [928]
- pytrainer quits when exporting activities in csv format [912]
- Importing TCXv2 files failed - [907 - 909]
- Date value was not saved in "Athlete" tab - #149 [898]
- Fixed encoding issue that prevented some days of the week and associated information to be shown in stacked bars graph under week tab [897]
- Cannot edit record created from GPX import with null sport reference - #147 [881]
- pytrainer crashes when closing edit record dialog - #146 [879]
- Added zero padding to overcome lap order issue - #145 [878]
- Updated french localization - thanks to Vincent, Pierr [876] [895]
- Heartrate figures from profile are retrieved independently so only those which fail are set to default value [873]
- Active/Rest times are not calculated for activities with only one lap - [811]
- Activity's data (equipment and title) missing when importing activity from file - #105 #137 [866 - 868]
- Wrong duration calculation when breaks are present - #103 [858 - 862]
- GUI problems when resizing - #113 [857] [877] [882]
- GPX file import fails - #141 [849]
- Enabling localization for some labels - #99 [846] [847]
- Broken MySQL support - #130 [810] [817] [818]
- Moving from GtkMozEmbed to WebKit - thanks to Christian - #131 [809]
- Support US units and display units in analytics view - [808]
- Start time can be changed in manually entered activities - #127 [807]
- Sort records in record tree view by time by default - #128 [806]
- Graphical improvements - [795] [796] [797] [798] [799] [805]
- Improved OSM performance through caching and also anonymize sensitive date before upload - [790] [791] [792]
- Failed to build stacked bars graphic in week, month and year tabs - #123 [789]
- Changed the way OS is checked to allow pytrainer run on other POSIX in addition to GNU/LINUX - thanks to Christian - #120 [784]
- Renaming danish suffix in po file to avoid confusion - #119 [783]
- Try using Google Maps Elevation API if all else fails - #102 [779]
- Updated ES localization [773] [774] [776] [804] [848] [863] [883]
- Better management of wrong/corrupted data - #118 [767] [786] [787] - [793] [794]
- Elevation correction extension not handling properly errors #102 [764]
- Equipment management fixes - #95 [763] #96 [762]
- Distance data is retrieved from laps if present, calculated from trackpoints otherwise - #101 [761]
- Remove non iso-8859-1 characters [754]
- Fix so only once instance of preferences dialog can be open at a time - #74 [753]
- pytrainer changes for 1.8.0:
* New functionality
- Equipment management (thx to Nathan) [571] [572] [573] [598] [678] [679] [680] [685] [698] [699] [707] [708] [711] [717] [718] #12
- OpenStreetMap added as route map viewer (user selectable) - thanks to Druzee [578] [585] [590]
- Anonymous data for OSM, cancel button (thx to Druzee, Arnd) [608] [611] [626]
- Changes to graphing to allow user to change limits, color, line width etc [563] [567] [579] [599]
- Remember size of main screen [581]
- Function to merge tracks (work in progress) [597]
- New Activity and ActivityPool classes to hold all info about an activity [582] [583] [584] [587] [589] [591] [677] [694]
- Management of athlete data [605] [609] [649] [651] [653] [655] [656] [665] [668] [731] #13
- New graphic approach [616] [617] [622] [624] [628] [638] [639] [640] [642] [644] [646] [648] [674] [675] [721] [726] [727] [730] [733]
- Added support for Nokia exported GPX files [673]
- Added support for new formats (csv, delimited file) in unified import [688] [689] [690] [692] [693] [695] [697] [701]
* Fixes
- Variables and configuration refactored to be 'global' (reused and not re-instantiated by each class) [561] [562] [564] [565] [566] [568] #28
- Config file accepting non ascii characters [574] [575] [576]
- Config file handling fixed to not fail with empty or missing file [586] #48
- Fix list view to update after edit, delete, import. Added filters and improvements (tnx Arnd) [569] [650] [652] [658] [661] [663] [664] [735] [742] [745] [746]
- Localization updates (thanks to Pierre, David) [570] [588] [595] [715] [737] [744] [747]
- Fix wordpress extension to work with newer wordpress codebase and support US measurement [577] [601] [602] #45 #51
- Update plugins to write UTF8 not ASCII GPX files [580] #47
- Fix googlemaps lap data display [592] [632] [633]
- Fix calories display in heartrate tab [593]
- Fix html in map generation (thanks to Druzee) [594]
- Change default graph colors [596]
- Improve handling of US units [600] [669] [672] [683] [687] [696] [700] [702] [703] [704] [705] [710] [738] [739]
- Fix bug in plugins where ESC during file open dialog causes error [603]
- Fix to garmintools_full plugin to make progress bar work (thanks to Druzee) [604]
- Avoid exiting when parsing problem is found, entry skipped [607] #
- Activites without GPX data don't break application [610] [615]
- Improvements (show and calculation) to pace and elevation as suggested by Arnd [612] [618] [619] [623] [627] [741]
- Better troubleshooting for graphics issues and minor fixes [625] [629] [636]
- Fixes to csv export (thx Arnd) [630]
- Fixes to startup script to better handling different environments [631] [637] [713] [714]
- Updates to wordpress extension - removed separate googlemaps [634]
- Allowing zero calories entries [641]
- Fixes to edit record [643] [647]
- Fixing confusion with dates (start day of the week, week number) [654] [655] [657] [670] [750] #57
- Fix for GPX files with no lap info [660]
- Correction to date handling to work for mysql and sqlite [667]
- Improving logging output [671] [748] [749]
- Fix for HR percent graph so does not error in hr is None - thanks to Arnd [676]
- Bug fixes for sports filtering from Patrick [681]
- Updates for heartrate pie chart from Patrick [682]
- Fixes in lap generation (divide by zero, empty laps) - thanks to Arnd [684] [686]
- Fixes for record filtering from Patrick [691]
- Tolerate non-unicode strings returned from DB for better MySQL support [706]
- Add program argument for specifying config directory [709] #67
- Better handling of floats and division. Thx to Martin [712]
- Retrieving a real list with DB tables, comparison was failing [716]
- Remove redundant Port option in preferences [719] #80
- Fix to display blank sport properties correctly (not as None) [720] #78
- Fix mysql code to match changes to sqlite tablelist handling [722]
- Stop preferences sport list edit button disabling dialog buttons if no sport is selected [723] #75
- Fix to stop crash on editing record with empty distance [724] #73
- Update record summary after edit [725] #79
- Fix sport filtering to work with non consecutive sport_ids [728]
- Fix summary screens to update correctly with record add and deletes [729]
- Make pace read only [732]
- Display heartrate as integer in day, week, month and year views [734]
- Update DB check to ensure time == duration [736]
- Updating credits [740] [743]
- pytrainer changes for 1.7.2:
* Lap DB table created and code changed to populate and use the table [507] [508] [509]
* Moved some global variables to class variables in main.py [513]
* Google Earth plugin modified to work with new plugin architecture [515]
* Waypoint editor modified to use handle_title_changed() call back instead of SOAP calls (thanks to David Fraser) and a few bugs fixed [516] [524] [543]
* Firefox removed as a dependency [518]
* Shebang tidied to be compatible with all python versions [520]
* Extension code refactored to run extensions as internal classes [527]
* Webservice / SOAP code removed [527] [531]
* Incomplete webpublish extension removed from svn [528]
* Upload to Openstreetmap extension added [536], [540]
* pytrainer startup script modified to work with different install locations [532] [533]
* Misc fixes and patches to pytrainer (thanks to David Fraser) [524] [530] [535]
* Add support for with command for python versions <2.6 [541]
* Removed bug that caused errors for activities with no GPX file [542]
* Localisation updates [539]
* New tab in preferences displays and allows changes to be made to pytrainer startup options [544] [545] [546]
* Move individual screens into separate glade files [547]
* Full screen map view reinstated [548]
* Removed DB field order bug [549]
* Removed fake error when importing entries [550]
* Minor fixes to graph display options [551]
* Minor cosmetic changes [552] [553] [554]
* Added check for early detection of empty local configuration file [555]
* EXPERIMENTAL Unified Import GUI modifications (disabled by default, enabled on startup with --testimport) [526]
- file import supports multiple files at once [510] [511]
- option to have file import window automatically start with a file selection dialog [519]
- activities can be edited before import [514] [517] [521] [522] [534] [537] [538]
- kml file import support [523] [525]
- plugins tab added - provides alternative way of viewing and running import plugins [512]
- device import NOT functional
- pytrainer changes for 1.7.1:
* New import plugin - Garmintools - svn [430], [431], [436], [452], [453], [459], [460], [461], [463], [464], [486], [487], [488]
- both file (dump file) and device import implemented
- smart import from device to cater for different start times compared to GPSBabel (to reduce duplicated activities)
* Move to Google maps API version 3 - svn [477]
* Add lap functionality - svn [433], [447], [448], [451], [454], [455]
- display individual laps under activity on treeview
- visually display lap duration on record graphs (user selectable)
- display lap markers on route map
* Improve check functionality - svn [437], [438], [439], [475], [478], [479], [480], [482]
- Can be initiated by command line option --check
- Will be initiated if DB version in code is newer than user's DB version
- DB migration checks refactored and improved
* Timezone support - svn [434], [440], [442], [483]
- DB updated with new field date_time_local
- field populated on import (or when DB check is run)
- field used in preference to UTC if present for display
* Cadence / RPM support and graph added (tcx v2 file import only) - svn [432]
* Improved install process and remove unneeded files - svn [445], [446], [462], [467], [472], [473]
* Bug fix to TCX v2 to cater for multiple activities per file - svn [435]
* Bug fix for calorie calculation - svn [441], [474]
* Bug fix for migration/new install error bug #2924209 - svn [456]
* Bug fix for GPX import without elevation data - svn [490]
* Bug fix to prevent adding empty entries - svn [496], [498], [499]
* Updated localizations (es, fr) - svn [494], [495], [497]
* Separate some GUI elements into separate files to ease development - svn [443], [457], [465]
* EXPERIMENTAL Unified Import GUI begun (for testing/feedback only) - svn [458], [466], [468], [469], [470], [471], [476], [481], [489]
- disabled by default
- enabled on startup with --testimport
- file import functional
- device import NOT functional
- pytrainer changes for 1.7.0:
Updated Spanish translation (svn rev 420,423,424)
Updated French translation (svn rev 421)
Migration to lxml for better performance (svn rev 412,413,414)
Start of rework for Google Map rendering - experimental!, test with --gmaps3 at startup (svn 411,415)
Modified on_sportlist_changed event to improve performance (svn rev 409)
Fix for minor bug in translation scripts (svn rev 402)
Fix for bug #2811470 - clickable link for further details on MET (links to wikipedia) (svn rev 391)
Fix for bug #2089342 auto refresh after import, edit and delete of records (svn rev 390,425)
Refactoring database and config file sanity checks (triggered with --check at startup) (svn rev 389,392,396,401)
Added weekly view (svn rev 388,393,394,395,398,403-410,426)
Fix for multiple graphs view (svn rev 386,387)
Better error handling preventing pytrainer to crash (svn rev 364,369)
Support for plugin validation (triggered with --valid at startup)(svn rev 361,363,371)
Import TCXv2 files (svn rev 351,355,356)
Improving import from TCXv1 format (svn rev 354,371,375,376)
Several improvements in plugins handling (svn rev 350,353,360,378,422)
Import GPX files (svn rev 349)
- pytrainer tasks for 1.6.0.9:
Added dynamic loading and unloading of plugin menu items (svn rev 344)
Removal of decommissioned plugin (garmin301) and addition of new ones (garmingpx). Update of project data (version and url) (svn rev 343)
Adding calories support suggested by JB (svn rev 342)
Maximum is misspelled Maximun, see http://bugs.debian.org/537723 (svn 341)
Fixed some hardcoded stuff that prevents pytrainer to copy entries to ~/.pytrainer/gpx (thanks to JB) (svn 340)
Major improvements in graphs (thanks to Fiz) (svn revs 339, 336, 332, 331)
Updated german translation - bug ID: 2811507 (thanks to Noèl) (svn revs 338, 333)
Minor project and license information updated (svn revs 337, 335, 334, 329)
- pytrainer tasks for 1.6.0.8:
Rotating log file support added (rev 322, http://sourceforge.net/tracker/?func=detail&aid=2717142&group_id=213157&atid=1024595)
Translations reviewed and added script to facilitate them (rev 319-321,323)
Several improvements to Wordpress extension (rev 315,317,326)
Changed potential problems when dealing with date objects using MySQL as DB (rev 311-314)
Removing redundant calls improving graphical performance (rev 310, linked to http://sourceforge.net/tracker/?func=detail&aid=2717135&group_id=213157&atid=1024592, not yet fully fixed)
Optimizing xml files parsing when retrieving data from them (rev 309)
- pytrainer tasks for 1.6.0.7:
Removing pytrainer gui minimal window size (svn rev 304)
Ordered shutdown of logging stuff (svn rev 303)
HR and elevation graphs included when exporting to wordpress (svn rev 302)
Removal of maps directory due to license issue: https://sourceforge.net/mailarchive/message.php?msg_name=1237752714.4330.15.camel%40thinker.domain.lan (svn rev 300)
Removal of opensuse_mozpytrainer.sh launch script as it is included in (renamed) pytrainer.sh. Deleted README.txt file to avoid confusion (svn rev 298)
Updated INSTALL file with current package versions (svn rev 297)
Fixed Google Maps integration (svn rev 296)
Updated garmin-hr config file with correct usb port value (svn rev 294)
Fixed bug where track record was supposed to be updated in database. Type cast was missing (svn rev 293)
Bug #2100647 - Quick entry doesn't work if no gpx file - Fixed (svn rev. 287)
FR #2126411 - Package python-sqlite2 not needed anymore: http://www.python.org/doc/2.5.2/lib/module-sqlite3.html (svn rev. 286)
- pytrainer tasks for 1.6.0.6:
Close button in "About" dialog now works. Migrating from Glade to GTKBuilder
Fixed some properties in pytrainer.desktop (ID#2126616)
Added COPYING file with GPLv2 (ID#2126413)
Removal of garmin301 plugin
Fixed some issues with MySql tables creation (email from Jonas Liljenfeldt)
- pytrainer tasks for 1.6.0.5:
mozpytrainer launch script with log level support -> DONE (24.08.2008)
MET and extra weight values swapped when adding a new sport -> DONE (22.08.2008)
pytrainer crashes when adding an activity which sport is not yet in DB -> DONE (31.08.2008)
Should be enough to check timestamps when adding new activities -> DONE (31.08.2008)
Correct initialization of pace and maxpace values -> DONE (31.08.2008)
- pytrainer tasks for 1.6.0.4:
Added support for date_time_utc field when importing new tracks via file upload
pytrainer/profile.py: fixed logging issue when removing sport from database
- pytrainer tasks for 1.6.0.3:
Complete review of migration scripts. Special attention to ~/.pytrainer/conf.xml file -> DONE (31.07.2008)
Number output always with two figures to avoid confusion -> DONE (02.08.2008)
- pytrainer tasks for 1.6.0.2:
Check paces in DB (maxspeed<->maxpace | average<->pace) -> DONE (19.07.2008)
Error when updating records because of new date_time_utc field in DB -> FIXED (20.07.2008)
- pytrainer tasks for 1.6.0.1:
Adjust migration scripts
Sports saved in ddbb (new column in table sports) -> id_sports in table sports (nothing to do)
Date_time saved for each record (new column in table records) -> main.addDateTimeUTC (DONE - 13.07.2008)
ALTER TABLE records ADD date_time_utc varchar2(20);
update records set date_time_utc="2008-07-11T10:21:31Z" where id_record='158';
-> automate process reading gpx files at the beginning
Hardcoded sport whem importing
record.shortFromLocal (retrieves sport from local files) -> retrieve from DB (shortFromLocalDB) DONE - 13.07.2008
record.summaryFromGPX (retrieves what will be saved in DB) DONE (12.07.2008)
- Future releases
Loading of changed preferences seems weird
Incorrect timezone when importing tracks -> check gpx._getValues
garmintools integration (laps and calories support, real sport and complete history retrieved from gps device, overall performance improvement)
Logging improvements
XML output with cElementTree
Tracks regularization
Review visual output
Added from Pierre's email:
- Equipment management :
Ability to store a list of equipment (running shoes, ...) and associate it (or not) with records. It is to follow how many km have been done with some shoes for example.
- Graph improvement:
Many things here... Curve smoothing option. Ability to zoom in and out. Select a portion of track and extract some simple statistics information (avg speed, hr, max hr, Total Ascent, ...)