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,
|
sys.stdout.write('[u] %s/%s-%s %s\n' % (package.category, package.name,
|
||||||
ver, url))
|
ver, url))
|
||||||
|
|
||||||
obj.url = url
|
obj.urls = url
|
||||||
obj.packaged = False
|
obj.packaged = False
|
||||||
obj.save()
|
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'^$', 'index'),
|
||||||
(r'^logs/$', 'logs'),
|
(r'^logs/$', 'logs'),
|
||||||
(r'^categories/$', 'categories'),
|
(r'^categories/$', 'categories'),
|
||||||
(r'^category/(?P<category>\w+)/packages/$', 'category'),
|
(r'^category/(?P<category>[\w+][\w+.-]*)/packages/$', 'category'),
|
||||||
(r'^herds/$', 'herds'),
|
(r'^herds/$', 'herds'),
|
||||||
(r'^herd/(?P<herd>\w+)/packages/$', 'herd'),
|
(r'^herd/(?P<herd>[\w+][\w+.-]*)/packages/$', 'herd'),
|
||||||
(r'^maintainers/$', 'maintainers'),
|
(r'^maintainers/$', 'maintainers'),
|
||||||
(r'^maintainer/(?P<maintainer_id>\d+)/packages/$', 'maintainer'),
|
(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 annoying.decorators import render_to
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
|
from django.shortcuts import get_object_or_404
|
||||||
from django.db.models import Sum, Max
|
from django.db.models import Sum, Max
|
||||||
|
|
||||||
from euscan.models import Version, Package, Herd, Maintainer, EuscanResult
|
from euscan.models import Version, Package, Herd, Maintainer, EuscanResult
|
||||||
@ -9,7 +10,8 @@ def index(request):
|
|||||||
ctx = {}
|
ctx = {}
|
||||||
ctx['n_packaged'] = Package.objects.aggregate(Sum('n_packaged'))['n_packaged__sum']
|
ctx['n_packaged'] = Package.objects.aggregate(Sum('n_packaged'))['n_packaged__sum']
|
||||||
ctx['n_versions'] = Package.objects.aggregate(Sum('n_versions'))['n_versions__sum']
|
ctx['n_versions'] = Package.objects.aggregate(Sum('n_versions'))['n_versions__sum']
|
||||||
ctx['n_upstream'] = ctx['n_versions'] - ctx['n_packaged']
|
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_packages'] = Package.objects.count()
|
||||||
ctx['n_herds'] = Herd.objects.count()
|
ctx['n_herds'] = Herd.objects.count()
|
||||||
ctx['n_maintainers'] = Maintainer.objects.count()
|
ctx['n_maintainers'] = Maintainer.objects.count()
|
||||||
@ -27,7 +29,10 @@ def categories(request):
|
|||||||
|
|
||||||
@render_to('euscan/category.html')
|
@render_to('euscan/category.html')
|
||||||
def category(request, category):
|
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')
|
@render_to('euscan/herds.html')
|
||||||
def herds(request):
|
def herds(request):
|
||||||
@ -47,4 +52,7 @@ def maintainer(request, maintainer_id):
|
|||||||
|
|
||||||
@render_to('euscan/package.html')
|
@render_to('euscan/package.html')
|
||||||
def package(request, category, package):
|
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;
|
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 {
|
h1 {
|
||||||
width: 20em;
|
width: 20em;
|
||||||
@ -184,9 +147,11 @@ h1 {
|
|||||||
.ok {
|
.ok {
|
||||||
color:#15B100;
|
color:#15B100;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bad {
|
.bad {
|
||||||
color:#FFFFFF;
|
color:#FFFFFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
hr
|
hr
|
||||||
{
|
{
|
||||||
margin: 0.3em 1em 0.3em 1em;
|
margin: 0.3em 1em 0.3em 1em;
|
||||||
|
@ -463,43 +463,43 @@ tr.even.gradeU td.sorting_3 {
|
|||||||
/*
|
/*
|
||||||
* Row highlighting example
|
* 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;
|
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;
|
background-color: #E6FF99;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.even:hover {
|
tr.even:hover {
|
||||||
background-color: #ECFFB3;
|
background-color: #ECFFB3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.even:hover td.sorting_1 {
|
tr.even:hover td.sorting_1 {
|
||||||
background-color: #DDFF75;
|
background-color: #DDFF75;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.even:hover td.sorting_2 {
|
tr.even:hover td.sorting_2 {
|
||||||
background-color: #E7FF9E;
|
background-color: #E7FF9E;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.even:hover td.sorting_3 {
|
tr.even:hover td.sorting_3 {
|
||||||
background-color: #E2FF89;
|
background-color: #E2FF89;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.odd:hover {
|
tr.odd:hover {
|
||||||
background-color: #E6FF99;
|
background-color: #E6FF99;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.odd:hover td.sorting_1 {
|
tr.odd:hover td.sorting_1 {
|
||||||
background-color: #D6FF5C;
|
background-color: #D6FF5C;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.odd:hover td.sorting_2 {
|
tr.odd:hover td.sorting_2 {
|
||||||
background-color: #E0FF84;
|
background-color: #E0FF84;
|
||||||
}
|
}
|
||||||
|
|
||||||
.ex_highlight_row #example tr.odd:hover td.sorting_3 {
|
tr.odd:hover td.sorting_3 {
|
||||||
background-color: #DBFF70;
|
background-color: #DBFF70;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,14 +15,15 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
|
</div>
|
||||||
<div id="menus">
|
<div id="menus">
|
||||||
{% block menus %}
|
{% block menus %}
|
||||||
<div id="menu">
|
<div id="menu">
|
||||||
<ul>
|
<ul>
|
||||||
{% block menu %}
|
{% block menu %}
|
||||||
<li><a href="categories/">Categories</a></li>
|
<li><a href="/categories/">Categories</a></li>
|
||||||
<li><a href="herds/">Herds</a></li>
|
<li><a href="/herds/">Herds</a></li>
|
||||||
<li><a href="maintainers/">Maintainers</a></li>
|
<li><a href="/maintainers/">Maintainers</a></li>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
?xml version="1.0" encoding="utf8"?>
|
<?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">
|
<!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>
|
<head>
|
||||||
<title>{% block title %}euscan{% endblock %}</title>
|
<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 %}
|
{% block css %}
|
||||||
<link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}img/style.css" media="screen" title="Normal" />
|
<link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}img/style.css" media="screen" title="Normal" />
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@ -14,7 +15,9 @@
|
|||||||
{% block header %}<h1>euscan</h1>{% endblock %}
|
{% block header %}<h1>euscan</h1>{% endblock %}
|
||||||
</div>
|
</div>
|
||||||
<div id="content">
|
<div id="content">
|
||||||
{% block content %}{% endblock %}
|
{% block content %}
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
<div id="menus">
|
<div id="menus">
|
||||||
{% block menus %}
|
{% block menus %}
|
||||||
<div id="menu">
|
<div id="menu">
|
||||||
|
@ -1,21 +1,34 @@
|
|||||||
{% extends "euscan/_datatable.html" %}
|
{% extends "euscan/_datatable.html" %}
|
||||||
|
|
||||||
{% load sub %}
|
{% load sub %}
|
||||||
|
{% load mul %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{{ block.super }} - categories
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h2>Categories</h2>
|
<h2>Categories</h2>
|
||||||
<table id="table">
|
<table id="table" class="display">
|
||||||
<thead>
|
<thead>
|
||||||
<th>Category</th>
|
<th>Category</th>
|
||||||
<th>Ebuilds</th>
|
<th>Ebuilds</th>
|
||||||
<th>Unpackaged</th>
|
<th>Unpackaged</th>
|
||||||
</thead>
|
</thead>
|
||||||
|
<tbody>
|
||||||
{% for category in categories %}
|
{% for category in categories %}
|
||||||
<tr>
|
{% if category.n_versions == category.n_packaged %}
|
||||||
<td>{{ category.category }}</td>
|
<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_packaged }}</td>
|
||||||
<td>{{ category.n_versions|sub:category.n_packaged }}</td>
|
<td>{{ category.n_versions|sub:category.n_packaged }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{% endblock %}
|
{% 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