@@ -5,11 +5,10 @@
5 5 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from django.contrib.auth.decorators import login_required
6 6 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from django.http import Http404
7 7 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from django.shortcuts import get_object_or_404, render
8 8 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from django.utils.safestring import mark_safe
9 9 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- from core.permissions import P
11 10 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from projects.models import Project
12 11 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
13 12 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from .models import FossilRepository
14 13 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from .reader import FossilReader
15 14 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -284,13 +283,28 @@
284 283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
285 284 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
html = re.sub(r'href="https?://(?:www\.)?fossil-scm\.org/forum(/[^"]*)"', replace_external_forum, html)
286 285 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return html
287 286 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
288 287 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- def _get_repo_and_reader(slug):
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- """Return (project, fossil_repo, reader) or raise 404."""
288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ def _get_repo_and_reader(slug, request=None, require="read"):
289 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ """Return (project, fossil_repo, reader) or raise 404/403.
290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ require: "read", "write", or "admin"
292 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ """
293 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ from projects.access import require_project_admin, require_project_read, require_project_write
294 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
291 295 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
project = get_object_or_404(Project, slug=slug, deleted_at__isnull=True)
296 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
297 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ # Access check
298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if request:
299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if require == "admin":
300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ require_project_admin(request, project)
301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ elif require == "write":
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ require_project_write(request, project)
303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ else:
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ require_project_read(request, project)
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
292 306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_repo = get_object_or_404(FossilRepository, project=project, deleted_at__isnull=True)
293 307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if not fossil_repo.exists_on_disk:
294 308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raise Http404("Repository file not found on disk")
295 309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
reader = FossilReader(fossil_repo.full_path)
296 310 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return project, fossil_repo, reader
@@ -297,14 +311,12 @@
297 311 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
298 312 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
299 313 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Code Browser ---
300 314 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
301 315 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
303 316 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def code_browser(request, slug, dirpath=""):
304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
317 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
306 318 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
307 319 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
308 320 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkin_uuid = reader.get_latest_checkin_uuid()
309 321 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
files = reader.get_files_at_checkin(checkin_uuid) if checkin_uuid else []
310 322 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
metadata = reader.get_metadata()
@@ -358,14 +370,12 @@
358 370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"active_tab": "code",
359 371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
360 372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
)
361 373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
362 374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
364 375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def code_file(request, slug, filepath):
365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
367 377 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
368 378 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
369 379 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkin_uuid = reader.get_latest_checkin_uuid()
370 380 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
files = reader.get_files_at_checkin(checkin_uuid) if checkin_uuid else []
371 381 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -434,14 +444,12 @@
434 444 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
435 445 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
436 446 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Checkin Detail ---
437 447 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
438 448 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
439 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
440 449 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def checkin_detail(request, slug, checkin_uuid):
441 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
442 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
450 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
443 451 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
444 452 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
445 453 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkin = reader.get_checkin_detail(checkin_uuid)
446 454 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if not checkin:
447 455 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raise Http404("Checkin not found")
@@ -541,14 +549,12 @@
541 549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
542 550 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
543 551 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Timeline ---
544 552 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
545 553 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
546 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
547 554 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def timeline(request, slug):
548 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
549 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
555 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
550 556 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
551 557 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
event_type = request.GET.get("type", "")
552 558 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
page = int(request.GET.get("page", "1"))
553 559 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
per_page = 50
554 560 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
offset = (page - 1) * per_page
@@ -577,14 +583,12 @@
577 583 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
578 584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
579 585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Tickets ---
580 586 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
581 587 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
582 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
583 588 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def ticket_list(request, slug):
584 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
585 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
589 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
586 590 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
587 591 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
status_filter = request.GET.get("status", "")
588 592 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
search = request.GET.get("search", "").strip()
589 593 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
page = int(request.GET.get("page", "1"))
590 594 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
per_page = int(request.GET.get("per_page", "50"))
@@ -627,14 +631,12 @@
627 631 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"active_tab": "tickets",
628 632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
629 633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
)
630 634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
631 635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
633 636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def ticket_detail(request, slug, ticket_uuid):
634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
636 638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
637 639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
638 640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ticket = reader.get_ticket_detail(ticket_uuid)
639 641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
comments = reader.get_ticket_comments(ticket_uuid) if ticket else []
640 642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -667,14 +669,12 @@
667 669 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
668 670 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
669 671 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Wiki ---
670 672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
671 673 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
672 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
673 674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def wiki_list(request, slug):
674 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
675 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
676 676 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
677 677 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
678 678 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
pages = reader.get_wiki_pages()
679 679 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
home_page = reader.get_wiki_page("Home")
680 680 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -694,14 +694,12 @@
694 694 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"active_tab": "wiki",
695 695 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
696 696 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
)
697 697 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
698 698 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
700 699 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def wiki_page(request, slug, page_name):
701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
700 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
703 701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
704 702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
705 703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
page = reader.get_wiki_page(page_name)
706 704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
all_pages = reader.get_wiki_pages()
707 705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -725,14 +723,12 @@
725 723 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
726 724 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
727 725 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Forum ---
728 726 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
729 727 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
731 728 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def forum_list(request, slug):
732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
729 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
734 730 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
735 731 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
736 732 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
posts = reader.get_forum_posts()
737 733 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
738 734 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(
@@ -745,14 +741,12 @@
745 741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"active_tab": "forum",
746 742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
},
747 743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
)
748 744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
749 745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
751 746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def forum_thread(request, slug, thread_uuid):
752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
754 748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
755 749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
756 750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
posts = reader.get_forum_thread(thread_uuid)
757 751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
758 752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if not posts:
@@ -780,12 +774,11 @@
780 774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Wiki CRUD ---
781 775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
782 776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
783 777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@login_required
784 778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def wiki_create(request, slug):
785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_CHANGE.check(request.user)
786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request, "write")
787 780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
788 781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if request.method == "POST":
789 782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
page_name = request.POST.get("name", "").strip()
790 783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
content = request.POST.get("content", "")
791 784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if page_name:
@@ -807,12 +800,11 @@
807 800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(request, "fossil/wiki_form.html", {"project": project, "active_tab": "wiki", "title": "New Wiki Page"})
808 801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
809 802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
810 803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@login_required
811 804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def wiki_edit(request, slug, page_name):
812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_CHANGE.check(request.user)
813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request, "write")
814 806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
815 807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
816 808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
page = reader.get_wiki_page(page_name)
817 809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
818 810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if not page:
@@ -842,12 +834,11 @@
842 834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Ticket CRUD ---
843 835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
844 836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
845 837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@login_required
846 838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def ticket_create(request, slug):
847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_CHANGE.check(request.user)
848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request, "write")
849 840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
850 841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if request.method == "POST":
851 842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
title = request.POST.get("title", "").strip()
852 843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
body = request.POST.get("body", "")
853 844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ticket_type = request.POST.get("type", "Code_Defect")
@@ -871,12 +862,11 @@
871 862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(request, "fossil/ticket_form.html", {"project": project, "active_tab": "tickets", "title": "New Ticket"})
872 863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
873 864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
874 865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@login_required
875 866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def ticket_edit(request, slug, ticket_uuid):
876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_CHANGE.check(request.user)
877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request, "write")
878 868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
879 869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
880 870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
ticket = reader.get_ticket_detail(ticket_uuid)
881 871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if not ticket:
882 872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
raise Http404("Ticket not found")
@@ -907,12 +897,11 @@
907 897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
)
908 898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
909 899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
910 900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@login_required
911 901 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def ticket_comment(request, slug, ticket_uuid):
912 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_CHANGE.check(request.user)
913 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
902 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request, "write")
914 903 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
915 904 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if request.method == "POST":
916 905 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
comment = request.POST.get("comment", "").strip()
917 906 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if comment:
918 907 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from fossil.cli import FossilCLI
@@ -929,14 +918,12 @@
929 918 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
930 919 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
931 920 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- User Activity ---
932 921 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
933 922 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
934 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
935 923 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def user_activity(request, slug, username):
936 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
937 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
924 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
938 925 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
939 926 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
940 927 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
activity = reader.get_user_activity(username)
941 928 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
942 929 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
import json
@@ -961,12 +948,11 @@
961 948 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
962 949 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
963 950 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@login_required
964 951 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def sync_pull(request, slug):
965 952 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"""Sync configuration and pull from upstream remote."""
966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_CHANGE.check(request.user)
967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
953 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request, "write")
968 954 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
969 955 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from fossil.cli import FossilCLI
970 956 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
971 957 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cli = FossilCLI()
972 958 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
result = None
@@ -1046,14 +1032,12 @@
1046 1032 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1047 1033 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1048 1034 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Technotes ---
1049 1035 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1050 1036 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1052 1037 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def technote_list(request, slug):
1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1038 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1055 1039 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1056 1040 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1057 1041 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
notes = reader.get_technotes()
1058 1042 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1059 1043 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(
@@ -1064,15 +1048,13 @@
1064 1048 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1065 1049 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1066 1050 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Compare Checkins ---
1067 1051 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1068 1052 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1069 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1070 1053 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def compare_checkins(request, slug):
1071 1054 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"""Compare two checkins side by side."""
1072 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1073 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1055 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1074 1056 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1075 1057 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from_uuid = request.GET.get("from", "")
1076 1058 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
to_uuid = request.GET.get("to", "")
1077 1059 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1078 1060 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from_detail = None
@@ -1145,14 +1127,12 @@
1145 1127 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1146 1128 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1147 1129 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Search ---
1148 1130 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1149 1131 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1150 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1151 1132 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def search(request, slug):
1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1133 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1154 1134 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1155 1135 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
query = request.GET.get("q", "").strip()
1156 1136 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
results = None
1157 1137 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if query:
1158 1138 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
@@ -1171,15 +1151,13 @@
1171 1151 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1172 1152 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1173 1153 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- RSS Feed ---
1174 1154 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1175 1155 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1177 1156 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def timeline_rss(request, slug):
1178 1157 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"""RSS feed of recent timeline entries."""
1179 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1180 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1158 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1181 1159 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1182 1160 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1183 1161 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
entries = reader.get_timeline(limit=30, event_type="ci")
1184 1162 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1185 1163 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from django.http import HttpResponse as DjHttpResponse
@@ -1209,15 +1187,13 @@
1209 1187 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1210 1188 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1211 1189 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- CSV Export ---
1212 1190 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1213 1191 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1215 1192 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def tickets_csv(request, slug):
1216 1193 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"""Export all tickets as CSV."""
1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1194 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1219 1195 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1220 1196 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1221 1197 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tickets = reader.get_tickets(limit=5000)
1222 1198 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1223 1199 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
import csv
@@ -1237,14 +1213,12 @@
1237 1213 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1238 1214 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1239 1215 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- File History ---
1240 1216 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1241 1217 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1243 1218 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def file_history(request, slug, filepath):
1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1219 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1246 1220 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1247 1221 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1248 1222 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
history = reader.get_file_history(filepath)
1249 1223 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1250 1224 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(
@@ -1260,14 +1234,12 @@
1260 1234 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1261 1235 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1262 1236 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Branches ---
1263 1237 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1264 1238 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1266 1239 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def branch_list(request, slug):
1267 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1268 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1240 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1269 1241 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1270 1242 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1271 1243 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
branches = reader.get_branches()
1272 1244 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1273 1245 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(
@@ -1283,14 +1255,12 @@
1283 1255 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1284 1256 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1285 1257 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Tags ---
1286 1258 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1287 1259 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1288 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1289 1260 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def tag_list(request, slug):
1290 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1291 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1261 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1292 1262 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1293 1263 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1294 1264 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
tags = reader.get_tags()
1295 1265 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1296 1266 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(
@@ -1303,12 +1273,11 @@
1303 1273 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Raw File Download ---
1304 1274 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1305 1275 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1306 1276 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@login_required
1307 1277 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def code_raw(request, slug, filepath):
1308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1278 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1310 1279 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1311 1280 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1312 1281 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkin_uuid = reader.get_latest_checkin_uuid()
1313 1282 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
files = reader.get_files_at_checkin(checkin_uuid) if checkin_uuid else []
1314 1283 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
target = None
@@ -1329,14 +1298,12 @@
1329 1298 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1330 1299 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1331 1300 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- File Blame ---
1332 1301 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1333 1302 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1335 1303 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def code_blame(request, slug, filepath):
1336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1304 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1338 1305 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1339 1306 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
from fossil.cli import FossilCLI
1340 1307 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1341 1308 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cli = FossilCLI()
1342 1309 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
blame_lines = []
@@ -1361,14 +1328,12 @@
1361 1328 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1362 1329 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1363 1330 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Repository Statistics ---
1364 1331 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1365 1332 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1367 1333 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def repo_stats(request, slug):
1368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1334 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1370 1335 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1371 1336 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1372 1337 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
stats = reader.get_repo_statistics()
1373 1338 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
top_contributors = reader.get_top_contributors(limit=15)
1374 1339 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
activity = reader.get_commit_activity(weeks=52)
@@ -1391,23 +1356,19 @@
1391 1356 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
# --- Fossil Docs ---
1392 1357 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1393 1358 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
FOSSIL_SCM_SLUG = "fossil-scm"
1394 1359 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1395 1360 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1396 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1397 1361 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def fossil_docs(request, slug):
1398 1362 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"""Curated Fossil documentation index page."""
1399 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1400 1363 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
project = get_object_or_404(Project, slug=slug, deleted_at__isnull=True)
1401 1364 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return render(request, "fossil/docs_index.html", {"project": project, "fossil_scm_slug": slug, "active_tab": "wiki"})
1402 1365 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1403 1366 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1404 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @login_required
1405 1367 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
def fossil_doc_page(request, slug, doc_path):
1406 1368 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
"""Render a documentation file from the Fossil repo source tree."""
1407 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- P.PROJECT_VIEW.check(request.user)
1408 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- project, fossil_repo, reader = _get_repo_and_reader(slug)
1369 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ project, fossil_repo, reader = _get_repo_and_reader(slug, request)
1409 1370 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1410 1371 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
with reader:
1411 1372 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
checkin_uuid = reader.get_latest_checkin_uuid()
1412 1373 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
files = reader.get_files_at_checkin(checkin_uuid) if checkin_uuid else []
1413 1374 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1414 1375 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1415 1376 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
A DDED projects/access.py