mirror of
https://github.com/haiwen/seahub.git
synced 2025-07-15 07:52:14 +00:00
Drop wiki2 tables (#6373)
* wiki2-drop-wiki-tables * Update models.py * update * Update wiki2.py
This commit is contained in:
parent
67780dd73d
commit
8dc731b21a
@ -30,7 +30,7 @@ class WikiCardView extends Component {
|
||||
if (!canPublishRepo || !isPro) return;
|
||||
let departmentMap = {};
|
||||
wikiAPI.listWikiDepartments().then(res => {
|
||||
res.data.forEach(item => departmentMap[item.id] = true);
|
||||
res.data.forEach(item => departmentMap[item.email] = true);
|
||||
this.setState({ departmentMap });
|
||||
}).catch(error => {
|
||||
let errMessage = Utils.getErrorMsg(error);
|
||||
|
@ -21,7 +21,7 @@ from django.utils.translation import gettext as _
|
||||
|
||||
from seahub.api2.authentication import TokenAuthentication
|
||||
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.wiki2.models import Wiki2 as Wiki
|
||||
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.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.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.settings import SEADOC_SERVER_URL, ENABLE_STORAGE_CLASSES, STORAGE_CLASS_MAPPING_POLICY, \
|
||||
ENCRYPTED_LIBRARY_VERSION
|
||||
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.seadoc.models import SeadocHistoryName, SeadocDraft, SeadocCommentReply
|
||||
from seahub.base.models import FileComment
|
||||
@ -84,32 +84,41 @@ class Wikis2View(APIView):
|
||||
username = request.user.username
|
||||
org_id = request.user.org.org_id if is_org_context(request) else None
|
||||
(owned, shared, groups, public) = get_user_repos(username, org_id)
|
||||
|
||||
filter_repo_ids = []
|
||||
|
||||
wikis = []
|
||||
username = request.user.username
|
||||
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']:
|
||||
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']:
|
||||
filter_repo_ids += ([r.id for r in groups])
|
||||
|
||||
if filter_by['org']:
|
||||
filter_repo_ids += ([r.id for r in public])
|
||||
|
||||
filter_repo_ids = list(set(filter_repo_ids))
|
||||
|
||||
wikis = Wiki.objects.filter(repo_id__in=filter_repo_ids)
|
||||
|
||||
group_wikis = [r for r in groups if is_wiki_repo(r)]
|
||||
for r in group_wikis:
|
||||
r.owner = r.user
|
||||
wikis.append(r)
|
||||
|
||||
wikis = list(set(wikis))
|
||||
wiki_list = []
|
||||
for wiki in wikis:
|
||||
for w in wikis:
|
||||
wiki = Wiki(w)
|
||||
wiki_info = wiki.to_dict()
|
||||
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:
|
||||
wiki_info['owner_nickname'] = email2nickname(wiki.owner)
|
||||
wiki_list.append(wiki_info)
|
||||
|
||||
wiki_list = sorted(wiki_list, key=lambda x: x.get('updated_at'), reverse=True)
|
||||
|
||||
return Response({'wikis': wiki_list})
|
||||
|
||||
@ -138,6 +147,7 @@ class Wikis2View(APIView):
|
||||
else:
|
||||
try:
|
||||
group_id = int(wiki_owner)
|
||||
wiki_owner = "%s@seafile_group" % group_id
|
||||
except:
|
||||
return api_error(status.HTTP_400_BAD_REQUEST, 'wiki_owner invalid')
|
||||
is_group_owner = True
|
||||
@ -187,20 +197,22 @@ class Wikis2View(APIView):
|
||||
repo_id = seafile_api.create_repo(wiki_name, '', username)
|
||||
|
||||
try:
|
||||
wiki = Wiki.objects.add(wiki_name=wiki_name, owner=wiki_owner, repo_id=repo_id)
|
||||
seafile_db_api = SeafileDB()
|
||||
seafile_db_api.set_repo_type(repo_id, 'wiki')
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
msg = 'Internal Server Error'
|
||||
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()
|
||||
if not is_group_owner:
|
||||
wiki_info['owner_nickname'] = email2nickname(wiki.owner)
|
||||
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)
|
||||
|
||||
|
||||
@ -218,35 +230,30 @@ class Wiki2View(APIView):
|
||||
return api_error(status.HTTP_400_BAD_REQUEST, 'name invalid.')
|
||||
|
||||
username = request.user.username
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = 'Wiki not found.'
|
||||
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:
|
||||
return Response({"success": True})
|
||||
|
||||
repo_id = wiki.repo_id
|
||||
repo = seafile_api.get_repo(repo_id)
|
||||
|
||||
if not repo:
|
||||
error_msg = "Wiki library not found."
|
||||
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):
|
||||
error_msg = 'Permission denied.'
|
||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||
|
||||
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
|
||||
if not is_owner:
|
||||
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)
|
||||
|
||||
try:
|
||||
# desc is ''
|
||||
seafile_api.edit_repo(repo_id, wiki_name, '', username)
|
||||
except Exception as e:
|
||||
logger.error(e)
|
||||
error_msg = 'Internal Server Error'
|
||||
return api_error(status.HTTP_500_INTERNAL_SERVER_ERROR, error_msg)
|
||||
|
||||
wiki.name = wiki_name
|
||||
wiki.save()
|
||||
|
||||
return Response({"success": True})
|
||||
|
||||
def delete(self, request, wiki_id):
|
||||
"""Delete a wiki.
|
||||
"""
|
||||
username = request.user.username
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = 'Wiki not found.'
|
||||
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):
|
||||
error_msg = 'Permission denied.'
|
||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||
|
||||
wiki.delete()
|
||||
|
||||
|
||||
org_id = -1
|
||||
if is_org_context(request):
|
||||
org_id = request.user.org.org_id
|
||||
|
||||
if is_group_wiki(wiki):
|
||||
group_id = int(wiki.owner)
|
||||
group_id = int(wiki.owner.split('@')[0])
|
||||
try:
|
||||
SeafileAPI.delete_group_owned_repo(group_id, wiki.repo_id, org_id)
|
||||
except Exception as e:
|
||||
@ -318,12 +322,14 @@ class Wiki2ConfigView(APIView):
|
||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||
|
||||
username = request.user.username
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = "Wiki not found."
|
||||
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):
|
||||
error_msg = 'Permission denied.'
|
||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||
@ -342,12 +348,15 @@ class Wiki2ConfigView(APIView):
|
||||
|
||||
def get(self, request, wiki_id):
|
||||
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = "Wiki not found."
|
||||
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):
|
||||
error_msg = 'Permission denied.'
|
||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||
@ -397,12 +406,15 @@ class Wiki2PagesView(APIView):
|
||||
error_msg = 'page_name invalid.'
|
||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = "Wiki not found."
|
||||
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):
|
||||
error_msg = 'Permission denied.'
|
||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||
@ -487,12 +499,15 @@ class Wiki2PagesView(APIView):
|
||||
return Response({'file_info': file_info})
|
||||
|
||||
def put(self, request, wiki_id):
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = "Wiki not found."
|
||||
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
|
||||
if not check_wiki_permission(wiki, username):
|
||||
error_msg = 'Permission denied.'
|
||||
@ -543,12 +558,15 @@ class Wiki2PageView(APIView):
|
||||
|
||||
def get(self, request, wiki_id, page_id):
|
||||
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = "Wiki not found."
|
||||
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
|
||||
if not check_wiki_permission(wiki, username):
|
||||
error_msg = 'Permission denied.'
|
||||
@ -610,12 +628,15 @@ class Wiki2PageView(APIView):
|
||||
})
|
||||
|
||||
def delete(self, request, wiki_id, page_id):
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = "Wiki not found."
|
||||
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
|
||||
if not check_wiki_permission(wiki, username):
|
||||
error_msg = 'Permission denied.'
|
||||
@ -720,12 +741,15 @@ class Wiki2DuplicatePageView(APIView):
|
||||
error_msg = 'page_id invalid.'
|
||||
return api_error(status.HTTP_400_BAD_REQUEST, error_msg)
|
||||
|
||||
try:
|
||||
wiki = Wiki.objects.get(id=wiki_id)
|
||||
except Wiki.DoesNotExist:
|
||||
|
||||
wiki = Wiki.objects.get(wiki_id=wiki_id)
|
||||
if not wiki:
|
||||
error_msg = "Wiki not found."
|
||||
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
|
||||
if not check_wiki_permission(wiki, username):
|
||||
error_msg = 'Permission denied.'
|
||||
|
@ -526,11 +526,11 @@ urlpatterns = [
|
||||
|
||||
## user::wiki2
|
||||
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>\d+)/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>\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>\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})/$', Wiki2View.as_view(), name='api-v2.1-wiki2'),
|
||||
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>[-0-9a-f]{36})/pages/$', Wiki2PagesView.as_view(), name='api-v2.1-wiki2-pages'),
|
||||
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>[-0-9a-f]{36})/duplicate-page/$', Wiki2DuplicatePageView.as_view(), name='api-v2.1-wiki2-duplicate-page'),
|
||||
|
||||
## user::drafts
|
||||
re_path(r'^api/v2.1/drafts/$', DraftsView.as_view(), name='api-v2.1-drafts'),
|
||||
|
@ -11,47 +11,36 @@ class WikiDoesNotExist(Exception):
|
||||
pass
|
||||
|
||||
|
||||
class WikiManager(models.Manager):
|
||||
def add(self, wiki_name, owner, repo_id):
|
||||
now = timezone.now()
|
||||
wiki = self.model(owner=owner, name=wiki_name, repo_id=repo_id, created_at=now)
|
||||
wiki.save(using=self._db)
|
||||
return wiki
|
||||
class WikiManager():
|
||||
def get(self, wiki_id):
|
||||
repo = seafile_api.get_repo(wiki_id)
|
||||
if not repo:
|
||||
return None
|
||||
return Wiki2(repo)
|
||||
|
||||
|
||||
class Wiki2(models.Model):
|
||||
class Wiki2(object):
|
||||
"""New wiki model to enable a user has multiple wikis and replace
|
||||
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()
|
||||
|
||||
class Meta:
|
||||
db_table = 'wiki_wiki2'
|
||||
unique_together = (('owner', 'repo_id'),)
|
||||
ordering = ["name"]
|
||||
|
||||
@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 __init__(self, wiki, owner=None):
|
||||
# wiki a wiki type repo object
|
||||
self.pk = wiki.id
|
||||
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
|
||||
|
||||
|
||||
def to_dict(self):
|
||||
return {
|
||||
'id': self.pk,
|
||||
'owner': self.owner,
|
||||
'name': self.name,
|
||||
'created_at': datetime_to_isoformat_timestr(self.created_at),
|
||||
'updated_at': timestamp_to_isoformat_timestr(self.updated_at),
|
||||
'updated_at': self.updated_at,
|
||||
'repo_id': self.repo_id,
|
||||
}
|
||||
|
||||
@ -63,5 +52,4 @@ from seahub.signals import repo_deleted
|
||||
@receiver(repo_deleted)
|
||||
def remove_wiki(sender, **kwargs):
|
||||
repo_id = kwargs['repo_id']
|
||||
|
||||
Wiki2.objects.filter(repo_id=repo_id).delete()
|
||||
return
|
||||
|
@ -67,12 +67,12 @@ def get_wiki_config(repo_id, username):
|
||||
|
||||
|
||||
def is_group_wiki(wiki):
|
||||
return not ('@' in wiki.owner)
|
||||
return '@seafile_group' in wiki.owner
|
||||
|
||||
|
||||
def check_wiki_admin_permission(wiki, username):
|
||||
if is_group_wiki(wiki):
|
||||
group_id = wiki.owner
|
||||
group_id = int(wiki.owner.split('@')[0])
|
||||
return is_group_admin(group_id, username)
|
||||
else:
|
||||
if username == wiki.owner:
|
||||
@ -82,7 +82,7 @@ def check_wiki_admin_permission(wiki, username):
|
||||
|
||||
def check_wiki_permission(wiki, username):
|
||||
if is_group_wiki(wiki):
|
||||
group_id = wiki.owner
|
||||
group_id = int(wiki.owner.split('@')[0])
|
||||
return is_group_member(group_id, username)
|
||||
else:
|
||||
if username == wiki.owner:
|
||||
|
@ -8,7 +8,7 @@ from datetime import datetime
|
||||
from seaserv import seafile_api
|
||||
|
||||
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 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.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
|
||||
|
||||
# Get an instance of a logger
|
||||
@ -33,8 +33,14 @@ def wiki_view(request, wiki_id):
|
||||
""" edit wiki page. for wiki2
|
||||
"""
|
||||
# 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')
|
||||
file_path = ''
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user