1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-07-15 16:04:01 +00:00

Drop wiki2 tables (#6373)

* wiki2-drop-wiki-tables

* Update models.py

* update

* Update wiki2.py
This commit is contained in:
Ranjiwei 2024-07-19 12:27:39 +08:00 committed by GitHub
parent 67780dd73d
commit 8dc731b21a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 130 additions and 112 deletions

View File

@ -30,7 +30,7 @@ class WikiCardView extends Component {
if (!canPublishRepo || !isPro) return; if (!canPublishRepo || !isPro) return;
let departmentMap = {}; let departmentMap = {};
wikiAPI.listWikiDepartments().then(res => { wikiAPI.listWikiDepartments().then(res => {
res.data.forEach(item => departmentMap[item.id] = true); res.data.forEach(item => departmentMap[item.email] = true);
this.setState({ departmentMap }); this.setState({ departmentMap });
}).catch(error => { }).catch(error => {
let errMessage = Utils.getErrorMsg(error); let errMessage = Utils.getErrorMsg(error);

View File

@ -21,7 +21,7 @@ from django.utils.translation import gettext as _
from seahub.api2.authentication import TokenAuthentication from seahub.api2.authentication import TokenAuthentication
from seahub.api2.throttling import UserRateThrottle from seahub.api2.throttling import UserRateThrottle
from seahub.api2.utils import api_error, to_python_boolean from seahub.api2.utils import api_error, to_python_boolean, is_wiki_repo
from seahub.utils.db_api import SeafileDB from seahub.utils.db_api import SeafileDB
from seahub.wiki2.models import Wiki2 as Wiki from seahub.wiki2.models import Wiki2 as Wiki
from seahub.wiki2.utils import is_valid_wiki_name, can_edit_wiki, get_wiki_dirs_by_path, \ from seahub.wiki2.utils import is_valid_wiki_name, can_edit_wiki, get_wiki_dirs_by_path, \
@ -36,12 +36,12 @@ from seahub.views import check_folder_permission
from seahub.views.file import send_file_access_msg from seahub.views.file import send_file_access_msg
from seahub.base.templatetags.seahub_tags import email2nickname from seahub.base.templatetags.seahub_tags import email2nickname
from seahub.utils.file_op import check_file_lock, ONLINE_OFFICE_LOCK_OWNER, if_locked_by_online_office from seahub.utils.file_op import check_file_lock, ONLINE_OFFICE_LOCK_OWNER, if_locked_by_online_office
from seahub.utils.repo import parse_repo_perm from seahub.utils.repo import parse_repo_perm, get_repo_owner
from seahub.seadoc.utils import get_seadoc_file_uuid, gen_seadoc_access_token, copy_sdoc_images_with_sdoc_uuid from seahub.seadoc.utils import get_seadoc_file_uuid, gen_seadoc_access_token, copy_sdoc_images_with_sdoc_uuid
from seahub.settings import SEADOC_SERVER_URL, ENABLE_STORAGE_CLASSES, STORAGE_CLASS_MAPPING_POLICY, \ from seahub.settings import SEADOC_SERVER_URL, ENABLE_STORAGE_CLASSES, STORAGE_CLASS_MAPPING_POLICY, \
ENCRYPTED_LIBRARY_VERSION ENCRYPTED_LIBRARY_VERSION
from seahub.seadoc.sdoc_server_api import SdocServerAPI from seahub.seadoc.sdoc_server_api import SdocServerAPI
from seahub.utils.timeutils import timestamp_to_isoformat_timestr from seahub.utils.timeutils import timestamp_to_isoformat_timestr, datetime_to_isoformat_timestr
from seahub.tags.models import FileUUIDMap from seahub.tags.models import FileUUIDMap
from seahub.seadoc.models import SeadocHistoryName, SeadocDraft, SeadocCommentReply from seahub.seadoc.models import SeadocHistoryName, SeadocDraft, SeadocCommentReply
from seahub.base.models import FileComment from seahub.base.models import FileComment
@ -85,32 +85,41 @@ class Wikis2View(APIView):
org_id = request.user.org.org_id if is_org_context(request) else None org_id = request.user.org.org_id if is_org_context(request) else None
(owned, shared, groups, public) = get_user_repos(username, org_id) (owned, shared, groups, public) = get_user_repos(username, org_id)
filter_repo_ids = [] wikis = []
username = request.user.username
if filter_by['mine']: if filter_by['mine']:
filter_repo_ids += ([r.id for r in owned]) owned_wikis = [r for r in owned if is_wiki_repo(r)]
for r in owned_wikis:
r.owner = username
r.permission = 'rw'
wikis.append(r)
if filter_by['shared']: if filter_by['shared']:
filter_repo_ids += ([r.id for r in shared]) shared_wikis = [r for r in shared if is_wiki_repo(r)]
for r in shared_wikis:
r.owner = r.user
wikis.append(r)
if filter_by['group']: if filter_by['group']:
filter_repo_ids += ([r.id for r in groups]) group_wikis = [r for r in groups if is_wiki_repo(r)]
for r in group_wikis:
if filter_by['org']: r.owner = r.user
filter_repo_ids += ([r.id for r in public]) wikis.append(r)
filter_repo_ids = list(set(filter_repo_ids))
wikis = Wiki.objects.filter(repo_id__in=filter_repo_ids)
wikis = list(set(wikis))
wiki_list = [] wiki_list = []
for wiki in wikis: for w in wikis:
wiki = Wiki(w)
wiki_info = wiki.to_dict() wiki_info = wiki.to_dict()
if is_group_wiki(wiki): if is_group_wiki(wiki):
wiki_info['owner_nickname'] = group_id_to_name(wiki.owner) group_id = int(wiki.owner.split('@')[0])
wiki_info['owner_nickname'] = group_id_to_name(group_id)
else: else:
wiki_info['owner_nickname'] = email2nickname(wiki.owner) wiki_info['owner_nickname'] = email2nickname(wiki.owner)
wiki_list.append(wiki_info) wiki_list.append(wiki_info)
wiki_list = sorted(wiki_list, key=lambda x: x.get('updated_at'), reverse=True)
return Response({'wikis': wiki_list}) return Response({'wikis': wiki_list})
def post(self, request, format=None): def post(self, request, format=None):
@ -138,6 +147,7 @@ class Wikis2View(APIView):
else: else:
try: try:
group_id = int(wiki_owner) group_id = int(wiki_owner)
wiki_owner = "%s@seafile_group" % group_id
except: except:
return api_error(status.HTTP_400_BAD_REQUEST, 'wiki_owner invalid') return api_error(status.HTTP_400_BAD_REQUEST, 'wiki_owner invalid')
is_group_owner = True is_group_owner = True
@ -187,7 +197,6 @@ class Wikis2View(APIView):
repo_id = seafile_api.create_repo(wiki_name, '', username) repo_id = seafile_api.create_repo(wiki_name, '', username)
try: try:
wiki = Wiki.objects.add(wiki_name=wiki_name, owner=wiki_owner, repo_id=repo_id)
seafile_db_api = SeafileDB() seafile_db_api = SeafileDB()
seafile_db_api.set_repo_type(repo_id, 'wiki') seafile_db_api.set_repo_type(repo_id, 'wiki')
except Exception as e: except Exception as e:
@ -195,11 +204,14 @@ class Wikis2View(APIView):
msg = 'Internal Server Error' msg = 'Internal Server Error'
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, msg) return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, msg)
repo = seafile_api.get_repo(repo_id)
wiki = Wiki(repo, wiki_owner)
wiki_info = wiki.to_dict() wiki_info = wiki.to_dict()
if not is_group_owner: if not is_group_owner:
wiki_info['owner_nickname'] = email2nickname(wiki.owner) wiki_info['owner_nickname'] = email2nickname(wiki.owner)
else: else:
wiki_info['owner_nickname'] = group_id_to_name(wiki.owner) group_id = int(wiki.owner.split('@')[0])
wiki_info['owner_nickname'] = group_id_to_name(group_id)
return Response(wiki_info) return Response(wiki_info)
@ -218,35 +230,30 @@ class Wiki2View(APIView):
return api_error(status.HTTP_400_BAD_REQUEST, 'name invalid.') return api_error(status.HTTP_400_BAD_REQUEST, 'name invalid.')
username = request.user.username username = request.user.username
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = 'Wiki not found.' error_msg = 'Wiki not found.'
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
if not check_wiki_admin_permission(wiki, username):
error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
if wiki_name == wiki.name: if wiki_name == wiki.name:
return Response({"success": True}) return Response({"success": True})
repo_id = wiki.repo_id repo_id = wiki.repo_id
repo = seafile_api.get_repo(repo_id) repo = seafile_api.get_repo(repo_id)
if not repo: if not repo:
error_msg = "Wiki library not found." error_msg = "Wiki library not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
if not check_wiki_admin_permission(wiki, username): if not check_wiki_admin_permission(wiki, username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
if not is_group_wiki(wiki): if not is_group_wiki(wiki):
if is_org_context(request):
repo_owner = seafile_api.get_org_repo_owner(repo.id)
else:
repo_owner = seafile_api.get_repo_owner(repo.id)
is_owner = True if username == repo_owner else False is_owner = True if username == repo_owner else False
if not is_owner: if not is_owner:
return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.') return api_error(status.HTTP_403_FORBIDDEN, 'Permission denied.')
@ -258,40 +265,37 @@ class Wiki2View(APIView):
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
try: try:
# desc is ''
seafile_api.edit_repo(repo_id, wiki_name, '', username) seafile_api.edit_repo(repo_id, wiki_name, '', username)
except Exception as e: except Exception as e:
logger.error(e) logger.error(e)
error_msg = 'Internal Server Error' error_msg = 'Internal Server Error'
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg) return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
wiki.name = wiki_name
wiki.save()
return Response({"success": True}) return Response({"success": True})
def delete(self, request, wiki_id): def delete(self, request, wiki_id):
"""Delete a wiki. """Delete a wiki.
""" """
username = request.user.username username = request.user.username
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = 'Wiki not found.' error_msg = 'Wiki not found.'
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
if not check_wiki_admin_permission(wiki, username): if not check_wiki_admin_permission(wiki, username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
wiki.delete()
org_id = -1 org_id = -1
if is_org_context(request): if is_org_context(request):
org_id = request.user.org.org_id org_id = request.user.org.org_id
if is_group_wiki(wiki): if is_group_wiki(wiki):
group_id = int(wiki.owner) group_id = int(wiki.owner.split('@')[0])
try: try:
SeafileAPI.delete_group_owned_repo(group_id, wiki.repo_id, org_id) SeafileAPI.delete_group_owned_repo(group_id, wiki.repo_id, org_id)
except Exception as e: except Exception as e:
@ -318,12 +322,14 @@ class Wiki2ConfigView(APIView):
return api_error(status.HTTP_400_BAD_REQUEST, error_msg) return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
username = request.user.username username = request.user.username
try: wiki = Wiki.objects.get(wiki_id=wiki_id)
wiki = Wiki.objects.get(id=wiki_id) if not wiki:
except Wiki.DoesNotExist:
error_msg = "Wiki not found." error_msg = "Wiki not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
if not check_wiki_permission(wiki, request.user.username): if not check_wiki_permission(wiki, request.user.username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
@ -342,12 +348,15 @@ class Wiki2ConfigView(APIView):
def get(self, request, wiki_id): def get(self, request, wiki_id):
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = "Wiki not found." error_msg = "Wiki not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
if not check_wiki_permission(wiki, request.user.username): if not check_wiki_permission(wiki, request.user.username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
@ -397,12 +406,15 @@ class Wiki2PagesView(APIView):
error_msg = 'page_name invalid.' error_msg = 'page_name invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg) return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = "Wiki not found." error_msg = "Wiki not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
if not check_wiki_permission(wiki, request.user.username): if not check_wiki_permission(wiki, request.user.username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg) return api_error(status.HTTP_403_FORBIDDEN, error_msg)
@ -487,12 +499,15 @@ class Wiki2PagesView(APIView):
return Response({'file_info': file_info}) return Response({'file_info': file_info})
def put(self, request, wiki_id): def put(self, request, wiki_id):
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = "Wiki not found." error_msg = "Wiki not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
username = request.user.username username = request.user.username
if not check_wiki_permission(wiki, username): if not check_wiki_permission(wiki, username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
@ -543,12 +558,15 @@ class Wiki2PageView(APIView):
def get(self, request, wiki_id, page_id): def get(self, request, wiki_id, page_id):
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = "Wiki not found." error_msg = "Wiki not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
username = request.user.username username = request.user.username
if not check_wiki_permission(wiki, username): if not check_wiki_permission(wiki, username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
@ -610,12 +628,15 @@ class Wiki2PageView(APIView):
}) })
def delete(self, request, wiki_id, page_id): def delete(self, request, wiki_id, page_id):
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = "Wiki not found." error_msg = "Wiki not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
username = request.user.username username = request.user.username
if not check_wiki_permission(wiki, username): if not check_wiki_permission(wiki, username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'
@ -720,12 +741,15 @@ class Wiki2DuplicatePageView(APIView):
error_msg = 'page_id invalid.' error_msg = 'page_id invalid.'
return api_error(status.HTTP_400_BAD_REQUEST, error_msg) return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
try:
wiki = Wiki.objects.get(id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
except Wiki.DoesNotExist: if not wiki:
error_msg = "Wiki not found." error_msg = "Wiki not found."
return api_error(status.HTTP_404_NOT_FOUND, error_msg) return api_error(status.HTTP_404_NOT_FOUND, error_msg)
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
username = request.user.username username = request.user.username
if not check_wiki_permission(wiki, username): if not check_wiki_permission(wiki, username):
error_msg = 'Permission denied.' error_msg = 'Permission denied.'

View File

@ -526,11 +526,11 @@ urlpatterns = [
## user::wiki2 ## user::wiki2
re_path(r'^api/v2.1/wikis2/$', Wikis2View.as_view(), name='api-v2.1-wikis2'), re_path(r'^api/v2.1/wikis2/$', Wikis2View.as_view(), name='api-v2.1-wikis2'),
re_path(r'^api/v2.1/wiki2/(?P<wiki_id>\d+)/$', Wiki2View.as_view(), name='api-v2.1-wiki2'), re_path(r'^api/v2.1/wiki2/(?P<wiki_id>[-0-9a-f]{36})/$', Wiki2View.as_view(), name='api-v2.1-wiki2'),
re_path(r'^api/v2.1/wiki2/(?P<wiki_id>\d+)/config/$', Wiki2ConfigView.as_view(), name='api-v2.1-wiki2-config'), re_path(r'^api/v2.1/wiki2/(?P<wiki_id>[-0-9a-f]{36})/config/$', Wiki2ConfigView.as_view(), name='api-v2.1-wiki2-config'),
re_path(r'^api/v2.1/wiki2/(?P<wiki_id>\d+)/pages/$', Wiki2PagesView.as_view(), name='api-v2.1-wiki2-pages'), re_path(r'^api/v2.1/wiki2/(?P<wiki_id>[-0-9a-f]{36})/pages/$', Wiki2PagesView.as_view(), name='api-v2.1-wiki2-pages'),
re_path(r'^api/v2.1/wiki2/(?P<wiki_id>\d+)/page/(?P<page_id>[-0-9a-zA-Z]{4})/$', Wiki2PageView.as_view(), name='api-v2.1-wiki2-page'), re_path(r'^api/v2.1/wiki2/(?P<wiki_id>[-0-9a-f]{36})/page/(?P<page_id>[-0-9a-zA-Z]{4})/$', Wiki2PageView.as_view(), name='api-v2.1-wiki2-page'),
re_path(r'^api/v2.1/wiki2/(?P<wiki_id>\d+)/duplicate-page/$', Wiki2DuplicatePageView.as_view(), name='api-v2.1-wiki2-duplicate-page'), re_path(r'^api/v2.1/wiki2/(?P<wiki_id>[-0-9a-f]{36})/duplicate-page/$', Wiki2DuplicatePageView.as_view(), name='api-v2.1-wiki2-duplicate-page'),
## user::drafts ## user::drafts
re_path(r'^api/v2.1/drafts/$', DraftsView.as_view(), name='api-v2.1-drafts'), re_path(r'^api/v2.1/drafts/$', DraftsView.as_view(), name='api-v2.1-drafts'),

View File

@ -11,47 +11,36 @@ class WikiDoesNotExist(Exception):
pass pass
class WikiManager(models.Manager): class WikiManager():
def add(self, wiki_name, owner, repo_id): def get(self, wiki_id):
now = timezone.now() repo = seafile_api.get_repo(wiki_id)
wiki = self.model(owner=owner, name=wiki_name, repo_id=repo_id, created_at=now) if not repo:
wiki.save(using=self._db) return None
return wiki return Wiki2(repo)
class Wiki2(models.Model): class Wiki2(object):
"""New wiki model to enable a user has multiple wikis and replace """New wiki model to enable a user has multiple wikis and replace
personal wiki. personal wiki.
""" """
owner = LowerCaseCharField(max_length=255)
name = models.CharField(max_length=255)
repo_id = models.CharField(max_length=36, db_index=True)
created_at = models.DateTimeField(default=timezone.now, db_index=True)
objects = WikiManager() objects = WikiManager()
class Meta: def __init__(self, wiki, owner=None):
db_table = 'wiki_wiki2' # wiki a wiki type repo object
unique_together = (('owner', 'repo_id'),) self.pk = wiki.id
ordering = ["name"] self.id = wiki.id
self.owner = owner or wiki.owner
self.name = wiki.repo_name
self.updated_at = timestamp_to_isoformat_timestr(wiki.last_modify)
self.repo_id = wiki.repo_id
@property
def updated_at(self):
assert len(self.repo_id) == 36
repo = seafile_api.get_repo(self.repo_id)
if not repo:
return ''
return repo.last_modify
def to_dict(self): def to_dict(self):
return { return {
'id': self.pk, 'id': self.pk,
'owner': self.owner, 'owner': self.owner,
'name': self.name, 'name': self.name,
'created_at': datetime_to_isoformat_timestr(self.created_at), 'updated_at': self.updated_at,
'updated_at': timestamp_to_isoformat_timestr(self.updated_at),
'repo_id': self.repo_id, 'repo_id': self.repo_id,
} }
@ -63,5 +52,4 @@ from seahub.signals import repo_deleted
@receiver(repo_deleted) @receiver(repo_deleted)
def remove_wiki(sender, **kwargs): def remove_wiki(sender, **kwargs):
repo_id = kwargs['repo_id'] repo_id = kwargs['repo_id']
return
Wiki2.objects.filter(repo_id=repo_id).delete()

View File

@ -67,12 +67,12 @@ def get_wiki_config(repo_id, username):
def is_group_wiki(wiki): def is_group_wiki(wiki):
return not ('@' in wiki.owner) return '@seafile_group' in wiki.owner
def check_wiki_admin_permission(wiki, username): def check_wiki_admin_permission(wiki, username):
if is_group_wiki(wiki): if is_group_wiki(wiki):
group_id = wiki.owner group_id = int(wiki.owner.split('@')[0])
return is_group_admin(group_id, username) return is_group_admin(group_id, username)
else: else:
if username == wiki.owner: if username == wiki.owner:
@ -82,7 +82,7 @@ def check_wiki_admin_permission(wiki, username):
def check_wiki_permission(wiki, username): def check_wiki_permission(wiki, username):
if is_group_wiki(wiki): if is_group_wiki(wiki):
group_id = wiki.owner group_id = int(wiki.owner.split('@')[0])
return is_group_member(group_id, username) return is_group_member(group_id, username)
else: else:
if username == wiki.owner: if username == wiki.owner:

View File

@ -8,7 +8,7 @@ from datetime import datetime
from seaserv import seafile_api from seaserv import seafile_api
from django.urls import reverse from django.urls import reverse
from django.http import HttpResponseRedirect from django.http import HttpResponseRedirect, Http404
from django.shortcuts import render, get_object_or_404, redirect from django.shortcuts import render, get_object_or_404, redirect
from seahub.share.models import FileShare from seahub.share.models import FileShare
@ -21,7 +21,7 @@ from seahub.auth.decorators import login_required
from seahub.wiki2.utils import can_edit_wiki, check_wiki_permission, get_wiki_config from seahub.wiki2.utils import can_edit_wiki, check_wiki_permission, get_wiki_config
from seahub.utils.file_op import check_file_lock, ONLINE_OFFICE_LOCK_OWNER, if_locked_by_online_office from seahub.utils.file_op import check_file_lock, ONLINE_OFFICE_LOCK_OWNER, if_locked_by_online_office
from seahub.utils.repo import parse_repo_perm from seahub.utils.repo import parse_repo_perm, get_repo_owner
from seahub.settings import SEADOC_SERVER_URL from seahub.settings import SEADOC_SERVER_URL
# Get an instance of a logger # Get an instance of a logger
@ -33,7 +33,13 @@ def wiki_view(request, wiki_id):
""" edit wiki page. for wiki2 """ edit wiki page. for wiki2
""" """
# get wiki object or 404 # get wiki object or 404
wiki = get_object_or_404(Wiki, id=wiki_id) wiki = Wiki.objects.get(wiki_id=wiki_id)
if not wiki:
raise Http404
repo_owner = get_repo_owner(request, wiki_id)
wiki.owner = repo_owner
page_id = request.GET.get('page_id') page_id = request.GET.get('page_id')
file_path = '' file_path = ''