added add_file
This commit is contained in:
parent
1ad0458737
commit
089369490b
86
edgware/utils/add_file.py
Normal file
86
edgware/utils/add_file.py
Normal file
|
@ -0,0 +1,86 @@
|
||||||
|
# from files.models import File
|
||||||
|
# from parse_drive import spider
|
||||||
|
from settings import UPLOAD_ROOT
|
||||||
|
import os, struct
|
||||||
|
from os.path import join
|
||||||
|
|
||||||
|
'''
|
||||||
|
def addFiles(cls, category, user, folder_name):
|
||||||
|
path = join(UPLOAD_ROOT, folder_name)
|
||||||
|
# spider(path, addFile, category=category)
|
||||||
|
for dirpath, dirnames, filenames in os.walk(path):
|
||||||
|
if filenames:
|
||||||
|
# prefix = dirpath[len(path)+1:]
|
||||||
|
for filename in filenames:
|
||||||
|
if not filename.startswith('._') and not filename in ('.DS_Store', ):
|
||||||
|
cls.add_from_path(category, user, join(dirpath, filename))
|
||||||
|
# print dirpath + " + " + filename
|
||||||
|
|
||||||
|
|
||||||
|
def addFile(dirpath, filename, opts):
|
||||||
|
category = opts.category
|
||||||
|
path = join(dirpath, filename)
|
||||||
|
base_path = join(UPLOAD_ROOT, category.folder_name)
|
||||||
|
relative_path = base_path.replace(UPLOAD_ROOT, "")
|
||||||
|
|
||||||
|
print dirpath + "'" + filename + "'"
|
||||||
|
'''
|
||||||
|
|
||||||
|
def getFileType(path, ext):
|
||||||
|
if ext in ['ogv']:
|
||||||
|
return 'video'
|
||||||
|
elif ext in ['ogg']:
|
||||||
|
return 'audio'
|
||||||
|
elif ext in ['docx', 'doc', 'pdf', 'rtf', 'txt', 'html']:
|
||||||
|
return 'text'
|
||||||
|
elif ext in ['jpg', 'jpeg', 'png']:
|
||||||
|
return 'image'
|
||||||
|
else:
|
||||||
|
return 'other'
|
||||||
|
|
||||||
|
#This function should return all info about a file which is to be stored in the DictField
|
||||||
|
def fileInfo(path):
|
||||||
|
stat = os.stat(path)
|
||||||
|
return {
|
||||||
|
'size': stat.st_size,
|
||||||
|
'mtime': stat.st_mtime,
|
||||||
|
'atime': stat.st_atime,
|
||||||
|
'ctime': stat.st_ctime,
|
||||||
|
}
|
||||||
|
|
||||||
|
#From: http://trac.opensubtitles.org/projects/opensubtitles/wiki/HashSourceCodes#Python
|
||||||
|
def hashFile(name):
|
||||||
|
try:
|
||||||
|
|
||||||
|
longlongformat = 'q' # long long
|
||||||
|
bytesize = struct.calcsize(longlongformat)
|
||||||
|
|
||||||
|
f = open(name, "rb")
|
||||||
|
|
||||||
|
filesize = os.path.getsize(name)
|
||||||
|
hash = filesize
|
||||||
|
|
||||||
|
if filesize < 65536 * 2:
|
||||||
|
return "SizeError"
|
||||||
|
|
||||||
|
for x in range(65536/bytesize):
|
||||||
|
buffer = f.read(bytesize)
|
||||||
|
(l_value,)= struct.unpack(longlongformat, buffer)
|
||||||
|
hash += l_value
|
||||||
|
hash = hash & 0xFFFFFFFFFFFFFFFF #to remain as 64bit number
|
||||||
|
|
||||||
|
|
||||||
|
f.seek(max(0,filesize-65536),0)
|
||||||
|
for x in range(65536/bytesize):
|
||||||
|
buffer = f.read(bytesize)
|
||||||
|
(l_value,)= struct.unpack(longlongformat, buffer)
|
||||||
|
hash += l_value
|
||||||
|
hash = hash & 0xFFFFFFFFFFFFFFFF
|
||||||
|
|
||||||
|
f.close()
|
||||||
|
returnedhash = "%016x" % hash
|
||||||
|
return returnedhash
|
||||||
|
|
||||||
|
except(IOError):
|
||||||
|
return "IOError"
|
||||||
|
|
Loading…
Reference in New Issue
Block a user