def create_file_with_content(self, file_name, parent_dir='/', content='junk content', username=''): seafile_api.post_empty_file(self.repo.id, parent_dir, file_name, username) # first dump the file content to a tmp file, then update the file fd, tmp_file = mkstemp() try: bytesWritten = os.write(fd, content.encode('utf-8')) except: bytesWritten = -1 finally: os.close(fd) assert bytesWritten > 0 seafile_api.put_file(self.repo.id, tmp_file, parent_dir, file_name, '', None) return parent_dir + file_name
def create_file_with_content(self, file_name, parent_dir='/', content='abc', username=''): seafile_api.post_empty_file(self.repo.id, parent_dir, file_name, username) # first dump the file content to a tmp file, then update the file fd, tmp_file = mkstemp() try: bytesWritten = os.write(fd, 'junk content') except: bytesWritten = -1 finally: os.close(fd) assert bytesWritten > 0 seafile_api.put_file(self.repo.id, tmp_file, parent_dir, file_name, '', None) return parent_dir + file_name
def file_edit_submit(request, repo_id): content_type = 'application/json; charset=utf-8' def error_json(error_msg=_(u'Internal Error'), op=None): return HttpResponse(json.dumps({ 'error': error_msg, 'op': op }), status=400, content_type=content_type) username = request.user.username if check_repo_access_permission(repo_id, request.user) != 'rw': return error_json(_(u'Permission denied')) repo = get_repo(repo_id) if not repo: return error_json(_(u'The library does not exist.')) if repo.encrypted: repo.password_set = seafile_api.is_password_set(repo_id, username) if not repo.password_set: return error_json(_(u'The library is encrypted.'), 'decrypt') content = request.POST.get('content') encoding = request.POST.get('encoding') path = request.GET.get('p') if content is None or not path or encoding not in ["gbk", "utf-8"]: return error_json(_(u'Invalid arguments')) head_id = request.GET.get('head', None) content = content.encode(encoding) # first dump the file content to a tmp file, then update the file fd, tmpfile = mkstemp() def remove_tmp_file(): try: os.remove(tmpfile) except: pass try: bytesWritten = os.write(fd, content) except: bytesWritten = -1 finally: os.close(fd) if bytesWritten != len(content): remove_tmp_file() return error_json() req_from = request.GET.get('from', '') if req_from == 'wiki_page_edit' or req_from == 'wiki_page_new': try: gid = int(request.GET.get('gid', 0)) except ValueError: gid = 0 wiki_name = os.path.splitext(os.path.basename(path))[0] next = reverse('group_wiki', args=[gid, wiki_name]) elif req_from == 'personal_wiki_page_edit' or req_from == 'personal_wiki_page_new': wiki_name = os.path.splitext(os.path.basename(path))[0] next = reverse('personal_wiki', args=[wiki_name]) else: next = reverse('repo_view_file', args=[repo_id ]) + '?p=' + urlquote(path) parent_dir = os.path.dirname(path).encode('utf-8') filename = os.path.basename(path).encode('utf-8') try: seafserv_threaded_rpc.put_file(repo_id, tmpfile, parent_dir, filename, username, head_id) remove_tmp_file() return HttpResponse(json.dumps({'href': next}), content_type=content_type) except SearpcError, e: remove_tmp_file() return error_json(str(e))
def file_edit_submit(request, repo_id): content_type = 'application/json; charset=utf-8' def error_json(error_msg=_(u'Internal Error'), op=None): return HttpResponse(json.dumps({'error': error_msg, 'op': op}), status=400, content_type=content_type) if get_user_permission(request, repo_id) != 'rw': return error_json(_(u'Permission denied')) repo = get_repo(repo_id) if not repo: return error_json(_(u'The library does not exist.')) if repo.encrypted: repo.password_set = seafserv_rpc.is_passwd_set(repo_id, request.user.username) if not repo.password_set: return error_json(_(u'The library is encrypted.'), 'decrypt') content = request.POST.get('content') encoding = request.POST.get('encoding') path = request.GET.get('p') if content is None or not path or encoding not in ["gbk", "utf-8"]: return error_json(_(u'Invalid arguments')) head_id = request.GET.get('head', None) content = content.encode(encoding) # first dump the file content to a tmp file, then update the file fd, tmpfile = mkstemp() def remove_tmp_file(): try: os.remove(tmpfile) except: pass try: bytesWritten = os.write(fd, content) except: bytesWritten = -1 finally: os.close(fd) if bytesWritten != len(content): remove_tmp_file() return error_json() if request.GET.get('from', '') == 'wiki_page_edit': try: gid = int(request.GET.get('gid', 0)) except ValueError: gid = 0 wiki_name = os.path.splitext(os.path.basename(path))[0] next = reverse('group_wiki', args=[gid, wiki_name]) elif request.GET.get('from', '') == 'wiki_page_new': try: gid = int(request.GET.get('gid', 0)) except ValueError: gid = 0 next = reverse('group_wiki_pages', args=[gid]) elif request.GET.get('from', '') == 'personal_wiki_page_edit': wiki_name = os.path.splitext(os.path.basename(path))[0] next = reverse('personal_wiki', args=[wiki_name]) elif request.GET.get('from', '') == 'personal_wiki_page_new': next = reverse('personal_wiki_pages') else: next = reverse('repo_view_file', args=[repo_id]) + '?p=' + urlquote(path) parent_dir = os.path.dirname(path).encode('utf-8') filename = os.path.basename(path).encode('utf-8') try: seafserv_threaded_rpc.put_file(repo_id, tmpfile, parent_dir, filename, request.user.username, head_id) remove_tmp_file() return HttpResponse(json.dumps({'href': next}), content_type=content_type) except SearpcError, e: remove_tmp_file() return error_json(str(e))
def file_edit_submit(request, repo_id): content_type = "application/json; charset=utf-8" def error_json(error_msg=_(u"Internal Error"), op=None): return HttpResponse(json.dumps({"error": error_msg, "op": op}), status=400, content_type=content_type) username = request.user.username if check_repo_access_permission(repo_id, request.user) != "rw": return error_json(_(u"Permission denied")) repo = get_repo(repo_id) if not repo: return error_json(_(u"The library does not exist.")) if repo.encrypted: repo.password_set = seafile_api.is_password_set(repo_id, username) if not repo.password_set: return error_json(_(u"The library is encrypted."), "decrypt") content = request.POST.get("content") encoding = request.POST.get("encoding") path = request.GET.get("p") if content is None or not path or encoding not in ["gbk", "utf-8"]: return error_json(_(u"Invalid arguments")) head_id = request.GET.get("head", None) content = content.encode(encoding) # first dump the file content to a tmp file, then update the file fd, tmpfile = mkstemp() def remove_tmp_file(): try: os.remove(tmpfile) except: pass try: bytesWritten = os.write(fd, content) except: bytesWritten = -1 finally: os.close(fd) if bytesWritten != len(content): remove_tmp_file() return error_json() req_from = request.GET.get("from", "") if req_from == "wiki_page_edit" or req_from == "wiki_page_new": try: gid = int(request.GET.get("gid", 0)) except ValueError: gid = 0 wiki_name = os.path.splitext(os.path.basename(path))[0] next = reverse("group_wiki", args=[gid, wiki_name]) elif req_from == "personal_wiki_page_edit" or req_from == "personal_wiki_page_new": wiki_name = os.path.splitext(os.path.basename(path))[0] next = reverse("personal_wiki", args=[wiki_name]) else: next = reverse("repo_view_file", args=[repo_id]) + "?p=" + urlquote(path) parent_dir = os.path.dirname(path).encode("utf-8") filename = os.path.basename(path).encode("utf-8") try: seafserv_threaded_rpc.put_file(repo_id, tmpfile, parent_dir, filename, username, head_id) remove_tmp_file() return HttpResponse(json.dumps({"href": next}), content_type=content_type) except SearpcError, e: remove_tmp_file() return error_json(str(e))