1- from zipfile import ZipFile
21import os
3-
2+ from zipfile import ZipFile
43from . import File
54from ..requests import ALLOWED_IMAGE_FILES
65from ..utils import allowed_file
76
7+
88class ZipArchive :
9+ """
10+ Archive of a zip file
11+
12+ This class is to store and access a zip file.
13+
14+ Parameters:
15+ file: The storage of the zip file (gets removed from the os upon destructor call)
16+ zip: Opened zip file
17+ """
18+
919 def __init__ (self , file ):
20+ """
21+ Constructor of ZipFile
22+
23+ Store the given file and open the zip file.
24+
25+ Parameters:
26+ file: Uploaded file from flask
27+ """
1028 self .file = File .File (file )
1129 self .zip = ZipFile (self .file .getPath ())
1230
1331 def listFiles (self ):
32+ """
33+ List all files in the zip
34+
35+ Returns:
36+ array: Array of filenames
37+ """
1438 return [file .filename for file in self .zip .infolist ()]
1539
1640 def listAllImages (self , extensions = ALLOWED_IMAGE_FILES ):
41+ """
42+ List all image files
43+
44+ Lists all image files within the zip archive based on the given extensions
45+
46+ Parameters:
47+ extensions: Array of allowed image extensions
48+
49+ Returns:
50+ array: Array of filenames matching the extension
51+ """
1752 return [file for file in self .listFiles () if allowed_file (file , extensions )]
1853
1954 def hasImages (self , extensions = ALLOWED_IMAGE_FILES ):
55+ """
56+ Check for images in the zip file
57+
58+ Parameters:
59+ extensions: Array of allowed image extensions
60+
61+ Returns:
62+ boolean: True if zip has images
63+ """
2064 return len (self .listAllImages (extensions )) > 0
2165
22- def extractAll (self , path = None , members = None , pwd = None ):
23- self .zip .extractall (path , members , pwd )
66+ def extractAll (self , path = None , members = None ):
67+ """
68+ Extract all the given files
69+
70+ Extractes all the given files and stores them as File objects.
71+ Upon destruction of the array, files are getting removed from os.
72+
73+ Parameters:
74+ path: Path to store files
75+ members: Files to extract
76+
77+ Returns:
78+ array: Array of extracted File objects
79+ """
80+ self .zip .extractall (path , members )
2481 extractedFiles = {}
2582 for member in members :
2683 file = File .File ()
2784 file .setPath (os .path .join (path , member ))
2885 extractedFiles [member ] = file
29- return extractedFiles
86+ return extractedFiles
0 commit comments