Commit 10f5ad48 authored by Pietro Albini's avatar Pietro Albini

Initial take at the frontend

parent 225dcfa7
Pipeline #60 passed with stage
in 0 seconds
recursive-include uitwww/templates *
recursive-include uitwww/static *
recursive-include uitwww/data *.toml
include uitwww/navbar.json
include uitwww/download.json
assets/images/wallpapers/ubuntu.jpg

27.6 KB | W: | H:

assets/images/wallpapers/ubuntu.jpg

34.4 KB | W: | H:

assets/images/wallpapers/ubuntu.jpg
assets/images/wallpapers/ubuntu.jpg
assets/images/wallpapers/ubuntu.jpg
assets/images/wallpapers/ubuntu.jpg
  • 2-up
  • Swipe
  • Onion skin
div.page div.row.background-wallpaper {
color: #fff;
border-top: 0;
&:first-child {
border-top-left-radius: 0.2em;
border-top-right-radius: 0.2em;
}
& + div.row {
border-top: 0;
&:last-child {
border-bottom-left-radius: 0.2em;
border-bottom-right-radius: 0.2em;
}
.box {
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2) inset;
background-color: rgba(0, 0, 0, 0.25);
border: 0;
background: rgba(255, 255, 255, 0.5);
}
background: url("images/wallpapers/dotted.png") no-repeat 130% 10%;
&.ubuntu, &.desktop, &.kubuntu, &.lubuntu, &.xubuntu, &.ubuntu-mate,
&.ubuntu-budgie, &.ubuntustudio {
color: #fff;
border-top: 0;
& + div.row {
border-top: 0;
}
a {
color: rgba(255, 255, 255, 0.5);
}
a.btn {
color: #fff;
}
.box {
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.2) inset;
background: rgba(0, 0, 0, 0.25);
border: 0;
}
}
&.ubuntu, &.desktop {
background: url("images/wallpapers/ubuntu.jpg") 100% 0%;
}
&.kubuntu {
background: url("images/wallpapers/kubuntu.jpg") 100% 50%;
}
&.xubuntu {
background:
linear-gradient(rgba(100, 100, 100, 0.3), rgba(100, 100, 100, 0.3)),
url("images/wallpapers/xubuntu.jpg") 100% 50%;
}
&.lubuntu {
background: url("images/wallpapers/lubuntu.jpg") 100% 50%;
}
&.ubuntu-mate {
background:
linear-gradient(rgba(85, 85, 85, 0.3), rgba(85, 85, 85, 0.3)),
url("images/wallpapers/ubuntu-mate.jpg") 100% 50%;
}
&.ubuntu-budgie {
background:
linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3)),
url("images/wallpapers/ubuntu-budgie.jpg") 100% 50%;
}
&.ubuntu {
background: url("images/wallpapers/ubuntu.jpg") 100% 70%;
&.ubuntustudio {
background: url("images/wallpapers/ubuntustudio.jpg") 100% 50%;
.box {
background: rgba(100, 100, 100, 0.25);
}
}
}
div.download-form {
padding: 0.5em 1.5em;
div.download-form-group {
margin: 1em 0;
}
div.download-form-buttons {
margin: 1em 0;
.btn {
display: block;
text-align: center;
width: 100%;
}
}
}
......
......@@ -36,6 +36,7 @@ setuptools.setup(
"gunicorn",
"requests",
"itsdangerous",
"toml",
],
packages = [
......
# Configurazione delle release disponibili
# Quando viene rilasciata una release o una point release è solamente
# necessario aggiornare questa sezione.
[releases.latest]
version = "18.04"
codename = "bionic"
lts = true
[releases.lts]
version = "16.04.4"
codename = "xenial"
lts = true
# Distribuzioni disponibili per il download
# Tutte le pagine in /download sono generate automaticamente da questa lista.
#
# name: Il nome della distro
# description: Una breve descrizione della distro
# lts-support-years: Il numero di anni per cui la LTS è supportata
# lts-only: Se impostato a `true`, solo le LTS verranno offerte
# releases: Una lista di release da offrire -- viene filtrata da lts-only
# archs: Una tabella di architettura e sorgente delle ISO
#
# Se è necessario sovrascrivere la sorgente delle ISO per una singola coppia
# release-architettura, è possibile aggiungere la chiave:
#
# source-override-RELEASE-ARCH = "SOURCE"
[distros.desktop]
name = "Ubuntu"
description = "L'originale, con GNOME"
lts-support-years = 5
lts-only = false
releases = ["latest", "lts"]
archs = { amd64 = "releases-ubuntu" }
[distros.server]
name = "Ubuntu Server"
description = "Tutta la potenza di Ubuntu nel tuo server"
lts-support-years = 5
lts-only = false
releases = ["lts", "latest"] # Invertiti intenzionalmente
# La live di 18.04 LTS su releases.u.c usa un installer che non supporta una
# valanga di sistemi, quindi faccio scaricare l'alternate
source-override-latest-amd64 = "cdimages-ubuntu"
# amd64 è su releases.u.c, mentre arm64 e ppc64el sono su cdimages.u.c
[distros.server.archs]
amd64 = "releases-ubuntu"
arm64 = "cdimages-ubuntu"
ppc64el = "cdimages-ubuntu"
[distros.kubuntu]
name = "Kubuntu"
description = "L'esperienza Ubuntu con desktop KDE"
lts-support-years = 3
lts-only = false
releases = ["latest", "lts"]
archs = { amd64 = "cdimages-derivatives", i386 = "cdimages-derivatives" }
[distros.xubuntu]
name = "Xubuntu"
description = "La derivata di Ubuntu leggera ma personalizzabile, con desktop XFCE"
lts-support-years = 3
lts-only = false
releases = ["latest", "lts"]
archs = { amd64 = "cdimages-derivatives", i386 = "cdimages-derivatives" }
[distros.lubuntu]
name = "Lubuntu"
description = "La derivata più leggera, con LXDE"
lts-support-years = 3
lts-only = false
releases = ["latest", "lts"]
archs = { amd64 = "cdimages-derivatives", i386 = "cdimages-derivatives" }
[distros.ubuntu-mate]
name = "Ubuntu MATE"
description = "Ubuntu si unisce a MATE"
lts-support-years = 3
lts-only = false
releases = ["latest", "lts"]
archs = { amd64 = "cdimages-derivatives", i386 = "cdimages-derivatives" }
[distros.ubuntu-budgie]
name = "Ubuntu Budgie"
description = "La potenza di Ubuntu e la leggerezza di Budgie"
lts-support-years = 3
lts-only = false
releases = ["latest"]
archs = { amd64 = "cdimages-derivatives", i386 = "cdimages-derivatives" }
[distros.ubuntustudio]
name = "Ubuntu Studio"
description = "La derivata di Ubuntu leggera ma personalizzabile"
lts-support-years = 3
lts-only = true
releases = ["latest", "lts"]
archs = { amd64 = "cdimages-studio", i386 = "cdimages-studio" }
# Nomi delle architetture
# Vengono usati per scegliere l'architettura da scaricare
[archs]
amd64 = "64bit"
i386 = "32bit (computer più datati)"
arm64 = "ARM 64bit"
ppc64el = "POWER"
# Tabella delle sorgenti delle ISO
# Le distro possono scegliere da quale sorgente prendere ogni architettura
[sources.releases-ubuntu]
http = "{mirror:ubuntu}/{codename}/ubuntu-{version}-{distro}-{arch}.iso"
torrent = "{mirror:ubuntu}/{codename}/ubuntu-{version}-{distro}-{arch}.iso.torrent"
[sources.cdimages-ubuntu]
http = "http://cdimages.ubuntu.com/releases/{codename}/release/ubuntu-{version}-{distro}-{arch}.iso"
torrent = "http://cdimages.ubuntu.com/releases/{codename}/release/ubuntu-{version}-{distro}-{arch}.iso.torrent"
[sources.cdimages-derivatives]
http = "http://cdimages.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso"
torrent = "http://cdimages.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso.torrent"
[sources.cdimages-studio]
http = "http://cdimages.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-dvd-{arch}.iso"
torrent = "http://cdimages.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-dvd-{arch}.iso.torrent"
# Configurazione dei mirror
# I mirror vengono caricati da Launchpad in automatico
[mirrors]
country = "IT"
for = ["ubuntu"]
{
"mirrors": {
"country": "IT",
"for": ["ubuntu"]
},
"releases": {
"latest": {
"version": "16.10",
"codename": "yakkety",
"lts": false
},
"lts": {
"version": "16.04.1",
"codename": "xenial",
"lts": true
}
},
"distros": {
"desktop": {
"pretty-name": "Ubuntu",
"releases": ["latest", "lts"],
"archs": ["amd64", "i386"],
"download_http": [
"{mirror:ubuntu}/{codename}/ubuntu-{version}-desktop-{arch}.iso"
],
"download_torrent": [
"{mirror:ubuntu}/{codename}/ubuntu-{version}-desktop-{arch}.iso.torrent"
]
},
"server": {
"pretty-name": "Ubuntu Server",
"releases": ["lts", "latest"],
"archs": ["amd64", "i386"],
"download_http": [
"{mirror:ubuntu}/{codename}/ubuntu-{version}-server-{arch}.iso"
],
"download_torrent": [
"{mirror:ubuntu}/{codename}/ubuntu-{version}-server-{arch}.iso.torrent"
]
},
"kubuntu": {
"pretty-name": "Kubuntu",
"releases": ["latest", "lts"],
"archs": ["amd64", "i386"],
"download_http": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso"
],
"download_torrent": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso.torrent"
]
},
"xubuntu": {
"pretty-name": "Xubuntu",
"releases": ["latest", "lts"],
"archs": ["i386", "amd64"],
"download_http": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso"
],
"download_torrent": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso.torrent"
]
},
"lubuntu": {
"pretty-name": "Lubuntu",
"releases": ["latest", "lts"],
"archs": ["i386", "amd64"],
"download_http": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso"
],
"download_torrent": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso.torrent"
]
},
"ubuntu-gnome": {
"pretty-name": "Ubuntu GNOME",
"releases": ["latest", "lts"],
"archs": ["amd64", "i386"],
"download_http": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso"
],
"download_torrent": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso.torrent"
]
},
"ubuntu-mate": {
"pretty-name": "Ubuntu MATE",
"releases": ["latest", "lts"],
"archs": ["amd64", "i386"],
"download_http": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso"
],
"download_torrent": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-desktop-{arch}.iso.torrent"
]
},
"ubuntustudio": {
"pretty-name": "Ubuntu Studio",
"releases": ["lts"],
"archs": ["amd64", "i386"],
"download_http": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-dvd-{arch}.iso"
],
"download_torrent": [
"http://cdimage.ubuntu.com/{distro}/releases/{codename}/release/{distro}-{version}-dvd-{arch}.iso.torrent"
]
}
}
}
......@@ -16,8 +16,10 @@
import hashlib
import json
import toml
import os
import random
import collections
import flask
import itsdangerous
......@@ -27,6 +29,8 @@ import pkg_resources
from . import launchpad
CONFIG_FILE = "data/downloads.toml"
CACHE_FILE = "download-cache.json"
CACHE_FILE_VERSION = 1
......@@ -34,13 +38,18 @@ class Downloads:
def __init__(self, data_path):
# Load the configuration
config_raw = pkg_resources.resource_string("uitwww", "download.json")
self.config = json.loads(config_raw.decode("utf-8"))
raw = pkg_resources.resource_string("uitwww", CONFIG_FILE)
self.config = toml.loads(
raw.decode("utf-8"),
_dict=collections.OrderedDict,
)
self._strip_non_lts_releases()
# Save the hash of the configuration
self._config_hash = "sha1=%s" % hashlib.sha1(config_raw).hexdigest()
self._config_hash = "sha1=%s" % hashlib.sha1(raw).hexdigest()
self._cache_file = os.path.join(data_path, "download-cache.json")
self._cache_file = os.path.join(data_path, CACHE_FILE)
@property
def _cache(self): # Cacheception
......@@ -74,6 +83,16 @@ class Downloads:
self._md5sums = self._fetch_md5sums()
return self._md5sums
def _strip_non_lts_releases(self):
"""Process the lts-only distro configuration"""
for config in self.config["distros"].values():
if not config["lts-only"]:
continue
for release in config["releases"][:]:
if not self.config["releases"][release]["lts"]:
config["releases"].remove(release)
def _fetch_md5sums(self):
"""Fetch all the needed MD5SUMS"""
result = {}
......@@ -81,15 +100,24 @@ class Downloads:
for distro, config in self.config["distros"].items():
for release in config["releases"]:
for arch in config["archs"]:
if config["lts-only"] and not self.config["releases"][release]["lts"]:
continue
for arch in config["archs"].keys():
url = self.url_for(distro, release, arch, use_random=False)
path, file = url.rsplit("/", 1)
# Fetch the file from the remote if it wasn't done already
if path not in files_content:
md5s = {}
raw = requests.get("%s/MD5SUMS" % path).text
for line in raw.split("\n"):
response = requests.get("%s/MD5SUMS" % path)
if response.status_code == 404:
raise RuntimeError(
"Missing {} {} on {}".format(distro, release, source),
)
for line in response.text.split("\n"):
if line.strip() == "":
continue
......@@ -103,6 +131,9 @@ class Downloads:
if file in files_content[path]:
key = "%s:%s:%s" % (distro, release, arch)
result[key] = files_content[path][file]
else:
print(files_content[path])
raise RuntimeError("Missing MD5 for {}".format(file))
return result
......@@ -114,7 +145,10 @@ class Downloads:
return None
try:
with open(self._cache_file) as f:
content = json.load(f)
content = json.load(
f,
object_pairs_hook=collections.OrderedDict,
)
except ValueError:
return None
if content["config-hash"] != self._config_hash:
......@@ -158,17 +192,19 @@ class Downloads:
else:
replaces["mirror:%s" % name] = choices[0]
# Download URLs are different for torrent and HTTP
if torrent:
urls = self.config["distros"][distro]["download_torrent"]
# Get the right source
override_key = "source-override-%s-%s" % (release, arch)
if override_key in self.config["distros"][distro]:
source_name = self.config["distros"][distro][override_key]
else:
urls = self.config["distros"][distro]["download_http"]
source_name = self.config["distros"][distro]["archs"][arch]
source = self.config["sources"][source_name]
# Choose a random download URL
if use_random:
url = random.choice(urls)
# Download URLs are different for torrent and HTTP
if torrent:
url = source["torrent"]
else:
url = urls[0]
url = source["http"]
for key, value in replaces.items():
url = url.replace("{%s}" % key, value)
......@@ -181,6 +217,13 @@ class Downloads:
bp = flask.Blueprint("download", __name__)
@bp.route("/")
def index():
return flask.render_template(
"download/index.html",
distros = self.config["distros"],
)
@bp.route("/<distro>")
def landing(distro):
if distro not in self.config["distros"]:
......@@ -191,6 +234,7 @@ class Downloads:
distro_name = distro,
distro = self.config["distros"][distro],
releases = self.config["releases"],
archs = self.config["archs"],
)
@bp.route("/+redirect", methods=["POST"])
......@@ -217,7 +261,7 @@ class Downloads:
"url": self.url_for(distro, release, arch, torrent),
"md5": self.md5sums["%s:%s:%s" % (distro, release, arch)],
"name": "%s %s%s" % (
self.config["distros"][distro]["pretty-name"],
self.config["distros"][distro]["name"],
self.config["releases"][release]["version"],
" LTS" if self.config["releases"][release]["lts"] else "",
),
......
[
{
"name": "Download",
"endpoint": "pages.download_index",
"endpoint": "download.index",
"subs": []
},
{
......
{# Source code of the Ubuntu-it website
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "layout.html" %}
{% block title %}Download{% endblock %}
{% block content %}
<div class="page">
<div class="row">
<div class="col text-center">
<h1>Scarica Ubuntu</h1>
<p class="intro">Entra subito nel mondo Ubuntu. Scaricalo ora!</p>
</div>
</div>
</div>
<div class="page">
{% for name, data in distros.items() %}
<div class="row background-wallpaper {{ name }}">
<div class="col">
<h2>{{ data["name"] }}</h2>
<p>{{ data["description"] }}</p>
</div>
<div class="col col-center col-quarter" style="text-align: right;">
<a class="btn" href="{{ url_for("download.landing", distro = name) }}">
Scaricala ora
</a>
</div>
</div>
{% endfor %}
</div>
{% endblock %}
......@@ -17,38 +17,104 @@
{% extends "layout.html" %}
{% block title %}Scarica {{ distro["pretty-name"] }}{% endblock %}
{% block title %}Scarica {{ distro["name"] }}{% endblock %}
{% block content %}
<div class="row">
<div class="twelve-col">
<h2>/!\ Pagina temporanea /!\</h2>
<p>Distro name: <b>{{ distro["pretty-name"] }}</b></p>
</div>
</div>
<div class="row">
<div class="twelve-col">
<form action="{{ url_for(".redirect") }}" method="post">
<input type="hidden" name="distro" value="{{ distro_name }}">
Version:
<select name="release">
{% for release in distro["releases"] %}
<option value="{{ release }}">
{{ distro["pretty-name"] }}
<div class="page">
{% for release in distro["releases"] %}
<div class="row {% if loop.index == 1 %}background-wallpaper {{ distro_name }}{% endif %}">
<div class="col">
<h2>
Scarica
{{ distro["name"] }}
{{ releases[release]["version"] }}
{% if releases[release]["lts"] %}LTS{% endif %}
</option>
{% endfor %}
</select>
Arch:
<select name="arch">
{% for arch in distro["archs"] %}
<option value="{{ arch }}">{{ arch }}</option>
{% endfor %}
</select>
<input type="checkbox" name="torrent" value="1"> .torrent<br>
<button type="submit">Download</button>
</form>
</h2>
{% if release == "latest" %}
<p>
{{ distro["name"] }} {{ releases[release]["version"] }} {% if releases[release]["lts"] %}LTS{% endif %}
è l'ultimo rilascio di {{ distro["name"] }}, con
tutte le ultime novità ed aggiornamenti.
Il periodo di supporto, con aggiornamenti di sicurezza,
è di
{% if releases[release]["lts"] -%}
{{ distro["lts-support-years"] }} anni
{%- else -%}
9 mesi
{%- endif -%}.
</p>
{% elif release == "lts" %}
<p>
{{ distro["name"] }} {{ releases[release]["version"] }} {% if releases[release]["lts"] %}LTS{% endif %}
è il rilascio stabile di {{ distro["name"] }},
con aggiornamenti di sicurezza garantiti per {{ distro["lts-support-years"] }} anni.
{% endif %}
</div>
<div class="col">
<div class="box download-form">
<form action="{{ url_for(".redirect") }}" method="post">
<input type="hidden" name="distro" value="{{ distro_name }}">
<input type="hidden" name="release" value="{{ release }}">
{% if distro["archs"]|length > 1 %}
<div class="download-form-group">
{% for arch in distro["archs"].keys() %}
<div>
<input id="arch-{{ release }}-{{ arch }}" type="radio" name="arch" value="{{ arch }}" {% if loop.index == 1 %}checked{% endif %}>
<label for="arch-{{ release }}-{{ arch }}">
Architettura {{ archs[arch] }}
</label>
</div>
{% endfor %}
</div>
{% else %}
<input type="hidden" name="arch" value="{{ distro["archs"].keys()|first }}">
{% endif %}
<div class="download-form-group">
<input id="torrent-{{ release }}" type="checkbox" name="torrent" value="1">
<label for="torrent-{{ release }}">
Scarica tramite torrent
</label>
</div>
<div class="download-form-buttons">
<button class="btn" type="submit">Download</button>
</div>
</form>
</div>
</div>
</div>
{% endfor %}
</div>
<div class="page">
<div class="row">
<div class="col">
<h3>Requisiti di sistema</h3>
<p>
Se non sei sicuro che il tuo computer possa reggere
{{ distro["name"] }} ti consigliamo di controllare di
requisiti di sistema minimi. Nel caso disponessi di un
vecchio computer, puoi sempre provare una derivata più leggera!
</p>
<a class="btn" href="https://wiki.ubuntu-it.org/Installazione/RequisitiDiSistema">
Leggi i requisiti
</a>
</div>
<div class="col">
<h3>La comunità</h3>
<p>
{{ distro["name"] }} è creato e supportato da
volontari che dedicano il loro tempo a sviluppare un
sistema operativo migliore. Cosa aspetti a contribuire ed
aiutarci a realizzare qualcosa di innovativo? È facile!
</p>
<a class="btn" href="{{ url_for("pages.contribuisci_index") }}">
Inizia subito a contribuire
</a>
</div>
</div>
</div>
{% endblock %}
......@@ -19,22 +19,66 @@
{% block title %}Grazie per aver scaricato {{ name }}{% endblock %}
{% block extra_header %}
<meta http-equiv="refresh" content="0; url={{ url }}">
{% endblock %}
{% block content %}
<div class="row">
<div class="twelve-col">
<h2>/!\ Pagina temporanea /!\</h2>
<div class="page">
<div class="row background-wallpaper {{ theme }}">
<div class="col text-center">
<h2>Grazie per aver scaricato {{ name }}!</h2>
<p>
Se il download non comincia entro pochi secondi <a href="{{ url }}">
clicca qui</a>.
</p>
</div>
</div>
</div>
<div class="row">
<div class="twelve-col">
Name:<br>
<pre>{{ name }}</pre><br>
Download URL:<br>
<pre>{{ url }}</pre><br>
MD5:
<pre>{{ md5 }}</pre><br>
Theme:
<pre>{{ theme }}</pre>
<div class="page">
<div class="row">
<div class="col">
<h3>Come installare Ubuntu?</h3>
<p>
È la prima volta che installi Ubuntu o non ti ricordi tutti
i passaggi? Non ti preoccupare! Ubuntu-it dispone di una
vasta documentazione con tutti i dettagli necessari!
</p>
<a class="btn" href="https://wiki.ubuntu-it.org/Installazione">
Guida all'installazione
</a>
</div>
<div class="col">
<h3>Ottieni supporto</h3>
<p>
Problemi durante l'installazione? La comunità di Ubuntu-it
offre diversi strumenti di supporto, per aiutarti nel
miglior modo possibile.
</p>
<a class="btn" href="{{ url_for("pages.supporto") }}">
Strumenti di supporto
</a>
</div>
</div>
<div class="row">
<div class="col">
<h3>Controlla l'impronta</h3>
<p>
Se vuoi verificare l'integrità e la provenienza del file
scaricato, puoi controllare se l'impronta MD5 è la stessa
mostrata qui a destra.
</p>
<a class="btn" href="https://wiki.ubuntu-it.org/Installazione/MD5Sum">
Come controllare l'impronta
</a>
</div>
<div class="col col-center">
<pre>{{ md5 }}</pre>
</div>
</div>
</div>
{% endblock %}
......@@ -28,6 +28,8 @@
<link rel="stylesheet" href="https://static.ubuntu-it.org/fonts/ubuntu/include.min.css">
<link rel="stylesheet" href="https://static.ubuntu-it.org/themes/italy/theme.min.css">
<link rel="stylesheet" href="{{ url_for("static", filename="website.css") }}" />
{% block extra_header %}{% endblock %}
</head>
<body {% block extra_body %}{% endblock %}>
......
{# Source code of the Ubuntu-it website
# Copyright (C) 2015 Pietro Albini <pietroalbini@ubuntu.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published
# by the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; witout even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#}
{% extends "layout.html" %}
{% block title %}Download{% endblock %}
{% block content %}
<div class="row row-hero no-border">
<div class="nine-col">
<h1>Scarica Ubuntu</h1>
<p class="intro">Entra subito nel mondo Ubuntu. Scaricalo ora!</p>
<p>
<a class="button--primary" href="{{ url_for("download.landing", distro="desktop") }}">
Desktop e portatili
</a>
<a class="button--primary" href="{{ url_for("download.landing", distro="server") }}">
Server
</a>
<a class="button--primary" href="#">Prova una derivata</a>
</p>
</div>
<div class="three-col last-col">
<span class="not-for-small">
<img src="{{ url_for("static", filename="images/pictograms/download.svg")}}">
</span>
</div>
</div>
<div class="row background-wallpaper ubuntu">
<div class="six-col">
<h3>Necessiti di supporto?</h3>
<p>
Se hai difficoltà ad installare Ubuntu, oppure si sono verificati
problemi durante e dopo l'installazione, non preoccuparti!<br />
La comunità italiana di Ubuntu offre molteplici strumenti di supporto,
per aiutarti nel miglior modo possibile.
</p>
<a class="btn btn-inverse" href="{{ url_for("pages.supporto") }}">Ottieni supporto</a>
</div>
<div class="col">
<div class="box">
<h3 class="muted-heading">Hai difficoltà a scaricare Ubuntu?</h3>
<p>
In caso non riuscissi a scaricare Ubuntu, la comunità italiana è
disponibile ad inviarti un DVD direttamente a casa tua! Basta chiedere.
</p>
<div class="align-center">
<a class="btn" href="#">Richiedi un DVD</a>
</div>
<div class="align-center">
<a class="button--primary" href="http://wiki.ubuntu-it.org/GruppoPromozione/ProgettoCDUbuntu">
Richiedi un DVD
</a>
</div>
</div>
</div>
<div class="row">
<div class="col">
<h3>Requisiti di sistema</h3>
<p>
Se non sei sicuro che il tuo computer possa reggere Ubuntu ti
consigliamo di controllare di requisiti di sistema minimi.<br />
Ed in caso disponessi di un vecchio computer, puoi sempre
provare una derivata più leggera!
</p>
<a class="btn" href="https://wiki.ubuntu-it.org/Installazione/RequisitiDiSistema">
Leggi i requisiti
</a>
</div>
<div class="col">
<h3>La comunità</h3>
<p>
Ubuntu è creato e supportato da volontari che dedicano il loro
tempo a sviluppare un sistema operativo migliore.<br />
Cosa aspetti a contribuire ed aiutarci a realizzare qualcosa di innovativo? È facile!
</p>
<a class="btn" href="#">Inizia subito a contribuire</a>
</div>
</div>
</div>
{% endblock %}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment