Merge branch 'v4.x' of gitlab.com:allianceauth/allianceauth into v4.x

This commit is contained in:
Ariel Rin 2023-10-27 22:42:53 +10:00
commit e8c3b5225c
No known key found for this signature in database
23 changed files with 177 additions and 97 deletions

View File

@ -17,7 +17,7 @@
<span class="d-md-inline m-2">{% translate 'Change Main' %}</span>
</a>
</div>
<table class="table" style="--bs-table-bg: transparent;">
<table class="table">
<thead>
<tr>
<th class="text-center"></th>

View File

@ -6,7 +6,7 @@
<div class="card-body">
<div style="height: 300px; overflow-y:auto;">
<h6 class="text-center">{% translate "State:" %} {{ request.user.profile.state }}</h6>
<table class="table" style="--bs-table-bg: transparent;">
<table class="table">
{% for group in groups %}
<tr>
<td class="text-center">{{ group.name }}</td>

View File

@ -64,7 +64,7 @@ class TestViews(TestCase):
content = response_content_to_str(response)
self.assertEqual(response.status_code, 200)
self.assertIn('<a data-toggle="tab" href="#leave">', content)
self.assertIn('id="leave-tab" data-bs-toggle="tab" data-bs-target="#leave"', content)
self.assertIn('<div id="leave" class="tab-pane">', content)
@override_settings(GROUPMANAGEMENT_AUTO_LEAVE=True)
@ -81,5 +81,5 @@ class TestViews(TestCase):
content = response_content_to_str(response)
self.assertEqual(response.status_code, 200)
self.assertNotIn('<a data-toggle="tab" href="#leave">', content)
self.assertNotIn('id="leave-tab" data-bs-toggle="tab" data-bs-target="#leave"', content)
self.assertNotIn('<div id="leave" class="tab-pane">', content)

View File

@ -1,6 +1,7 @@
{% load i18n %}
{% load navactive %}
{% load menu_items %}
{% load menu_menu_items %}
<div class="col-auto px-0 " >
<div class="collapse collapse-horizontal" tabindex="-1" id="sidebar" >
<div style="width: 350px;">

View File

@ -29,7 +29,7 @@ def menu_items(context):
@register.inclusion_tag('menu/menu-block.html', takes_context=True)
def sorted_menu_items(context):
request = context['request']
manu_items = MenuItem.render_menu(request)
menu_items = MenuItem.render_menu(request)
return {
'menu_items':manu_items
'menu_items':menu_items
}

View File

@ -8,7 +8,7 @@
<th class="text-end">{% translate "Action" %}</th>
</tr>
{% for notif in notifications %}
<tr class="{{ notif.level }}">
<tr class="table-{{ notif.level }}">
<td>{{ notif.timestamp }}</td>
<td>{{ notif.title }}</td>
<td class="text-end">

View File

@ -7,7 +7,7 @@
<h4 class="card-title text-center">{% translate "Upcoming Fleets" %}</h4>
<div class="card-body">
<div style="height: 300px; overflow-y:auto;">
<table class="table" style="--bs-table-bg: transparent;">
<table class="table">
<thead>
<tr>
<th class="text-center">{% translate "Operation" %}</th>

View File

@ -3,7 +3,7 @@ from django import urls
from django.contrib.auth.models import Group, Permission
from allianceauth.tests.auth_utils import AuthUtils
from allianceauth.menu.models import MenuItem
class PermissionsToolViewsTestCase(WebTest):
def setUp(self):
@ -34,13 +34,19 @@ class PermissionsToolViewsTestCase(WebTest):
self.member.user_permissions.add(self.permission)
AuthUtils.connect_signals()
# TODO find a nicer way to do this later
MenuItem.sync_hook_models()
def test_menu_item(self):
# If we change the side menu again this will fail again.
self.app.set_user(self.member)
response = self.app.get(urls.reverse('permissions_tool:overview'))
response_content = response.content.decode('utf-8')
response_content = response.content.decode(response.charset)
self.assertInHTML('<li><a class="active" href="/permissions/overview/"><i class="fas fa-id-card fa-fw"></i> Permissions Audit</a></li>', response_content)
self.assertIn("fa-id-card", response_content)
self.assertIn('href="/permissions/overview/"', response_content)
self.assertIn("Permissions Audit", response_content)
def test_permissions_overview(self):
self.app.set_user(self.member)

View File

@ -1,23 +0,0 @@
from django import template
from allianceauth.hooks import get_hooks
register = template.Library()
def process_menu_items(hooks, request):
_menu_items = list()
items = [fn() for fn in hooks]
items.sort(key=lambda i: i.order)
for item in items:
_menu_items.append(item.render(request))
return _menu_items
@register.inclusion_tag('public/menublock.html', takes_context=True)
def menu_items(context):
request = context['request']
return {
'menu_items': process_menu_items(get_hooks('menu_item_hook'), request),
}

View File

@ -1,49 +0,0 @@
/* BS 5 Additions
Helpful CSS classes that are missing in BS5
------------------------------------------------------------------------------------- */
@media all {
.cursor-auto {
cursor: auto;
}
.cursor-default {
cursor: default;
}
.cursor-pointer {
cursor: pointer;
}
.cursor-wait {
cursor: wait;
}
.cursor-text {
cursor: text;
}
.cursor-move {
cursor: move;
}
.cursor-help {
cursor: help;
}
.cursor-not-allowed {
cursor: not-allowed;
}
.cursor-inherit {
cursor: inherit;
}
.cursor-zoom-in {
cursor: zoom-in;
}
.cursor-zoom-out {
cursor: zoom-out;
}
}

View File

@ -0,0 +1,101 @@
/**
* Alliance Auth CSS Framework
*
* This provides some CSS classes together with a couple of Bootstrap fixes
* to be used throughout Alliance Auth and its Community Apps
*/
/* Bootstrap fixes
------------------------------------------------------------------------------------- */
@media all {
.table {
--bs-table-bg: transparent;
}
}
/* Cursor classes
------------------------------------------------------------------------------------- */
@media all {
.cursor-auto {
cursor: auto;
}
.cursor-default {
cursor: default;
}
.cursor-pointer {
cursor: pointer;
}
.cursor-wait {
cursor: wait;
}
.cursor-text {
cursor: text;
}
.cursor-move {
cursor: move;
}
.cursor-help {
cursor: help;
}
.cursor-not-allowed {
cursor: not-allowed;
}
.cursor-inherit {
cursor: inherit;
}
.cursor-zoom-in {
cursor: zoom-in;
}
.cursor-zoom-out {
cursor: zoom-out;
}
}
/* Callouts
*
* Not quite alerts, but custom and helpful notes for folks.
* Requires a base and modifier class.
------------------------------------------------------------------------------------- */
@media all {
/* Common styles for all types */
.aa-callout {
border: 1px solid var(--bs-border-color);
border-left-width: 0.25rem;
border-radius: 0.25rem;
margin-bottom: 1.25rem;
margin-top: 1.25rem;
padding: 1.25rem;
}
/* Last item bottom margin should be 0 */
.aa-callout :last-child {
margin-bottom: 0;
}
/* Variations */
.aa-callout.aa-callout-danger {
border-left-color: var(--bs-danger);
}
.aa-callout.aa-callout-info {
border-left-color: var(--bs-info);
}
.aa-callout.aa-callout-success {
border-left-color: var(--bs-success);
}
.aa-callout.aa-callout-warning {
border-left-color: var(--bs-warning);
}
}

View File

@ -22,7 +22,7 @@
{% theme_css %}
{% include 'bundles/fontawesome.html' %}
{% include 'bundles/auth-base-bs5-css.html' %}
{% include 'bundles/auth-framework-css.html' %}
<style>
.navbar-toggler.collapsed{

View File

@ -3,7 +3,7 @@
{% for message in messages %}
<div class="alert alert-{{ message.level_tag }} alert-dismissible d-flex align-items-center fade show" role="alert">
<div class="" style="">
<div>
{% if message.level_tag == "info" %}
<i class="fas fa-info-circle"></i>
{% elif message.level_tag == "success" %}
@ -15,12 +15,11 @@
{% endif %}
</div>
<div class="ms-2" style="">
<div class="ms-2">
{{ message }}
</div>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
{% endfor %}
{% endif %}

View File

@ -1,6 +1,6 @@
{% load i18n %}
{% load navactive %}
{% load menu_items %}
{% load menu_menu_items %}
<div class="col-sm-2 auth-side-navbar" role="navigation">
<div class="collapse navbar-collapse auth-menus-collapse auth-side-navbar-collapse">

View File

@ -1,3 +0,0 @@
{% load static %}
<link href="{% static 'allianceauth/css/auth-base-bs5.css' %}" rel="stylesheet">

View File

@ -0,0 +1,3 @@
{% load static %}
<link href="{% static 'allianceauth/css/auth-framework.css' %}" rel="stylesheet">

View File

@ -7,7 +7,7 @@
<h4 class="card-title text-center">{% translate "Upcoming Timers" %}</h4>
<div class="card-body">
<div style="height: 300px; overflow-y:auto;">
<table class="table" style="--bs-table-bg: transparent;">
<table class="table">
<thead>
<tr>
<th class="text-center">{% translate "Details" %}</th>
@ -20,10 +20,10 @@
<tbody>
{% for timer in timers %}
<tr>
<td style="" class="text-center">
<td class="text-center">
{{ timer.details }}
</td>
<td style="" class="text-center">
<td class="text-center">
{{ timer.get_timer_type_display }}
</td>
<td class="text-center" nowrap>

View File

@ -98,7 +98,7 @@ class TimerboardViewsTestCase(WebTest):
response = self.app.get(self.view_url)
context = response.context[-1]
context = response.context
timers = context['timers']
corp_timers = context['corp_timers']

View File

@ -67,6 +67,7 @@ class AddUpdateMixin:
class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView):
template_name_suffix = '_create_form'
form_class = TimerForm
def form_valid(self, form):
result = super().form_valid(form)
@ -78,6 +79,7 @@ class AddTimerView(TimerManagementView, AddUpdateMixin, CreateView):
class EditTimerView(TimerManagementView, AddUpdateMixin, UpdateView):
template_name_suffix = '_update_form'
form_class = TimerForm
def form_valid(self, form):
messages.success(self.request, _('Saved changes to the timer.'))
@ -85,7 +87,7 @@ class EditTimerView(TimerManagementView, AddUpdateMixin, UpdateView):
class RemoveTimerView(TimerManagementView, DeleteView):
pass
form_class = TimerForm
def dashboard_timers(request):

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,42 @@
# CSS Framework
To establish a unified style language throughout Alliance Auth and Community Apps,
Alliance Auth is providing its own CSS framework with a couple of CSS classes.
## Callout-Boxes
These are similar to the Bootstrap alert/notification boxes, but not as "loud".
Callout-boxes need a base-class (`.aa-callout`) and a modifier-class (e.g.:
`.aa-callout-info` for an info-box). Modifier classes are available for the usual
Bootstrap alert levels "Success", "Info", "Warning" and "Danger".
![Alliance Auth Framework: Callout Boxes](/_static/images/development/css-framework/callout-boxes.png "Alliance Auth Framework: Callout Boxes")
### HTML
```html
<div class="aa-callout aa-callout-success">
<p>
This is a success callout-box.
</p>
</div>
<div class="aa-callout aa-callout-info">
<p>
This is an info callout-box.
</p>
</div>
<div class="aa-callout aa-callout-warning">
<p>
This is a warning callout-box.
</p>
</div>
<div class="aa-callout aa-callout-danger">
<p>
This is a danger callout-box.
</p>
</div>
```

View File

@ -11,4 +11,5 @@ This section describes how to extend **Alliance Auth** with custom apps, service
menu-hooks
url-hooks
logging
css-framework
```