one and only one empty line at the end of the file

This commit is contained in:
Peter Pfeufer 2021-05-17 09:48:57 +02:00
parent 8c3df89d52
commit a99a375375
No known key found for this signature in database
GPG Key ID: 6051D2C6AD4EBC27
72 changed files with 53 additions and 72 deletions

View File

@ -11,4 +11,4 @@ Please include steps to reproduce the issue
Please include any tracebacks or logs Please include any tracebacks or logs
Please include the results of the command `pip list` Please include the results of the command `pip list`

View File

@ -4,4 +4,4 @@
- Is this a Service (external integration), a Module (Alliance Auth extension) or an enhancement to an existing service/module. - Is this a Service (external integration), a Module (Alliance Auth extension) or an enhancement to an existing service/module.
- Describe why its useful to you or others. - Describe why its useful to you or others.

View File

@ -14,3 +14,5 @@ repos:
- id: fix-byte-order-marker - id: fix-byte-order-marker
- id: trailing-whitespace - id: trailing-whitespace
exclude: \.(min\.css|min\.js|po|mo)$ exclude: \.(min\.css|min\.js|po|mo)$
- id: end-of-file-fixer
exclude: \.(min\.css|min\.js|po|mo)$

View File

@ -20,4 +20,4 @@ formats: all
python: python:
version: 3.7 version: 3.7
install: install:
- requirements: docs/requirements.txt - requirements: docs/requirements.txt

View File

@ -337,4 +337,3 @@ proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. Public License instead of this License.

View File

@ -43,4 +43,3 @@ AUTHENTICATION_ADMIN_USERS_MAX_GROUPS = \
AUTHENTICATION_ADMIN_USERS_MAX_CHARS = \ AUTHENTICATION_ADMIN_USERS_MAX_CHARS = \
_clean_setting('AUTHENTICATION_ADMIN_USERS_MAX_CHARS', 5) _clean_setting('AUTHENTICATION_ADMIN_USERS_MAX_CHARS', 5)

View File

@ -11,4 +11,4 @@ urlpatterns = [
url(r'^register/complete/$', views.registration_complete, name='registration_complete'), url(r'^register/complete/$', views.registration_complete, name='registration_complete'),
url(r'^register/closed/$', views.registration_closed, name='registration_disallowed'), url(r'^register/closed/$', views.registration_closed, name='registration_disallowed'),
url(r'', include('django.contrib.auth.urls')), url(r'', include('django.contrib.auth.urls')),
] ]

View File

@ -114,4 +114,4 @@ class OwnershipRecord(models.Model):
ordering = ['-created'] ordering = ['-created']
def __str__(self): def __str__(self):
return "%s: %s on %s" % (self.user, self.character, self.created) return "%s: %s on %s" % (self.user, self.character, self.created)

View File

@ -156,4 +156,4 @@ def ownership_record_creation(sender, instance, created, *args, **kwargs):
logger.debug("Already have ownership record of {0} by user {1}".format(instance.character, instance.user)) logger.debug("Already have ownership record of {0} by user {1}".format(instance.character, instance.user))
return return
logger.info("Character {0} has a new owner {1}. Creating ownership record.".format(instance.character, instance.user)) logger.info("Character {0} has a new owner {1}. Creating ownership record.".format(instance.character, instance.user))
OwnershipRecord.objects.create(user=instance.user, character=instance.character, owner_hash=instance.owner_hash) OwnershipRecord.objects.create(user=instance.user, character=instance.character, owner_hash=instance.owner_hash)

View File

@ -26,4 +26,4 @@ CSS for allianceauth admin site
color: black ; color: black ;
background-color: rgb(255, 255, 204) ; background-color: rgb(255, 255, 204) ;
z-index: 1 ; z-index: 1 ;
} }

View File

@ -5,4 +5,4 @@
<a href="{% url 'auth_sso_login' %}{% if request.GET.next %}?next={{request.GET.next}}{%endif%}"> <a href="{% url 'auth_sso_login' %}{% if request.GET.next %}?next={{request.GET.next}}{%endif%}">
<img class="img-responsive center-block" src="{% static 'img/sso/EVE_SSO_Login_Buttons_Large_Black.png' %}" border=0> <img class="img-responsive center-block" src="{% static 'img/sso/EVE_SSO_Login_Buttons_Large_Black.png' %}" border=0>
</a> </a>
{% endblock %} {% endblock %}

View File

@ -21,4 +21,4 @@
{% endblock %} {% endblock %}
{% block extra_include %} {% block extra_include %}
{% include 'bundles/bootstrap-js.html' %} {% include 'bundles/bootstrap-js.html' %}
{% endblock %} {% endblock %}

View File

@ -10,4 +10,4 @@ Link not working? Try copy/pasting this URL into your browser:
This link will expire in {{ expiration_days }} day(s). This link will expire in {{ expiration_days }} day(s).
If this was not you, it is safe to ignore this email. If this was not you, it is safe to ignore this email.

View File

@ -1 +1 @@
Confirm your Alliance Auth account email address Confirm your Alliance Auth account email address

View File

@ -3,4 +3,4 @@ from django.contrib import admin
from .models import CorpStats, CorpMember from .models import CorpStats, CorpMember
admin.site.register(CorpStats) admin.site.register(CorpStats)
admin.site.register(CorpMember) admin.site.register(CorpMember)

File diff suppressed because one or more lines are too long

View File

@ -34,4 +34,4 @@
{% block member_data %}{% endblock %} {% block member_data %}{% endblock %}
</div> </div>
</div> </div>
{% endblock %} {% endblock %}

View File

@ -45,4 +45,4 @@
$(document).ready(function(){ $(document).ready(function(){
$('#table-search').DataTable(); $('#table-search').DataTable();
}); });
{% endblock %} {% endblock %}

View File

@ -39,4 +39,3 @@ class AutogroupsConfigAdmin(admin.ModelAdmin):
admin.site.register(AutogroupsConfig, AutogroupsConfigAdmin) admin.site.register(AutogroupsConfig, AutogroupsConfigAdmin)
admin.site.register(ManagedCorpGroup) admin.site.register(ManagedCorpGroup)
admin.site.register(ManagedAllianceGroup) admin.site.register(ManagedAllianceGroup)

View File

@ -201,4 +201,4 @@ class TestEveImageServer(TestCase):
def test_type_render_url(self): def test_type_render_url(self):
expected = 'https://images.evetech.net/types/42/render?size=128' expected = 'https://images.evetech.net/types/42/render?size=128'
self.assertEqual(eveimageserver.type_render_url(42, 128), expected) self.assertEqual(eveimageserver.type_render_url(42, 128), expected)

View File

@ -356,4 +356,4 @@ class TestTemplateTags(TestCase):
self.assertEqual(evelinks.type_render_url(123, 99), expected) self.assertEqual(evelinks.type_render_url(123, 99), expected)
expected = '' expected = ''
self.assertEqual(evelinks.type_render_url(None), expected) self.assertEqual(evelinks.type_render_url(None), expected)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,2 +0,0 @@

View File

@ -7,4 +7,3 @@ class FatlinkForm(forms.Form):
fleet = forms.CharField(label=_("Fleet Name"), max_length=50) fleet = forms.CharField(label=_("Fleet Name"), max_length=50)
duration = forms.IntegerField(label=_("Duration of fat-link"), required=True, initial=30, min_value=1, duration = forms.IntegerField(label=_("Duration of fat-link"), required=True, initial=30, min_value=1,
max_value=2147483647, help_text=_('minutes')) max_value=2147483647, help_text=_('minutes'))

File diff suppressed because one or more lines are too long

View File

@ -30,4 +30,3 @@
</div> </div>
{% endblock content %} {% endblock content %}

View File

@ -8,4 +8,4 @@ def get_admin_change_view_url(obj: object) -> str:
type(obj).__name__.lower() type(obj).__name__.lower()
), ),
args=(obj.pk,) args=(obj.pk,)
) )

View File

@ -19,4 +19,4 @@ class TestViews(TestCase):
request = self.factory.get(reverse('groupmanagement:groups')) request = self.factory.get(reverse('groupmanagement:groups'))
request.user = self.user request.user = self.user
response = views.groups_view(request) response = views.groups_view(request)
self.assertEqual(response.status_code, 200) self.assertEqual(response.status_code, 200)

View File

@ -122,4 +122,3 @@ def get_hooks(name):
""" """
register_all_hooks() register_all_hooks()
return _hooks.get(name, []) return _hooks.get(name, [])

View File

@ -4,4 +4,3 @@ from django.apps import AppConfig
class PermissionsToolConfig(AppConfig): class PermissionsToolConfig(AppConfig):
name = 'allianceauth.permissions_tool' name = 'allianceauth.permissions_tool'
label = 'permissions_tool' label = 'permissions_tool'

View File

@ -30,4 +30,3 @@ class NameFormatConfig(models.Model):
return '%s: %s' % ( return '%s: %s' % (
self.service_name, ', '.join([str(x) for x in self.states.all()]) self.service_name, ', '.join([str(x) for x in self.states.all()])
) )

View File

@ -1 +1 @@
default_app_config = 'allianceauth.services.modules.discourse.apps.DiscourseServiceConfig' default_app_config = 'allianceauth.services.modules.discourse.apps.DiscourseServiceConfig'

View File

@ -16,4 +16,3 @@ class DiscourseUser(models.Model):
permissions = ( permissions = (
("access_discourse", u"Can access the Discourse service"), ("access_discourse", u"Can access the Discourse service"),
) )

View File

@ -16,4 +16,4 @@ class DiscourseAPIClient():
api_key=settings.DISCOURSE_API_KEY) api_key=settings.DISCOURSE_API_KEY)
return self._client return self._client
discourse = DiscourseAPIClient() discourse = DiscourseAPIClient()

View File

@ -64,4 +64,3 @@ class DiscourseTasks:
def get_username(user): def get_username(user):
from .auth_hooks import DiscourseService from .auth_hooks import DiscourseService
return NameFormatter(DiscourseService(), user).format_name() return NameFormatter(DiscourseService(), user).format_name()

View File

@ -94,4 +94,3 @@ def discourse_sso(request):
# Redirect back to Discourse # Redirect back to Discourse
url = '%s/session/sso_login' % settings.DISCOURSE_URL url = '%s/session/sso_login' % settings.DISCOURSE_URL
return redirect('%s?%s' % (url, query_string)) return redirect('%s?%s' % (url, query_string))

View File

@ -102,4 +102,3 @@ def deactivate_ips4(request):
logger.error("Unsuccessful attempt to deactivate IPS4 for user %s" % request.user) logger.error("Unsuccessful attempt to deactivate IPS4 for user %s" % request.user)
messages.error(request, _('An error occurred while processing your IPSuite4 account.')) messages.error(request, _('An error occurred while processing your IPSuite4 account.'))
return redirect("services:services") return redirect("services:services")

View File

@ -78,4 +78,3 @@ class MumbleTasks:
logger.debug("Updating ALL mumble display names") logger.debug("Updating ALL mumble display names")
for mumble_user in MumbleUser.objects.exclude(username__exact=''): for mumble_user in MumbleUser.objects.exclude(username__exact=''):
MumbleTasks.update_display_name.delay(mumble_user.user.pk) MumbleTasks.update_display_name.delay(mumble_user.user.pk)

View File

@ -8,4 +8,3 @@ from ...admin import ServicesUserAdmin
class OpenfireUserAdmin(ServicesUserAdmin): class OpenfireUserAdmin(ServicesUserAdmin):
list_display = ServicesUserAdmin.list_display + ('username',) list_display = ServicesUserAdmin.list_display + ('username',)
search_fields = ServicesUserAdmin.search_fields + ('username', ) search_fields = ServicesUserAdmin.search_fields + ('username', )

View File

@ -6,4 +6,4 @@ from ...admin import ServicesUserAdmin
@admin.register(Phpbb3User) @admin.register(Phpbb3User)
class Phpbb3UserAdmin(ServicesUserAdmin): class Phpbb3UserAdmin(ServicesUserAdmin):
list_display = ServicesUserAdmin.list_display + ('username',) list_display = ServicesUserAdmin.list_display + ('username',)
search_fields = ServicesUserAdmin.search_fields + ('username', ) search_fields = ServicesUserAdmin.search_fields + ('username', )

View File

@ -7,4 +7,4 @@ from ...admin import ServicesUserAdmin
@admin.register(SmfUser) @admin.register(SmfUser)
class SmfUserAdmin(ServicesUserAdmin): class SmfUserAdmin(ServicesUserAdmin):
list_display = ServicesUserAdmin.list_display + ('username',) list_display = ServicesUserAdmin.list_display + ('username',)
search_fields = ServicesUserAdmin.search_fields + ('username', ) search_fields = ServicesUserAdmin.search_fields + ('username', )

View File

@ -7,4 +7,4 @@ from ...admin import ServicesUserAdmin
@admin.register(XenforoUser) @admin.register(XenforoUser)
class XenforoUserAdmin(ServicesUserAdmin): class XenforoUserAdmin(ServicesUserAdmin):
list_display = ServicesUserAdmin.list_display + ('username',) list_display = ServicesUserAdmin.list_display + ('username',)
search_fields = ServicesUserAdmin.search_fields + ('username', ) search_fields = ServicesUserAdmin.search_fields + ('username', )

View File

@ -3,4 +3,4 @@ CSS for allianceauth admin site
*/ */
.img-circle { border-radius: 50%; } .img-circle { border-radius: 50%; }
.column-user_profile_pic { width: 50px; } .column-user_profile_pic { width: 50px; }

View File

@ -47,4 +47,3 @@ def disable_user(user):
for svc in ServicesHook.get_services(): for svc in ServicesHook.get_services():
if svc.service_active_for_user(user): if svc.service_active_for_user(user):
svc.delete_user(user) svc.delete_user(user)

View File

@ -14,4 +14,4 @@ class TestNameFormatConfig(TestCase):
obj.states.add(AuthUtils.get_member_state()) obj.states.add(AuthUtils.get_member_state())
obj.states.add(AuthUtils.get_guest_state()) obj.states.add(AuthUtils.get_guest_state())
expected = 'mumble: Member, Guest' expected = 'mumble: Member, Guest'
self.assertEqual(str(obj), expected) self.assertEqual(str(obj), expected)

View File

@ -259,4 +259,4 @@ class ServicesSignalsTestCase(TestCase):
# Assert # Assert
self.assertFalse(services_hook.get_services.called) self.assertFalse(services_hook.get_services.called)
self.assertFalse(svc.validate_user.called) self.assertFalse(svc.validate_user.called)
self.assertFalse(svc.sync_nickname.called) self.assertFalse(svc.sync_nickname.called)

View File

@ -1,2 +1 @@
default_app_config = 'allianceauth.srp.apps.SRPConfig' default_app_config = 'allianceauth.srp.apps.SRPConfig'

View File

@ -950,4 +950,4 @@
}, },
"ship_type_id": 19720 "ship_type_id": 19720
} }
} }

View File

@ -12,4 +12,4 @@
"awox": false "awox": false
} }
} }
] ]

View File

@ -55,4 +55,4 @@
.checkbox label input[type="checkbox"]:disabled + .cr, .checkbox label input[type="checkbox"]:disabled + .cr,
.radio label input[type="radio"]:disabled + .cr { .radio label input[type="radio"]:disabled + .cr {
opacity: .5; opacity: .5;
} }

View File

@ -2,4 +2,4 @@
<a href="{% url 'nightmode' %}?next={{ request.path|urlencode }}"> <a href="{% url 'nightmode' %}?next={{ request.path|urlencode }}">
{% trans "Night" %} {% trans "Night" %}
<i class="fas {% if NIGHT_MODE %}fa-toggle-on{% else %}fa-toggle-off{% endif %}" aria-hidden="true"></i> <i class="fas {% if NIGHT_MODE %}fa-toggle-on{% else %}fa-toggle-off{% endif %}" aria-hidden="true"></i>
</a> </a>

View File

@ -10,4 +10,4 @@
<i class="far fa-bell"></i> <i class="far fa-bell"></i>
</a> </a>
{% endif %} {% endif %}
{% endwith %} {% endwith %}

View File

@ -58,4 +58,3 @@
</div> </div>
</div> </div>
</nav> </nav>

View File

@ -1,4 +1,4 @@
<!-- Start Bootstrap + jQuery js from cdnjs --> <!-- Start Bootstrap + jQuery js from cdnjs -->
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script>
<!-- End Bootstrap + jQuery js from cdnjs --> <!-- End Bootstrap + jQuery js from cdnjs -->

View File

@ -1,3 +1,3 @@
<!-- Start Clipboard.js js from cdnjs --> <!-- Start Clipboard.js js from cdnjs -->
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.8/clipboard.min.js" integrity="sha512-sIqUEnRn31BgngPmHt2JenzleDDsXwYO+iyvQ46Mw6RL+udAUZj2n/u/PGY80NxRxynO7R9xIGx5LEzw4INWJQ==" crossorigin="anonymous"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.8/clipboard.min.js" integrity="sha512-sIqUEnRn31BgngPmHt2JenzleDDsXwYO+iyvQ46Mw6RL+udAUZj2n/u/PGY80NxRxynO7R9xIGx5LEzw4INWJQ==" crossorigin="anonymous"></script>
<!-- End Clipboard.js js from cdnjs --> <!-- End Clipboard.js js from cdnjs -->

View File

@ -1,3 +1,3 @@
<!-- Start Datatables-css from cdnjs --> <!-- Start Datatables-css from cdnjs -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/dataTables.bootstrap.min.css"/> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/css/dataTables.bootstrap.min.css"/>
<!-- End Datatables-css from cdnjs --> <!-- End Datatables-css from cdnjs -->

View File

@ -1,4 +1,4 @@
<!-- Start Datatables-js from cdnjs --> <!-- Start Datatables-js from cdnjs -->
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/jquery.dataTables.min.js"></script>
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/dataTables.bootstrap.min.js"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/datatables/1.10.21/js/dataTables.bootstrap.min.js"></script>
<!-- End Datatables-js from cdnjs --> <!-- End Datatables-js from cdnjs -->

View File

@ -1,3 +1,3 @@
<!-- Start FontAwesome CSS from cdnjs --> <!-- Start FontAwesome CSS from cdnjs -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"/> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"/>
<!-- End FontAwesome CSS from cdnjs --> <!-- End FontAwesome CSS from cdnjs -->

View File

@ -1,3 +1,3 @@
<!-- Start jQuery-DateTimePicker CSS from cdnjs --> <!-- Start jQuery-DateTimePicker CSS from cdnjs -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.min.css"/> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.min.css"/>
<!-- End jQuery-DateTimePicker CSS from cdnjs --> <!-- End jQuery-DateTimePicker CSS from cdnjs -->

View File

@ -1,3 +1,3 @@
<!-- Start jQuery-DateTimePicker JS from cdnjs --> <!-- Start jQuery-DateTimePicker JS from cdnjs -->
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-datetimepicker/2.5.20/jquery.datetimepicker.full.min.js"></script>
<!-- End jQuery-DateTimePicker JS from cdnjs --> <!-- End jQuery-DateTimePicker JS from cdnjs -->

View File

@ -4,4 +4,4 @@
<!-- Moment.JS Not EN-en --> <!-- Moment.JS Not EN-en -->
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/locale/{{ LANGUAGE_CODE }}.js"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/locale/{{ LANGUAGE_CODE }}.js"></script>
{% endif %} {% endif %}
<!-- End Moment JS from cdnjs --> <!-- End Moment JS from cdnjs -->

View File

@ -1,3 +1,3 @@
<!-- Start X-editable JS from cdnjs --> <!-- Start X-editable JS from cdnjs -->
<script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/js/bootstrap-editable.min.js"></script> <script type="application/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/js/bootstrap-editable.min.js"></script>
<!-- End X-editable JS from cdnjs --> <!-- End X-editable JS from cdnjs -->

View File

@ -1,3 +1,3 @@
<!-- Start X-editable CSS from cdnjs --> <!-- Start X-editable CSS from cdnjs -->
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/css/bootstrap-editable.css"/> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/x-editable/1.5.1/bootstrap3-editable/css/bootstrap-editable.css"/>
<!-- End X-editable CSS from cdnjs --> <!-- End X-editable CSS from cdnjs -->

View File

@ -57,4 +57,4 @@ class TestGetPermissionByName(TestCase):
def test_raises_exception_on_invalid_permission_format(self): def test_raises_exception_on_invalid_permission_format(self):
with self.assertRaises(ValueError): with self.assertRaises(ValueError):
AuthUtils.get_permission_by_name('timer_management') AuthUtils.get_permission_by_name('timer_management')

2
docs/.gitignore vendored
View File

@ -1 +1 @@
_build/ _build/

View File

@ -17,4 +17,4 @@ help:
# Catch-all target: route all unknown targets to Sphinx using the new # Catch-all target: route all unknown targets to Sphinx using the new
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
%: Makefile %: Makefile
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)

View File

@ -51,4 +51,4 @@ Subsequently it would implement the UrlHook in a dedicated `auth_hooks.py` file
def register_urls(): def register_urls():
return UrlHook(plugin.urls, 'plugin', r^'plugin/') return UrlHook(plugin.urls, 'plugin', r^'plugin/')
When this app is included in the project's `settings.INSTALLED_APPS` users would access the index view by navigating to `https://example.com/plugin/index`. When this app is included in the project's `settings.INSTALLED_APPS` users would access the index view by navigating to `https://example.com/plugin/index`.

View File

@ -34,4 +34,3 @@ zkillboard
.. automodule:: allianceauth.eveonline.evelinks.zkillboard .. automodule:: allianceauth.eveonline.evelinks.zkillboard
:members: :members:
:undoc-members: :undoc-members:

View File

@ -56,4 +56,4 @@ By default in AA, Both requests and leaves for non-open groups must be approved
```python ```python
## Allows users to freely leave groups without requiring approval. ## Allows users to freely leave groups without requiring approval.
AUTO_LEAVE = True AUTO_LEAVE = True
``` ```

View File

@ -13,4 +13,4 @@ celery>=4.3.0,<5.0.0,!=4.4.4
celery_once celery_once
passlib passlib
redis>=3.3.1,<4.0.0 redis>=3.3.1,<4.0.0
django-nose django-nose

View File

@ -27,4 +27,3 @@ app.conf.ONCE = {
# Load task modules from all registered Django app configs. # Load task modules from all registered Django app configs.
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS) app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)