feat: load footer ctx in all templates
parent
faca7286b7
commit
8be1e02a21
|
@ -2,20 +2,6 @@
|
||||||
<div class="footer__container">
|
<div class="footer__container">
|
||||||
<div class="footer__column">
|
<div class="footer__column">
|
||||||
<span class="license__conatiner">
|
<span class="license__conatiner">
|
||||||
<a class="license__link" rel="noreferrer" href="/docs" target="_blank"
|
|
||||||
>Docs</a
|
|
||||||
>
|
|
||||||
<span class="footer__column-divider--mobile-visible">|</span>
|
|
||||||
<a
|
|
||||||
class="license__link"
|
|
||||||
rel="noreferrer"
|
|
||||||
href="https://www.eff.org/issues/do-not-track/amp/"
|
|
||||||
target="_blank"
|
|
||||||
>No AMP</a
|
|
||||||
>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="footer__column">
|
|
||||||
<a
|
<a
|
||||||
href="/"
|
href="/"
|
||||||
class="footer__link"
|
class="footer__link"
|
||||||
|
@ -23,6 +9,21 @@
|
||||||
rel="noopener"
|
rel="noopener"
|
||||||
title="RSS"
|
title="RSS"
|
||||||
>Home</a>
|
>Home</a>
|
||||||
|
<span class="footer__column-divider--mobile-visible">|</span>
|
||||||
|
<a class="license__link" rel="noreferrer" href="https://hostea.org/about" target="_blank"
|
||||||
|
> About</a
|
||||||
|
>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="footer__column">
|
||||||
|
<a
|
||||||
|
class="license__link"
|
||||||
|
rel="noreferrer"
|
||||||
|
href="https://www.eff.org/issues/do-not-track/amp/"
|
||||||
|
target="_blank"
|
||||||
|
>No AMP</a
|
||||||
|
>
|
||||||
|
|
||||||
<div class="footer__column-divider">|</div>
|
<div class="footer__column-divider">|</div>
|
||||||
<a href="mailto:{{ footer.admin_email }}" class="footer__link"
|
<a href="mailto:{{ footer.admin_email }}" class="footer__link"
|
||||||
>Contact Instance Maintainer</a
|
>Contact Instance Maintainer</a
|
||||||
|
@ -30,12 +31,12 @@
|
||||||
<div class="footer__column-divider">|</div>
|
<div class="footer__column-divider">|</div>
|
||||||
<a
|
<a
|
||||||
class="footer__link"
|
class="footer__link"
|
||||||
href="{{ footer.source_code }}"
|
href="{{ footer.source_code.link }}"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener"
|
rel="noopener"
|
||||||
title="Source Code"
|
title="Source Code"
|
||||||
>
|
>
|
||||||
v{{ footer.version }}-{{ footer.git_hash }}
|
{{ footer.source_code.text }}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -23,6 +23,7 @@ from django.http import HttpResponse
|
||||||
from django.views.decorators.csrf import csrf_protect
|
from django.views.decorators.csrf import csrf_protect
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
|
from dash.utils import footer_ctx
|
||||||
|
|
||||||
from .models import AccountConfirmChallenge
|
from .models import AccountConfirmChallenge
|
||||||
from .utils import send_verification_email, ConfirmAccess
|
from .utils import send_verification_email, ConfirmAccess
|
||||||
|
@ -35,6 +36,7 @@ def login_view(request):
|
||||||
def default_login_ctx():
|
def default_login_ctx():
|
||||||
return {
|
return {
|
||||||
"title": "Login",
|
"title": "Login",
|
||||||
|
"footer": footer_ctx(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
|
@ -102,6 +104,7 @@ def register_view(request):
|
||||||
"title": "Register",
|
"title": "Register",
|
||||||
"username": username,
|
"username": username,
|
||||||
"email": username,
|
"email": username,
|
||||||
|
"footer": footer_ctx(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
|
@ -213,6 +216,7 @@ def sudo(request):
|
||||||
def default_login_ctx():
|
def default_login_ctx():
|
||||||
return {
|
return {
|
||||||
"title": "Confirm Access",
|
"title": "Confirm Access",
|
||||||
|
"footer": footer_ctx(),
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.method == "GET":
|
if request.method == "GET":
|
||||||
|
|
|
@ -24,6 +24,7 @@ from payments import get_payment_model, RedirectNeeded, PaymentStatus
|
||||||
from dash.models import Instance
|
from dash.models import Instance
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from infrastructure.utils import create_vm_if_not_exists
|
from infrastructure.utils import create_vm_if_not_exists
|
||||||
|
from dash.utils import footer_ctx
|
||||||
|
|
||||||
|
|
||||||
def default_ctx(title: str, username: str):
|
def default_ctx(title: str, username: str):
|
||||||
|
@ -33,6 +34,7 @@ def default_ctx(title: str, username: str):
|
||||||
return {
|
return {
|
||||||
"title": title,
|
"title": title,
|
||||||
"username": username,
|
"username": username,
|
||||||
|
"footer": footer_ctx(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,9 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
from enum import Enum, unique
|
from enum import Enum, unique
|
||||||
|
|
||||||
|
from git import Repo
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
from .models import Instance, InstanceConfiguration
|
from .models import Instance, InstanceConfiguration
|
||||||
|
|
||||||
|
@ -55,3 +57,23 @@ def create_instance(vm_name: str, configuration_name: str, user: User) -> Instan
|
||||||
instance = Instance(name=vm_name, configuration_id=configuration, owned_by=user)
|
instance = Instance(name=vm_name, configuration_id=configuration, owned_by=user)
|
||||||
instance.save()
|
instance.save()
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
|
||||||
|
source_code = None
|
||||||
|
|
||||||
|
|
||||||
|
def footer_ctx():
|
||||||
|
global source_code
|
||||||
|
if source_code is None:
|
||||||
|
source_code = {"text": "Source Code", "link": settings.HOSTEA["SOURCE_CODE"]}
|
||||||
|
try:
|
||||||
|
r = Repo(".")
|
||||||
|
commit = r.head.commit.hexsha
|
||||||
|
source_code["text"] = f"v-{commit.hexsha[0:8]}"
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
return {
|
||||||
|
"source_code": source_code,
|
||||||
|
"admin_email": settings.HOSTEA["INSTANCE_MAINTAINER_CONTACT"],
|
||||||
|
}
|
||||||
|
|
|
@ -25,7 +25,12 @@ from accounts.decorators import confirm_access
|
||||||
from infrastructure.utils import Infra
|
from infrastructure.utils import Infra
|
||||||
|
|
||||||
from .models import Instance, InstanceConfiguration
|
from .models import Instance, InstanceConfiguration
|
||||||
from .utils import create_instance as create_instance_util, VmErrors, VmException
|
from .utils import (
|
||||||
|
create_instance as create_instance_util,
|
||||||
|
VmErrors,
|
||||||
|
VmException,
|
||||||
|
footer_ctx,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def default_ctx(title: str, username: str):
|
def default_ctx(title: str, username: str):
|
||||||
|
@ -36,6 +41,7 @@ def default_ctx(title: str, username: str):
|
||||||
"title": title,
|
"title": title,
|
||||||
"username": username,
|
"username": username,
|
||||||
"open_instances": "open",
|
"open_instances": "open",
|
||||||
|
"footer": footer_ctx(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -62,7 +62,7 @@ your new Gitea instance. Great powers come with great responsibilities,
|
||||||
so use the admin credentials wisely. When in doubt, consult the Gitea
|
so use the admin credentials wisely. When in doubt, consult the Gitea
|
||||||
docs or contact support!\n
|
docs or contact support!\n
|
||||||
|
|
||||||
-username : root
|
- username : root
|
||||||
- password: {gitea_password}
|
- password: {gitea_password}
|
||||||
""",
|
""",
|
||||||
from_email="No reply Hostea<no-reply@exampl.org>", # TODO read from settings.py
|
from_email="No reply Hostea<no-reply@exampl.org>", # TODO read from settings.py
|
||||||
|
|
|
@ -34,11 +34,9 @@ h2 {
|
||||||
body {
|
body {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
/*
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
|
@ -244,6 +242,8 @@ footer {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
margin-bottom: 5px;
|
margin-bottom: 5px;
|
||||||
|
margin-left: 260px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer__container {
|
.footer__container {
|
||||||
|
@ -391,6 +391,8 @@ footer {
|
||||||
font-size: 0.7rem;
|
font-size: 0.7rem;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
margin-left: 260px;
|
||||||
|
width: calc(100vw - 260px);
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer__container {
|
.footer__container {
|
||||||
|
@ -607,8 +609,6 @@ fieldset {
|
||||||
background-color: #e11d21;
|
background-color: #e11d21;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
.form__label {
|
.form__label {
|
||||||
margin: 5px 0;
|
margin: 5px 0;
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
from django.shortcuts import render, redirect
|
from django.shortcuts import render, redirect
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
|
|
||||||
|
from dash.utils import footer_ctx
|
||||||
from .utils import IssueTracker
|
from .utils import IssueTracker
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,6 +29,7 @@ def default_ctx(title: str, username: str):
|
||||||
"username": username,
|
"username": username,
|
||||||
"open_support": "open",
|
"open_support": "open",
|
||||||
"support": {"list": it.get_issue_tracker(), "new": it.open_issue()},
|
"support": {"list": it.get_issue_tracker(), "new": it.open_issue()},
|
||||||
|
"footer": footer_ctx(),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue