From 5de92fa7a11f41469d616d2aef086d55253fafed Mon Sep 17 00:00:00 2001 From: Henrik Jess Date: Tue, 14 Jan 2025 17:25:45 +0100 Subject: [PATCH] [main] Prod Creds --- __pycache__/app.cpython-311.pyc | Bin 2952 -> 4543 bytes __pycache__/markdown_render.cpython-311.pyc | Bin 0 -> 5745 bytes app/__pycache__/__init__.cpython-311.pyc | Bin 0 -> 166 bytes app/__pycache__/main.cpython-311.pyc | Bin 0 -> 3677 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 178 bytes .../category_controller.cpython-311.pyc | Bin 0 -> 4075 bytes .../dynamic_controller.cpython-311.pyc | Bin 0 -> 4229 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 0 -> 175 bytes .../markdown_processor.cpython-311.pyc | Bin 0 -> 5292 bytes .../markdown_render.cpython-311.pyc | Bin 0 -> 6158 bytes .../metadata_processor.cpython-311.pyc | Bin 0 -> 6211 bytes .../__pycache__/flight_types.cpython-311.pyc | Bin 0 -> 2616 bytes .../TingSomSkalTilføjes/flight_filter.py | 66 ++++++++++++++---- .../TingSomSkalTilføjes/flight_types.py | 45 ++++++++++++ .../TingSomSkalTilføjes/json_data.json | 1 + inspiration/rnh_tax_calculator | 1 + requirements.txt | 7 ++ 17 files changed, 105 insertions(+), 15 deletions(-) create mode 100644 __pycache__/markdown_render.cpython-311.pyc create mode 100644 app/__pycache__/__init__.cpython-311.pyc create mode 100644 app/__pycache__/main.cpython-311.pyc create mode 100644 app/controllers/__pycache__/__init__.cpython-311.pyc create mode 100644 app/controllers/__pycache__/category_controller.cpython-311.pyc create mode 100644 app/controllers/__pycache__/dynamic_controller.cpython-311.pyc create mode 100644 app/services/__pycache__/__init__.cpython-311.pyc create mode 100644 app/services/__pycache__/markdown_processor.cpython-311.pyc create mode 100644 app/services/__pycache__/markdown_render.cpython-311.pyc create mode 100644 app/services/__pycache__/metadata_processor.cpython-311.pyc create mode 100644 inspiration/TingSomSkalTilføjes/__pycache__/flight_types.cpython-311.pyc create mode 100644 inspiration/TingSomSkalTilføjes/flight_types.py create mode 100644 inspiration/TingSomSkalTilføjes/json_data.json create mode 160000 inspiration/rnh_tax_calculator diff --git a/__pycache__/app.cpython-311.pyc b/__pycache__/app.cpython-311.pyc index d72dd2f6cf277990b96d27a2936c9c347274f998..b2a7c277664be5d769043f6cc3d6a0f0e7fa45d5 100644 GIT binary patch delta 2286 zcmZ`)&2JM&6yMpk9ovbWI3zfvKqq!Tk`&uX1B3({3ZXPrOF_Y?BB~T^cE!f zFCcQ-BEg{-w1*z5N;##6a^nxEih8Y-RFR6T9(t^La)r1cRqC7dI*_HNA`%y;eTu+KvG7^c?(8JCR8N9-54$^g3+7o>r zMDH=iB$9XqqnpYlnH;zq*uy*2;!Q}T=hZyYOZ!U!a&RB_4HCR64JF+_(Wki~RPVZ^ zvYW(SvSz47D5DIpQrsZp>vv{ zI*!(QP;nKx{s!jL8z4TBko28I(5ky3r)zhl-Pv13M81Q*mx%I%vMTc+5d3jRei+!T z3y}vuQ&UjeXe5oN794JyxTuyLT!fgS(a1DB0@fX@T39#LGR5{HWrn&k8I9c5&2q+| zwGz*?K0hBJtG*R-+Mh8V+AHk{`Hmd8&B*%7?hZO`~=O5V639YLyEq zYNb4cssyeWM&6`c#acyW4&{Z^wc^FhDWUUX&r(fVNG4puTV6Kie$giyA_i%lJ0- zd`;r9k&){1X$;RUl*PzGIbeU@W^lSE@o2TSj2+w12~KO8b{bbzLcFYwddzuMyIE%T zf<-c#ZP>s_mnOt-w^6TXV0FJX9WRZQ=xN^}oVOC6#K)^UPT#MMPMo|rw$Jg)A^Rm1 zVefZPDwW1G@_GlQ5}hBLf1Uk&uGUIvK38ehJU?%fl~#R;zKFfoxsdYDc&l0>o42rE zmmKH;C7<)TU<{5FAkY`ueBzK&Z#T&t^BYS&lK*^}D?aJ`;o6dRNhpamH_k>?puPhSYF@? zH_6nj^QJ|RTno`>_MO%|XFuqn6|8Fd1(`&*>^!4v7&=I(zZB%zPc zrgZV;|6iflTKOyeuD+%`i67mJAKi-M?Koa*ch5!#QP{0S?`1=h9K4tOI(a|2et0dp xg|gcy+mMIRdkqQ1zltR1c92=*HlpLG+Z}AboX986A5tD43Yq=FPHdeG`2qEfIPB$u#srt6k;cbT0+Z>bPa z@e~F7ArdYnMV_Sv>2CL; zqTu%`pV}@oC3GCINYwHuCS8`W9ua1=&t7LV)Tk{9{!6l#_aa7K{CA+T(GXE7FXaE` zAFVYnCajyJm>ke~fSUYPbzS|XobFaPRkX;z+4s>^{>M&R^1}LoTNghB*JBjv?vZVJiuq-dtV4iXkp%si$X+@WK-&?TP;V7pr zjuAihV*97*9L8^wL2{_^Cw>c=oceE3g|7s6kjuNlX0RM=Xxf>kZ&=n@4Z->k#59*U diff --git a/__pycache__/markdown_render.cpython-311.pyc b/__pycache__/markdown_render.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..39f5f36bebb352607874b2621ecc79455ca56548 GIT binary patch literal 5745 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 literal 0 HcmV?d00001 diff --git a/app/__pycache__/main.cpython-311.pyc b/app/__pycache__/main.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cadd7fd18c5b34967960a612df99183f0302a671 GIT binary patch literal 3677 zcma)8O>7&-6`tMYE{CE>Mxv71QYfv|A_$#m>7)%%t5#9Pfdj*_>Nuzy@Uqx)NAfDm zB{REpB31!(@If&Iq&HuB&?RmI`(X5xLk~ITl3-U@z{COp3KRj78w0f$pZaE&OL0lJ z>Fn_F&EI=7^S<}q{H0KsLQr1YG`7FWBJ@wzNJ?hFoIC>N9x{29wc3;ULvKVXNJuYW^CS!IrR>z=D%k%szQ{#Y`EUW^((-Z4R_aRG+K^F zKJ=P~V{8)&-T8Ms!?PNfEt|N|oVjMu_srG@&UM;q5Z7(7IWyOYXPAa(q&nZ&b&RIf zxC9bu%eJ|+*-M5;wp(=fw6`&`StJb_C$9r@4-r%sOjH+5;SQ=xBx8z1-V#mePG;;_ zikX2KSyKjzO$BJq%)&u&l;3E#ZL0xiXgLjGL>E)VekXUiDsNz4MinA>C(w<;&_n+YooI660g(NU2ai*iu>@(yWuZtXg?ZW~_hEl_{i zc)tcZYE8p(wDxXuT2J8sLVic!vT+8s|fEgIzk zfsAKMyU)LwOjpe~lBjGMm#cLvLp|*{5Ha12Rr^Sf4~YPBlZzz;g&jv&}&y z)Cb#Y(I_`$U4}{(3Y}vsia@#xDfdXb?F>wC{|w|i`1aAi6_hLb#R~ym3-Owd*S@W2 zpP%u6Yx)%uR7hAMKA!L4`N#OhWBg)(&xQD$kI#LB3x4tC0I!C4)yJ#6xf)i`QBm$7A@0)W;F00%RcOwWvj0tt)dxM;Qi42*9~ya2FaG$aWILyX?U9~kVt}uP_^OYuLf{-s+WqvU&#}L<5v**4D;r;8HtFpUzwIY=(v4k~M51p>f)A0k5G5I@FC$B++~ ze-SSKD!}U@Uia}jw|g@3^Kf}Bz!yV&(NF56v6*jjV>2A4{T6bB&{c21^MN`OZxYJ^ zj5`eiZxMcF6JaWvB=Nr3 zZZ@m4QFaU7;zrwwpKwzQPVf@9tv~SNMdiV;76%lbUU?Xamf&hNc%4?8u~`#&D$a5%Ox7uqU2PJ{+&7}1j!%4wAH=T2&KKojdJ@&RRbr$tK@fUq!B5v7I_IZr55454YY(ma>H4&u-}oq1d+2pPUHeK^02@w{ qA6VbNP6yr`Uz9=lu`Q#edKM literal 0 HcmV?d00001 diff --git a/app/controllers/__pycache__/__init__.cpython-311.pyc b/app/controllers/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b99dce0f4accfbbd4d0e0f54f258d48e5e71297 GIT binary patch literal 178 zcmZ3^%ge<81ltbAr-SInAOZ#$p^VRLK*n^26oz01O-8?!3`I;p{%4TnFIWB0;?$yI z{hXrAjJ!;J&y>`}fTH}Y)Z~(4{eYs(vcwX7pUkvWx5PsI#DW6-X;dk>%Ovx5yLtTDwLA$JrLN)%)(!GS=)SeQ2Dq-wpr*|Qhli`g~C zhmEWjsU$_pqppn9L~<%b+=5h8RaK?_;za!e&em0&RzgCmBDKGrWhx>6)Ngig_k6}_ zn4SA(=9||y-}}A_hXV-8U%ytybP=I{(Scj|T4(*I&{;qjVJ3r;PRk@27_%8R%O$xi zpX3>e=Q2Xpm-N|vKI6}dNs&P;I*qV!3t``V7NH05b4pUe%m|A4|3imEG1ija9zJt1 zKWS>j@?X@hPHKi3W3147m(HKNs2PQP&d^{SIjiTcs7Eeo*+ND&H6v9!&Tc%C`(e0% zG(^cvvN(X*TTGI}+%1&kF%M9{g62!J*msLh`e`5gH8IU&5yldhfUuy|dJ--e%aiGo z`J74enT$p@qGMW4BY?*WR!ud2#mMJU-kac7uJ&91vrU4@KvOICp?%;E&wg3sej|3?upk(r@!z_!ZEVF`&im_rZ zG(haUp=Hu=7ECE=J);?vo3gwyocOV!5hIZy`gl%HoWYtpO!8OYLL)Iu^lPe_IH#wz zQ|i@(S|}vyR2qp?O>RmZ881v*qN3>VG({=ydQq}*cT$4ujk5se(6_Jb`E+7_;x>OL z_@wi|qqj<(11p^a<<0@XG*#L<7A|~tVe#@x+u?HCVL(Y0G4xpMSQR@~#GPevXUVPW za2iT^@`M594`tZ;9|0_YE?j}uDT|xexk%6oSmWs#X2%$FlT06S_dzQjc$&ey%!xdl z=at8ZYSTm*3mV_D1bTiR1Dn-J{G%I#qPzPMf2XxW#MmA|NJ0T61!JKTo!Rj#2{98 zO(oP@2{o5PyDRNGKRNwmS8r89(%v;BNP%Y*R2uL>>g$q%wQHo z35xN+Gx#^qENglrv`GnOwz!EDi@~>HzR}GxXax13A0mUFVy|6 zxa%C)r+jwg!jMdDP)?J4R)z*lF>W!WC`_8^*N=m_i&`#~$9isTD8^ZQzM$nSp1MDa zrxqULY*CO_c$dZ7hD@oJ<(gcYU{Kt>om@Qs&q_4lp*l4%Xa)05E z`~S`y_gjAA#H0psLd-;z;`Lzw?*mg`(w4VaGv+Y=`4++1!U>(Bn(x?Kycn?UAUDaT>_ONp~R{B6G zg+`&S30yPS3Vf+0p2>C)mHOGhkfWQf{@xvAeszVOJaRxnHmgj7}-H=YuMD2Qk z^cRn~6rHRmGMj@){6r?7QZq(>+}qPj&pQI(xuevjj!~$K(dEA7YyWtwbWvG7sgzDC zccTF6)n4Q%bfBitx@HU&1?pE5#bBatzC};t9c$*P-jjoHBZNWEj!6s}y%HTON5^i9m0+}r znxxiBSO4PqQdhrIZ=Zh>X}L4?@y(BJ-p#H=4wWN^swfn0ebU}}_w|+b1LgJu;P6}e zmIf=muYEQB`{^%l+`Ca~+XsQAg~pp2fSA(K2Qg(cu0C7uIWgshRZn;9n!ovY$FbEN z$0}_-PkRnl_i30d~543Uu1ZNKf1R=0EMfcF;sR1;#3hy#Yy;VfpW!Oa9{|_BH zDP^$$c@rA47l7qYt6&)g-TsqeKhkQcq2g|aYB>32tBbGw(}8@)`8Q*~yO9?g;t7YX z{p1u}LtU%!F#u2?hN&QF&i*PWIA?zqw7;}nt)PRY##%w~Qe&<95)6I(_HfO{Kl_eZ Hn<@VTt;WS} literal 0 HcmV?d00001 diff --git a/app/controllers/__pycache__/dynamic_controller.cpython-311.pyc b/app/controllers/__pycache__/dynamic_controller.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b9408bdd4441e0273fc54e5f1824f80ffcbfe34 GIT binary patch literal 4229 zcmb7HU2Gf25#IabuV{%96^g0koFrQ|)tYhwTS@(=xOSrWr?M-#4-rzF54@9f(ve5+ zono7y3_TdI+#0BYs<4_m2oV^zTDySyQuwKe-}*=j1WX(tpg>U|eWPI)F#OcnCGSXD z43O>}XK!bAcV>5Hza2gdg#rl5-=0ddH{t7Fq~R34_VMB~__&J{q%b;~uGY*n18r7k zQ`|I{;-`6r@Ht&bd8R!n@3fb;dEJ-tPx~3fqH&}MH<99bz#{Yre$_G^P?#wc_x^`8 zC*rK_KY8)Yq_JqJ*!E7UR~A*%0&d$UmwtYJQZ+M1+Ei_y^A%_8_On`gUViVAn#$<1 zrJBjw#I$l3Fbd7PNJYfxX;xuWZiZFZn_#xW-9*!Z!UOdvg32i#knxHaWM0Jwrupsg z>Fa4Zr6o@pX$u>=4yO4O*^(ti!%24~pnoCeAv$(31x%ZB}Z z%sv3gBUcJN$*i>G7-%_5f;sXHBb`17?a<_LWH7?(d^gt3BfxJQESt{`oJnhzChJ;O z6|Ff{RI0lmCf#jF*nZ2|cW{Lt_Crlt2EINK_hDkT?ZMQQnCQiAgpg>n+a=wQ6)9yT z7bLQiHcx4nBrA$k(<9NLCODrrRegpIG|6s@;_C||zcf{Bj_6pMOKT%%6ji>6jd@UR zj$Fjr=dv|&UYk)rmamM+naoJtVspfqz0ONyuG>CI(qOfclzn@LvlEWY2g=P~09i)= ze(Rkt7S?B9y)FGhw-kzru@%f7Z} zK5@$@7JUOH-$226U%;d&={g-6#A##)U*v$?MUA1PFwG%y7%efD8zczLyCIo-qh}Ig zo;=M*kU>*u5WR~`{wjNo`xISe81yM(;89oz1THI{2WN@ISt4ZyM=|IA`-lMors1Y1%w-d7Q{dx*9|-R)}(15tCSj=y4&Y zdh`>onGu^C|L786fH$RDbB1EtyKwCmkdnG=niGJ}tYO;xRasxCf(xIKtvLufLrddb zV3i#rs3K>yDx%m?39#dH)x{YH!Z6vDxVILd*f1=BB@LUlK!X*B$Xo$xnnYFXa@RoH zCILCITBxgf4 z#LJQ06qpWfMGkJpo=g-Y=Sq=t<-URS@$JEpiXVlCpCcjM`I3-Iodk(K&M^fOd!5aI z%TdL{z(~5$2n`Ye^b`=uEp&^y#X<_fG)C_XyTYz8D`Ui>o=pjsy5R(E5S}DEvKl4xkKmUtvfJZL;KhHo2q@G_jsXzn9`g@i>?3zPz&M*@f5@G_#3>}# zLd_O3C>?AKgTux}TTk+o$n%6sptZ01_C2-qI;86)aZhNy| zJT#FFXlX^gmYB0ry3OFMuxQO3_yBSipPEh@ik60T*I+5g?94uC@mF4_bq! zC0mQ81gh0|8y3khq7x4Su|4WF&9qERmS^*Tj0&C8=4MrkCQ){WlkPf+FtI+PSu|P0 z#MyCw%}ly(iL4vHO*9-Lllq(`*}>`}CHD;DACq3>k~WD8t8liwyi5_z4prfA4loThrS`o{Wvu{~aDk5^DqK zmLr4z92_nW9eg%)bZh8nap-ty=y(}80|(0Dp8Nhv(9``^1p#?3_H|^9XniOC7e{pq^Su#*LJ5PtlfzKUDbbAbb+T}%KD;T`;Jw&>;xVM z0m(hh-vEI_!7ydyU#3qP1()elMni>GZy6mbw0g@ZQD}ZE{1K+Ff_9SUg!i(AfExQh DYLM%@ literal 0 HcmV?d00001 diff --git a/app/services/__pycache__/__init__.cpython-311.pyc b/app/services/__pycache__/__init__.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3b6a7aa89a9dea29376fe73e102b6d490dee15f7 GIT binary patch literal 175 zcmZ3^%ge<81ltbAr-SInAOZ#$p^VRLK*n^26oz01O-8?!3`I;p{%4TnFDL!b;?$yI z{hXrAjJ!;J&y>`}fTH}Y)Z~(4{eYs(vcwX7pUkvWx5PsI#DW5SpxUy`0N&jz3;+NC literal 0 HcmV?d00001 diff --git a/app/services/__pycache__/markdown_processor.cpython-311.pyc b/app/services/__pycache__/markdown_processor.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9b344576b4ed0293df1afeb82f23c5d3ecec007 GIT binary patch literal 5292 zcmb_gU2GHC6~1H7*yF^`kL~c65C%v|%umuyHZR_3(;;zgJ%*Z*fZwN zm_RyS@vsl+3TdMX2}D7-D+F1=L!K%gSstoB+Q=2wNa;(}hrSuXN{FYPd&e`jL)h&@ zukCaH&OLMQnRC8#t{+AsO$f?gzY}L4M-ciK>9~chHeQWE<0g`k%%spXseLIX?VI*7 zr0q}n)9f^x=B7CY`Or9$*)NgIJ@6s)2!2kP4#>1EXFl;tr zw|`RI-ASw`6~oZ+!rdkT$`K)%k_`NPU*T?r<$a$nUbmzWq67+vgcjhsfyufhsYwOK{2k(F;CNV;(kr+ zaj>?aCI?J7kfPQ&nP4#wD#65EFj1K8SG3Cszs(v-YQ~uh!LUKp1CM_@F>uCEurZLr z>IF?5I3X(%C}Iv?v@viJtCuBnU_zZyj!BmWq)cW2crUA9egmGbRBcYj{h6yaFN$z> zQxq4rxHec*t2-Aa&)*H?8mhFREjt(4>n*FX?tkpszmhBNI$GLwv=BR1j2$b*j=>ba z2%lHLjqDazi&w>rWL~fXSTVC$OM0FSOawuwIq@)h6V0NW&-Ba$p?ZUw^VV5w%%{IU_77TD)Ro4um4me!Yr@MEs z8aN39M6?=;EcpA=vd!SPT-Kb~ci>yb<`pfe%K&AQHfO44O0oGf8g0mS(8#6%1FqW0 z4oF$^f{yLr8SSD5;WNS7tR|%uJ6L@N-U23pyMQE`?EpkBQ;}_-ZrDL`05~;yl5CKu zYqQj|**RU+Y*x=GK(QjpnAko%DFY+2?VnZ5L zo?sjXBLz^5qxgnJel@=3?%JOrAnA zXQ_2(1+_$Ct6kl9#_vtso>=aF5-)ZgDs>%N3axf*zLm&Nt^B;uaj@8Nu+(v|f|&OG zPv*+0bwR~a)7q<`kQwwQX8#HKL%%@Ah?!ws6l{ z*wJX{SqB3YlXzn{>sgbeB;>UvJ!FO%lDH8Idvycez)fVKIp{bgUl%>xF$CFXBhutp zi_O>JevQ*~lR_B!@o3N}HD9;3Cb1FWE#G5bBM#;`vo12sd2NfKkpy;G%Z1kPL2fbF7%i^mkC zT@y%QHvalgp)qv>coix!;`0yrp57bFcLpI4PS74)} ze$i&;F?mCH1CYsuW>@X( zF1qRfh=xmzNZ1#4xhk&%=ymvpK$^jT%{hR)>BfNJBd(H+mDJMxE$(ZN!5@I`dwd32;0JzR<&E_ZCLaAx$oF9s zYQEmQG`W1bzz-Jr!4f|Rjnzo|(wXtbootAt(aJz#fk!Bk~2Vl^f1?c^;^&CKY12pCW*87t7HK3OZT0y)KxYvbi zi-UAG&LzyNHaV~3i!&*Gept{oMR@Nmz0TR2YPdKF zKD8aRVYBm6>Y{TEB;JXCLdXY%{1Qllr=ABX7hGy>miVX5h<3=!ZtRGQsx-Nxj!9kA zAh%B9d89br=f_!Xq2pa=gW->X*&vscYY5VWZsE?S`P27*U)=g(Y3qj-#D`8Z4*laN zi(^YYx0v$Q?G+S^kYPe0qY-x84?YZk6J9>O@{6J{QW8d%BC8;1mZl3MPxcnO$4lMg zOU;mPbO|py$DVhNJ^j4cIaTVMTH?#GPH>6#(@Z(O=|z0s^Z35y^pmqs|4@uimEu!{ z_|%(9D}9{5winz6`<+ZQkvlGdGf}jgL@}+)S;#a+J1mNqvQnx#6BI>RPr|St{v^Py zu+nBp2&kzVABVwj5tT~yg^3GMLafLjLH?TesrdXHUqOU4g}8Ah57{26SCUS>4&Bhj zZF>5%3WDnIpj4>Vl8@rto)zGL>S+(H3TMvJdM()-=7{dsr_K?`?p-76f;7F~{imQm z?f$D)4GqK*?Ew9EZLsz~g>(Ghz+6owZ~2cL{T{-nV1nR?@dXgTK87iy&^7ugqhA#o dzh(5(!g}9I;I|Az4)Xr$r8D>X2UzI-{tFIJDTn|7 literal 0 HcmV?d00001 diff --git a/app/services/__pycache__/markdown_render.cpython-311.pyc b/app/services/__pycache__/markdown_render.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36d1e1b9402ac2651ee184199d549f6c5d013efe GIT binary patch literal 6158 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 Ni>?}i*M@*D>pvygq1FHZ literal 0 HcmV?d00001 diff --git a/app/services/__pycache__/metadata_processor.cpython-311.pyc b/app/services/__pycache__/metadata_processor.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..50801a6a17c21ac2f5030f0d447cd6c20b6c9859 GIT binary patch literal 6211 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 By8ZwF literal 0 HcmV?d00001 diff --git a/inspiration/TingSomSkalTilføjes/__pycache__/flight_types.cpython-311.pyc b/inspiration/TingSomSkalTilføjes/__pycache__/flight_types.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc2b6ddf630ad9f15859b414f1da1c5b76d556cc GIT binary patch literal 2616 zcma)8OK;mo5Z)CVi>|NS` zZxj&p)I)Fi2PuO5f!_NEB%lXjPX&7FO@iG^d+E%QQmjYR(7T_9!*3t+&2Xt-3WY3z z>))dvn_C7Uf8x#PGGpU*mlE=lIK-hIY0)~RXeYcx%cvWzWIag z5veTyg)vsB$~Y`w4Ub7#NvPzZD+6Wya1pp|pLvb34q$-V`nuhOe=i9qb?T6M;u+xv zPdfAwc%1~yY^dVbE$+L)%~R37b{#HM(q}DRdu=Mqw$Ze0m9_0w+qv@4&fE6o74zaJ zh75!%+BWn3cEE5W(zaidTU`9_IzaWAvFn}w_Uk#9)l<)Ho&|PrbHU}qiyM)K={2As%K+iM zzdzF1upE{<(8ID=9&zWZ^d&r=uM#&wuLSC)l{2)J0$);VXo7|*m5w!3Ifu)JaCJsh z-j$Efm}qi#;&GJ&DN*NR*uE;pHzUz&m9)TDMdT3j2nB>C0F^vxx4kIZB06;}D`=HQ zfWzcIz=Q%zD_x4MM_2mAQkP=u(Nh1ufAv9^V(V!HBbpv(o-ft^7F6lLZ+KS@cOIYd z#&hoMv!+xQ)QlfM__c~T6{#{@KhTkisqk{2a3|d9Ko57KT_bn?u0442 zjs)WiF`Z!a=>+Sfo8$DSw1p*+jte1;br)UWwRBNrpeV9x?Fke78y+y%llwPEyb1Xa zR7OU|fuqa@J8^xLIR)N6lde>`6Ty5?4o9lxdpC#dgnKHb-+Wt@+&KzoqLOmCtW~Tj ziQg8JmQy5Q!%^`}DZYyj5Z0l~bAXA0$``}kaJRGDw{qcTxY^n4k3IKmszh3E5Y&}}(=a+xp`04vDEko;R1S3izE>nA=BW> zYFr7y{l<+l130HVc&C`;HIacir>pKG^dUTeEO>ni#lC?JX#uE zJi1V(isuuEO(1*-U492JAzWcO+zaPvOF-iKt zfXu=WeRl}sF-XeC>lAUFX~1=gxK43A21(I67Tp|>Ss0@44q-e7No#r?1LK*6A^PqR a#$%8aX<*XN2V@q8=(|H0kC`CpH2(+M89&qj literal 0 HcmV?d00001 diff --git a/inspiration/TingSomSkalTilføjes/flight_filter.py b/inspiration/TingSomSkalTilføjes/flight_filter.py index ae6335d..e252640 100644 --- a/inspiration/TingSomSkalTilføjes/flight_filter.py +++ b/inspiration/TingSomSkalTilføjes/flight_filter.py @@ -1,13 +1,13 @@ +import json from pprint import pprint from amadeus import Client, ResponseError import pandas as pd from datetime import datetime, timedelta -import json - +from flight_types import * class FlightFilter: def __init__(self, api_key, api_secret): - self.amadeus = Client(client_id=api_key, client_secret=api_secret) + self.amadeus = Client(client_id=api_key, client_secret=api_secret, hostname="production") def get_flight_offers(self, request_body): """ @@ -119,8 +119,12 @@ class FlightFilter: # Usage example if __name__ == "__main__": - api_key = "uxDqIh36xPAUvpXnXynwAnH86pGBdIch" - api_secret = "xTSLooNZpJWantb5" + #api_key = "uxDqIh36xPAUvpXnXynwAnH86pGBdIch" + #api_secret = "xTSLooNZpJWantb5" + + # PROD PROD PROD PROD PROD PROD PROD PROD PROD PROD + api_key = "ABRGQv6U7IWAYxwwmjqAOPUDGvuFMSjw" + api_secret = "BcwpSKf3FICJIxaw" flight_filter = FlightFilter(api_key, api_secret) @@ -153,25 +157,57 @@ if __name__ == "__main__": "sources": ["GDS"], "searchCriteria": { "excludeAllotments": True, - "addOneWayOffers": False, - "maxFlightOffers": 10, + "addOneWayOffers": True, + "maxFlightOffers": 50, "allowAlternativeFareOptions": True, } } # Fetch flights flights = flight_filter.get_flight_offers(request_body) - print(f"Raw flights data: {flights}") + with open("json_data.json", "w") as file: + json.dump(flights, file) + # + #DEBUG + #with open("json_data.json", "r") as file: + # flights = json.load(file) + + #print(f"Raw flights data: {flights}") + + real_flights = [] + + for flight in flights: + for x,v in flight.items(): + if type(v) == list and "itineraries" in str(x).lower(): + for flt, flt2 in flight.items(): + if flt == "itineraries": + for itm in flt2: + for seg in itm.get("segments"): + departure = seg.get("departure").get("iataCode") + arrival = seg.get("arrival").get("iataCode") + print(f"{departure} -> {arrival}") + if (departure, arrival) in (("OPO", "CPH"), ("CPH", "OPO")): + print( f"{departure} -> {arrival}" ) + + + + + + + + + + # Filter flights from OPO to CPH around 07:00 ± 1 hour - opo_to_cph_flights = flight_filter.filter_flights_by_time( - flights, origin_filter="OPO", destination_filter="CPH", filter_time_str="06:00", hours=2 - ) + #opo_to_cph_flights = flight_filter.filter_flights_by_time( + # flights, origin_filter="OPO", destination_filter="CPH", filter_time_str="06:00", hours=2 + #) # Filter flights from CPH to OPO around 18:30 ± 1 hour - cph_to_opo_flights = flight_filter.filter_flights_by_time( - flights, origin_filter="CPH", destination_filter="OPO", filter_time_str="20:30", hours=2 - ) + #cph_to_opo_flights = flight_filter.filter_flights_by_time( + # flights, origin_filter="CPH", destination_filter="OPO", filter_time_str="20:30", hours=2 + #) # Save to Excel - flight_filter.save_to_excel(opo_to_cph_flights, cph_to_opo_flights, "Filtered_Flights_OPO_CPH.xlsx") + #flight_filter.save_to_excel(opo_to_cph_flights, cph_to_opo_flights, "Filtered_Flights_OPO_CPH.xlsx") diff --git a/inspiration/TingSomSkalTilføjes/flight_types.py b/inspiration/TingSomSkalTilføjes/flight_types.py new file mode 100644 index 0000000..c105327 --- /dev/null +++ b/inspiration/TingSomSkalTilføjes/flight_types.py @@ -0,0 +1,45 @@ +from dataclasses import dataclass +from typing import List, Optional + + +# OopCompanion:suppressRename + +@dataclass +class AmenityProvider: + name: str + +@dataclass +class Amenity: + description: str + isChargeable: bool + amenityType: str + amenityProvider: AmenityProvider + +@dataclass +class IncludedCheckedBags: + quantity: int + +@dataclass +class FareDetailsBySegment: + segmentId: str + cabin: str + fareBasis: str + brandedFare: str + brandedFareLabel: str + class_: str # 'class' is a reserved keyword in Python; use 'class_' instead + includedCheckedBags: IncludedCheckedBags + amenities: List[Amenity] + +@dataclass +class Price: + currency: str + total: str + base: str + +@dataclass +class Traveler: + travelerId: str + fareOption: str + travelerType: str + price: Price + fareDetailsBySegment: List[FareDetailsBySegment] \ No newline at end of file diff --git a/inspiration/TingSomSkalTilføjes/json_data.json b/inspiration/TingSomSkalTilføjes/json_data.json new file mode 100644 index 0000000..0637a08 --- /dev/null +++ b/inspiration/TingSomSkalTilføjes/json_data.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/inspiration/rnh_tax_calculator b/inspiration/rnh_tax_calculator new file mode 160000 index 0000000..7877b98 --- /dev/null +++ b/inspiration/rnh_tax_calculator @@ -0,0 +1 @@ +Subproject commit 7877b98884ca192c5dd9d2ab5e3d600a2b59f06c diff --git a/requirements.txt b/requirements.txt index 81de3c6..07efb90 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ +amadeus==11.0.0 annotated-types==0.7.0 anyio==4.7.0 beautifulsoup4==4.12.3 @@ -12,15 +13,21 @@ markdown-it-py==3.0.0 MarkupSafe==3.0.2 mdurl==0.1.2 mistune==3.0.2 +numpy==2.2.1 +pandas==2.2.3 pillow==11.0.0 pydantic==2.10.3 pydantic_core==2.27.1 +python-dateutil==2.9.0.post0 python-dotenv==1.0.1 +pytz==2024.2 PyYAML==6.0.2 +six==1.17.0 sniffio==1.3.1 soupsieve==2.6 starlette==0.41.3 typing_extensions==4.12.2 +tzdata==2024.2 uvicorn==0.32.1 uvloop==0.21.0 watchfiles==1.0.0