From 3d81244c31dc19413d0a72c4988ffdc2e4ce517e Mon Sep 17 00:00:00 2001 From: Sander Roosendaal Date: Mon, 13 Mar 2023 19:41:41 +0100 Subject: [PATCH] updated scraoper --- boatmovers/scrapers.py | 10 +++++++++- rowers/integrations/__init__.py | 2 +- rowers/integrations/nk.py | 2 +- rowers/tests/testdata/testdata.tcx.gz | Bin 4002 -> 3999 bytes rowers/views/importviews.py | 7 ++++++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/boatmovers/scrapers.py b/boatmovers/scrapers.py index f1adda7f..eb6ac6ae 100644 --- a/boatmovers/scrapers.py +++ b/boatmovers/scrapers.py @@ -4,6 +4,7 @@ import requests from boatmovers.models import * import pandas as pd from django.core.exceptions import ValidationError +from django.db.utils import IntegrityError url_heineken = '' @@ -115,11 +116,14 @@ def time_team_scraper(url,raceid,gender='m',startorder=1): try: first_name = str(df['naam'][i]) last_name = '' + full_name = first_name dummy=False except TypeError: first_name = 'Unknown' last_name = 'Athlete' + full_name = 'Unknown Athlete' dummy=True + print(full_name) athletes = Athlete.objects.filter(full_name=full_name) if len(athletes) >= 1: athlete = athletes[0] @@ -131,11 +135,15 @@ def time_team_scraper(url,raceid,gender='m',startorder=1): dummy=dummy) try: athlete.save() + except IntegrityError: + athletes = Athlete.objects.filter(full_name__icontains=full_name) + if len(athletes) >= 1: + athlete = athletes[0] except ValidationError as e: text, id = e.message.split(':') athlete = Athlete.objects.get(id=id) - print(athlete) + #print(athlete) crew.athletes.add(athlete) diff --git a/rowers/integrations/__init__.py b/rowers/integrations/__init__.py index f68aed3e..dc76fdb1 100644 --- a/rowers/integrations/__init__.py +++ b/rowers/integrations/__init__.py @@ -14,6 +14,6 @@ importsources = { 'nk': NKIntegration, 'tp':TPIntegration, 'rp3':RP3Integration, - 'polar': PolarIntegration + 'polar': PolarIntegration, } diff --git a/rowers/integrations/nk.py b/rowers/integrations/nk.py index ea1488cf..25d14bc6 100644 --- a/rowers/integrations/nk.py +++ b/rowers/integrations/nk.py @@ -269,7 +269,7 @@ class NKIntegration(SyncIntegration): def open(self, *args, **kwargs) -> str: r = self.rower - if (r.nktoken == '') or (r.nktoken is None): # pragma: no cover + if not r.nktoken: # pragma: no cover raise NoTokenError("User has no token") else: if (timezone.now() > r.nktokenexpirydate): diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index 7f8b80e97bb20893e2da38a10e64d2517f102845..b96daad5db343d86a7b07698d65fe89e0e9eeec8 100644 GIT binary patch delta 1372 zcmV-i1*7_+ADR|1t7gC$a4Q^pyHwpO9+0P}Z_{6&s&lV{ zAK#sx?7dlDY*uIM`*+d6-Mt?V?;O0i=vM31`uO2;-7hbH9(8^9N4Ht-rJdKC`*&aU z{rUc4@%HUobKG5=uGZ%0>~xX7+#J1Ho_3qX^@lIs(B0iB_PclAaFz#0{p!uCfB*Bl ze!0#!c;y7|HmlFh@RrTl#qojwaPj-oC(pO1xVKtw`fh!+Oh;{2`@8c#IXmk5?XSJj z4eaTUdPC-a-R9+AANcpKf7qRzU96Uy#T)$V{r~Lxquu_?%S++6U1|`}O%L7u#=D1i z_Vx}wJb?5w^2bjb-tRp>KfCDf-~DI*YI$*Y_htI}@ykO3boW5+5xhX&x42KvL`NLq zZvguM2aB}R$Nisl=X=ll?xKIOI$hqs`&Y+aUML-Z`r@qbPV!;Tmq%yomzzUjf3Wy! z>!$-At#)tF(`EXxn{=P~UcT7)Y44Bt4iUq_;_}m{9Udf6>yDTISf;!Gwdds{rTw%i)$`%(l?!4T!tu2Clipm9HPKx36md{&4$NEECzwEmt4p%Vm1NhlKet?*6_)@nUs+ zoNjH|zdCz)__SNU?oJZL&$eFOyF2>tXLrBda(=d2_g6RPFVZ{k4e#Q1x6hCK;*}6% zhhLNJ0k+&%DC|gFkKnTh4A(s0?GBeMqu1uE%f9&K_ivsFt{ua_JYzcNzq-Cp zViOM*yT87?<|1A6%b$1sE#?>DI+LjaBLO*+%>pV6ZO3`1;BJGVg52>IlLG@~3vWT5 z>LO3oO!2f2lXC-b0&Yc<Fs zIRUnle+9Aul#?-le-8x6vO_f)r|KpcfNH|H{K&K7EQUo4U-57 zKmkLONeO)uQ{yhwgFcPj;BtRF4SHX+5ALnA*$IjPI&GQgRcf9U+gv)+cjRtcCZgBP z^-d;}pw-ec2hfLY%S6yEd4twVGw!Bt*N5CP(TbqTk!wS%zPTxroeL%bwv)sQEdg7z z@(bPpKdsQWn!922lB;imDkC?v6alm3UFPnM_4b-(xhcGLHJUB3tK{GV{-mfm{X z!FR{~4+o3g0e5z1`uH33=gUv4-S-C%FA~SIix2xg>(bkEarSo8tzUL0C)=l$KCae( z$1l6SOXux&Z>9~UjulrYL7gt`B2j}M}tD~+@KmGE>xIFh)CrjV`^m=vj^77~Y zmfpv7=#_`_VawC*Kk1U$S#b69*SoFOX|tD4`)xN|KH4wNfAAvR^x?0|lV!JACJy=2 zhevniz7C#r>*L3d4u5`@*=+yZZT}@Vy~WR7pZ>8-cLs0|VE6yQ;>s7hC%=76hj+H9 eSL^f~9wwB_i%02c{E;qwc;|mH2UthMfB^uHh3!%R delta 1354 zcmV-Q1-1I0AEF$+%@F1A3@E!v>lx5dO(9qrn(Ax$p*_e)Bt<0Kxm$KD}01Lh&HMsw4AbI5b& z@z-xJFAiQWH`~?K`l~}UaCq?b$)n@vn{KsUtON)#W06xjlWkyzI7%yANNyro;Uyj=Hyh;Vj>r_N&*c{`c?R z_RDp?!CNPIyIp;7hBs`kHs=chz{Ri6p8mW$#TTpfw(r)b%XHLsb+kY4)2q|2-~HNq z-N1qVsMlnF-fqwS{J_6={p0T9YO`8y7q9Wp_y4WyPxt#TZ!U#@?NWn)?tAF|Hy)lm zIyg9f_W;t*$RFQt`2FDL>#I%w)!{$;m&?uJ{>$|B_h%;r=)M5?g5Wvwk;Nl&COYB> ze*-uII9{Zk{@DL%cYW}4-);KmtIOqAhkthL&4to`q0g`S?jj%d^YZj+eYQOj_Q#7) zw!S~$$!h-wJzJ(9yG{3*@8zS7@Av)#-w9$kUfg_ozr#04)VlNKKbGn4f9m?>x7U}u zSF`{9I{lKH&EK!TU3UHU$K~ePYW=ET{=2{RBhqPp=`LO^Ptc}|?Eid!g~c70xb^k3 z?(OP-^3~=4=?28zaRYZ;;?~#SuXnF%|NF`Atym_qH(PE$$g^d7z$b+HG4B7qMRBt_ zKTo%|>|b7;ojmK-ueysw@q?|m_wG*r`@!Aswp?GW*8T0x`HS=p{DpUMx7&wDe)LL+ zvBR&)?tljpxJ`llClvN1?ndyz1BN@E?{0@Ko6&3g$z`Aa`0HPu3GN)jKR#nR=fAqX zPht~~7yG|HzUCrb^y8m*_buiZ;VzS?0wV!Glgt7t4DH5wr{Hdbp@Q7;0h0m)WeXob zp6Vh`)lBhp1e0n!922lB;imDkC?< zqLsD}8t_{$oniDLuW74`+(jt5*x9T!{93Yf1a>P~1A3JsH=<0&r30;R-XQwjlMW6q z0`C@+KMpH@?^d!_M($$7)){*S=&eaJy=nmz0%$#Q?~C4#h5p^vKQ*ZslgyG@@Tbo~Lm^}pHQmM_i#!VCE9y#Mleu|MF^{!D-T#{Bu_ z(`x_y@#9V6c(r-A?+;yidp1{Zw%z)yySUgrt@Lq!wLU-V`YxTf+rM3j%KPJvzj@Wa zyxQD)O}@FlzF3`hefsG)FUHNeKRH?Y?%P+Zi?f@b`%8Ks)1kK>&buwoy8on0W@o|e z&!6tLTBprk-tV{DaPw$CI{)$Wbkiq4Eiabcc9}TjPwyVxt@}ED+O5yOe{%BO51GyG z&;9l}AJbd>!>h{|%XDV|UjXd?KVIDWV*liKkLl#m4)toCp2OpWa=Ceup2mxG>61tQ M0~vTB0mOg-0A!r+*8l(j diff --git a/rowers/views/importviews.py b/rowers/views/importviews.py index 1df484ab..2b9a582e 100644 --- a/rowers/views/importviews.py +++ b/rowers/views/importviews.py @@ -361,7 +361,12 @@ def workout_import_view(request, source='c2'): enddate = enddate.date() r = getrequestrower(request) - integration = importsources[source](request.user) + try: + integration = importsources[source](request.user) + except KeyError: + messages.error(request,"This integration is not supported") + url = reverse('workouts_view') + return HttpResponseRedirect(url) try: _ = integration.open()