from django.conf import settings
from django.contrib.auth.decorators import login_required, permission_required
-from django.core.paginator import Paginator, InvalidPage, EmptyPage
+
from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect, HttpResponse
from django.utils import simplejson as json
#
@with_repo
def file_list(request, repo):
- paginator = Paginator( repo.file_list('default'), 100);
+ latest_default = repo.repo.branchtags()['default']
+ files = list( repo.repo[latest_default] )
bookform = forms.BookUploadForm()
- try:
- page = int(request.GET.get('page', '1'))
- except ValueError:
- page = 1
-
- try:
- files = paginator.page(page)
- except (EmptyPage, InvalidPage):
- files = paginator.page(paginator.num_pages)
-
return direct_to_template(request, 'explorer/file_list.html', extra_context={
- 'files': files, 'page': page, 'bookform': bookform,
+ 'files': files, 'bookform': bookform,
})
@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, decoded.encode('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
print "SAVING DC"
# zapisz
- repo._add_file(path, document.serialize())
+ repo._write_file(path, document.serialize())
repo._commit( \
message=(form.cleaned_data['commit_message'] or 'Lokalny zapis platformy.'), \
user=request.user.username )
# Display the main editor view
@login_required
-def display_editor(request, path):
+@with_repo
+def display_editor(request, path, repo):
+
+ if not repo.file_exists(path, models.user_branch(request.user)):
+ try:
+ data = repo.get_file(path, 'default')
+ print type(data)
+
+ def new_file():
+ repo._add_file(path, data)
+ repo._commit(message='File import from default branch',
+ user=request.user.username)
+
+ repo.in_branch(new_file, models.user_branch(request.user) )
+ except hg.RepositoryException, e:
+ return direct_to_template(request, 'explorer/file_unavailble.html',\
+ extra_context = { 'path': path, 'error': e })
+
return direct_to_template(request, 'explorer/editor.html', extra_context={
'hash': path,
'panel_list': ['lewy', 'prawy'],
@ajax_login_required
@with_repo
def xmleditor_panel(request, path, repo):
- form = forms.BookForm()
text = repo.get_file(path, models.user_branch(request.user))
return direct_to_template(request, 'explorer/panels/xmleditor.html', extra_context={