Files
dota-random-builds-back/api/__pycache__/views.cpython-312.pyc

54 lines
8.1 KiB
Plaintext
Raw Normal View History

2025-12-11 18:15:56 +03:00
<EFBFBD>
2025-12-16 22:14:33 +03:00
<00><>AiM<00><00><><00>ddlmZddlmZddlmZddlmZddlm Z m
Z
m Z m Z ddl mZmZmZddlmZGd <09>d
e<07>ZGd <0B>d e<07>ZGd <0A>de<07>Zy)<10><00><01>date<74><01>status)<01>Response)<01>APIView)<04>Aspect<63>
BuildOfDay<EFBFBD>Hero<72>Item)<03>HeroSerializer<65>ItemSerializer<65>RandomizeBuildRequestSerializer<65>)<01>generate_skill_buildc<00><00>eZdZdZd<02>Zy)<04>HeroesListViewz9
2025-12-11 18:15:56 +03:00
GET: Return all available heroes for selection.
2025-12-16 22:14:33 +03:00
c<00><><00>tjj<00>jd<01>}t t |d<02><03>j tj<00><04>S)N<>nameT<65><01>manyr) r <00>objects<74>all<6C>order_byrr <00>datar<00> HTTP_200_OK)<03>self<6C>request<73>heroess <20>L/home/maxim/projects/dota-random-builds/dota-random-builds-back/api/views.py<70>getzHeroesListView.gets?<00><00><15><1C><1C>!<21>!<21>#<23>,<2C>,<2C>V<EFBFBD>4<><06><17><0E>v<EFBFBD>D<EFBFBD>9<>><3E>><3E>v<EFBFBD>GY<47>GY<47>Z<>Z<>N)<05>__name__<5F>
__module__<EFBFBD> __qualname__<5F>__doc__r!<00>r"r rrs <00><00><08>[r"rc<00>,<00>eZdZdZd<02>Zd<03>Zdedefd<06>Zy)<08>RandomizeBuildViewz_
2025-12-11 18:15:56 +03:00
POST: Generate a random Dota 2 build with hero, items, and optionally skills/aspects.
2025-12-16 22:14:33 +03:00
c<00><00>t|i|<02><01>S)N)r)r<00>args<67>kwargss r <00>get_serializerz!RandomizeBuildView.get_serializer s<00><00>.<2E><04>?<3F><06>?<3F>?r"c<00><><00>t|j<00><01>}|j<00>s6td|j |j
2025-12-11 18:15:56 +03:00
<00>it j<00><03>S|j}|d}|d}|d}|jd<07>}tjj<00>}tjj<00>} |dk(rtdd it j<00><03>S| |kr$tdd
|<06>d | <09>d <0C>it j<00><03>S|rQtjj|<07> <0A>j<00>}
|
sNtdd|<07>d<0F>it j<00><03>Stjj!d<10>j<00>}
tjj!d<10>d|} t#|
<EFBFBD>jt%| d<11><12>jd<13>} |r t'<00>| d<|r^t(jj|
2025-12-16 22:14:33 +03:00
<EFBFBD><15>} | j+<00>r.| j!d<10>j<00>}|j,| d<t| t j.<00><03>S)N)r<00>messager<00> includeSkills<6C> includeAspect<63>
itemsCount<EFBFBD>heroIdrz%No heroes available. Load data first.z&Not enough items available. Requested z, found <20>.)<01>idz Hero with id z not found.<2E>?Tr)<02>hero<72>items<6D>
skillBuild<EFBFBD>r7<00>aspect)rr<00>is_validr<00>_format_errors<72>errorsr<00>HTTP_400_BAD_REQUEST<53>validated_datar!r r<00>countr <00>filter<65>firstrr rrr <00>existsrr)rr<00>
serializerr@<00>include_skills<6C>include_aspect<63> items_count<6E>hero_id<69>
2025-12-11 18:15:56 +03:00
hero_count<EFBFBD>
item_count<EFBFBD>hero_obj<62> item_objs<6A> response_data<74> hero_aspects<74>
2025-12-16 22:14:33 +03:00
aspect_objs r <00>postzRandomizeBuildView.post#s.<00><00>4<>'<27>,<2C>,<2C>G<>
2025-12-11 18:15:56 +03:00
<EFBFBD><19>"<22>"<22>$<24><1B><1A>D<EFBFBD>/<2F>/<2F>
<EFBFBD>0A<EFBFBD>0A<EFBFBD>B<>C<><1D>2<>2<><0E> <0E>
$<24>2<>2<><0E>'<27><0F>8<><0E>'<27><0F>8<><0E>$<24>\<5C>2<> <0B> <20>$<24>$<24>X<EFBFBD>.<2E><07><19>\<5C>\<5C>'<27>'<27>)<29>
<EFBFBD><19>\<5C>\<5C>'<27>'<27>)<29>
<EFBFBD> <15><11>?<3F><1B><1A>C<>D<><1D>2<>2<><0E> <0E>
<16> <0B> #<23><1B><1A>D<>[<5B>M<EFBFBD>QY<51>Zd<5A>Ye<59>ef<65>g<>h<><1D>2<>2<><0E> <0E>
<13><1B>|<7C>|<7C>*<2A>*<2A>g<EFBFBD>*<2A>6<><<3C><<3C>><3E>H<EFBFBD><1B><1F><1E>-<2D><07>y<EFBFBD> <0B> D<>E<>!<21>6<>6<><12><12>
<1C>|<7C>|<7C>,<2C>,<2C>S<EFBFBD>1<>7<>7<>9<>H<EFBFBD><18>L<EFBFBD>L<EFBFBD>)<29>)<29>#<23>.<2E>|<7C> <0B><<3C> <09>#<23>8<EFBFBD>,<2C>1<>1<>#<23>I<EFBFBD>D<EFBFBD>9<>><3E>><3E>
<EFBFBD> <0A>
<1A>*><3E>*@<40>M<EFBFBD>,<2C> '<27> <19>!<21>><3E>><3E>0<>0<>h<EFBFBD>0<>?<3F>L<EFBFBD><1B>"<22>"<22>$<24>)<29>2<>2<>3<EFBFBD>7<>=<3D>=<3D>?<3F>
2025-12-16 22:14:33 +03:00
<EFBFBD>*4<>/<2F>/<2F> <0A>h<EFBFBD>'<27><17> <0A>f<EFBFBD>.@<40>.@<40>A<>Ar"r><00>returnc<00><><00>g}|j<00>D]<5D>\}}|D]<5D>}|dk(rdt|<05>vr|jd<03><00>'dt|<05>j<00>vsdt|<05>j<00>vr.|dvr|jd<07><00>s|dk(s<01>y|jd<08><00><>|j|<03>d |<05><00><03><00><><00><>|r|d
Sd S) z1Format serializer errors into a readable message.r2zgreater than or equal tozitemsCount must be at least 1.<2E>valid<69>required)r0r1z0includeSkills and includeAspect must be boolean.zitemsCount must be a number.z: rzInvalid request data.)r8<00>str<74>append<6E>lower)rr><00>messages<65>field<6C> field_errors<72>errors r r=z!RandomizeBuildView._format_errors[s<><00><00><15><08>#)<29><<3C><<3C>><3E>
2025-12-11 18:15:56 +03:00
9<> <1F>E<EFBFBD><<3C>%<25> 9<><05><18>L<EFBFBD>(<28>-G<>3<EFBFBD>u<EFBFBD>:<3A>-U<><1C>O<EFBFBD>O<EFBFBD>$D<>E<><1C><03>E<EFBFBD>
<EFBFBD> 0<> 0<> 2<>2<>j<EFBFBD>C<EFBFBD><05>J<EFBFBD>DT<44>DT<44>DV<44>6V<36><1C> B<>B<> <20><0F><0F>(Z<>[<5B><1E>,<2C>.<2E> <20><0F><0F>(F<>G<><1C>O<EFBFBD>O<EFBFBD>u<EFBFBD>g<EFBFBD>R<EFBFBD><05>w<EFBFBD>$7<>8<> 9<>
2025-12-16 22:14:33 +03:00
9<>'<27>x<EFBFBD><01>{<7B>C<>,C<>Cr"N) r#r$r%r&r-rQ<00>dictrVr=r'r"r r)r)s*<00><00><08>@<01>6B<01>pD<01>T<EFBFBD>D<01>c<EFBFBD>Dr"r)c<00>0<00>eZdZdZdZd<03>Zdededzfd<07>Zy)<08>BuildOfDayViewzX
GET: Return the build of the day. Generates one if it doesn't exist for today.
<20>c<00><<00>tj<00>}tjj |<02><01>j <00>}|s0|j |<02>}|<03>tdditj<00><04>S|jj<00>t|j<00>jt|jj!<00>d<05><06>j|j"d<07>}|j$r|j$|d<t|tj&<00><04>S) Nrr/z*Unable to generate build. Load data first.rTr)rr7r8r9r;)r<00>todayr
rrBrC<00>_generate_build_of_dayrrr?<00> isoformatr r7rrr8r<00> skill_buildr;r)rrrb<00>buildrNs r r!zBuildOfDayView.getss<><00><00><14>
<EFBFBD>
<EFBFBD> <0C><05><1A>"<22>"<22>)<29>)<29>u<EFBFBD>)<29>5<>;<3B>;<3B>=<3D><05><14><18>/<2F>/<2F><05>6<>E<EFBFBD><14>}<7D><1F><1E> L<>M<>!<21>6<>6<><12><12> <1A>J<EFBFBD>J<EFBFBD>(<28>(<28>*<2A>"<22>5<EFBFBD>:<3A>:<3A>.<2E>3<>3<>#<23>E<EFBFBD>K<EFBFBD>K<EFBFBD>O<EFBFBD>O<EFBFBD>$5<>D<EFBFBD>A<>F<>F<><1F>+<2B>+<2B> 
<EFBFBD> <0A> <11><<3C><<3C>&+<2B>l<EFBFBD>l<EFBFBD>M<EFBFBD>(<28> #<23><17> <0A>f<EFBFBD>.@<40>.@<40>A<>Ar"rbrRNc<00><><00>tjj<00>}tjj<00>}|dk(s||jkrytjj d<03>j <00>}ttjj d<03>d|j<00>}d}tjj|<04><04>}|j<00>r+|j d<03>j <00>}|j}tjj||t<00>|<06><05>} | jj!|<05>| S)z)Generate and save a new build of the day.rNr6r:)rr7rer;)r rrAr <00> ITEMS_COUNTrrC<00>listr rBrDrr
<00>createrr8<00>set)
rrbrJrKrLrM<00> aspect_namerOrPrfs
r rcz%BuildOfDayView._generate_build_of_day<61>s <00><00><19>\<5C>\<5C>'<27>'<27>)<29>
<EFBFBD><19>\<5C>\<5C>'<27>'<27>)<29>
<EFBFBD> <15><11>?<3F>j<EFBFBD>4<EFBFBD>+;<3B>+;<3B>;<3B><17><17><<3C><<3C>(<28>(<28><13>-<2D>3<>3<>5<><08><18><14><1C><1C>.<2E>.<2E>s<EFBFBD>3<>4F<34>d<EFBFBD>6F<36>6F<36>G<>H<> <09><1A> <0B><1D>~<7E>~<7E>,<2C>,<2C>(<28>,<2C>;<3B> <0C> <17> <1E> <1E> <20>%<25>.<2E>.<2E>s<EFBFBD>3<>9<>9<>;<3B>J<EFBFBD>$<24>/<2F>/<2F>K<EFBFBD><1A>"<22>"<22>)<29>)<29><16><19>,<2C>.<2E><1E> *<2A>
<EFBFBD><05> <0E> <0B> <0B><0F><0F> <09>"<22><14> r") r#r$r%r&rhr!rr
rcr'r"r r_r_ls,<00><00><08><14>K<EFBFBD>B<01>0<15>D<EFBFBD><15>Z<EFBFBD>$<24>5F<35>r"r_N)<16>datetimer<00>rest_frameworkr<00>rest_framework.responser<00>rest_framework.viewsr<00>
api.modelsr r
r r <00>api.serializersr rrrrrr)r_r'r"r <00><module>rssQ<00><01><19>!<21>,<2C>(<28>5<>5<><02><02> '<27>[<01>W<EFBFBD>[<01>ND<01><17>ND<01>b8<15>W<EFBFBD>8r"