Files
LifeFaq/app/services/__pycache__/image_service.cpython-311.pyc

72 lines
11 KiB
Plaintext
Raw Normal View History

2025-02-10 14:28:05 +01:00
<EFBFBD>
<00><><EFBFBD>g<EFBFBD><00><00><><00>ddlZddlmZddlmZddlmZddlmZmZm Z ddl
m Z Gd<07>d<08><00>Z Gd <09>d
<EFBFBD><00>Z dS) <0B>N)<01>Path)<01> HTTPException)<01> FileResponse)<03> APIRouter<65>Request<73>FastAPI)<01>Imagec<00><><00>eZdZd defd<03>Zedefd<04><04><00>Zedefd<05><04><00>Zedefd<06><04><00>Z edefd<07><04><00>Z
edefd<08><04><00>Z d <09>Z d
<EFBFBD>Z dS) <0C> FileHandlerN<72>returnc<00>0<00>||_||_||_dS<00>N)<03>filename<6D>category<72>
image_type)<04>selfrrrs <20>G/Users/lrihni/IdeaProjects/Privat/LifeFaq/app/services/image_service.py<70>__init__zFileHandler.__init__ s<00><00><1A>$<24>-<2D><1A>$<24>-<2D><1E>$<24>/<2F>/<2F>/<2F>c<00>H<00>d}|<01>|j|j<00><02><00>S)Nz!data/{category}/images/{filename}<7D>rr<00><03>formatrr)r<00>src_paths r<00>src_filezFileHandler.src_files!<00><00> 0<>(<28> <11><1F><1F>T<EFBFBD>]<5D>t<EFBFBD>}<7D><1F> N<> N<>Nrc<00>H<00>d}|<01>|j|j<00><02><00>S)Nz/images/{category}/{filename}rr<00>r<00>base_urls r<00> dest_filezFileHandler.dest_files!<00><00> ,<2C>(<28> <11><1F><1F>T<EFBFBD>]<5D>t<EFBFBD>}<7D><1F> N<> N<>Nrc<00>T<00>d}|<01>|j|j|j<00><02><00>S)N<>0static/images/{category}/{image_type}/{filename}<7D>rrr)rrrrrs r<00> dest_filenamezFileHandler.dest_filenames'<00><00> ?<3F>(<28> <11><1F><1F>T<EFBFBD>]<5D><14><1F>]a<>]j<><1F> l<> l<>lrc<00><><00>d}t|<01>|j|j|j<00><02><00><00><00>}|jdkr|<02>d<03><00>}t|<02><00>S)Nr!r"z.webp)rrrrr<00>suffix<69> with_suffix<69>str)rr<00>paths r<00>dest_filename_webpzFileHandler.dest_filename_webpsZ<00><00> ?<3F>(<28> <0A>x<EFBFBD><EFBFBD><EFBFBD>4<EFBFBD>=<3D>t<EFBFBD><EFBFBD>cg<63>cp<63><EFBFBD>r<>r<> t<> t<>$<24> <09>[<5B>G<EFBFBD><1B><1B>
<0E>
<1A>
<1A>G<EFBFBD>
%<25>
%<25>4<EFBFBD> <0C>T<EFBFBD><19><19>rc<00>H<00>d}|<01>|j|j<00><02><00>S)Nz%static/images/{category}/{image_type})rr)rrrrs r<00> dest_pathzFileHandler.dest_path's!<00><00> 4<>(<28> <11><1F><1F>T<EFBFBD>]<5D><14><1F><1F> R<> R<>Rrc<00>x<00>d|j<00>d|j<00>d|j<00>d|j<00>d|j<00>d|j<00>d|j<00>d<08>S) NzFileHandler(
filename='z',
category='z',
image_type='z',
src_file='z',
dest_file='z',
dest_filename='z',
dest_path='z'
))rrrrrr#r+<00>rs r<00>__str__zFileHandler.__str__,s<><00><00><08><16>-<2D><08><08><16>-<2D><08><08><19>O<EFBFBD><08><08><17>-<2D> <08><08>
<18>><3E> <08><08> <1C>)<29> <08><08><18>><3E><08><08><08>
rc<00>t<00>d<01>tjd<02><00>D<00><00>}|D]}d|<03>d<03>|vsd|<03>d<04>|vr|cS<00>dS)Nc<00><><00>g|]A}tj<00>tj<00>d|<01><00><00><00><00>?|<01><02>BS)<01>data/)<04>osr(<00>isdir<69>join)<02>.0<EFBFBD>names r<00>
<listcomp>z,FileHandler.get_category.<locals>.<listcomp>;sL<00><00><04><04><04> <10><08>g<EFBFBD>m<EFBFBD>m<EFBFBD>R<EFBFBD>W<EFBFBD>\<5C>\<5C>7<EFBFBD>D<EFBFBD>2<>2<>4<>4<><04><07><04><04>rr1<00>/<2F>\)r2<00>listdir)r<00> file_path<74>
categoriesrs r<00> get_categoryzFileHandler.get_category9sz<00><00><04><04><16>J<EFBFBD><07>)<29>)<29><04><04><04>*<2A> <1D><14><14>h<EFBFBD><15>(<28>o<EFBFBD>o<EFBFBD>o<EFBFBD><19>"<22>"<22>&7<>8<EFBFBD>&7<>&7<>&7<>9<EFBFBD>&D<>&D<> <13>O<EFBFBD>O<EFBFBD>O<EFBFBD>'E<01>
<0E>r)NNN)<0E>__name__<5F>
__module__<EFBFBD> __qualname__rr<00>propertyr'rrr#r)r+r.r=<00>rrr r
s)<00><00><00><00><00><00><1F><1F>d<EFBFBD><1F><1F><1F><1F>
 <0B>O<01>s<EFBFBD>O<01>O<01>O<01> <0B>(<28>O<01> <0B>O<01><03>O<01>O<01>O<01> <0B>(<28>O<01> <0B>m<01>C<EFBFBD>m<01>m<01>m<01> <0B>(<28>m<01> <0B><13><13><13><13><13> <0B>(<28><13> <0B>S<01><03>S<01>S<01>S<01> <0B>(<28>S<01> <04> <04> <04> <0E> <0E> <0E> <0E> rr c<00><><00>eZdZdefd<02>Zd<03>Zdedefd<06>Zd<07>Z ded ed
efd <0B>Z
dde de de de fd<11>Zdejde de de fd<13>Zded ed
efd<14>Z
ddeded
edede de dedefd<18>Zd S)<1B> ImageService<63>appc<00><><00>t<00><00>|_||_|jjj|_|<00><00><00>dSr)r<00>routerrE<00>state<74> IMAGE_SIZES<45> _add_routes)rrEs rrzImageService.__init__Ks;<00><00><19> <0B> <0B>$<24>+<2B> <10>$<24>(<28><19>X<EFBFBD>^<5E>/<2F>$<24><12><06><12><12><14><14><14><14>rc<00><><00>d<01>d<02>|j<00><00><00>D<00><00><00><00>}d<01>d<03>|j<00><00><00>D<00><00><00><00>}d|<01>d|<02><00>S)z=
Provides a string representation of the class instance.
<09>
c<00>"<00>g|] \}}|<01>d|<02><00><03><02> S)z: rB<00>r5<00>key<65>values rr7z(ImageService.__str__.<locals>.<listcomp>Zs*<00><00>@<40>@<40>@<40>*<2A>#<23>u<EFBFBD>s<EFBFBD><15><15>e<EFBFBD><15><15>@<40>@<40>@rc<00>@<00>g|]\}}|<01>d|d<00>d|d<00><00><05><02>S)z: width=<3D>widthz , height=<3D>heightrBrNs rr7z(ImageService.__str__.<locals>.<listcomp>]sJ<00><00><05><05><05><12><03>U<EFBFBD> <0B>><3E>><3E>E<EFBFBD>'<27>N<EFBFBD>><3E>><3E>U<EFBFBD>8<EFBFBD>_<EFBFBD>><3E>><3E><05><05>rz<Class:ImageService Base Paths:z Image Sizes:
)r4<00>
base_paths<EFBFBD>items<6D> image_sizes)r<00>base_paths_str<74>image_sizes_strs rr.zImageService.__str__Us<><00><00><18>9<EFBFBD>9<EFBFBD>@<40>@<40><04><0F>(=<3D>(=<3D>(?<3F>(?<3F>@<40>@<40>@<40><04><04>.<2E><19>I<EFBFBD>I<EFBFBD><05><05><1A>&<26>,<2C>,<2C>.<2E>.<2E><05><05><05><04><04>/<2F>
\<01>><3E> [<5B> [<5B>/<2F> [<5B> [<5B>[rrr c <00><><00>|jjj}||vr4td|<01>dt |<02><00><00><00><00><00><00><04><00><00>||S)a
Retrieve the width and height for a given image type from the app state.
Args:
request (Request): FastAPI request object.
image_type (str): The type of the image (e.g., 'thumbnails').
Returns:
dict: A dictionary with 'width' and 'height'.
zInvalid image type: z. Must be one of )rErHrI<00>
ValueError<EFBFBD>list<73>keys)rrrVs r<00>get_image_sizezImageService.get_image_sizedsY<00><00><15><08><0E>*<2A>+<2B><0F>{<7B>"<22>"<22> <13>e<>J<EFBFBD>e<>e<><14>{<7B>O_<4F>O_<4F>Oa<4F>Oa<4F>Ic<49>Ic<49>e<>e<> g<> g<>g<> <14>Z<EFBFBD> <20> rc<00>X<00>|j<00>d|jdgt<00><03><00>dS)Nz#/image/{category}/{type}/{filename}<7D>GET)<02>methods<64>response_class)rG<00> add_api_route<74> get_imagerr-s rrJzImageService._add_routesvs;<00><00><06>+<2B><1B><1B>(<28><07>><3E> <11>7<EFBFBD><1E> <1C><04><04><04><04>rr<00>typerc<00><00>RK<00>|<00>|||<03><00>}t|<04><00>S)zB
Retrieve an image file from the specified category and type.
<09><02> _resolve_pathr<00>rrrdrr;s rrczImageService.get_image~s-<00><00><00><00><13> <20> <20><18>4<EFBFBD><18>:<3A>:<3A>)<29> <15>i<EFBFBD> <20> <20> rNTr;rRrSc<00><><00>tj<00>|j<00><00>s_t j|j<00><00>5}t|j<00><00>|<00>||||<03><00>ddd<00><00>n #1swxYwYdSt j|j<00><00>5}|j |ks |j
|kr(|r|<00>||||<03><00> ddd<00><00>dS ddd<00><00>n #1swxYwYdS)NTF) r2r(<00>existsr#r <00>openr<00>print<6E> _resize_imagerRrS)rr;rRrS<00> overwrite<74>imgs r<00>validate_imagezImageService.validate_image<67>s<><00><00> <0B><17><1E><1E><19>0<> 2<> 2<><0F> <0A>
<EFBFBD>I<EFBFBD>&<26>(<28>(<28>8<>C<EFBFBD> <09>)<29>
<1C><1D><1D><1D><08><16><16><03>Y<EFBFBD><05>v<EFBFBD>7<>7<>7<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<>8<><38><EFBFBD><EFBFBD>8<>8<>8<>8<> <0F>$<24> <0C>z<EFBFBD>9<EFBFBD>*<2A>,<2C>,<2C><11><03> <09>i<EFBFBD>5<EFBFBD><18><18>C<EFBFBD>J<EFBFBD>&<26>0<>0<><10>9<> <09><17><17><13>i<EFBFBD><15><06>8<>8<>8<> <10> <11><11><11><11><11><11><11><11>0<><11><11><11><11><11><11><11><11><11><11><11><><EFBFBD><EFBFBD><11><11><11><11>
<0E>s#<00>-A7<03>7A;<07>>A;<07>2C)<03>)C-<07>0C-roc<00> <00>|<01>||ftjj<00><00>}t j|jd<01><02><00>|<05>|j<00><00>|<05>|j dd<04><05><00>t|j <00><00>dS)NT)<01>exist_ok<6F>WEBP<42>Z)r<00>quality) <0B>resizer <00>
Resampling<EFBFBD>LANCZOSr2<00>makedirsr+<00>saver#r)rl)rror;rRrS<00> resized_imgs rrmzImageService._resize_image<67>s<><00><00><13>
<EFBFBD>
<EFBFBD>U<EFBFBD>F<EFBFBD>O<EFBFBD>U<EFBFBD>-=<3D>-E<>G<>G<>+<2B><04>+<2B>i<EFBFBD>!<21>T<EFBFBD>2<>2<>2<>2<> <0A><12><12>I<EFBFBD>+<2B>-<2D>-<2D>-<2D> <0A><12><12>I<EFBFBD>0<>6<EFBFBD>R<EFBFBD><12>Q<>Q<>Q<><07> <09>$<24>%<25>%<25>%<25>%<25>%rc<00><00>RK<00>|<00>|||<03><00>}t|<04><00>Srrfrhs rrczImageService.get_image<67>s+<00><00><00><00><12> <20> <20>(<28>D<EFBFBD>(<28><<3C><<3C>)<29> <15>y<EFBFBD> "<22> "<22>"r<00><00>alt<6C> css_classc<00>t<00>|<00>|<02><00>}|p|<08>d<01><00>}|p|<08>d<02><00>}t|||<03><03><00>} t| j<00><00>}
|
<EFBFBD>dd<04><05><00>|<00>| ||d<04><06><00>d| j<00>d|<04>d <09>} |r | d
|<07>d <09>z } | d z } | S) zS
Generate an HTML <img> tag with default sizes if dimensions are not provided.
rRrSr"T)<02>parentsrr)rRrSrnz <img src="/z" alt="<22>"z class="<22>>)r]<00>getr rr+<00>mkdirrpr)) rrrrr~rRrSr<00> default_sizer;<00>p<>tags r<00> image_tagzImageService.image_tag<61>s<><00><00> <16>$<24>$<24>j<EFBFBD>1<>1<>,<2C>
<0F>
.<2E><<3C>#<23>#<23>W<EFBFBD>.<2E>.<2E>%<25> <11> 1<>\<5C>%<25>%<25>x<EFBFBD>1<>1<>&<26><19>X<EFBFBD>:<3A>QY<51>Z<>Z<>Z<>)<29>
<EFBFBD>9<EFBFBD> <1E><1F><1F>!<21><03>'<27>'<27>D<EFBFBD>T<EFBFBD>'<27>*<2A>*<2A>*<2A><06><15><15>y<EFBFBD>%<25>v<EFBFBD>4<EFBFBD><15>Q<>Q<>Q<>A<>i<EFBFBD>2<>A<>A<>3<EFBFBD>A<>A<>A<>#<23>
<0F>"<22><06>
!<21>Y<EFBFBD>
!<21>
!<21>
!<21>!<21>3<EFBFBD><05><13>*<2A>#<23> <0C>*r)NNNT)r}NNN)r>r?r@rrr.r'<00>dictr]rJrcr <00>int<6E>boolrpr rmr<>rBrrrDrDIs<><00><00><00><00><00><00><15><07><15><15><15><15> \<01> \<01> \<01>!<21>c<EFBFBD>!<21>d<EFBFBD>!<21>!<21>!<21>!<21>$<04><04><04>!<21>S<EFBFBD>!<21><03>!<21>s<EFBFBD>!<21>!<21>!<21>!<21> <0E> <0E>K<EFBFBD> <0E>C<EFBFBD> <0E>S<EFBFBD> <0E>mq<6D> <0E> <0E> <0E> <0E>&<26>e<EFBFBD>k<EFBFBD>&<26>k<EFBFBD>&<26>#<23>&<26>WZ<57>&<26>&<26>&<26>&<26>#<23>S<EFBFBD>#<23><03>#<23>s<EFBFBD>#<23>#<23>#<23>#<23>ae<01>15<31> <0A> <0A>s<EFBFBD> <0A><03> <0A>s<EFBFBD> <0A><13> <0A>Z]<5D> <0A><1B> <0A>-0<> <0A>:=<3D> <0A> <0A> <0A> <0A> <0A> rrD)r2<00>pathlibr<00>fastapir<00>fastapi.responsesrrrr<00>PILr r rDrBrr<00><module>r<>s<><00><01> <09> <09> <09> <09><18><18><18><18><18><18>!<21>!<21>!<21>!<21>!<21>!<21>*<2A>*<2A>*<2A>*<2A>*<2A>*<2A>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F>/<2F><15><15><15><15><15><15><<0E><<0E><<0E><<0E><<0E><<0E><<0E><<0E>~k <0A>k <0A>k <0A>k <0A>k <0A>k <0A>k <0A>k <0A>k <0A>k r