@permission_required('explorer.can_add_files')
@with_repo
def file_upload(request, repo):
- form = forms.BookUploadForm(request.POST, request.FILES)
- if form.is_valid():
- f = request.FILES['file']
-
- def upload_action():
- print 'Adding file: %s' % f.name
- repo._add_file(f.name, f.read().decode('utf-8'))
- repo._commit(message="File %s uploaded from platform by %s" %
- (f.name, request.user.username), user=request.user.username)
-
- repo.in_branch(upload_action, 'default')
- return HttpResponseRedirect( reverse('editor_view', kwargs={'path': f.name}) )
+ other_errors = []
+ if request.method == 'POST':
+ form = forms.BookUploadForm(request.POST, request.FILES)
+ if form.is_valid():
+ try:
+ # prepare the data
+ f = request.FILES['file']
+ decoded = f.read().decode('utf-8')
+
+ def upload_action():
+ print 'Adding file: %s' % f.name
+ repo._add_file(f.name, f.read().decode('utf-8'))
+ repo._commit(
+ message="File %s uploaded from platform by %s" %\
+ (f.name, request.user.username), \
+ user=request.user.username \
+ )
+
+ # end of upload
+
+ repo.in_branch(upload_action, 'default')
+
+ # if everything is ok, redirect to the editor
+ return HttpResponseRedirect( reverse('editor_view',
+ kwargs={'path': f.name}) )
+
+ except hg.RepositoryException, e:
+ other_errors.append(u'Błąd repozytorium: ' + unicode(e) )
+ except UnicodeDecodeError, e:
+ other_errors.append(u'Niepoprawne kodowanie pliku: ' + e.reason \
+ + u'. Żądane kodowanie: ' + e.encoding)
+ # invalid form
+
+ # get
+ form = forms.BookUploadForm()
return direct_to_template(request, 'explorer/file_upload.html',
- extra_context = {'form' : form} )
+ extra_context = {'form' : form, 'other_errors': other_errors})
#
# Edit the file
encoding.encoding = 'utf-8'
-class RepositoryDoesNotExist(Exception):
- pass
+
class Repository(object):
"""Abstrakcja repozytorium Mercurial. Działa z Mercurial w wersji 1.3.1."""
except KeyError, ke:
raise RepositoryException("Can't switch to branch '%s': no such branch." % bname , ke)
except util.Abort, ae:
- raise repositoryException("Can't switch to branch '%s': %s" % (bname, ae.message), ae)
+ raise RepositoryException("Can't switch to branch '%s': %s" % (bname, ae.message), ae)
finally:
wlock.release()
def __init__(self, msg, cause=None):
Exception.__init__(self, msg)
self.cause = cause
+
+class RepositoryDoesNotExist(RepositoryException):
+ pass