PEP8 cleanups
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import datetime
|
||||
import os
|
||||
import re
|
||||
import tempfile
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
|
||||
from django.db import models
|
||||
|
||||
@@ -18,12 +18,10 @@ class Migration(SchemaMigration):
|
||||
))
|
||||
db.send_create_signal('checkouts', ['DocumentCheckout'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'DocumentCheckout'
|
||||
db.delete_table('checkouts_documentcheckout')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
@@ -119,4 +117,4 @@ class Migration(SchemaMigration):
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['checkouts']
|
||||
complete_apps = ['checkouts']
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
@@ -130,4 +129,4 @@ class Migration(SchemaMigration):
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['checkouts']
|
||||
complete_apps = ['checkouts']
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import datetime
|
||||
import logging
|
||||
|
||||
from django.contrib.contenttypes import generic
|
||||
|
||||
@@ -22,7 +22,7 @@ class DetailForm(forms.ModelForm):
|
||||
for extra_field in extra_fields:
|
||||
result = return_attrib(self.instance, extra_field['field'])
|
||||
label = 'label' in extra_field and extra_field['label'] or None
|
||||
#TODO: Add others result types <=> Field types
|
||||
# TODO: Add others result types <=> Field types
|
||||
if isinstance(result, models.query.QuerySet):
|
||||
self.fields[extra_field['field']] = \
|
||||
forms.ModelMultipleChoiceField(
|
||||
@@ -32,7 +32,7 @@ class DetailForm(forms.ModelForm):
|
||||
label=extra_field['label'],
|
||||
initial=escape(return_attrib(self.instance,
|
||||
extra_field['field'], None)),
|
||||
widget=PlainWidget)
|
||||
widget=PlainWidget)
|
||||
|
||||
for field_name, field in self.fields.items():
|
||||
if isinstance(field.widget, forms.widgets.SelectMultiple):
|
||||
|
||||
@@ -6,7 +6,6 @@ from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding model 'AnonymousUserSingleton'
|
||||
db.create_table('common_anonymoususersingleton', (
|
||||
@@ -15,12 +14,10 @@ class Migration(SchemaMigration):
|
||||
))
|
||||
db.send_create_signal('common', ['AnonymousUserSingleton'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'AnonymousUserSingleton'
|
||||
db.delete_table('common_anonymoususersingleton')
|
||||
|
||||
|
||||
models = {
|
||||
'common.anonymoususersingleton': {
|
||||
'Meta': {'object_name': 'AnonymousUserSingleton'},
|
||||
@@ -29,4 +26,4 @@ class Migration(SchemaMigration):
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['common']
|
||||
complete_apps = ['common']
|
||||
|
||||
@@ -17,12 +17,10 @@ class Migration(SchemaMigration):
|
||||
))
|
||||
db.send_create_signal('common', ['AutoAdminSingleton'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'AutoAdminSingleton'
|
||||
db.delete_table('common_autoadminsingleton')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
@@ -74,4 +72,4 @@ class Migration(SchemaMigration):
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['common']
|
||||
complete_apps = ['common']
|
||||
|
||||
@@ -24,7 +24,6 @@ class Migration(SchemaMigration):
|
||||
self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding field 'AutoAdminSingleton.original_auto_admin_password'
|
||||
db.add_column('common_autoadminsingleton', 'original_auto_admin_password',
|
||||
@@ -42,7 +41,6 @@ class Migration(SchemaMigration):
|
||||
# Deleting field 'AutoAdminSingleton.auto_admin_password'
|
||||
db.delete_column('common_autoadminsingleton', 'auto_admin_password')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
@@ -94,4 +92,4 @@ class Migration(SchemaMigration):
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['common']
|
||||
complete_apps = ['common']
|
||||
|
||||
@@ -29,7 +29,6 @@ class Migration(SchemaMigration):
|
||||
self.gf('django.db.models.fields.CharField')(max_length=128, null=True, blank=True),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Adding field 'AutoAdminSingleton.auto_admin_password'
|
||||
db.add_column('common_autoadminsingleton', 'auto_admin_password',
|
||||
@@ -50,7 +49,6 @@ class Migration(SchemaMigration):
|
||||
# Deleting field 'AutoAdminSingleton.password_hash'
|
||||
db.delete_column('common_autoadminsingleton', 'password_hash')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
@@ -103,4 +101,4 @@ class Migration(SchemaMigration):
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['common']
|
||||
complete_apps = ['common']
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import re
|
||||
|
||||
from django.template import Node, TemplateSyntaxError, Library, \
|
||||
Variable, Context
|
||||
from django.template import (Node, TemplateSyntaxError, Library,
|
||||
Variable, Context)
|
||||
from django.template.loader import get_template
|
||||
|
||||
register = Library()
|
||||
@@ -48,4 +48,3 @@ def render_subtemplate(parser, token):
|
||||
raise TemplateSyntaxError('%r tag\'s template context argument should not be in quotes' % tag_name)
|
||||
|
||||
return RenderSubtemplateNode(template_name, template_context, var_name)
|
||||
#format_string[1:-1]
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import re
|
||||
import types
|
||||
import tempfile
|
||||
import string
|
||||
import random
|
||||
import re
|
||||
import string
|
||||
import tempfile
|
||||
import types
|
||||
|
||||
from django.utils.http import urlquote as django_urlquote
|
||||
from django.utils.http import urlencode as django_urlencode
|
||||
from django.utils.datastructures import MultiValueDict
|
||||
from django.conf import settings
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.utils.datastructures import MultiValueDict
|
||||
from django.utils.http import urlquote as django_urlquote
|
||||
from django.utils.http import urlencode as django_urlencode
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
def urlquote(link=None, get=None):
|
||||
@@ -365,7 +365,7 @@ def return_diff(old_obj, new_obj, attrib_list=None):
|
||||
|
||||
|
||||
def validate_path(path):
|
||||
if os.path.exists(path) != True:
|
||||
if not os.path.exists(path):
|
||||
# If doesn't exist try to create it
|
||||
try:
|
||||
os.mkdir(path)
|
||||
@@ -408,7 +408,7 @@ def get_descriptor(file_input, read=True):
|
||||
return file_input
|
||||
|
||||
|
||||
#http://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python
|
||||
# http://stackoverflow.com/questions/123198/how-do-i-copy-a-file-in-python
|
||||
def copyfile(source, destination, buffer_size=1024 * 1024):
|
||||
"""
|
||||
Copy a file from source to dest. source and dest
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
@@ -2,7 +2,6 @@ from __future__ import absolute_import
|
||||
|
||||
from ast import literal_eval
|
||||
import base64
|
||||
import datetime
|
||||
import hashlib
|
||||
import logging
|
||||
import os
|
||||
|
||||
@@ -108,8 +108,8 @@ def perform_search(query_string, field_list=None):
|
||||
model_result_ids = None
|
||||
for query in queries:
|
||||
single_result_ids = set(model.objects.filter(query).values_list('pk', flat=True))
|
||||
#Convert queryset to python set and perform the
|
||||
#AND operation on the program and not as a query
|
||||
# Convert queryset to python set and perform the
|
||||
# AND operation on the program and not as a query
|
||||
if not model_result_ids:
|
||||
model_result_ids = single_result_ids
|
||||
else:
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
import urlparse
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from django.db import models
|
||||
from django.utils.http import urlencode
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
|
||||
from dynamic_search.conf.settings import RECENT_COUNT
|
||||
|
||||
from ..conf.settings import RECENT_COUNT
|
||||
|
||||
|
||||
class RecentSearchManager(models.Manager):
|
||||
def add_query_for_user(self, user, query, hits):
|
||||
parsed_query = urlparse.parse_qs(urlencode(dict(query.items())))
|
||||
|
||||
|
||||
for key, value in parsed_query.items():
|
||||
parsed_query[key] = ' '.join(value)
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ document_search = SearchModel.get('documents.Document')
|
||||
def results(request, extra_context=None):
|
||||
context = {
|
||||
'query_string': request.GET,
|
||||
#'hide_header': True,
|
||||
# 'hide_header': True,
|
||||
'hide_links': True,
|
||||
'multi_select_as_buttons': True,
|
||||
'search_results_limit': LIMIT,
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
depends_on = (
|
||||
('documents', '0001_initial'),
|
||||
)
|
||||
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
|
||||
# Adding model 'Folder'
|
||||
db.create_table('folders_folder', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
@@ -31,9 +31,8 @@ class Migration(SchemaMigration):
|
||||
))
|
||||
db.send_create_signal('folders', ['FolderDocument'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
|
||||
# Removing unique constraint on 'Folder', fields ['title', 'user']
|
||||
db.delete_unique('folders_folder', ['title', 'user_id'])
|
||||
|
||||
@@ -43,7 +42,6 @@ class Migration(SchemaMigration):
|
||||
# Deleting model 'FolderDocument'
|
||||
db.delete_table('folders_folderdocument')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
|
||||
@@ -1,23 +1,21 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
|
||||
# Changing field 'Folder.title'
|
||||
db.alter_column('folders_folder', 'title', self.gf('django.db.models.fields.CharField')(max_length=128))
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
|
||||
# Changing field 'Folder.title'
|
||||
db.alter_column('folders_folder', 'title', self.gf('django.db.models.fields.CharField')(max_length=32))
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
from datetime import datetime
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
from django.db import models
|
||||
from django.utils.timezone import now
|
||||
|
||||
@@ -58,7 +58,7 @@ class SmartLinkImageWidget(forms.widgets.Widget):
|
||||
output.append(u'</div>')
|
||||
output.append(
|
||||
u'<br /><span class="famfam active famfam-magnifier"></span>%s' %
|
||||
ugettext(u'Click on the image for full size view of the first page.')
|
||||
ugettext(u'Click on the image for full size view of the first page.')
|
||||
)
|
||||
|
||||
return mark_safe(u''.join(output))
|
||||
|
||||
@@ -138,7 +138,7 @@ def smart_link_list(request):
|
||||
'hide_link': True,
|
||||
'list_object_variable_name': 'smart_link',
|
||||
|
||||
}, context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def smart_link_create(request):
|
||||
@@ -234,7 +234,7 @@ def smart_link_condition_list(request, smart_link_pk):
|
||||
'hide_link': True,
|
||||
'object': smart_link,
|
||||
'list_object_variable_name': 'condition',
|
||||
}, context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def smart_link_condition_create(request, smart_link_pk):
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
|
||||
|
||||
@@ -90,7 +90,7 @@ def metadata_edit(request, document_id=None, document_id_list=None):
|
||||
if errors:
|
||||
for error in errors:
|
||||
messages.error(request, _(u'Error editing metadata for document %(document)s; %(error)s.') % {
|
||||
'document': document, 'error': error})
|
||||
'document': document, 'error': error})
|
||||
else:
|
||||
messages.success(request, _(u'Metadata for document %s edited successfully.') % document)
|
||||
|
||||
@@ -325,8 +325,7 @@ def setup_metadata_type_edit(request, metadatatype_id):
|
||||
'form': form,
|
||||
'object': metadata_type,
|
||||
'object_name': _(u'metadata type'),
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_metadata_type_create(request):
|
||||
@@ -344,8 +343,7 @@ def setup_metadata_type_create(request):
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': _(u'create metadata type'),
|
||||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_metadata_type_delete(request, metadatatype_id):
|
||||
@@ -424,8 +422,7 @@ def setup_metadata_set_edit(request, metadata_set_id):
|
||||
'form': form,
|
||||
'object': metadata_set,
|
||||
'object_name': _(u'metadata set'),
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def get_set_members(metadata_set):
|
||||
@@ -486,8 +483,7 @@ def setup_metadata_set_create(request):
|
||||
return render_to_response('generic_form.html', {
|
||||
'title': _(u'create metadata set'),
|
||||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
}, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
def setup_metadata_set_delete(request, metadata_set_id):
|
||||
|
||||
@@ -40,32 +40,32 @@ mimetype_icons = {
|
||||
'application/x-wav': 'file_extension_wav.png',
|
||||
'application/vnd.oasis.opendocument.text': 'ODF_textdocument_32x32.png',
|
||||
|
||||
'image/jpeg' : 'file_extension_jpeg.png',
|
||||
'image/png' : 'file_extension_png.png',
|
||||
'image/x-png' : 'file_extension_png.png',
|
||||
'image/tiff' : 'file_extension_tif.png',
|
||||
'image/x-tiff' : 'file_extension_tif.png',
|
||||
'image/bmp' : 'file_extension_bmp.png',
|
||||
'image/gif' : 'file_extension_gif.png',
|
||||
'image/vnd.dwg' : 'file_extension_dwg.png',
|
||||
'image/x-dwg' : 'file_extension_dwg.png',
|
||||
'image/jpeg': 'file_extension_jpeg.png',
|
||||
'image/png': 'file_extension_png.png',
|
||||
'image/x-png': 'file_extension_png.png',
|
||||
'image/tiff': 'file_extension_tif.png',
|
||||
'image/x-tiff': 'file_extension_tif.png',
|
||||
'image/bmp': 'file_extension_bmp.png',
|
||||
'image/gif': 'file_extension_gif.png',
|
||||
'image/vnd.dwg': 'file_extension_dwg.png',
|
||||
'image/x-dwg': 'file_extension_dwg.png',
|
||||
|
||||
'audio/mpeg' : 'file_extension_mp3.png',
|
||||
'audio/mid' : 'file_extension_mid.png',
|
||||
'audio/x-wav' : 'file_extension_wav.png',
|
||||
'audio/vnd.wav' : 'file_extension_wav.png',
|
||||
'audio/x-pn-realaudio' : 'file_extension_ram.png',
|
||||
'audio/mp4' : 'file_extension_mp4.png',
|
||||
'audio/x-ms-wma' : 'file_extension_wma.png',
|
||||
'audio/mpeg': 'file_extension_mp3.png',
|
||||
'audio/mid': 'file_extension_mid.png',
|
||||
'audio/x-wav': 'file_extension_wav.png',
|
||||
'audio/vnd.wav': 'file_extension_wav.png',
|
||||
'audio/x-pn-realaudio': 'file_extension_ram.png',
|
||||
'audio/mp4': 'file_extension_mp4.png',
|
||||
'audio/x-ms-wma': 'file_extension_wma.png',
|
||||
|
||||
'video/avi' : 'file_extension_avi.png',
|
||||
'video/mpeg' : 'file_extension_mpeg.png',
|
||||
'video/quicktime' : 'file_extension_mov.png',
|
||||
'video/x-ms-asf' : 'file_extension_asf.png',
|
||||
'video/x-ms-wmv' : 'file_extension_wmv.png',
|
||||
'video/avi': 'file_extension_avi.png',
|
||||
'video/mpeg': 'file_extension_mpeg.png',
|
||||
'video/quicktime': 'file_extension_mov.png',
|
||||
'video/x-ms-asf': 'file_extension_asf.png',
|
||||
'video/x-ms-wmv': 'file_extension_wmv.png',
|
||||
|
||||
'text/html' : 'file_extension_html.png',
|
||||
'text/plain' : 'file_extension_txt.png',
|
||||
'text/html': 'file_extension_html.png',
|
||||
'text/plain': 'file_extension_txt.png',
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -58,12 +58,12 @@ def get_top_menu_links(parser, token):
|
||||
def resolve_arguments(context, src_args):
|
||||
args = []
|
||||
kwargs = {}
|
||||
if type(src_args) == type([]):
|
||||
if isinstance(src_args, list):
|
||||
for i in src_args:
|
||||
val = resolve_template_variable(context, i)
|
||||
if val:
|
||||
args.append(val)
|
||||
elif type(src_args) == type({}):
|
||||
elif isinstance(src_args, dict):
|
||||
for key, value in src_args.items():
|
||||
val = resolve_template_variable(context, value)
|
||||
if val:
|
||||
@@ -223,8 +223,8 @@ def resolve_template_variable(context, name):
|
||||
try:
|
||||
return unescape_string_literal(name)
|
||||
except ValueError:
|
||||
#return Variable(name).resolve(context)
|
||||
#TODO: Research if should return always as a str
|
||||
# return Variable(name).resolve(context)
|
||||
# TODO: Research if should return always as a str
|
||||
return str(Variable(name).resolve(context))
|
||||
except TypeError:
|
||||
return name
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
from django.db import models
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.utils.timezone import now
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from __future__ import absolute_import
|
||||
|
||||
from datetime import timedelta, datetime
|
||||
from datetime import timedelta
|
||||
import logging
|
||||
import platform
|
||||
|
||||
|
||||
@@ -46,9 +46,9 @@ class RoleDeleteView(SingleObjectDeleteView):
|
||||
|
||||
|
||||
class RoleEditView(SingleObjectEditView):
|
||||
extra_context={'object_name': _(u'role')}
|
||||
model=Role
|
||||
permissions_required=[PERMISSION_ROLE_EDIT]
|
||||
extra_context = {'object_name': _(u'role')}
|
||||
model = Role
|
||||
permissions_required = [PERMISSION_ROLE_EDIT]
|
||||
|
||||
|
||||
def role_list(request):
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
import os
|
||||
|
||||
from django.core.files.storage import Storage
|
||||
from django.utils.encoding import force_unicode
|
||||
|
||||
from pymongo import Connection
|
||||
from gridfs import GridFS
|
||||
|
||||
from storage.conf import settings
|
||||
|
||||
|
||||
class GridFSStorage(Storage):
|
||||
separator = u'/'
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
self.db = Connection(host=settings.GRIDFS_HOST,
|
||||
port=settings.GRIDFS_PORT)[settings.GRIDFS_DATABASE_NAME]
|
||||
self.fs = GridFS(self.db)
|
||||
|
||||
def save(self, name, content):
|
||||
#TODO: if exists add _ plus a counter
|
||||
while True:
|
||||
try:
|
||||
# This file has a file path that we can move.
|
||||
if hasattr(content, 'temporary_file_path'):
|
||||
self.move(content.temporary_file_path(), name)
|
||||
content.close()
|
||||
# This is a normal uploadedfile that we can stream.
|
||||
else:
|
||||
# This fun binary flag incantation makes os.open throw an
|
||||
# OSError if the file already exists before we open it.
|
||||
newfile = self.fs.new_file(filename=name)
|
||||
try:
|
||||
for chunk in content.chunks():
|
||||
newfile.write(chunk)
|
||||
finally:
|
||||
newfile.close()
|
||||
except Exception, e: # OSError, e:
|
||||
# if e.errno == errno.EEXIST:
|
||||
# # Ooops, the file exists. We need a new file name.
|
||||
# name = self.get_available_name(name)
|
||||
# full_path = self.path(name)
|
||||
# else:
|
||||
# raise
|
||||
raise
|
||||
else:
|
||||
# OK, the file save worked. Break out of the loop.
|
||||
break
|
||||
|
||||
return name
|
||||
|
||||
def open(self, name, *args, **kwars):
|
||||
return self.fs.get_last_version(name)
|
||||
|
||||
def delete(self, name):
|
||||
oid = self.fs.get_last_version(name)._id
|
||||
self.fs.delete(oid)
|
||||
|
||||
def exists(self, name):
|
||||
return self.fs.exists(filename=name)
|
||||
|
||||
def path(self, name):
|
||||
return force_unicode(name)
|
||||
|
||||
def size(self, name):
|
||||
return self.fs.get_last_version(name).length
|
||||
|
||||
def move(self, old_file_name, name, chunk_size=1024 * 64):
|
||||
# first open the old file, so that it won't go away
|
||||
old_file = open(old_file_name, 'rb')
|
||||
try:
|
||||
newfile = self.fs.new_file(filename=name)
|
||||
|
||||
try:
|
||||
current_chunk = None
|
||||
while current_chunk != '':
|
||||
current_chunk = old_file.read(chunk_size)
|
||||
newfile.write(current_chunk)
|
||||
finally:
|
||||
newfile.close()
|
||||
finally:
|
||||
old_file.close()
|
||||
|
||||
try:
|
||||
os.remove(old_file_name)
|
||||
except OSError, e:
|
||||
# Certain operating systems (Cygwin and Windows)
|
||||
# fail when deleting opened files, ignore it. (For the
|
||||
# systems where this happens, temporary files will be auto-deleted
|
||||
# on close anyway.)
|
||||
if getattr(e, 'winerror', 0) != 32 and getattr(e, 'errno', 0) != 13:
|
||||
raise
|
||||
Reference in New Issue
Block a user