!UNSTABLE 优化数据库结构,为domain功能准备

This commit is contained in:
masnn committed 2020-05-29 13:05:52 +08:00
1 parent 7d27e56018
commit fff2172c38
40 files changed
+1411 -1012

No files matched your search

+1 -1
View File
@@ -2,7 +2,7 @@
{%- if not invalid %}
<a
{%- if tdoc %}
href="/c/{{ tdoc._id }}/p/{{ pdoc._id }}"
href="/c/{{ tdoc.docId }}/p/{{ pdoc.docId }}"
{%- else %}
href="/p/{{ pdoc.pid }}"
{%- endif %}
+4 -4
View File
@@ -32,9 +32,9 @@
</div>
<div class="media__right middle">
<div class="section__body">
<a href="/c/{{ tdoc._id }}" class="detail-button">{{ _('View Details') }}</a>
<a href="/c/{{ tdoc.docId }}" class="detail-button">{{ _('View Details') }}</a>
<div class="typo text-center">
{% if tsdict[tdoc._id].attend %}
{% if tsdict[tdoc.docId].attend %}
<p><span class="icon icon-check"></span> {{ _('Attended') }}</p>
{% else %}
<p><span class="icon icon-schedule"></span> {{ _('Not Attended') }}</p>
@@ -88,7 +88,7 @@
</div>
</div>
<div class="media__body medium">
<h1 class="contest__title"><a href="/c/{{ tdoc._id }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<h1 class="contest__title"><a href="/c/{{ tdoc.docId }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<ul class="supplementary list">
<li>
<a href="?rule={{ tdoc['rule'] }}" class="contest-type-tag"><span class="icon icon-award"></span>{{ model.contest.RULES[tdoc.rule].TEXT }}</a>
@@ -99,7 +99,7 @@
<li>
<span class="icon icon-user--multiple"></span> {{ tdoc['attend']|default(0) }}
</li>
{% if tsdict[tdoc._id]['attend'] == 1 %}
{% if tsdict[tdoc.docId]['attend'] == 1 %}
<li class="contest__info-attended">
<span class="icon icon-check"></span> {{ _('Attended') }}
</li>
+3 -3
View File
@@ -4,10 +4,10 @@
<div class="row"><div class="medium-12 columns">
<div class="section visible">
<div class="section__header">
<a class="button" target="_blank" href="/c/{{ tdoc._id }}/export/html">
<a class="button" target="_blank" href="/c/{{ tdoc.docId }}/export/html">
<span class="icon icon-download"></span> {{ _('Export as HTML') }}
</a>
<a class="button" href="/c/{{ tdoc._id }}/export/csv">
<a class="button" href="/c/{{ tdoc.docId }}/export/csv">
<span class="icon icon-download"></span> {{ _('Export as CSV') }}
</a>
</div>
@@ -23,7 +23,7 @@
{%- for column in rows[0] -%}
<th class="col--{{ column['type'] }}">
{% if column.type == 'problem_detail' %}
<a href="/c/{{ tdoc._id }}/p/{{ column.raw._id }}" data-tooltip="{{ column['raw']['title'] }}">{{ column['value'] }}</a>
<a href="/c/{{ tdoc.docId }}/p/{{ column.raw._id }}" data-tooltip="{{ column['raw']['title'] }}">{{ column['value'] }}</a>
{% else %}
{{ column.value }}
{% endif %}
+6 -6
View File
@@ -32,7 +32,7 @@
</div>
</div>
<div class="media__body medium">
<h1 class="contest__title"><a href="/c/{{ tdoc._id }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<h1 class="contest__title"><a href="/c/{{ tdoc.docId }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<ul class="supplementary list">
<li>
<a href="/c?rule={{ tdoc['rule'] }}" class="contest-type-tag"><span class="icon icon-award"></span>{{ model.contest.RULES[tdoc.rule].TEXT }}</a>
@@ -43,7 +43,7 @@
<li>
<span class="icon icon-user--multiple"></span> {{ tdoc['attend']|default(0) }}
</li>
{% if tsdict[tdoc._id]['attend'] == 1 %}
{% if tsdict[tdoc.docId]['attend'] == 1 %}
<li class="contest__info-attended">
<span class="icon icon-check"></span> {{ _('Attended') }}
</li>
@@ -74,7 +74,7 @@
</div>
</div>
<div class="media__body middle">
<h1 class="training__title"><a href="/t/{{ tdoc._id }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<h1 class="training__title"><a href="/t/{{ tdoc.docId }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<div class="training__intro typo">
<p>{{ tdoc['content'] }}</p>
</div>
@@ -83,10 +83,10 @@
<span class="icon icon-flag text-blue"></span> {{ _('{0} sections').format(tdoc['dag']|length) }}, {{ _('{0} problems').format(model.training.getPids(tdoc)|length) }}
</li>
<li>
{% if tsdict[tdoc._id]['enroll'] %}
{% if not tsdict[tdoc._id]['done'] %}
{% if tsdict[tdoc.docId]['enroll'] %}
{% if not tsdict[tdoc.docId]['done'] %}
<span class="icon training-status--icon progress"></span>
<span class="training-status--text progress">{{ _('Completed') }} {{ (100 * tsdict[tdoc._id]['donePids']|length / model.training.getPids(tdoc)|length)|round|int }}%</span>
<span class="training-status--text progress">{{ _('Completed') }} {{ (100 * tsdict[tdoc.docId]['donePids']|length / model.training.getPids(tdoc)|length)|round|int }}%</span>
{% else %}
<span class="icon training-status--icon done"></span>
<span class="training-status--text done">{{ _('Completed') }} 100%</span>
+8 -8
View File
@@ -2,7 +2,7 @@
{% import "components/contest.html" as contest with context %}
<div class="section side">
{% if page_name != 'contest_detail' %}
<a class="contest-sidebar__bg" href="/c/{{ tdoc._id }}">
<a class="contest-sidebar__bg" href="/c/{{ tdoc.docId }}">
<div class="section__body">
<h1>{{ tdoc.title }}</h1>
<div class="contest-sidebar__status">
@@ -18,14 +18,14 @@
<div>
<ol class="menu">
{% if page_name != 'contest_detail' %}
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc._id }}">
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc.docId }}">
<span class="icon icon-award"></span> {{ _('View Contest') }}
</a></li>
{% endif %}
{% if not attended and not model.contest.isDone(tdoc) %}
<li class="menu__item">
{% if handler.hasPerm(perm.PERM_ATTEND_CONTEST) and handler.hasPerm(perm.PERM_LOGGEDIN) %}
<form action="/c/{{ tdoc._id }}" method="POST">
<form action="/c/{{ tdoc.docId }}" method="POST">
<input type="hidden" name="operation" value="attend">
<input type="hidden" name="csrfToken" value="{{ handler.csrfToken }}">
<button class="menu__link" type="submit">
@@ -44,25 +44,25 @@
</li>
{% endif %}
{% if handler.canShowScoreboard(tdoc, False) %}
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc._id }}/scoreboard">
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc.docId }}/scoreboard">
<span class="icon icon-statistics"></span> {{ _('Scoreboard') }}
</a></li>
{% elif handler.canViewHiddenScoreboard(tdoc) %}
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc._id }}/scoreboard">
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc.docId }}/scoreboard">
<span class="icon icon-statistics"></span> {{ _('Scoreboard (Hidden)') }}
</a></li>
{% endif %}
{% if user._id == tdoc.owner or handler.hasPerm(perm.PERM_EDIT_CONTEST) %}
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc._id }}/edit">
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc.docId }}/edit">
<span class="icon icon-edit"></span> {{ _('Edit Contest') }}
</a></li>
{% endif %}
{% if handler.hasPerm(perm.PERM_READ_RECORD_CODE) %}
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc._id }}/code">
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc.docId }}/code">
<span class="icon icon-download"></span> {{ _('Export All Code') }}
</a></li>
{% endif %}
<li class="menu__item"><a class="menu__link" href="/r?tid={{ tdoc._id }}">
<li class="menu__item"><a class="menu__link" href="/r?tid={{ tdoc.docId }}">
<span class="icon icon-flag"></span> {{ _('All Submissions') }}
</a></li>
<li class="menu__item"><a class="menu__link" href="/wiki/help#contest">
@@ -16,11 +16,11 @@
<span class="icon icon-enlarge"></span> {{ _('Quit Scratchpad') }} (Alt+Q)
</a></li>
{% else %}
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc._id }}/p/{{ pdoc._id }}">
<li class="menu__item"><a class="menu__link" href="/c/{{ tdoc.docId }}/p/{{ pdoc.docId }}">
<span class="icon icon-flag"></span> {{ _('View Problem') }}
</a></li>
{% endif %}
<li class="menu__item scratchpad--hide"><a class="menu__link{% if page_name == 'contest_detail_problem_submit' %} active{% endif %}" href="/c/{{ tdoc._id }}/p/{{ pdoc._id }}/submit">
<li class="menu__item scratchpad--hide"><a class="menu__link{% if page_name == 'contest_detail_problem_submit' %} active{% endif %}" href="/c/{{ tdoc.docId }}/p/{{ pdoc.docId }}/submit">
<span class="icon icon-send"></span> {{ _('Submit') }}
</a></li>
{% elif model.contest.isDone(tdoc) %}
@@ -10,7 +10,7 @@
<ol class="menu">
{% if page_name == 'discussion_node' or page_name == 'discussion_detail' %}
{% if handler.hasPerm(perm.PERM_CREATE_DISCUSSION) %}
<li class="menu__item"><a class="menu__link highlight" href="/discuss/problem/{{ pdoc._id }}/create">
<li class="menu__item"><a class="menu__link highlight" href="/discuss/problem/{{ pdoc.docId }}/create">
<span class="icon icon-add"></span> {{ _('Create a Discussion') }}
</a></li>
{% else %}
@@ -55,7 +55,7 @@
<li class="menu__seperator"></li>
{% endif %}
{% if handler.hasPerm(perm.PERM_VIEW_DISCUSSION) %}
<li class="menu__item"><a class="menu__link{% if page_name == 'discussion_node' or page_name == 'discussion_detail' %} active{% endif %}" href="/discuss/problem/{{ pdoc._id }}">
<li class="menu__item"><a class="menu__link{% if page_name == 'discussion_node' or page_name == 'discussion_detail' %} active{% endif %}" href="/discuss/problem/{{ pdoc.docId }}">
<span class="icon icon-comment--text"></span> {{ _('Discussions') }}
</a></li>
{% endif %}
@@ -84,7 +84,7 @@
<div class="section__body typo">
<dl class="large horizontal">
<dt>{{ _('ID') }}</dt>
<dd>{{ pdoc['pid'] }}</dd>
<dd>{{ pdoc.docId }}</dd>
{% if page_name != 'discussion_node' and page_name != 'discussion_detail' %}
{% if handler.hasPerm(perm.PERM_LOGGEDIN) %}
<dt>{{ _('Submission') }}</dt>
@@ -125,11 +125,11 @@
{{ problem.render_problem_tags(pdoc, true) }}
</dd>
<dt>{{ _('# Submissions') }}</dt>
<dd><a href="/r?pid={{ pdoc['_id'] }}">{{ pdoc.nSubmit }}</a></dd>
<dd><a href="/r?pid={{ pdoc.docId }}">{{ pdoc.nSubmit }}</a></dd>
{% if page_name != 'discussion_node' and page_name != 'discussion_detail' %}
{% if handler.hasPerm(perm.PERM_LOGGEDIN) %}
<dt>{{ _('# My Submissions') }}</dt>
<dd><a href="/r?pid={{ pdoc['_id'] }}&uid_or_name={{ handler.user['_id'] }}">{{ pdoc['psdoc'].nSubmit|default(0) }}</a></dd>
<dd><a href="/r?pid={{ pdoc.docId }}&uid_or_name={{ handler.user['_id'] }}">{{ pdoc['psdoc'].nSubmit|default(0) }}</a></dd>
{% endif %}
{% endif %}
<dt>{{ _('Accepted') }}</dt>
@@ -150,13 +150,13 @@
{% if tdocs %}
<p>{{ _('In following training plans') }}: </p>
{% for tdoc in tdocs %}
<p><a href="/t/{{ tdoc._id }}">{{ tdoc.title }}</a></p>
<p><a href="/t/{{ tdoc.docId }}">{{ tdoc.title }}</a></p>
{% endfor %}
{% endif %}
{% if ctdocs %}
<p>{{ _('In following contests') }}: </p>
{% for tdoc in ctdocs %}
<p><a href="/c/{{ tdoc._id }}">{{ tdoc.title }}</a></p>
<p><a href="/c/{{ tdoc.docId }}">{{ tdoc.title }}</a></p>
{% endfor %}
{% endif %}
</div>
+1 -1
View File
@@ -66,7 +66,7 @@
{% if tdoc %}
<dt>{{ _('Contest') }}</dt>
<dd>
<a href="/c/{{ tdoc._id }}">{{ tdoc.title }}</a>
<a href="/c/{{ tdoc.docId }}">{{ tdoc.title }}</a>
</dd>
{% endif %}
{% if pdoc and (user._id == pdoc.owner or handler.hasPerm(perm.PERM_READ_PROBLEM_DATA)) %}
+1 -1
View File
@@ -175,7 +175,7 @@
</li>
{% endif %}
{% if tdoc.owner == user._id or handler.hasPerm(perm.PERM_EDIT_TRAINING) %}
<li class="menu__item"><a class="menu__link" href="/t/{{ tdoc._id }}/edit">
<li class="menu__item"><a class="menu__link" href="/t/{{ tdoc.docId }}/edit">
<span class="icon icon-edit"></span> {{ _('Edit') }}
</a></li>
{% endif %}
+4 -4
View File
@@ -21,7 +21,7 @@
</div>
</div>
<div class="media__body middle">
<h1 class="training__title"><a href="/t/{{ tdoc._id }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<h1 class="training__title"><a href="/t/{{ tdoc.docId }}" data-emoji-enabled>{{ tdoc.title }}</a></h1>
<div class="training__intro typo">
<p>{{ tdoc['content'] }}</p>
</div>
@@ -30,10 +30,10 @@
<span class="icon icon-flag text-blue"></span> {{ _('{0} sections').format(tdoc['dag']|length) }}, {{ _('{0} problems').format(model.training.getPids(tdoc)|length) }}
</li>
<li>
{% if tsdict[tdoc._id]['enroll'] %}
{% if not tsdict[tdoc._id]['done'] %}
{% if tsdict[tdoc.docId]['enroll'] %}
{% if not tsdict[tdoc.docId]['done'] %}
<span class="icon training-status--icon progress"></span>
<span class="training-status--text progress">{{ _('Completed') }} {{ (100 * tsdict[tdoc._id]['done_pids']|length / model.training.getPids(tdoc)|length)|round|int }}%</span>
<span class="training-status--text progress">{{ _('Completed') }} {{ (100 * tsdict[tdoc.docId]['done_pids']|length / model.training.getPids(tdoc)|length)|round|int }}%</span>
{% else %}
<span class="icon training-status--icon done"></span>
<span class="training-status--text done">{{ _('Completed') }} 100%</span>