not1mm 25.4.13__tar.gz → 25.4.14__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. {not1mm-25.4.13 → not1mm-25.4.14}/PKG-INFO +3 -1
  2. {not1mm-25.4.13 → not1mm-25.4.14}/README.md +2 -0
  3. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/__main__.py +7 -1
  4. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/new_contest.ui +5 -0
  5. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/database.py +60 -0
  6. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/version.py +1 -1
  7. not1mm-25.4.14/not1mm/plugins/es_ll_kv.py +568 -0
  8. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm.egg-info/PKG-INFO +3 -1
  9. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm.egg-info/SOURCES.txt +1 -0
  10. {not1mm-25.4.13 → not1mm-25.4.14}/pyproject.toml +1 -1
  11. {not1mm-25.4.13 → not1mm-25.4.14}/LICENSE +0 -0
  12. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/__init__.py +0 -0
  13. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/bandmap.py +0 -0
  14. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/checkwindow.py +0 -0
  15. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/JetBrainsMono-ExtraLight.ttf +0 -0
  16. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/MASTER.SCP +0 -0
  17. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/about.ui +0 -0
  18. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/alpha bravo charlie delta.txt +0 -0
  19. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/bandmap.ui +0 -0
  20. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/check.png +0 -0
  21. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/checkwindow.ui +0 -0
  22. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/configuration.ui +0 -0
  23. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/contests.sql +0 -0
  24. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/cty.json +0 -0
  25. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/cwmacros.txt +0 -0
  26. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/donors.html +0 -0
  27. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/editcontact.ui +0 -0
  28. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/editmacro.ui +0 -0
  29. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/greendot.png +0 -0
  30. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/k6gte-not1mm.desktop +0 -0
  31. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/k6gte.not1mm-128.png +0 -0
  32. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/k6gte.not1mm-32.png +0 -0
  33. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/k6gte.not1mm-64.png +0 -0
  34. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/logwindow.ui +0 -0
  35. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/logwindowx.ui +0 -0
  36. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/main.ui +0 -0
  37. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/not1mm.html +0 -0
  38. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/opon.ui +0 -0
  39. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/0.wav +0 -0
  40. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/1.wav +0 -0
  41. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/2.wav +0 -0
  42. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/3.wav +0 -0
  43. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/4.wav +0 -0
  44. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/5.wav +0 -0
  45. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/6.wav +0 -0
  46. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/7.wav +0 -0
  47. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/73.wav +0 -0
  48. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/8.wav +0 -0
  49. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/9.wav +0 -0
  50. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/a.wav +0 -0
  51. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/again.wav +0 -0
  52. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/b.wav +0 -0
  53. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/c.wav +0 -0
  54. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/contest.wav +0 -0
  55. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/cq.wav +0 -0
  56. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/cq2.wav +0 -0
  57. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/d.wav +0 -0
  58. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/e.wav +0 -0
  59. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/f.wav +0 -0
  60. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/g.wav +0 -0
  61. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/h.wav +0 -0
  62. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/i.wav +0 -0
  63. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/j.wav +0 -0
  64. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/k.wav +0 -0
  65. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/k6gte.wav +0 -0
  66. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/l.wav +0 -0
  67. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/m.wav +0 -0
  68. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/mynumber.wav +0 -0
  69. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/n.wav +0 -0
  70. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/nil.wav +0 -0
  71. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/o.wav +0 -0
  72. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/p.wav +0 -0
  73. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/q.wav +0 -0
  74. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/r.wav +0 -0
  75. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/roger.wav +0 -0
  76. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/s.wav +0 -0
  77. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/space.wav +0 -0
  78. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/t.wav +0 -0
  79. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/thankyou.wav +0 -0
  80. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/thankyouqrz.wav +0 -0
  81. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/u.wav +0 -0
  82. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/v.wav +0 -0
  83. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/w.wav +0 -0
  84. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/x.wav +0 -0
  85. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/y.wav +0 -0
  86. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/yourcall.wav +0 -0
  87. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/phonetics/z.wav +0 -0
  88. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/pickcontest.ui +0 -0
  89. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/radio_green.png +0 -0
  90. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/radio_grey.png +0 -0
  91. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/radio_red.png +0 -0
  92. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/ratewindow.ui +0 -0
  93. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/reddot.png +0 -0
  94. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/rttymacros.txt +0 -0
  95. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/settings.ui +0 -0
  96. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/splash.png +0 -0
  97. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/ssbmacros.txt +0 -0
  98. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/statistics.ui +0 -0
  99. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/data/vfo.ui +0 -0
  100. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/fsutils.py +0 -0
  101. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/__init__.py +0 -0
  102. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/about.py +0 -0
  103. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/cat_interface.py +0 -0
  104. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/cwinterface.py +0 -0
  105. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/edit_contact.py +0 -0
  106. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/edit_macro.py +0 -0
  107. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/edit_opon.py +0 -0
  108. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/edit_station.py +0 -0
  109. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/fldigi_sendstring.py +0 -0
  110. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/ft8_watcher.py +0 -0
  111. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/ham_utility.py +0 -0
  112. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/lookup.py +0 -0
  113. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/multicast.py +0 -0
  114. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/n1mm.py +0 -0
  115. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/new_contest.py +0 -0
  116. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/plugin_common.py +0 -0
  117. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/select_contest.py +0 -0
  118. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/settings.py +0 -0
  119. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/super_check_partial.py +0 -0
  120. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lib/versiontest.py +0 -0
  121. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/logwindow.py +0 -0
  122. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/lookupservice.py +0 -0
  123. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/10_10_fall_cw.py +0 -0
  124. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/10_10_spring_cw.py +0 -0
  125. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/10_10_summer_phone.py +0 -0
  126. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/10_10_winter_phone.py +0 -0
  127. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/__init__.py +0 -0
  128. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/ari_40_80.py +0 -0
  129. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_10m.py +0 -0
  130. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_160m.py +0 -0
  131. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_dx_cw.py +0 -0
  132. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_dx_ssb.py +0 -0
  133. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_field_day.py +0 -0
  134. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_rtty_ru.py +0 -0
  135. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_ss_cw.py +0 -0
  136. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_ss_phone.py +0 -0
  137. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_vhf_jan.py +0 -0
  138. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_vhf_jun.py +0 -0
  139. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/arrl_vhf_sep.py +0 -0
  140. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/canada_day.py +0 -0
  141. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_160_cw.py +0 -0
  142. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_160_ssb.py +0 -0
  143. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_wpx_cw.py +0 -0
  144. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_wpx_rtty.py +0 -0
  145. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_wpx_ssb.py +0 -0
  146. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_ww_cw.py +0 -0
  147. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_ww_rtty.py +0 -0
  148. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cq_ww_ssb.py +0 -0
  149. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/cwt.py +0 -0
  150. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/darc_vhf.py +0 -0
  151. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/darc_xmas.py +0 -0
  152. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/ea_majistad_cw.py +0 -0
  153. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/ea_majistad_ssb.py +0 -0
  154. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/ea_rtty.py +0 -0
  155. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/general_logging.py +0 -0
  156. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/helvetia.py +0 -0
  157. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/iaru_fieldday_r1_cw.py +0 -0
  158. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/iaru_fieldday_r1_ssb.py +0 -0
  159. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/iaru_hf.py +0 -0
  160. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/icwc_mst.py +0 -0
  161. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/jidx_cw.py +0 -0
  162. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/jidx_ph.py +0 -0
  163. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/k1usn_sst.py +0 -0
  164. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/labre_rs_digi.py +0 -0
  165. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/lz-dx.py +0 -0
  166. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/naqp_cw.py +0 -0
  167. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/naqp_rtty.py +0 -0
  168. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/naqp_ssb.py +0 -0
  169. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/phone_weekly_test.py +0 -0
  170. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/raem.py +0 -0
  171. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/randomgram.py +0 -0
  172. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/ref_cw.py +0 -0
  173. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/ref_ssb.py +0 -0
  174. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/sac_cw.py +0 -0
  175. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/sac_ssb.py +0 -0
  176. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/spdx.py +0 -0
  177. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/stew_perry_topband.py +0 -0
  178. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/ukeidx.py +0 -0
  179. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/weekly_rtty.py +0 -0
  180. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/plugins/winter_field_day.py +0 -0
  181. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/radio.py +0 -0
  182. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/ratewindow.py +0 -0
  183. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/rtc_service.py +0 -0
  184. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/statistics.py +0 -0
  185. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/test.py +0 -0
  186. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/vfo.py +0 -0
  187. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm/voice_keying.py +0 -0
  188. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm.egg-info/dependency_links.txt +0 -0
  189. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm.egg-info/entry_points.txt +0 -0
  190. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm.egg-info/requires.txt +0 -0
  191. {not1mm-25.4.13 → not1mm-25.4.14}/not1mm.egg-info/top_level.txt +0 -0
  192. {not1mm-25.4.13 → not1mm-25.4.14}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: not1mm
3
- Version: 25.4.13
3
+ Version: 25.4.14
4
4
  Summary: NOT1MM Logger
5
5
  Author-email: Michael Bridak <michael.bridak@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -230,6 +230,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
230
230
  - EA Majistad CW
231
231
  - EA Majistad SSB
232
232
  - EA RTTY
233
+ - ES OPEN HF
233
234
  - Helvetia
234
235
  - IARU Fieldday R1 CW, SSB
235
236
  - IARU HF
@@ -253,6 +254,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
253
254
 
254
255
  ## Recent Changes
255
256
 
257
+ - [25-4-14] Add ES Open HF Chanmpionship.
256
258
  - [25-4-13] Fix crash in JIDX Cabrillo output.
257
259
  - [25-4-12] Added an Auto CQ time to fire progress bar.
258
260
  - [25-4-11-3] Fixed issue with winkeyer not sending multiple macros in ESM mode.
@@ -198,6 +198,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
198
198
  - EA Majistad CW
199
199
  - EA Majistad SSB
200
200
  - EA RTTY
201
+ - ES OPEN HF
201
202
  - Helvetia
202
203
  - IARU Fieldday R1 CW, SSB
203
204
  - IARU HF
@@ -221,6 +222,7 @@ generated, 'cause I'm lazy, list of those who've submitted PR's.
221
222
 
222
223
  ## Recent Changes
223
224
 
225
+ - [25-4-14] Add ES Open HF Chanmpionship.
224
226
  - [25-4-13] Fix crash in JIDX Cabrillo output.
225
227
  - [25-4-12] Added an Auto CQ time to fire progress bar.
226
228
  - [25-4-11-3] Fixed issue with winkeyer not sending multiple macros in ESM mode.
@@ -3705,6 +3705,11 @@ class MainWindow(QtWidgets.QMainWindow):
3705
3705
  result = self.database.check_dupe_on_band_mode(call, band, mode)
3706
3706
  if self.contest.dupe_type == 4:
3707
3707
  result = {"isdupe": False}
3708
+ if self.contest.dupe_type == 5:
3709
+ result = {"isdupe": False} # in case contest has no function.
3710
+ if hasattr(self.contest, "check_dupe"):
3711
+ result = self.contest.specific_contest_check_dupe(self, call)
3712
+
3708
3713
  debugline = f"{result}"
3709
3714
  logger.debug("%s", debugline)
3710
3715
  self.contact_is_dupe = result.get("isdupe", False)
@@ -4095,7 +4100,8 @@ class MainWindow(QtWidgets.QMainWindow):
4095
4100
  """
4096
4101
 
4097
4102
  logger.debug("******EDI*****")
4098
- self.contest.edi(self)
4103
+ if hasattr(self.contest, "edi"):
4104
+ self.contest.edi(self)
4099
4105
 
4100
4106
  def generate_cabrillo(self, file_encoding: str) -> None:
4101
4107
  """
@@ -347,6 +347,11 @@
347
347
  <string>EA RTTY</string>
348
348
  </property>
349
349
  </item>
350
+ <item>
351
+ <property name="text">
352
+ <string>ES OPEN</string>
353
+ </property>
354
+ </item>
350
355
  <item>
351
356
  <property name="text">
352
357
  <string>HELVETIA</string>
@@ -1217,3 +1217,63 @@ class DataBase:
1217
1217
  except sqlite3.OperationalError as exception:
1218
1218
  logger.debug("%s", exception)
1219
1219
  return ()
1220
+
1221
+ def check_dupe_on_period_1_mode(
1222
+ self, call, band, mode, contest_start_time, contest_time_period_1
1223
+ ) -> dict:
1224
+ """Checks if a call is dupe on band/mode"""
1225
+ try:
1226
+ with sqlite3.connect(self.database) as conn:
1227
+ conn.row_factory = self.row_factory
1228
+ cursor = conn.cursor()
1229
+ cursor.execute(
1230
+ f"select count(*) as isdupe from dxlog where Call = '{call}' and Mode = '{mode}' and Band = '{band}' and ContestNR = {self.current_contest} AND TS >= '{contest_start_time}' AND TS <= '{contest_time_period_1}';"
1231
+ )
1232
+ return cursor.fetchone()
1233
+ except sqlite3.OperationalError as exception:
1234
+ logger.debug("%s", exception)
1235
+ return {}
1236
+
1237
+ def check_dupe_on_period_2_mode(
1238
+ self,
1239
+ call,
1240
+ band,
1241
+ mode,
1242
+ contest_start_time,
1243
+ contest_time_period_1,
1244
+ contest_time_period_2,
1245
+ ) -> dict:
1246
+ """Checks if a call is dupe on band/mode"""
1247
+ try:
1248
+ with sqlite3.connect(self.database) as conn:
1249
+ conn.row_factory = self.row_factory
1250
+ cursor = conn.cursor()
1251
+ cursor.execute(
1252
+ f"select count(*) as isdupe from dxlog where Call = '{call}' and Mode = '{mode}' and Band = '{band}' and ContestNR = {self.current_contest} AND TS >= '{contest_time_period_1}' AND TS <= '{contest_time_period_2}';"
1253
+ )
1254
+ return cursor.fetchone()
1255
+ except sqlite3.OperationalError as exception:
1256
+ logger.debug("%s", exception)
1257
+ return {}
1258
+
1259
+ def check_dupe_on_period_3_mode(
1260
+ self,
1261
+ call,
1262
+ band,
1263
+ mode,
1264
+ contest_start_time,
1265
+ contest_time_period_2,
1266
+ contest_time_period_3,
1267
+ ) -> dict:
1268
+ """Checks if a call is dupe on band/mode"""
1269
+ try:
1270
+ with sqlite3.connect(self.database) as conn:
1271
+ conn.row_factory = self.row_factory
1272
+ cursor = conn.cursor()
1273
+ cursor.execute(
1274
+ f"select count(*) as isdupe from dxlog where Call = '{call}' and Mode = '{mode}' and Band = '{band}' and ContestNR = {self.current_contest} AND TS >= '{contest_time_period_2}' AND TS <= '{contest_time_period_3}';"
1275
+ )
1276
+ return cursor.fetchone()
1277
+ except sqlite3.OperationalError as exception:
1278
+ logger.debug("%s", exception)
1279
+ return {}
@@ -1,3 +1,3 @@
1
1
  """It's the version"""
2
2
 
3
- __version__ = "25.4.13"
3
+ __version__ = "25.4.14"