mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2026-02-05 06:36:19 +01:00
Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
debd6ef2b9 | ||
|
|
58e9c21e4f | ||
|
|
c7c3083e3e | ||
|
|
63d061e9f2 | ||
|
|
1887bdb90a | ||
|
|
69addb068a | ||
|
|
a62c3ce0f9 | ||
|
|
aecc94bdb3 | ||
|
|
fcb7f2905a | ||
|
|
34c7169ca3 | ||
|
|
6e450061f4 | ||
|
|
fc3d7e9f43 | ||
|
|
514db4f9a2 | ||
|
|
23a8b65ce2 | ||
|
|
f8e6662bc8 | ||
|
|
89be2456fb | ||
|
|
bfd3451717 | ||
|
|
0b759d6a32 | ||
|
|
65e05084e6 | ||
|
|
f25a4ed386 | ||
|
|
b2a1d41829 | ||
|
|
3570ce86d7 |
@@ -19,6 +19,8 @@ Active Developers:
|
||||
|
||||
- [Adarnof](https://gitlab.com/adarnof/)
|
||||
- [Basraah](https://gitlab.com/basraah/)
|
||||
- [Ariel Rin](https://gitlab.com/soratidus999/)
|
||||
- [Col Crunch](https://gitlab.com/colcrunch/)
|
||||
|
||||
Beta Testers / Bug Fixers:
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# This will make sure the app is always imported when
|
||||
# Django starts so that shared_task will use this app.
|
||||
|
||||
__version__ = '2.2.0'
|
||||
__version__ = '2.2.2'
|
||||
NAME = 'Alliance Auth v%s' % __version__
|
||||
default_app_config = 'allianceauth.apps.AllianceAuthConfig'
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
from django.contrib import admin
|
||||
from django.db import models
|
||||
from .models import AutogroupsConfig
|
||||
from .models import AutogroupsConfig, ManagedCorpGroup, ManagedAllianceGroup
|
||||
|
||||
import logging
|
||||
|
||||
@@ -37,3 +37,6 @@ class AutogroupsConfigAdmin(admin.ModelAdmin):
|
||||
|
||||
|
||||
admin.site.register(AutogroupsConfig, AutogroupsConfigAdmin)
|
||||
admin.site.register(ManagedCorpGroup)
|
||||
admin.site.register(ManagedAllianceGroup)
|
||||
|
||||
|
||||
@@ -179,15 +179,13 @@ class AutogroupsConfig(models.Model):
|
||||
@transaction.atomic
|
||||
def create_alliance_group(self, alliance: EveAllianceInfo) -> Group:
|
||||
group, created = Group.objects.get_or_create(name=self.get_alliance_group_name(alliance))
|
||||
if created:
|
||||
ManagedAllianceGroup.objects.create(group=group, config=self, alliance=alliance)
|
||||
ManagedAllianceGroup.objects.get_or_create(group=group, config=self, alliance=alliance)
|
||||
return group
|
||||
|
||||
@transaction.atomic
|
||||
def create_corp_group(self, corp: EveCorporationInfo) -> Group:
|
||||
group, created = Group.objects.get_or_create(name=self.get_corp_group_name(corp))
|
||||
if created:
|
||||
ManagedCorpGroup.objects.create(group=group, config=self, corp=corp)
|
||||
ManagedCorpGroup.objects.get_or_create(group=group, config=self, corp=corp)
|
||||
return group
|
||||
|
||||
def delete_alliance_managed_groups(self):
|
||||
@@ -240,6 +238,8 @@ class ManagedGroup(models.Model):
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
def __str__(self):
|
||||
return "Managed Group: %s" % self.group.name
|
||||
|
||||
class ManagedCorpGroup(ManagedGroup):
|
||||
corp = models.ForeignKey(EveCorporationInfo, on_delete=models.CASCADE)
|
||||
|
||||
@@ -19,7 +19,7 @@ url
|
||||
{% for g in groups %}
|
||||
<tr>
|
||||
<td class="text-center">{{ g.group.name }}</td>
|
||||
<td class="text-center">{{ g.group.authgroup.description }}</td>
|
||||
<td class="text-center">{{ g.group.authgroup.description|urlize }}</td>
|
||||
<td class="text-center">
|
||||
{% if g.group in user.groups.all %}
|
||||
{% if not g.request %}
|
||||
@@ -32,9 +32,15 @@ url
|
||||
</button>
|
||||
{% endif %}
|
||||
{% elif not g.request %}
|
||||
<a href="{% url 'groupmanagement:request_add' g.group.id %}" class="btn btn-success">
|
||||
{% trans "Request" %}
|
||||
</a>
|
||||
{% if g.group.authgroup.open %}
|
||||
<a href="{% url 'groupmanagement:request_add' g.group.id %}" class="btn btn-success">
|
||||
{% trans "Join" %}
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'groupmanagement:request_add' g.group.id %}" class="btn btn-primary">
|
||||
{% trans "Request" %}
|
||||
</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<button type="button" class="btn btn-primary" disabled>
|
||||
{{ g.request.status }}
|
||||
|
||||
@@ -30,6 +30,7 @@ DATABASES['default'] = {
|
||||
'PASSWORD': '',
|
||||
'HOST': '127.0.0.1',
|
||||
'PORT': '3306',
|
||||
'OPTIONS': {'charset': 'utf8mb4'},
|
||||
}
|
||||
|
||||
# Register an application at https://developers.eveonline.com for Authentication
|
||||
|
||||
@@ -199,7 +199,7 @@ class Teamspeak3Manager:
|
||||
'tokendescription': username_clean,
|
||||
'tokencustomset': "ident=sso_uid value=%s" % username_clean})
|
||||
except TeamspeakError as e:
|
||||
logger.error("Failed to add teamspeak user %s: %s" % (username, str(e)))
|
||||
logger.error("Failed to add teamspeak user %s: %s" % (username_clean, str(e)))
|
||||
return "",""
|
||||
|
||||
try:
|
||||
|
||||
@@ -12,6 +12,10 @@ from .models import Teamspeak3User, AuthTS, TSgroup, StateGroup
|
||||
from .tasks import Teamspeak3Tasks
|
||||
from .signals import m2m_changed_authts_group, post_save_authts, post_delete_authts
|
||||
|
||||
from .manager import Teamspeak3Manager
|
||||
from .util.ts3 import TeamspeakError
|
||||
from allianceauth.authentication.models import State
|
||||
|
||||
MODULE_PATH = 'allianceauth.services.modules.teamspeak3'
|
||||
DEFAULT_AUTH_GROUP = 'Member'
|
||||
|
||||
@@ -290,3 +294,31 @@ class Teamspeak3SignalsTestCase(TestCase):
|
||||
self.member.profile.save()
|
||||
|
||||
self.assertTrue(update_groups.called)
|
||||
|
||||
|
||||
class Teamspeak3ManagerTestCase(TestCase):
|
||||
|
||||
@staticmethod
|
||||
def my_side_effect(*args, **kwargs):
|
||||
raise TeamspeakError(1)
|
||||
|
||||
@mock.patch.object(Teamspeak3Manager, '_group_list')
|
||||
@mock.patch.object(Teamspeak3Manager, '_group_id_by_name')
|
||||
def test_add_user_exception(self, _group_id_by_name, _group_list):
|
||||
"""test 1st exception occuring in add_user()"""
|
||||
# set mocks in Teamspeak3Manager class
|
||||
_group_list.return_value = ['Member', 'Guest']
|
||||
_group_id_by_name.return_value = 99
|
||||
manager = Teamspeak3Manager()
|
||||
server = mock.MagicMock()
|
||||
server._connected.return_value = True
|
||||
server.send_command = mock.Mock(side_effect=Teamspeak3ManagerTestCase.my_side_effect)
|
||||
manager._server = server
|
||||
|
||||
# create test data
|
||||
user = User.objects.create_user("dummy")
|
||||
user.profile.state = State.objects.filter(name="Member").first()
|
||||
|
||||
# perform test
|
||||
manager.add_user(user, "Dummy User")
|
||||
|
||||
@@ -27,12 +27,14 @@
|
||||
|
||||
{% menu_items %}
|
||||
|
||||
<li>
|
||||
<a class="{% navactive request 'authentication:help' %}"
|
||||
href="{% url 'authentication:help' %}">
|
||||
<i class="fa fa-question fa-fw"></i> {% trans "Help" %}
|
||||
</a>
|
||||
</li>
|
||||
{% if user.is_superuser %}
|
||||
<li>
|
||||
<a class="{% navactive request 'authentication:help' %}"
|
||||
href="{% url 'authentication:help' %}">
|
||||
<i class="fa fa-question fa-fw"></i> {% trans "Help" %}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -71,7 +71,7 @@ CentOS:
|
||||
Alliance Auth needs a MySQL user account and database. Open an SQL shell with `mysql -u root -p` and create them as follows, replacing `PASSWORD` with an actual secure password:
|
||||
|
||||
CREATE USER 'allianceserver'@'localhost' IDENTIFIED BY 'PASSWORD';
|
||||
CREATE DATABASE alliance_auth CHARACTER SET utf8;
|
||||
CREATE DATABASE alliance_auth CHARACTER SET utf8mb4;
|
||||
GRANT ALL PRIVILEGES ON alliance_auth . * TO 'allianceserver'@'localhost';
|
||||
|
||||
Add timezone tables to your mysql installation:
|
||||
|
||||
@@ -6,6 +6,11 @@ Discord is very popular amongst ad-hoc small groups and larger organizations see
|
||||
|
||||
## Setup
|
||||
|
||||
```eval_rst
|
||||
.. warning::
|
||||
Do not run the `discord.update_*` periodic tasks on a regular schedule, doing so can cause your discord service to stop syncing completely.
|
||||
```
|
||||
|
||||
### Prepare Your Settings File
|
||||
In your auth project's settings file, do the following:
|
||||
- Add `'allianceauth.services.modules.discord',` to your `INSTALLED_APPS` list
|
||||
|
||||
2
setup.py
2
setup.py
@@ -16,7 +16,7 @@ install_requires = [
|
||||
'celery>=4.0.2,<4.3.0',
|
||||
'celery_once',
|
||||
|
||||
'django>=2.0',
|
||||
'django>=2.0,<3.0',
|
||||
'django-bootstrap-form',
|
||||
'django-registration==2.4',
|
||||
'django-sortedm2m',
|
||||
|
||||
7
tox.ini
7
tox.ini
@@ -1,7 +1,7 @@
|
||||
[tox]
|
||||
skipsdist = True
|
||||
usedevelop = True
|
||||
envlist = py{34,35,36,37}-dj{111,20}
|
||||
envlist = py{34,35,36,37}-dj{20}
|
||||
|
||||
[testenv]
|
||||
setenv =
|
||||
@@ -11,9 +11,8 @@ basepython =
|
||||
py35: python3.5
|
||||
py36: python3.6
|
||||
py37: python3.7
|
||||
deps=
|
||||
dj111: Django>=1.11.1,<2.0
|
||||
dj20: Django>=2.0
|
||||
deps=
|
||||
dj20: Django>=2.0,<3.0
|
||||
py37: https://github.com/yaml/pyyaml/zipball/master#egg=pyyaml
|
||||
py37: https://github.com/celery/kombu/zipball/master#egg=kombu
|
||||
install_command = pip install -e ".[testing]" -U {opts} {packages}
|
||||
|
||||
Reference in New Issue
Block a user