euscanwww: category, categories and package views
Signed-off-by: Corentin Chary <corentincj@iksaif.net>
This commit is contained in:
parent
25964491dd
commit
2dee08dfb7
@ -138,7 +138,7 @@ class Command(BaseCommand):
|
||||
sys.stdout.write('[u] %s/%s-%s %s\n' % (package.category, package.name,
|
||||
ver, url))
|
||||
|
||||
obj.url = url
|
||||
obj.urls = url
|
||||
obj.packaged = False
|
||||
obj.save()
|
||||
|
||||
|
8
euscanwww/euscan/templatetags/mul.py
Normal file
8
euscanwww/euscan/templatetags/mul.py
Normal file
@ -0,0 +1,8 @@
|
||||
from django import template
|
||||
|
||||
register = template.Library()
|
||||
|
||||
def mul(value, arg=None):
|
||||
return value*arg
|
||||
|
||||
register.filter('mul', mul)
|
@ -4,10 +4,10 @@ urlpatterns = patterns('euscan.views',
|
||||
(r'^$', 'index'),
|
||||
(r'^logs/$', 'logs'),
|
||||
(r'^categories/$', 'categories'),
|
||||
(r'^category/(?P<category>\w+)/packages/$', 'category'),
|
||||
(r'^category/(?P<category>[\w+][\w+.-]*)/packages/$', 'category'),
|
||||
(r'^herds/$', 'herds'),
|
||||
(r'^herd/(?P<herd>\w+)/packages/$', 'herd'),
|
||||
(r'^herd/(?P<herd>[\w+][\w+.-]*)/packages/$', 'herd'),
|
||||
(r'^maintainers/$', 'maintainers'),
|
||||
(r'^maintainer/(?P<maintainer_id>\d+)/packages/$', 'maintainer'),
|
||||
(r'^package/(?P<category>\w+)/(?P<package>\w+)/$', 'package'),
|
||||
(r'^package/(?P<category>[\w+][\w+.-]*)/(?P<package>[\w+][\w+.-]*)/$', 'package'),
|
||||
)
|
||||
|
Binary file not shown.
@ -1,5 +1,6 @@
|
||||
from annoying.decorators import render_to
|
||||
from django.http import Http404
|
||||
from django.shortcuts import get_object_or_404
|
||||
from django.db.models import Sum, Max
|
||||
|
||||
from euscan.models import Version, Package, Herd, Maintainer, EuscanResult
|
||||
@ -9,6 +10,7 @@ def index(request):
|
||||
ctx = {}
|
||||
ctx['n_packaged'] = Package.objects.aggregate(Sum('n_packaged'))['n_packaged__sum']
|
||||
ctx['n_versions'] = Package.objects.aggregate(Sum('n_versions'))['n_versions__sum']
|
||||
if ctx['n_versions'] is not None and ctx['n_pacaged'] is not None:
|
||||
ctx['n_upstream'] = ctx['n_versions'] - ctx['n_packaged']
|
||||
ctx['n_packages'] = Package.objects.count()
|
||||
ctx['n_herds'] = Herd.objects.count()
|
||||
@ -27,7 +29,10 @@ def categories(request):
|
||||
|
||||
@render_to('euscan/category.html')
|
||||
def category(request, category):
|
||||
return {}
|
||||
packages = Package.objects.filter(category=category)
|
||||
if not packages:
|
||||
raise Http404
|
||||
return { 'category' : category, 'packages' : packages }
|
||||
|
||||
@render_to('euscan/herds.html')
|
||||
def herds(request):
|
||||
@ -47,4 +52,7 @@ def maintainer(request, maintainer_id):
|
||||
|
||||
@render_to('euscan/package.html')
|
||||
def package(request, category, package):
|
||||
return {}
|
||||
package = get_object_or_404(Package, category=category, name=package)
|
||||
packaged = Version.objects.filter(package=package, packaged=True)
|
||||
upstream = Version.objects.filter(package=package, packaged=False)
|
||||
return { 'package' : package, 'packaged' : packaged, 'upstream' : upstream }
|
||||
|
Binary file not shown.
@ -137,43 +137,6 @@ dd {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
table {
|
||||
border:3px solid #55534E;
|
||||
border-collapse:collapse;
|
||||
width:90%;
|
||||
margin:auto;
|
||||
}
|
||||
|
||||
thead, tfoot {
|
||||
border:1px solid #55534E;
|
||||
}
|
||||
|
||||
tbody {
|
||||
background-color:#FFFFFF;
|
||||
border:1px solid #55534E;
|
||||
}
|
||||
tbody tr.even {
|
||||
background-color: #eee;
|
||||
}
|
||||
tbody tr.odd {
|
||||
background-color: #fff;
|
||||
}
|
||||
tbody tr:hover {
|
||||
background: #DFD9CD;
|
||||
}
|
||||
|
||||
|
||||
th {
|
||||
border:1px dotted #55534E;
|
||||
padding:5px;
|
||||
background-color: #DFD9CD;
|
||||
}
|
||||
|
||||
td {
|
||||
border:1px solid #55534E;
|
||||
padding:5px;
|
||||
text-align:left;
|
||||
}
|
||||
|
||||
h1 {
|
||||
width: 20em;
|
||||
@ -184,9 +147,11 @@ h1 {
|
||||
.ok {
|
||||
color:#15B100;
|
||||
}
|
||||
|
||||
.bad {
|
||||
color:#FFFFFF;
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
margin: 0.3em 1em 0.3em 1em;
|
||||
|
@ -463,43 +463,43 @@ tr.even.gradeU td.sorting_3 {
|
||||
/*
|
||||
* Row highlighting example
|
||||
*/
|
||||
.ex_highlight #example tbody tr.even:hover, #example tbody tr.even td.highlighted {
|
||||
tbody tr.even:hover, #example tbody tr.even td.highlighted {
|
||||
background-color: #ECFFB3;
|
||||
}
|
||||
|
||||
.ex_highlight #example tbody tr.odd:hover, #example tbody tr.odd td.highlighted {
|
||||
tbody tr.odd:hover, #example tbody tr.odd td.highlighted {
|
||||
background-color: #E6FF99;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.even:hover {
|
||||
tr.even:hover {
|
||||
background-color: #ECFFB3;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.even:hover td.sorting_1 {
|
||||
tr.even:hover td.sorting_1 {
|
||||
background-color: #DDFF75;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.even:hover td.sorting_2 {
|
||||
tr.even:hover td.sorting_2 {
|
||||
background-color: #E7FF9E;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.even:hover td.sorting_3 {
|
||||
tr.even:hover td.sorting_3 {
|
||||
background-color: #E2FF89;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.odd:hover {
|
||||
tr.odd:hover {
|
||||
background-color: #E6FF99;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.odd:hover td.sorting_1 {
|
||||
tr.odd:hover td.sorting_1 {
|
||||
background-color: #D6FF5C;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.odd:hover td.sorting_2 {
|
||||
tr.odd:hover td.sorting_2 {
|
||||
background-color: #E0FF84;
|
||||
}
|
||||
|
||||
.ex_highlight_row #example tr.odd:hover td.sorting_3 {
|
||||
tr.odd:hover td.sorting_3 {
|
||||
background-color: #DBFF70;
|
||||
}
|
||||
|
||||
|
@ -15,14 +15,15 @@
|
||||
</div>
|
||||
<div id="content">
|
||||
{% block content %}{% endblock %}
|
||||
</div>
|
||||
<div id="menus">
|
||||
{% block menus %}
|
||||
<div id="menu">
|
||||
<ul>
|
||||
{% block menu %}
|
||||
<li><a href="categories/">Categories</a></li>
|
||||
<li><a href="herds/">Herds</a></li>
|
||||
<li><a href="maintainers/">Maintainers</a></li>
|
||||
<li><a href="/categories/">Categories</a></li>
|
||||
<li><a href="/herds/">Herds</a></li>
|
||||
<li><a href="/maintainers/">Maintainers</a></li>
|
||||
{% endblock %}
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -1,8 +1,9 @@
|
||||
?xml version="1.0" encoding="utf8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
|
||||
<?xml version="1.0" encoding="utf8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
|
||||
<head>
|
||||
<title>{% block title %}euscan{% endblock %}</title>
|
||||
<meta http-equiv="Content-Type" content="text/html" charset="utf-8" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset="utf-8" />
|
||||
{% block css %}
|
||||
<link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}img/style.css" media="screen" title="Normal" />
|
||||
{% endblock %}
|
||||
@ -14,7 +15,9 @@
|
||||
{% block header %}<h1>euscan</h1>{% endblock %}
|
||||
</div>
|
||||
<div id="content">
|
||||
{% block content %}{% endblock %}
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
<div id="menus">
|
||||
{% block menus %}
|
||||
<div id="menu">
|
||||
|
@ -1,21 +1,34 @@
|
||||
{% extends "euscan/_datatable.html" %}
|
||||
|
||||
{% load sub %}
|
||||
{% load mul %}
|
||||
|
||||
{% block title %}
|
||||
{{ block.super }} - categories
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Categories</h2>
|
||||
<table id="table">
|
||||
<table id="table" class="display">
|
||||
<thead>
|
||||
<th>Category</th>
|
||||
<th>Ebuilds</th>
|
||||
<th>Unpackaged</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for category in categories %}
|
||||
<tr>
|
||||
<td>{{ category.category }}</td>
|
||||
{% if category.n_versions == category.n_packaged %}
|
||||
<tr class="gradeA">
|
||||
{% else %}{% if category.n_versions < category.n_packaged|mul:2 %}
|
||||
<tr class="gradeC">
|
||||
{% else %}
|
||||
<tr class="gradeX">
|
||||
{% endif %}{% endif %}
|
||||
<td><a href="{% url euscan.views.category category.category %}">{{ category.category }}</a></td>
|
||||
<td>{{ category.n_packaged }}</td>
|
||||
<td>{{ category.n_versions|sub:category.n_packaged }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
||||
|
38
euscanwww/templates/euscan/category.html
Normal file
38
euscanwww/templates/euscan/category.html
Normal file
@ -0,0 +1,38 @@
|
||||
{% extends "euscan/_datatable.html" %}
|
||||
|
||||
{% load sub %}
|
||||
{% load mul %}
|
||||
|
||||
{% block title %}
|
||||
{{ block.super }} - {{ category }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>Category: {{ category }}</h2>
|
||||
<table id="table" class="display">
|
||||
<thead>
|
||||
<th>Package</th>
|
||||
<th>Ebuilds</th>
|
||||
<th>Unpackaged</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for package in packages %}
|
||||
{% if package.n_versions == package.n_packaged %}
|
||||
<tr class="gradeA">
|
||||
{% else %}{% if package.n_versions < package.n_packaged|mul:2 %}
|
||||
<tr class="gradeC">
|
||||
{% else %}
|
||||
<tr class="gradeX">
|
||||
{% endif %}{% endif %}
|
||||
<td>
|
||||
<a href="{% url euscan.views.package package.category package.name %}">
|
||||
{{ package.category }}/{{ package.name }}
|
||||
</a>
|
||||
</td>
|
||||
<td>{{ package.n_packaged }}</td>
|
||||
<td>{{ package.n_versions|sub:package.n_packaged }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% endblock %}
|
73
euscanwww/templates/euscan/package.html
Normal file
73
euscanwww/templates/euscan/package.html
Normal file
@ -0,0 +1,73 @@
|
||||
{% extends "euscan/_datatable.html" %}
|
||||
|
||||
{% load sub %}
|
||||
|
||||
{% block title %}
|
||||
{{ block.super }} - {{ package.category }}/{{ package.name }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h2>{{ package.category }}/{{ package.name }}</h2>
|
||||
<dl>
|
||||
{% if package.description %}
|
||||
<dt>Description</dt>
|
||||
<dd>{{ package.description }}</dd>
|
||||
{% endif %}
|
||||
{% if package.homepage %}
|
||||
<dt>Homepage</dt>
|
||||
<dd><a href="{{ package.homepage }}">{{ package.homepage }}</a></dd>
|
||||
{% endif %}
|
||||
{% if package.herds.all %}
|
||||
<dt>Herds</dt>
|
||||
<dd>
|
||||
{% for herd in package.herds.all %}
|
||||
<a href="{% url euscan.views.herd herd.herd %}">
|
||||
{{ herd.herd }}
|
||||
</a>
|
||||
<{{ herd.email }}>
|
||||
{% endfor %}
|
||||
</dd>
|
||||
{% endif %}
|
||||
{% if package.maintainers.all %}
|
||||
<dt>Maintainers</dt>
|
||||
<dd>
|
||||
{% for maintainer in package.maintainers.all %}
|
||||
{% if maintainer.name != maintainer.email %}
|
||||
<a href="{% url euscan.views.maintainer maintainer.id %}">
|
||||
{{ maintainer.name }}
|
||||
</a>
|
||||
<{{ maintainer.email }}>
|
||||
{% else %}
|
||||
<a href="{% url euscan.views.maintainer maintainer.id %}">
|
||||
{{ maintainer.email }}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</dd>
|
||||
{% endif %}
|
||||
{% if packaged %}
|
||||
<dt>Packaged Versions</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
{% for version in packaged %}
|
||||
<li>
|
||||
{{ version.version }}-{{ version.revision }} :{{ version.slot }} [{{ version.overlay }}]
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</dd>
|
||||
{% endif %}
|
||||
{% if upstream %}
|
||||
<dt>Upstream versions</dt>
|
||||
<dd>
|
||||
<ul>
|
||||
{% for version in upstream %}
|
||||
<li>
|
||||
{{ version.version }} - {{ version.url }}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</dd>
|
||||
{% endif %}
|
||||
</dl>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user