def upload(request, json=False): if request.method == 'GET': form = UploadForm() if request.method == 'POST': form = UploadForm(request.POST, request.FILES) if form.is_valid(): data = request.FILES['file'] size = form.cleaned_data['file'].size expire_date = form.cleaned_data['expire_date'] or one_week_later() message = form.cleaned_data['message'] receiver = form.cleaned_data['receiver'] if form.cleaned_data['filename_overwrite']: name = form.cleaned_data['filename_overwrite'] else: name = form.cleaned_data['file'].name file = File(name=name, owner=request.user, expire_date=expire_date, message=message, size=size) md5 = handle_uploaded_file(name, file.secret, data) file.md5 = md5 file.save() if receiver: downloader = Downloader(email=receiver, file=file) downloader.save() url = 'http://%s/files/download/%s/%s' % \ (Site.objects.get_current().domain, file.id, file.secret) from_ = request.user.email mailit([receiver], from_, message, url) if json: response = {'status': 'ok', 'fileid': file.id} return HttpResponse(simplejson.dumps(response)) else: return HttpResponseRedirect('/files/list/') if json: response = {'status': 'error', 'message': 'form not valid'} return HttpResponse(simplejson.dumps(response)) else: return render_to_response('files/upload.html', {'form': form, }, context_instance=RequestContext(request))