Skip to content

Commit e338a00

Browse files
committed
WIP Starlark rules
1 parent 2ba5454 commit e338a00

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+2146
-664
lines changed

course/analytics.py

Lines changed: 4 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535
from django.utils.translation import gettext as _, pgettext
3636
from pytools import not_none
3737

38-
from course.constants import FlowPermission, ParticipationPermission as PPerm
39-
from course.content import FlowDesc, get_flow_desc
38+
from course.constants import ParticipationPermission as PPerm
39+
from course.content import get_flow_desc
4040
from course.models import FlowPageVisit, FlowSession
4141
from course.utils import (
4242
CoursePageContext,
@@ -49,7 +49,6 @@
4949
if TYPE_CHECKING:
5050
from collections.abc import Callable
5151

52-
from course.page.base import PageBase
5352
from course.utils import CoursePageContext
5453

5554

@@ -235,29 +234,6 @@ def html(self):
235234
# }}}
236235

237236

238-
def is_flow_multiple_submit(flow_desc: FlowDesc):
239-
return any(FlowPermission.change_answer in rule.permissions
240-
for rule in flow_desc.rules.access)
241-
242-
243-
def is_page_multiple_submit(flow_desc: FlowDesc, page: PageBase):
244-
result = is_flow_multiple_submit(flow_desc)
245-
246-
page_rules = page.access_rules
247-
if page_rules is None:
248-
return result
249-
250-
if result:
251-
if FlowPermission.change_answer in page_rules.remove_permissions:
252-
result = False
253-
254-
else:
255-
if FlowPermission.change_answer in page_rules.add_permissions:
256-
result = True
257-
258-
return result
259-
260-
261237
# {{{ flow analytics
262238

263239
def make_grade_histogram(pctx: CoursePageContext, flow_id: str):
@@ -370,7 +346,7 @@ def make_page_answer_stats_list(
370346
.distinct("flow_session__participation__id")
371347
.order_by("flow_session__participation__id",
372348
"visit_time"))
373-
elif is_page_multiple_submit(flow_desc, page_desc):
349+
else:
374350
visits = (visits
375351
.distinct("page_data__id")
376352
.order_by("page_data__id", "-visit_time"))
@@ -528,9 +504,6 @@ def page_analytics(pctx: CoursePageContext, flow_id: str, group_id: str, page_id
528504
if not pctx.has_permission(PPerm.view_analytics):
529505
raise PermissionDenied(_("may not view analytics"))
530506

531-
flow_desc = get_flow_desc(pctx.repo, pctx.course, flow_id,
532-
pctx.course_commit_sha)
533-
534507
restrict_to_first_attempt = int(
535508
bool(pctx.request.GET.get("restrict_to_first_attempt") == "1"))
536509

@@ -549,13 +522,11 @@ def page_analytics(pctx: CoursePageContext, flow_id: str, group_id: str, page_id
549522

550523
if connection.features.can_distinct_on_fields:
551524

552-
is_multiple_submit = is_flow_multiple_submit(flow_desc)
553-
554525
if restrict_to_first_attempt:
555526
visits = (visits
556527
.distinct("flow_session__participation__id")
557528
.order_by("flow_session__participation__id", "visit_time"))
558-
elif is_multiple_submit:
529+
else:
559530
visits = (visits
560531
.distinct("page_data__id")
561532
.order_by("page_data__id", "-visit_time"))

course/constants.py

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,8 @@
2525

2626

2727
from enum import StrEnum
28-
from typing import TYPE_CHECKING
2928

30-
from django.utils.translation import gettext, pgettext_lazy
31-
32-
33-
if TYPE_CHECKING:
34-
from collections.abc import Set
29+
from django.utils.translation import pgettext_lazy
3530

3631

3732
# Allow 10x extra credit at the very most.
@@ -304,20 +299,6 @@ class FlowSessionExpirationMode(StrEnum):
304299
)
305300

306301

307-
def is_expiration_mode_allowed(
308-
expmode: str, permissions: Set[FlowPermission]
309-
) -> bool:
310-
if expmode == FlowSessionExpirationMode.roll_over:
311-
if (FlowPermission.set_roll_over_expiration_mode
312-
in permissions):
313-
return True
314-
elif expmode == FlowSessionExpirationMode.end:
315-
return True
316-
else:
317-
raise ValueError(gettext("unknown expiration mode"))
318-
319-
return False
320-
321302
# }}}
322303

323304

0 commit comments

Comments
 (0)