1 {% extends "base.html" %}
8 <h2 class="mb-4">Approval Queue</h2>
11 {% if canApproveNew and (packages or wip_packages) %}
12 <div class="col-sm-6">
14 <h3 class="card-header">Packages</h3>
15 <div class="list-group list-group-flush">
16 {% for p in packages %}
17 <a href="{{ p.getDetailsURL() }}" class="list-group-item list-group-item-action">
18 {% if "Other" in p.license.name or "Other" in p.media_license.name %}
19 <span class="mr-2 badge badge-info">License</span>
21 <span class="mr-2 badge badge-success">Ready</span>
24 {{ p.title }} by {{ p.author.display_name }}
27 <li class="list-group-item"><i>No packages need reviewing.</i></li>
32 <div class="card mt-5">
33 <h3 class="card-header">WIP Packages</h3>
34 <div class="list-group list-group-flush">
35 {% for p in wip_packages %}
36 <a href="{{ p.getDetailsURL() }}" class="list-group-item list-group-item-action">
37 {% if p.state == p.state.WIP %}
38 <span class="mr-2 badge badge-warning">WIP</span>
40 <span class="mr-2 badge badge-danger">{{ p.state.value }}</span>
43 {{ p.title }} by {{ p.author.display_name }}
46 <li class="list-group-item"><i>No packages need reviewing.</i></li>
53 {% if canApproveRel and releases %}
54 <div class="col-sm-6">
56 <h3 class="card-header">Releases</h3>
57 <ul class="list-group list-group-flush">
58 {% for r in releases %}
59 <li class="list-group-item">
61 <span class="mr-2 badge badge-warning">Importing</span>
63 <a href="{{ r.getEditURL() }}">{{ r.title }}</a>
65 <a href="{{ r.package.getDetailsURL() }}">
66 {{ r.package.title }} by {{ r.package.author.display_name }}
70 <li class="list-group-item"><i>No releases need reviewing.</i></li>
78 {% if canApproveScn and screenshots %}
79 <div class="card my-4">
80 <h3 class="card-header">Screenshots
81 <form class="float-right" method="post" action="{{ url_for('todo.view') }}">
82 <input type="hidden" name="csrf_token" value="{{ csrf_token() }}" />
83 <input type="hidden" name="action" value="screenshots_approve_all" />
84 <input class="btn btn-sm btn-primary" type="submit" value="Approve All" />
87 <ul class="card-body d-flex p-0 flex-row flex-wrap justify-content-start align-content-start p-4">
88 {% for s in screenshots %}
89 <li class="packagetile flex-fill"><a href="{{ s.getEditURL() }}"
90 style="background-image: url({{ s.getThumbnailURL(3) or '/static/placeholder.png' }});">
91 <div class="packagegridscrub"></div>
92 <div class="packagegridinfo">
96 <small>{{ s.package.title }} by {{ s.package.author.display_name }}</small>
102 <li><i>No screenshots need reviewing.</i></li>
104 {% for i in range(4) %}
105 <li class="packagetile flex-fill"></li>
111 {% if not (packages or screenshots or releases) %}
118 <h2 class="mt-5">Tag Packages</h2>
121 {{ total_to_tag }} / {{ total_packages }} packages don't have any tags.
124 <div class="progress my-4">
125 {% set perc = 100 * (total_packages - total_to_tag) / total_packages %}
126 <div class="progress-bar bg-success" role="progressbar"
127 style="width: {{ perc }}%" aria-valuenow="{{ perc }}" aria-valuemin="0" aria-valuemax="100"></div>
130 <a class="btn btn-primary" href="{{ url_for('todo.tags') }}">View Tags</a>
133 {% if unfulfilled_meta_packages %}
135 <span class="fas fa-exclamation-triangle pr-2" style="color: orange;"></span>
136 {{ unfulfilled_meta_packages }} Unfulfilled Dependencies
140 Meta packages that have hard dependers, but are not fulfilled.
143 <a class="btn btn-primary" href="{{ url_for('todo.metapackages') }}">View</a>
147 <h2 class="mt-5">Unadded Topic List</h2>
149 {% if total_topics > 0 %}
151 {{ total_topics - topics_to_add }} / {{ total_topics }} packages have been been added to cdb,
152 based on cdb's forum parser. {{ topics_to_add }} remaining.
155 <div class="progress my-4">
156 {% set perc = 100 * (total_topics - topics_to_add) / total_topics %}
157 <div class="progress-bar bg-success" role="progressbar"
158 style="width: {{ perc }}%" aria-valuenow="{{ perc }}" aria-valuemin="0" aria-valuemax="100"></div>
161 <a class="btn btn-primary" href="{{ url_for('todo.topics') }}">View Unadded Topic List</a>
164 The forum topic crawler needs to run at least once for this section to work.