mirror of
https://github.com/YunoHost/apps.git
synced 2024-09-03 20:06:07 +02:00
store: misc tweaks to simplify code and development (#2309)
This commit is contained in:
parent
aec47827da
commit
dcc343f24e
10 changed files with 77 additions and 36 deletions
11
store/app.py
11
store/app.py
|
@ -61,9 +61,7 @@ for key in mandatory_config_keys:
|
||||||
print(f"Missing key in config.toml: {key}")
|
print(f"Missing key in config.toml: {key}")
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if config.get("DEBUG"):
|
if app.config.get("DEBUG"):
|
||||||
app.debug = True
|
|
||||||
app.config["DEBUG"] = True
|
|
||||||
app.config["TEMPLATES_AUTO_RELOAD"] = True
|
app.config["TEMPLATES_AUTO_RELOAD"] = True
|
||||||
|
|
||||||
# This is the secret key used for session signing
|
# This is the secret key used for session signing
|
||||||
|
@ -86,11 +84,16 @@ def localize(d):
|
||||||
|
|
||||||
@app.context_processor
|
@app.context_processor
|
||||||
def utils():
|
def utils():
|
||||||
return {
|
d = {
|
||||||
"user": session.get("user", {}),
|
"user": session.get("user", {}),
|
||||||
"locale": get_locale(),
|
"locale": get_locale(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if app.config.get("DEBUG"):
|
||||||
|
d["tailwind_local"] = open("assets/tailwind-local.css").read()
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,19 @@
|
||||||
# Download standalone tailwind to compile what we need
|
|
||||||
|
# Production -> download standalone tailwind to compile only what we need
|
||||||
wget https://github.com/tailwindlabs/tailwindcss/releases/download/v3.3.3/tailwindcss-linux-x64
|
wget https://github.com/tailwindlabs/tailwindcss/releases/download/v3.3.3/tailwindcss-linux-x64
|
||||||
chmod +x tailwindcss-linux-x64
|
chmod +x tailwindcss-linux-x64
|
||||||
./tailwindcss-linux-x64 --input tailwind-local.css --output tailwind.css --minify
|
./tailwindcss-linux-x64 --input tailwind-local.css --output tailwind.css --minify
|
||||||
|
|
||||||
|
# Development -> we use the JS magic thingy
|
||||||
|
curl -L https://cdn.tailwindcss.com?plugins=forms > tailwind-css.js
|
||||||
|
|
||||||
|
# Forkawesome
|
||||||
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css > fork-awesome.min.css
|
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css > fork-awesome.min.css
|
||||||
sed -i 's@../fonts/@@g' ./fork-awesome.min.css
|
sed -i 's@../fonts/@@g' ./fork-awesome.min.css
|
||||||
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/fonts/forkawesome-webfont.woff2?v=1.2.0 > forkawesome-webfont.woff2
|
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/fonts/forkawesome-webfont.woff2?v=1.2.0 > forkawesome-webfont.woff2
|
||||||
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/fonts/forkawesome-webfont.woff?v=1.2.0 > forkawesome-webfont.woff
|
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/fonts/forkawesome-webfont.woff?v=1.2.0 > forkawesome-webfont.woff
|
||||||
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/fonts/forkawesome-webfont.ttf?v=1.2.0 > forkawesome-webfont.ttf
|
curl https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/fonts/forkawesome-webfont.ttf?v=1.2.0 > forkawesome-webfont.ttf
|
||||||
|
|
||||||
|
# Logos
|
||||||
curl https://raw.githubusercontent.com/YunoHost/doc/master/images/logo_roundcorner.png > ynh_logo_roundcorner.png
|
curl https://raw.githubusercontent.com/YunoHost/doc/master/images/logo_roundcorner.png > ynh_logo_roundcorner.png
|
||||||
curl https://raw.githubusercontent.com/YunoHost/doc/master/images/ynh_logo_black.svg > ynh_logo_black.svg
|
curl https://raw.githubusercontent.com/YunoHost/doc/master/images/ynh_logo_black.svg > ynh_logo_black.svg
|
||||||
|
|
|
@ -3,6 +3,9 @@
|
||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|
||||||
@layer utilities {
|
@layer utilities {
|
||||||
|
body {
|
||||||
|
@apply text-gray-800;
|
||||||
|
}
|
||||||
.btn {
|
.btn {
|
||||||
@apply text-sm font-medium rounded-md px-4 py-2 transition;
|
@apply text-sm font-medium rounded-md px-4 py-2 transition;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,32 @@
|
||||||
Flask==2.3.2
|
Babel==2.14.0
|
||||||
python-slugify
|
blinker==1.8.1
|
||||||
PyGithub
|
certifi==2024.2.2
|
||||||
toml
|
cffi==1.16.0
|
||||||
tomlkit
|
charset-normalizer==3.3.2
|
||||||
pycmarkgfm
|
click==8.1.7
|
||||||
gunicorn
|
cryptography==42.0.5
|
||||||
emoji
|
Deprecated==1.2.14
|
||||||
Babel
|
emoji==2.11.1
|
||||||
Flask-Babel
|
Flask==3.0.3
|
||||||
|
flask-babel==4.0.0
|
||||||
|
gunicorn==22.0.0
|
||||||
|
idna==3.7
|
||||||
|
itsdangerous==2.2.0
|
||||||
|
Jinja2==3.1.3
|
||||||
|
MarkupSafe==2.1.5
|
||||||
|
packaging==24.0
|
||||||
|
pycmarkgfm==1.2.1
|
||||||
|
pycparser==2.22
|
||||||
|
PyGithub==2.3.0
|
||||||
|
PyJWT==2.8.0
|
||||||
|
PyNaCl==1.5.0
|
||||||
|
python-slugify==8.0.4
|
||||||
|
pytz==2024.1
|
||||||
|
requests==2.31.0
|
||||||
|
text-unidecode==1.3
|
||||||
|
toml==0.10.2
|
||||||
|
tomlkit==0.12.4
|
||||||
|
typing_extensions==4.11.0
|
||||||
|
urllib3==2.2.1
|
||||||
|
Werkzeug==3.0.2
|
||||||
|
wrapt==1.16.0
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
class="h-12 w-12 rounded-lg object-cover shadow-sm mt-1"
|
class="h-12 w-12 rounded-lg object-cover shadow-sm mt-1"
|
||||||
>
|
>
|
||||||
<h1 class="flex-0 pl-2 pt-3 {% if infos["manifest"]["name"]|length > 12 %}text-2xl{% else %}text-3xl{% endif %} font-bold text-gray-900">{{ infos["manifest"]["name"] }}</h1>
|
<h1 class="flex-0 pl-2 pt-3 {% if infos["manifest"]["name"]|length > 12 %}text-2xl{% else %}text-3xl{% endif %} font-bold">{{ infos["manifest"]["name"] }}</h1>
|
||||||
|
|
||||||
{% if infos['category'] %}
|
{% if infos['category'] %}
|
||||||
<span class="ml-2 mb-1 rounded-full px-2.5 py-0.5 text-[10px] border text-{{ catalog['categories'][infos['category']]['color'] }}-600 border-{{ catalog['categories'][infos['category']]['color'] }}-400 ">
|
<span class="ml-2 mb-1 rounded-full px-2.5 py-0.5 text-[10px] border text-{{ catalog['categories'][infos['category']]['color'] }}-600 border-{{ catalog['categories'][infos['category']]['color'] }}-400 ">
|
||||||
|
|
|
@ -6,7 +6,14 @@
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='fork-awesome.min.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='fork-awesome.min.css') }}">
|
||||||
|
{% if config.DEBUG %}
|
||||||
|
<script src="{{ url_for('static', filename='tailwind-css.js') }}"></script>
|
||||||
|
<style type="text/tailwindcss">
|
||||||
|
{{ tailwind_local }}
|
||||||
|
</style>
|
||||||
|
{% else %}
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='tailwind.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='tailwind.css') }}">
|
||||||
|
{% endif %}
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@ -23,13 +30,13 @@
|
||||||
<nav class="hidden md:block">
|
<nav class="hidden md:block">
|
||||||
<ul class="flex items-center gap-6 text-sm">
|
<ul class="flex items-center gap-6 text-sm">
|
||||||
<li>
|
<li>
|
||||||
<a class="text-gray-800 font-bold transition hover:text-gray-500/75" href="{{ url_for('browse_catalog') }}">
|
<a class="font-bold transition hover:text-gray-500/75" href="{{ url_for('browse_catalog') }}">
|
||||||
{{ _("Catalog") }}
|
{{ _("Catalog") }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a class="text-gray-800 font-bold transition hover:text-gray-500/75" href="{{ url_for('browse_wishlist') }}">
|
<a class="font-bold transition hover:text-gray-500/75" href="{{ url_for('browse_wishlist') }}">
|
||||||
{{ _("Wishlist") }}
|
{{ _("Wishlist") }}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
@ -80,7 +87,7 @@
|
||||||
<div class="p-2">
|
<div class="p-2">
|
||||||
<a
|
<a
|
||||||
href="/logout"
|
href="/logout"
|
||||||
class="block rounded-md px-4 py-2 text-sm text-gray-800 hover:bg-gray-50 hover:text-gray-700"
|
class="block rounded-md px-4 py-2 text-sm hover:bg-gray-50 hover:text-gray-700"
|
||||||
role="menuitem"
|
role="menuitem"
|
||||||
>
|
>
|
||||||
{{ _("Logout") }}
|
{{ _("Logout") }}
|
||||||
|
@ -101,7 +108,7 @@
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div
|
||||||
id="menu"
|
id="menu"
|
||||||
class="hidden absolute end-0 z-10 mt-2 p-2 w-64 rounded-md border border-gray-100 text-gray-800 bg-white shadow-lg"
|
class="hidden absolute end-0 z-10 mt-2 p-2 w-64 rounded-md border border-gray-100 bg-white shadow-lg"
|
||||||
role="menu"
|
role="menu"
|
||||||
>
|
>
|
||||||
<div class="px-2 py-0.5">
|
<div class="px-2 py-0.5">
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="w-full">
|
<div class="w-full">
|
||||||
<span class="flex">
|
<span class="flex">
|
||||||
<h3 class="grow text-md font-bold text-gray-900">
|
<h3 class="grow text-md font-bold">
|
||||||
{{ infos['manifest']['name'] }}
|
{{ infos['manifest']['name'] }}
|
||||||
</h3>
|
</h3>
|
||||||
<span class="text-xs">
|
<span class="text-xs">
|
||||||
|
@ -76,7 +76,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<div class="mt-5 text-center">
|
<div class="mt-5 text-center">
|
||||||
<h1 class="text-2xl font-bold text-gray-900">
|
<h1 class="text-2xl font-bold">
|
||||||
{{ _("Application Catalog") }}
|
{{ _("Application Catalog") }}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
|
@ -151,10 +151,10 @@
|
||||||
|
|
||||||
|
|
||||||
<div id="noResultFound" class="text-center pt-5 hidden">
|
<div id="noResultFound" class="text-center pt-5 hidden">
|
||||||
<p class="text-lg font-bold text-gray-900 mb-5">
|
<p class="text-lg font-bold mb-5">
|
||||||
{{ _("No results found.") }}
|
{{ _("No results found.") }}
|
||||||
</p>
|
</p>
|
||||||
<p class="text-md text-gray-900">
|
<p class="text-md">
|
||||||
{{ _("Not finding what you are looking for?") }}<br/>
|
{{ _("Not finding what you are looking for?") }}<br/>
|
||||||
{{ _("Checkout the wishlist!") }}
|
{{ _("Checkout the wishlist!") }}
|
||||||
</p>
|
</p>
|
||||||
|
@ -162,7 +162,7 @@
|
||||||
|
|
||||||
|
|
||||||
<div id="lowQualityAppTitle" class="text-center pt-10 mx-4 md:mx-0">
|
<div id="lowQualityAppTitle" class="text-center pt-10 mx-4 md:mx-0">
|
||||||
<h2 class="text-lg font-bold text-gray-900">
|
<h2 class="text-lg font-bold">
|
||||||
{{ _("Applications currently flagged as broken") }}
|
{{ _("Applications currently flagged as broken") }}
|
||||||
</h2>
|
</h2>
|
||||||
<p class="text-sm">
|
<p class="text-sm">
|
||||||
|
@ -180,7 +180,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="deprecatedAppTitle" class="text-center pt-10 mx-4 md:mx-0">
|
<div id="deprecatedAppTitle" class="text-center pt-10 mx-4 md:mx-0">
|
||||||
<h2 class="text-lg font-bold text-gray-900">
|
<h2 class="text-lg font-bold">
|
||||||
{{ _("Deprecated applications") }}
|
{{ _("Deprecated applications") }}
|
||||||
</h2>
|
</h2>
|
||||||
<p class="text-sm">
|
<p class="text-sm">
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<div class="mx-auto w-full text-center p-8">
|
<div class="mx-auto w-full text-center p-8">
|
||||||
<img alt="YunoHost logo" src="{{ url_for('static', filename='ynh_logo_black.svg') }}" class="w-32 mx-auto">
|
<img alt="YunoHost logo" src="{{ url_for('static', filename='ynh_logo_black.svg') }}" class="w-32 mx-auto">
|
||||||
<h1 class="text-2xl font-bold text-gray-900">
|
<h1 class="text-2xl font-bold">
|
||||||
{{ _("Application Store") }}
|
{{ _("Application Store") }}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
href="{{ url_for('browse_catalog') }}"
|
href="{{ url_for('browse_catalog') }}"
|
||||||
class="h-full relative block overflow-hidden hover:bg-gray-200 pt-12"
|
class="h-full relative block overflow-hidden hover:bg-gray-200 pt-12"
|
||||||
>
|
>
|
||||||
<h2 class="text-md font-bold text-gray-900">
|
<h2 class="text-md font-bold">
|
||||||
{{ _("Browse all applications") }}
|
{{ _("Browse all applications") }}
|
||||||
</h2>
|
</h2>
|
||||||
</a>
|
</a>
|
||||||
|
@ -28,7 +28,7 @@
|
||||||
href="{{ url_for('browse_catalog', category=id) }}"
|
href="{{ url_for('browse_catalog', category=id) }}"
|
||||||
class="h-full relative block overflow-hidden hover:bg-gray-200 pt-10"
|
class="h-full relative block overflow-hidden hover:bg-gray-200 pt-10"
|
||||||
>
|
>
|
||||||
<h2 class="text-md font-bold text-gray-900">
|
<h2 class="text-md font-bold">
|
||||||
<i class="fa fa-{{ category['icon'] }}" aria-hidden="true"></i>
|
<i class="fa fa-{{ category['icon'] }}" aria-hidden="true"></i>
|
||||||
{{ category['title']|localize }}
|
{{ category['title']|localize }}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<div class="text-center max-w-screen-md mx-auto mt-5 mx-2">
|
<div class="text-center max-w-screen-md mx-auto mt-5 mx-2">
|
||||||
<h1 class="text-2xl font-bold text-gray-900">
|
<h1 class="text-2xl font-bold">
|
||||||
{{ _("Application Wishlist") }}
|
{{ _("Application Wishlist") }}
|
||||||
</h1>
|
</h1>
|
||||||
<p class="text-sm text-gray-700 mx-10 mt-2">{{ _("The wishlist is the place where people can collectively suggest and vote for apps that they would like to see packaged and made available in YunoHost's official apps catalog. Nevertheless, the fact that apps are listed here should by no mean be interpreted as a fact that the YunoHost project plans to integrate it, and is merely a source of inspiration for packaging volunteers.") }}</p>
|
<p class="text-sm text-gray-700 mx-10 mt-2">{{ _("The wishlist is the place where people can collectively suggest and vote for apps that they would like to see packaged and made available in YunoHost's official apps catalog. Nevertheless, the fact that apps are listed here should by no mean be interpreted as a fact that the YunoHost project plans to integrate it, and is merely a source of inspiration for packaging volunteers.") }}</p>
|
||||||
|
@ -67,15 +67,15 @@
|
||||||
<table class="min-w-full divide-y-2 divide-gray-200 bg-white text-sm">
|
<table class="min-w-full divide-y-2 divide-gray-200 bg-white text-sm">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="hidden sm:table-cell whitespace-nowrap px-4 py-2 font-medium text-gray-900">
|
<th class="hidden sm:table-cell whitespace-nowrap px-4 py-2 font-medium">
|
||||||
{{ _("Name") }}
|
{{ _("Name") }}
|
||||||
</th>
|
</th>
|
||||||
<th class="hidden sm:table-cell whitespace-nowrap px-4 py-2 font-medium text-gray-900">
|
<th class="hidden sm:table-cell whitespace-nowrap px-4 py-2 font-medium">
|
||||||
{{ _("Description") }}
|
{{ _("Description") }}
|
||||||
</th>
|
</th>
|
||||||
<th class="hidden sm:table-cell py-2"></th>
|
<th class="hidden sm:table-cell py-2"></th>
|
||||||
<th class="hidden sm:table-cell py-2"></th>
|
<th class="hidden sm:table-cell py-2"></th>
|
||||||
<th class="hidden sm:table-cell whitespace-nowrap px-4 py-2 font-medium text-gray-900 max-w-[5em]">{{ _("Popularity") }}</th>
|
<th class="hidden sm:table-cell whitespace-nowrap px-4 py-2 font-medium max-w-[5em]">{{ _("Popularity") }}</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
data-stars="{{ this_app_stars }}"
|
data-stars="{{ this_app_stars }}"
|
||||||
data-starred="{{ user_starred_this_app }}"
|
data-starred="{{ user_starred_this_app }}"
|
||||||
>
|
>
|
||||||
<td class="inline-block sm:table-cell px-4 py-2 font-bold text-gray-900 sm:max-w-[10em]">
|
<td class="inline-block sm:table-cell px-4 py-2 font-bold sm:max-w-[10em]">
|
||||||
{{ infos['name'] }}
|
{{ infos['name'] }}
|
||||||
</td>
|
</td>
|
||||||
<td class="block sm:table-cell px-4 py-0 sm:py-2 text-gray-700 max-w-md">{{ infos['description'] }}</td>
|
<td class="block sm:table-cell px-4 py-0 sm:py-2 text-gray-700 max-w-md">{{ infos['description'] }}</td>
|
||||||
|
@ -150,7 +150,7 @@
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div id="noResultFound" class="text-center pt-5 hidden">
|
<div id="noResultFound" class="text-center pt-5 hidden">
|
||||||
<p class="text-lg font-bold text-gray-900 mb-5">
|
<p class="text-lg font-bold mb-5">
|
||||||
{{ _("No results found.") }}
|
{{ _("No results found.") }}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
{% block main %}
|
{% block main %}
|
||||||
<div class="mt-5 text-center px-3 sm:px-0">
|
<div class="mt-5 text-center px-3 sm:px-0">
|
||||||
<h1 class="text-2xl font-bold text-gray-900">
|
<h1 class="text-2xl font-bold">
|
||||||
{{ _("Suggest an application to be added to YunoHost's catalog") }}
|
{{ _("Suggest an application to be added to YunoHost's catalog") }}
|
||||||
</h1>
|
</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Reference in a new issue