mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 20:40:17 +02:00
Reformatted code for easy reading.
This commit is contained in:
parent
6e99823252
commit
19e19d89e4
30
.idea/dataSources.xml
generated
Normal file
30
.idea/dataSources.xml
generated
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="DataSourceManagerImpl" format="xml" hash="1026499400">
|
||||
<data-source source="LOCAL" name="Django default" uuid="3eb61453-647a-4832-8320-f3561f039abc">
|
||||
<driver-ref>mysql</driver-ref>
|
||||
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://127.0.0.1:3306/alliance_auth</jdbc-url>
|
||||
<user-name>allianceauth</user-name>
|
||||
<user-password>dfcbdfc6dfc6dfc3dfcbdfc4dfc9dfcfdfcbdfdfdfdedfc2</user-password>
|
||||
<libraries />
|
||||
</data-source>
|
||||
<data-source source="LOCAL" name="Django phpbb3" uuid="2de247c2-1951-4e74-8276-6a1c89c396fa">
|
||||
<driver-ref>mysql</driver-ref>
|
||||
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://127.0.0.1:3306/alliance_forum</jdbc-url>
|
||||
<user-name>allianceauth</user-name>
|
||||
<user-password>dfcbdfc6dfc6dfc3dfcbdfc4dfc9dfcfdfcbdfdfdfdedfc2</user-password>
|
||||
<libraries />
|
||||
</data-source>
|
||||
<data-source source="LOCAL" name="Django mumble" uuid="9963e5ca-7f2f-4dd3-9175-bc7102dfd48c">
|
||||
<driver-ref>mysql</driver-ref>
|
||||
<jdbc-driver>com.mysql.jdbc.Driver</jdbc-driver>
|
||||
<jdbc-url>jdbc:mysql://127.0.0.1:3306/alliance_mumble</jdbc-url>
|
||||
<user-name>allianceauth</user-name>
|
||||
<user-password>dfcbdfc6dfc6dfc3dfcbdfc4dfc9dfcfdfcbdfdfdfdedfc2</user-password>
|
||||
<libraries />
|
||||
</data-source>
|
||||
</component>
|
||||
</project>
|
||||
|
7
.idea/inspectionProfiles/profiles_settings.xml
generated
7
.idea/inspectionProfiles/profiles_settings.xml
generated
@ -1,7 +0,0 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="PROJECT_PROFILE" value="Project Default" />
|
||||
<option name="USE_PROJECT_PROFILE" value="true" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
@ -10,7 +10,10 @@ https://docs.djangoproject.com/en/1.6/ref/settings/
|
||||
|
||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||
import os
|
||||
|
||||
import djcelery
|
||||
|
||||
|
||||
djcelery.setup_loader()
|
||||
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
||||
|
||||
@ -154,7 +157,7 @@ STATIC_URL = '/static/'
|
||||
DEFAULT_ALLIANCE_GROUP = 'AllianceMember'
|
||||
|
||||
# ALLIANCE INFO
|
||||
ALLIANCE_ID = '0'
|
||||
ALLIANCE_ID = '99001336'
|
||||
ALLIANCE_NAME = 'Somealliance'
|
||||
|
||||
# Forum URL
|
||||
|
@ -1,6 +1,7 @@
|
||||
from django.conf.urls import patterns, include, url
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
admin.autodiscover()
|
||||
|
||||
urlpatterns = patterns('',
|
||||
@ -17,11 +18,16 @@ urlpatterns = patterns('',
|
||||
url(r'^register_user/', 'registration.views.register_user_view', name='auth_register_user'),
|
||||
|
||||
url(r'^user/password/$', 'django.contrib.auth.views.password_change', name='password_change'),
|
||||
url(r'^user/password/done/$', 'django.contrib.auth.views.password_change_done', name='password_change_done'),
|
||||
url(r'^user/password/reset/$', 'django.contrib.auth.views.password_reset', name='password_reset'),
|
||||
url(r'^user/password/password/reset/done/$', 'django.contrib.auth.views.password_reset_done', name='password_reset_done'),
|
||||
url(r'^user/password/reset/complete/$', 'django.contrib.auth.views.password_reset_complete', name='password_reset_complete'),
|
||||
url(r'^user/password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$', 'django.contrib.auth.views.password_reset_confirm', name='password_reset_confirm'),
|
||||
url(r'^user/password/done/$', 'django.contrib.auth.views.password_change_done',
|
||||
name='password_change_done'),
|
||||
url(r'^user/password/reset/$', 'django.contrib.auth.views.password_reset',
|
||||
name='password_reset'),
|
||||
url(r'^user/password/password/reset/done/$', 'django.contrib.auth.views.password_reset_done',
|
||||
name='password_reset_done'),
|
||||
url(r'^user/password/reset/complete/$', 'django.contrib.auth.views.password_reset_complete',
|
||||
name='password_reset_complete'),
|
||||
url(r'^user/password/reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>.+)/$',
|
||||
'django.contrib.auth.views.password_reset_confirm', name='password_reset_confirm'),
|
||||
|
||||
# Portal Urls
|
||||
url(r'^dashboard/$', 'portal.views.dashboard_view', name='auth_dashboard'),
|
||||
@ -29,44 +35,62 @@ urlpatterns = patterns('',
|
||||
|
||||
# Eveonline Urls
|
||||
url(r'^add_api_key/', 'eveonline.views.add_api_key', name='auth_add_api_key'),
|
||||
url(r'^api_key_management/', 'eveonline.views.api_key_management_view', name='auth_api_key_management'),
|
||||
url(r'^api_key_management/', 'eveonline.views.api_key_management_view',
|
||||
name='auth_api_key_management'),
|
||||
url(r'^delete_api_pair/(\w+)/$', 'eveonline.views.api_key_removal', name='auth_api_key_removal'),
|
||||
url(r'^characters/', 'eveonline.views.characters_view', name='auth_characters'),
|
||||
url(r'^main_character_change/(\w+)/$', 'eveonline.views.main_character_change', name='auth_main_character_change'),
|
||||
url(r'^main_character_change/(\w+)/$', 'eveonline.views.main_character_change',
|
||||
name='auth_main_character_change'),
|
||||
|
||||
# Group management
|
||||
url(r'^groups/', 'groupmanagement.views.groups_view', name='auth_groups'),
|
||||
url(r'^group/management/', 'groupmanagement.views.group_management', name='auth_group_management'),
|
||||
url(r'^group/request_add/(\w+)', 'groupmanagement.views.group_request_add', name='auth_group_request_add'),
|
||||
url(r'^group/request/accept/(\w+)', 'groupmanagement.views.group_accept_request', name='auth_group_accept_request'),
|
||||
url(r'^group/request/reject/(\w+)', 'groupmanagement.views.group_reject_request', name='auth_group_reject_request'),
|
||||
url(r'^group/management/', 'groupmanagement.views.group_management',
|
||||
name='auth_group_management'),
|
||||
url(r'^group/request_add/(\w+)', 'groupmanagement.views.group_request_add',
|
||||
name='auth_group_request_add'),
|
||||
url(r'^group/request/accept/(\w+)', 'groupmanagement.views.group_accept_request',
|
||||
name='auth_group_accept_request'),
|
||||
url(r'^group/request/reject/(\w+)', 'groupmanagement.views.group_reject_request',
|
||||
name='auth_group_reject_request'),
|
||||
|
||||
url(r'^group/request_leave/(\w+)', 'groupmanagement.views.group_request_leave', name='auth_group_request_leave'),
|
||||
url(r'^group/request_leave/(\w+)', 'groupmanagement.views.group_request_leave',
|
||||
name='auth_group_request_leave'),
|
||||
url(r'group/leave_request/accept/(\w+)', 'groupmanagement.views.group_leave_accept_request',
|
||||
name='auth_group_leave_accept_request'),
|
||||
url(r'^group/leave_request/reject/(\w+)', 'groupmanagement.views.group_leave_reject_request',
|
||||
name='auth_group_leave_reject_request'),
|
||||
|
||||
# HR Application Management
|
||||
url(r'^hr_application_management/', 'hrapplications.views.hr_application_management_view',
|
||||
name="auth_hrapplications_view"),
|
||||
url(r'^hr_application_create/', 'hrapplications.views.hr_application_create_view',
|
||||
name="auth_hrapplication_create_view"),
|
||||
|
||||
# Service Urls
|
||||
url(r'^services/', 'services.views.services_view', name='auth_services'),
|
||||
url(r'^serivces/jabber_broadcast/$', 'services.views.jabber_broadcast_view', name='auth_jabber_broadcast_view'),
|
||||
url(r'^serivces/jabber_broadcast/$', 'services.views.jabber_broadcast_view',
|
||||
name='auth_jabber_broadcast_view'),
|
||||
|
||||
# Forum Service Control
|
||||
url(r'^activate_forum/$', 'services.views.activate_forum', name='auth_activate_forum'),
|
||||
url(r'^deactivate_forum/$', 'services.views.deactivate_forum', name='auth_deactivate_forum'),
|
||||
url(r'^reset_forum_password/$', 'services.views.reset_forum_password', name='auth_reset_forum_password'),
|
||||
url(r'^reset_forum_password/$', 'services.views.reset_forum_password',
|
||||
name='auth_reset_forum_password'),
|
||||
|
||||
# Jabber Service Control
|
||||
url(r'^activate_jabber/$', 'services.views.activate_jabber', name='auth_activate_jabber'),
|
||||
url(r'^deactivate_jabber/$', 'services.views.deactivate_jabber', name='auth_deactivate_jabber'),
|
||||
url(r'^reset_jabber_password/$', 'services.views.reset_jabber_password', name='auth_reset_jabber_password'),
|
||||
url(r'^reset_jabber_password/$', 'services.views.reset_jabber_password',
|
||||
name='auth_reset_jabber_password'),
|
||||
|
||||
# Mumble service contraol
|
||||
url(r'^activate_mumble/$', 'services.views.activate_mumble', name='auth_activate_mumble'),
|
||||
url(r'^deactivate_mumble/$', 'services.views.deactivate_mumble', name='auth_deactivate_mumble'),
|
||||
url(r'^reset_mumble_password/$', 'services.views.reset_mumble_password', name='auth_reset_mumble_password'),
|
||||
url(r'^reset_mumble_password/$', 'services.views.reset_mumble_password',
|
||||
name='auth_reset_mumble_password'),
|
||||
|
||||
# Tools
|
||||
url(r'^tool/fleet_formatter_tool/$', 'services.views.fleet_formatter_view', name='auth_fleet_format_tool_view'),
|
||||
url(r'^tool/fleet_formatter_tool/$', 'services.views.fleet_formatter_view',
|
||||
name='auth_fleet_format_tool_view'),
|
||||
|
||||
)
|
||||
|
@ -8,7 +8,9 @@ https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/
|
||||
"""
|
||||
|
||||
import os
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "alliance_auth.settings")
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
application = get_wsgi_application()
|
||||
|
@ -1,5 +1,7 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from models import AuthServicesInfo
|
||||
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(AuthServicesInfo)
|
@ -4,7 +4,6 @@ from models import AuthServicesInfo
|
||||
|
||||
|
||||
class AuthServicesInfoManager:
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -4,6 +4,7 @@ from django.contrib.auth import authenticate
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
|
||||
from forms import LoginForm
|
||||
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from models import SyncGroupCache
|
||||
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(SyncGroupCache)
|
@ -1,5 +1,4 @@
|
||||
from django.db import models
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
from models import SyncGroupCache
|
||||
from django.conf import settings
|
||||
from celery.task import periodic_task
|
||||
from celery.task.schedules import crontab
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from models import SyncGroupCache
|
||||
from celery.task.schedules import crontab
|
||||
from services.managers.jabber_manager import JabberManager
|
||||
from services.managers.mumble_manager import MumbleManager
|
||||
from services.managers.forum_manager import ForumManager
|
||||
@ -52,7 +53,6 @@ def update_forum_groups(user):
|
||||
|
||||
|
||||
def add_to_databases(user, groups, syncgroups):
|
||||
|
||||
authserviceinfo = None
|
||||
try:
|
||||
authserviceinfo = AuthServicesInfo.objects.get(user=user)
|
||||
@ -141,7 +141,8 @@ def run_api_refresh():
|
||||
print 'Running on ' + api_key_pair.api_id + ':' + api_key_pair.api_key
|
||||
if EveApiManager.api_key_is_valid(api_key_pair.api_id, api_key_pair.api_key):
|
||||
# Update characters
|
||||
characters = EveApiManager.get_characters_from_api(api_key_pair.api_id, api_key_pair.api_key)
|
||||
characters = EveApiManager.get_characters_from_api(api_key_pair.api_id,
|
||||
api_key_pair.api_key)
|
||||
EveManager.update_characters_from_list(characters)
|
||||
valid_key = True
|
||||
else:
|
||||
@ -160,3 +161,10 @@ def run_api_refresh():
|
||||
deactivate_services(user)
|
||||
else:
|
||||
print 'No main_char_id set'
|
||||
|
||||
|
||||
# Run Every 2 hours
|
||||
@periodic_task(run_every=crontab(minute=0, hour="*/2"))
|
||||
def run_alliance_corp_update():
|
||||
alliance_info = EveApiManager.get_alliance_information(settings.ALLIANCE_ID)
|
||||
|
||||
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -1,3 +1 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
|
@ -1,6 +1,8 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from models import EveCharacter
|
||||
from models import EveApiKeyPair
|
||||
|
||||
|
||||
admin.site.register(EveCharacter)
|
||||
admin.site.register(EveApiKeyPair)
|
@ -1,4 +1,5 @@
|
||||
from django import forms
|
||||
|
||||
from services.managers.eve_api_manager import EveApiManager
|
||||
from eveonline.managers import EveManager
|
||||
|
||||
|
@ -1,10 +1,12 @@
|
||||
from models import EveCharacter
|
||||
from models import EveApiKeyPair
|
||||
from models import EveAllianceInfo
|
||||
from models import EveCorporationInfo
|
||||
|
||||
from services.managers.eve_api_manager import EveApiManager
|
||||
|
||||
|
||||
class EveManager:
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@ -35,7 +37,8 @@ class EveManager:
|
||||
chars.result[char]['name'],
|
||||
chars.result[char]['corp']['id'],
|
||||
chars.result[char]['corp']['name'],
|
||||
EveApiManager.get_corporation_ticker_from_id(chars.result[char]['corp']['id']),
|
||||
EveApiManager.get_corporation_ticker_from_id(
|
||||
chars.result[char]['corp']['id']),
|
||||
chars.result[char]['alliance']['id'],
|
||||
chars.result[char]['alliance']['name'],
|
||||
user, api_id)
|
||||
@ -47,7 +50,8 @@ class EveManager:
|
||||
eve_char = EveManager.get_character_by_character_name(chars.result[char]['name'])
|
||||
eve_char.corporation_id = chars.result[char]['corp']['id']
|
||||
eve_char.corporation_name = chars.result[char]['corp']['name']
|
||||
eve_char.corporation_ticker = EveApiManager.get_corporation_ticker_from_id(chars.result[char]['corp']['id'])
|
||||
eve_char.corporation_ticker = EveApiManager.get_corporation_ticker_from_id(
|
||||
chars.result[char]['corp']['id'])
|
||||
eve_char.alliance_id = chars.result[char]['alliance']['id']
|
||||
eve_char.alliance_name = chars.result[char]['alliance']['name']
|
||||
eve_char.save()
|
||||
@ -62,6 +66,38 @@ class EveManager:
|
||||
api_pair.user = user_id
|
||||
api_pair.save()
|
||||
|
||||
@staticmethod
|
||||
def create_alliance_info(alliance_id, alliance_name, alliance_ticker, alliance_executor_corp_id,
|
||||
alliance_member_count):
|
||||
if EveManager.check_if_alliance_exists_by_id(alliance_id):
|
||||
alliance_info = EveAllianceInfo()
|
||||
alliance_info.alliance_id = alliance_id
|
||||
alliance_info.alliance_name = alliance_name
|
||||
alliance_info.alliance_ticker = alliance_ticker
|
||||
alliance_info.executor_corp_id = alliance_executor_corp_id
|
||||
alliance_info.member_count = alliance_member_count
|
||||
alliance_info.save()
|
||||
|
||||
@staticmethod
|
||||
def update_alliance_info(alliance_id, alliance_executor_corp_id, alliance_member_count):
|
||||
if EveManager.check_if_alliance_exists_by_id(alliance_id):
|
||||
alliance_info = EveAllianceInfo.objects.get(alliance_id=alliance_id)
|
||||
alliance_info.executor_corp_id = alliance_executor_corp_id
|
||||
alliance_info.member_count = alliance_member_count
|
||||
alliance_info.save()
|
||||
|
||||
@staticmethod
|
||||
def create_corporation_info(corp_id, corp_name, corp_ticker, corp_member_count, alliance):
|
||||
if EveManager.check_if_corporation_exists_by_id(corp_id):
|
||||
corp_info = EveCorporationInfo()
|
||||
corp_info.corporation_id = corp_id
|
||||
corp_info.corporation_name = corp_name
|
||||
corp_info.corporation_ticker = corp_ticker
|
||||
corp_info.member_count = corp_member_count
|
||||
corp_info.alliance = alliance
|
||||
corp_info.save()
|
||||
|
||||
|
||||
@staticmethod
|
||||
def get_api_key_pairs(user):
|
||||
if EveApiKeyPair.objects.filter(user=user).exists():
|
||||
@ -128,3 +164,11 @@ class EveManager:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def check_if_alliance_exists_by_id(alliance_id):
|
||||
return EveAllianceInfo.objects.filter(alliance_id=alliance_id).exists()
|
||||
|
||||
@staticmethod
|
||||
def check_if_corporation_exists_by_id(corp_id):
|
||||
return EveCorporationInfo.objects.filter(corporation_id=corp_id).exists()
|
@ -24,3 +24,26 @@ class EveApiKeyPair(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return self.user.username + " - ApiKeyPair"
|
||||
|
||||
|
||||
class EveAllianceInfo(models.Model):
|
||||
alliance_id = models.CharField(max_length=254)
|
||||
alliance_name = models.CharField(max_length=254)
|
||||
alliance_ticker = models.CharField(max_length=254)
|
||||
executor_corp_id = models.CharField(max_length=254)
|
||||
member_count = models.IntegerField()
|
||||
|
||||
def __str__(self):
|
||||
return self.alliance_name
|
||||
|
||||
|
||||
class EveCorporationInfo(models.Model):
|
||||
corporation_id = models.CharField(max_length=254)
|
||||
corporation_name = models.CharField(max_length=254)
|
||||
corporation_ticker = models.CharField(max_length=254)
|
||||
member_count = models.IntegerField()
|
||||
|
||||
alliance = models.ForeignKey(EveAllianceInfo)
|
||||
|
||||
def __str__(self):
|
||||
return self.corporation_name
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -1,15 +1,14 @@
|
||||
from util import add_member_permission
|
||||
from util import remove_member_permission
|
||||
from util import check_if_user_has_permission
|
||||
|
||||
from django.conf import settings
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from util import add_member_permission
|
||||
from util import remove_member_permission
|
||||
from util import check_if_user_has_permission
|
||||
from forms import UpdateKeyForm
|
||||
from managers import EveManager
|
||||
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
from services.managers.eve_api_manager import EveApiManager
|
||||
from util.common_task import add_user_to_group
|
||||
@ -29,7 +28,8 @@ def add_api_key(request):
|
||||
request.user)
|
||||
|
||||
# Grab characters associated with the key pair
|
||||
characters = EveApiManager.get_characters_from_api(form.cleaned_data['api_id'], form.cleaned_data['api_key'])
|
||||
characters = EveApiManager.get_characters_from_api(form.cleaned_data['api_id'],
|
||||
form.cleaned_data['api_key'])
|
||||
EveManager.create_characters_from_list(characters, request.user, form.cleaned_data['api_id'])
|
||||
return HttpResponseRedirect("/api_key_management/")
|
||||
else:
|
||||
@ -67,7 +67,6 @@ def api_key_removal(request, api_id):
|
||||
|
||||
@login_required
|
||||
def characters_view(request):
|
||||
|
||||
render_items = {'characters': EveManager.get_characters_by_owner_id(request.user.id),
|
||||
'authinfo': AuthServicesInfoManager.get_auth_service_info(request.user)}
|
||||
return render_to_response('registered/characters.html', render_items, context_instance=RequestContext(request))
|
||||
@ -75,7 +74,6 @@ def characters_view(request):
|
||||
|
||||
@login_required
|
||||
def main_character_change(request, char_id):
|
||||
|
||||
if EveManager.check_if_character_owned_by_user(char_id, request.user):
|
||||
previousmainid = AuthServicesInfoManager.get_auth_service_info(request.user).main_char_id
|
||||
AuthServicesInfoManager.update_main_char_Id(char_id, request.user)
|
||||
@ -91,7 +89,8 @@ def main_character_change(request, char_id):
|
||||
remove_member_permission(request.user, 'alliance_member')
|
||||
remove_user_from_group(request.user, settings.DEFAULT_ALLIANCE_GROUP)
|
||||
remove_user_from_group(request.user,
|
||||
generate_corp_group_name(EveManager.get_character_by_id(previousmainid).corporation_name))
|
||||
generate_corp_group_name(
|
||||
EveManager.get_character_by_id(previousmainid).corporation_name))
|
||||
deactivate_services(request.user)
|
||||
|
||||
return HttpResponseRedirect("/characters")
|
||||
|
@ -1,6 +1,8 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from models import GroupDescription
|
||||
from models import GroupRequest
|
||||
|
||||
|
||||
admin.site.register(GroupDescription)
|
||||
admin.site.register(GroupRequest)
|
||||
|
@ -1,6 +1,7 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.models import Group
|
||||
|
||||
from eveonline.models import EveCharacter
|
||||
|
||||
|
||||
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -4,11 +4,9 @@ from django.shortcuts import render_to_response
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
from django.contrib.auth.models import Group
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from models import GroupDescription
|
||||
from models import GroupRequest
|
||||
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
from eveonline.managers import EveManager
|
||||
|
||||
@ -88,9 +86,9 @@ def group_leave_reject_request(request, group_request_id):
|
||||
|
||||
return HttpResponseRedirect("/group/management/")
|
||||
|
||||
|
||||
@login_required
|
||||
def groups_view(request):
|
||||
|
||||
paired_list = []
|
||||
|
||||
for group in Group.objects.all():
|
||||
@ -119,6 +117,7 @@ def groups_view(request):
|
||||
return render_to_response('registered/groups.html',
|
||||
render_items, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def group_request_add(request, group_id):
|
||||
auth_info = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
|
@ -1,6 +1,8 @@
|
||||
from django.contrib import admin
|
||||
|
||||
from models import HRApplications
|
||||
from models import HRApplicationComment
|
||||
|
||||
|
||||
admin.site.register(HRApplications)
|
||||
admin.site.register(HRApplicationComment)
|
@ -1 +1,11 @@
|
||||
__author__ = 'r4stl1n'
|
||||
from django import forms
|
||||
|
||||
|
||||
class HRApplicationForm(forms.Form):
|
||||
character_name = forms.CharField(max_length=254, required=True, label="Main Character Name")
|
||||
full_api_id = forms.CharField(max_length=254, required=True, label="API ID")
|
||||
full_api_key = forms.CharField(max_length=254, required=True, label="API Verification Code")
|
||||
preferred_corp = forms.CharField(max_length=254, required=True, label="Preferred Corp")
|
||||
is_a_spi = forms.ChoiceField(choices=[('Yes', 'Yes'), ('No', 'No')], required=True, label='Are you a spy?')
|
||||
about = forms.CharField(widget=forms.Textarea, required=False, label="About You")
|
||||
extra = forms.CharField(widget=forms.Textarea, required=False, label="Extra Application Info")
|
@ -6,8 +6,8 @@ class HRApplications(models.Model):
|
||||
character_name = models.CharField(max_length=254, default="")
|
||||
full_api_id = models.CharField(max_length=254, default="")
|
||||
full_api_key = models.CharField(max_length=254, default="")
|
||||
prefered_corp = models.CharField(max_length=254, default="")
|
||||
is_a_spi = models.BooleanField(default=False)
|
||||
preferred_corp = models.CharField(max_length=254, default="")
|
||||
is_a_spi = models.CharField(max_length=254, default="")
|
||||
about = models.TextField(default="")
|
||||
extra = models.TextField(default="")
|
||||
|
||||
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -1,3 +1,27 @@
|
||||
from django.shortcuts import render
|
||||
from django.template import RequestContext
|
||||
from django.shortcuts import render_to_response
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
# Create your views here.
|
||||
from forms import HRApplicationForm
|
||||
|
||||
|
||||
@login_required
|
||||
def hr_application_management_view(request):
|
||||
context = {}
|
||||
|
||||
return render_to_response('registered/hrapplicationmanagement.html',
|
||||
context, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def hr_application_create_view(request):
|
||||
if request.method == 'POST':
|
||||
form = HRApplicationForm(request.POST)
|
||||
if form.is_valid():
|
||||
pass
|
||||
else:
|
||||
form = HRApplicationForm
|
||||
|
||||
context = {'form': form}
|
||||
return render_to_response('registered/hrcreateapplication.html',
|
||||
context, context_instance=RequestContext(request))
|
@ -1,3 +1 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
|
@ -1,3 +1 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -1,13 +1,11 @@
|
||||
from django.conf import settings
|
||||
from django.template import RequestContext
|
||||
from django.shortcuts import render_to_response
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
|
||||
from eveonline.managers import EveManager
|
||||
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
|
||||
|
||||
# Create your views here.
|
||||
def index_view(request):
|
||||
return render_to_response('public/index.html', None, context_instance=RequestContext(request))
|
||||
|
@ -1,3 +1 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
|
@ -1,3 +1 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -2,11 +2,11 @@ from django.contrib.auth.models import User
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response
|
||||
from django.template import RequestContext
|
||||
|
||||
from forms import RegistrationForm
|
||||
|
||||
|
||||
def register_user_view(request):
|
||||
|
||||
if request.method == 'POST':
|
||||
form = RegistrationForm(request.POST)
|
||||
|
||||
|
@ -1,3 +1 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
|
@ -4,7 +4,6 @@ import evelink.eve
|
||||
|
||||
|
||||
class EveApiManager():
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@ -34,6 +33,32 @@ class EveApiManager():
|
||||
|
||||
return ticker
|
||||
|
||||
@staticmethod
|
||||
def get_alliance_information(alliance_id):
|
||||
results = {}
|
||||
try:
|
||||
api = evelink.api.API()
|
||||
eve = evelink.eve.EVE(api=api)
|
||||
alliance = eve.alliances()
|
||||
results = alliance[0][int(alliance_id)]
|
||||
except evelink.api.APIError as error:
|
||||
print error
|
||||
|
||||
return results
|
||||
|
||||
@staticmethod
|
||||
def get_corporation_information(corp_id):
|
||||
results = {}
|
||||
try:
|
||||
api = evelink.api.API()
|
||||
corp = evelink.corp.Corp(api=api)
|
||||
corpinfo = corp.corporation_sheet(corp_id=int(corp_id))
|
||||
results = corpinfo[0]
|
||||
except evelink.api.APIError as error:
|
||||
print error
|
||||
|
||||
return results
|
||||
|
||||
@staticmethod
|
||||
def check_api_is_type_account(api_id, api_key):
|
||||
try:
|
||||
|
@ -1,12 +1,12 @@
|
||||
import os
|
||||
import calendar
|
||||
from datetime import datetime
|
||||
|
||||
from passlib.apps import phpbb3_context
|
||||
from django.db import connections
|
||||
|
||||
|
||||
class ForumManager:
|
||||
|
||||
SQL_ADD_USER = r"INSERT INTO phpbb_users (username, username_clean, " \
|
||||
r"user_password, user_email, group_id, user_regdate, user_permissions, " \
|
||||
r"user_sig, user_occ, user_interests) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
|
||||
|
@ -1,18 +1,17 @@
|
||||
import os
|
||||
import time
|
||||
from urlparse import urlparse
|
||||
|
||||
import xmpp
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.models import Group
|
||||
from django.conf import settings
|
||||
from openfire import exception
|
||||
from openfire import UserService
|
||||
from urlparse import urlparse
|
||||
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
from eveonline.managers import EveManager
|
||||
|
||||
|
||||
class JabberManager:
|
||||
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
@ -114,5 +113,4 @@ class JabberManager:
|
||||
client.send(message)
|
||||
client.Process(1)
|
||||
|
||||
|
||||
client.disconnect()
|
@ -1,11 +1,11 @@
|
||||
import os
|
||||
import hashlib
|
||||
|
||||
from django.db import connections
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
class MumbleManager:
|
||||
|
||||
SQL_SELECT_USER_MAX_ID = r"SELECT max(user_id)+1 as next_id from murmur_users"
|
||||
|
||||
SQL_SELECT_GROUP_MAX_ID = r"SELECT MAX(group_id)+1 FROM murmur_groups"
|
||||
|
@ -1,3 +1 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
|
@ -1,3 +1 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
|
@ -1,21 +1,17 @@
|
||||
from django.template import RequestContext
|
||||
from django.shortcuts import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response
|
||||
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.decorators import permission_required
|
||||
|
||||
from managers.jabber_manager import JabberManager
|
||||
from managers.forum_manager import ForumManager
|
||||
from managers.mumble_manager import MumbleManager
|
||||
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
from eveonline.managers import EveManager
|
||||
|
||||
from celerytask.tasks import update_jabber_groups
|
||||
from celerytask.tasks import update_mumble_groups
|
||||
from celerytask.tasks import update_forum_groups
|
||||
|
||||
from forms import JabberBroadcastForm
|
||||
from forms import FleetFormatterForm
|
||||
|
||||
@ -28,8 +24,10 @@ def fleet_formatter_view(request):
|
||||
generated = "Fleet Name: " + form.cleaned_data['fleet_name'] + "\n"
|
||||
generated = generated + "FC: " + form.cleaned_data['fleet_commander'] + "\n"
|
||||
generated = generated + "Comms: " + form.cleaned_data['fleet_comms'] + "\n"
|
||||
generated = generated + "Fleet Type: "+form.cleaned_data['fleet_type'] + " || " + form.cleaned_data['ship_priorities']+"\n"
|
||||
generated = generated + "Form Up: "+form.cleaned_data['formup_location']+" @ "+form.cleaned_data['formup_time']+"\n"
|
||||
generated = generated + "Fleet Type: " + form.cleaned_data['fleet_type'] + " || " + form.cleaned_data[
|
||||
'ship_priorities'] + "\n"
|
||||
generated = generated + "Form Up: " + form.cleaned_data['formup_location'] + " @ " + form.cleaned_data[
|
||||
'formup_time'] + "\n"
|
||||
generated = generated + "Duration: " + form.cleaned_data['expected_duration'] + "\n"
|
||||
generated = generated + "Reimbursable: " + form.cleaned_data['reimbursable'] + "\n"
|
||||
generated = generated + "Important: " + form.cleaned_data['important'] + "\n"
|
||||
@ -64,7 +62,8 @@ def jabber_broadcast_view(request):
|
||||
def services_view(request):
|
||||
authinfo = AuthServicesInfoManager.get_auth_service_info(request.user)
|
||||
|
||||
return render_to_response('registered/services.html', {'authinfo': authinfo}, context_instance=RequestContext(request))
|
||||
return render_to_response('registered/services.html', {'authinfo': authinfo},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
|
@ -469,7 +469,6 @@ textarea, select, .vTextField {
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
|
||||
/* MODULES */
|
||||
|
||||
.module {
|
||||
|
@ -9,7 +9,9 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.change-list .hiddenfields { display:none; }
|
||||
.change-list .hiddenfields {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.change-list .filtered table {
|
||||
border-right: 1px solid #ddd;
|
||||
|
@ -83,13 +83,29 @@ window.SelectFilter = {
|
||||
from_box.setAttribute('name', from_box.getAttribute('name') + '_old');
|
||||
|
||||
// Set up the JavaScript event handlers for the select box filter interface
|
||||
addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });
|
||||
addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });
|
||||
addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
|
||||
addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
|
||||
addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });
|
||||
addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });
|
||||
addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });
|
||||
addEvent(filter_input, 'keyup', function (e) {
|
||||
SelectFilter.filter_key_up(e, field_id);
|
||||
});
|
||||
addEvent(filter_input, 'keydown', function (e) {
|
||||
SelectFilter.filter_key_down(e, field_id);
|
||||
});
|
||||
addEvent(from_box, 'change', function (e) {
|
||||
SelectFilter.refresh_icons(field_id)
|
||||
});
|
||||
addEvent(to_box, 'change', function (e) {
|
||||
SelectFilter.refresh_icons(field_id)
|
||||
});
|
||||
addEvent(from_box, 'dblclick', function () {
|
||||
SelectBox.move(field_id + '_from', field_id + '_to');
|
||||
SelectFilter.refresh_icons(field_id);
|
||||
});
|
||||
addEvent(to_box, 'dblclick', function () {
|
||||
SelectBox.move(field_id + '_to', field_id + '_from');
|
||||
SelectFilter.refresh_icons(field_id);
|
||||
});
|
||||
addEvent(findForm(from_box), 'submit', function () {
|
||||
SelectBox.select_all(field_id + '_to');
|
||||
});
|
||||
SelectBox.init(field_id + '_from');
|
||||
SelectBox.init(field_id + '_to');
|
||||
// Move selected from_box options to to_box
|
||||
@ -99,7 +115,9 @@ window.SelectFilter = {
|
||||
// In horizontal mode, give the same height to the two boxes.
|
||||
var j_from_box = $(from_box);
|
||||
var j_to_box = $(to_box);
|
||||
var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }
|
||||
var resize_filters = function () {
|
||||
j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight());
|
||||
}
|
||||
if (j_from_box.outerHeight() > 0) {
|
||||
resize_filters(); // This fieldset is already open. Resize now.
|
||||
} else {
|
||||
|
@ -81,7 +81,9 @@
|
||||
});
|
||||
lastChecked = null;
|
||||
$(actionCheckboxes).click(function (event) {
|
||||
if (!event) { event = window.event; }
|
||||
if (!event) {
|
||||
event = window.event;
|
||||
}
|
||||
var target = event.target ? event.target : event.srcElement;
|
||||
if (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey === true) {
|
||||
var inrange = false;
|
||||
|
102
static/admin/js/actions.min.js
vendored
102
static/admin/js/actions.min.js
vendored
@ -1,6 +1,96 @@
|
||||
(function(a){a.fn.actions=function(n){var b=a.extend({},a.fn.actions.defaults,n),e=a(this),g=false,k=function(c){c?i():j();a(e).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},f=function(){var c=a(e).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},true));a(b.allToggle).prop("checked",function(){if(c==e.length){value=true;i()}else{value=false;l()}return value})},i=
|
||||
function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},m=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},j=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},l=function(){j();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)};a(b.counterContainer).show();
|
||||
a(this).filter(":checked").each(function(){a(this).parent().parent().toggleClass(b.selectedClass);f();a(b.acrossInput).val()==1&&m()});a(b.allToggle).show().click(function(){k(a(this).prop("checked"));f()});a("div.actions span.question a").click(function(c){c.preventDefault();a(b.acrossInput).val(1);m()});a("div.actions span.clear a").click(function(c){c.preventDefault();a(b.allToggle).prop("checked",false);l();k(0);f()});lastChecked=null;a(e).click(function(c){if(!c)c=window.event;var d=c.target?
|
||||
c.target:c.srcElement;if(lastChecked&&a.data(lastChecked)!=a.data(d)&&c.shiftKey===true){var h=false;a(lastChecked).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(e).each(function(){if(a.data(this)==a.data(lastChecked)||a.data(this)==a.data(d))h=h?false:true;h&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);lastChecked=d;f()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){g=
|
||||
true});a('form#changelist-form button[name="index"]').click(function(){if(g)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});a('form#changelist-form input[name="_save"]').click(function(){var c=false;a("div.actions select option:selected").each(function(){if(a(this).val())c=true});if(c)return g?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):
|
||||
confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})};a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery);
|
||||
(function (a) {
|
||||
a.fn.actions = function (n) {
|
||||
var b = a.extend({}, a.fn.actions.defaults, n), e = a(this), g = false, k = function (c) {
|
||||
c ? i() : j();
|
||||
a(e).prop("checked", c).parent().parent().toggleClass(b.selectedClass, c)
|
||||
}, f = function () {
|
||||
var c = a(e).filter(":checked").length;
|
||||
a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected", "%(sel)s of %(cnt)s selected", c), {sel: c, cnt: _actions_icnt}, true));
|
||||
a(b.allToggle).prop("checked", function () {
|
||||
if (c == e.length) {
|
||||
value = true;
|
||||
i()
|
||||
} else {
|
||||
value = false;
|
||||
l()
|
||||
}
|
||||
return value
|
||||
})
|
||||
}, i =
|
||||
function () {
|
||||
a(b.acrossClears).hide();
|
||||
a(b.acrossQuestions).show();
|
||||
a(b.allContainer).hide()
|
||||
}, m = function () {
|
||||
a(b.acrossClears).show();
|
||||
a(b.acrossQuestions).hide();
|
||||
a(b.actionContainer).toggleClass(b.selectedClass);
|
||||
a(b.allContainer).show();
|
||||
a(b.counterContainer).hide()
|
||||
}, j = function () {
|
||||
a(b.acrossClears).hide();
|
||||
a(b.acrossQuestions).hide();
|
||||
a(b.allContainer).hide();
|
||||
a(b.counterContainer).show()
|
||||
}, l = function () {
|
||||
j();
|
||||
a(b.acrossInput).val(0);
|
||||
a(b.actionContainer).removeClass(b.selectedClass)
|
||||
};
|
||||
a(b.counterContainer).show();
|
||||
a(this).filter(":checked").each(function () {
|
||||
a(this).parent().parent().toggleClass(b.selectedClass);
|
||||
f();
|
||||
a(b.acrossInput).val() == 1 && m()
|
||||
});
|
||||
a(b.allToggle).show().click(function () {
|
||||
k(a(this).prop("checked"));
|
||||
f()
|
||||
});
|
||||
a("div.actions span.question a").click(function (c) {
|
||||
c.preventDefault();
|
||||
a(b.acrossInput).val(1);
|
||||
m()
|
||||
});
|
||||
a("div.actions span.clear a").click(function (c) {
|
||||
c.preventDefault();
|
||||
a(b.allToggle).prop("checked", false);
|
||||
l();
|
||||
k(0);
|
||||
f()
|
||||
});
|
||||
lastChecked = null;
|
||||
a(e).click(function (c) {
|
||||
if (!c)c = window.event;
|
||||
var d = c.target ?
|
||||
c.target : c.srcElement;
|
||||
if (lastChecked && a.data(lastChecked) != a.data(d) && c.shiftKey === true) {
|
||||
var h = false;
|
||||
a(lastChecked).prop("checked", d.checked).parent().parent().toggleClass(b.selectedClass, d.checked);
|
||||
a(e).each(function () {
|
||||
if (a.data(this) == a.data(lastChecked) || a.data(this) == a.data(d))h = h ? false : true;
|
||||
h && a(this).prop("checked", d.checked).parent().parent().toggleClass(b.selectedClass, d.checked)
|
||||
})
|
||||
}
|
||||
a(d).parent().parent().toggleClass(b.selectedClass, d.checked);
|
||||
lastChecked = d;
|
||||
f()
|
||||
});
|
||||
a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function () {
|
||||
g =
|
||||
true
|
||||
});
|
||||
a('form#changelist-form button[name="index"]').click(function () {
|
||||
if (g)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))
|
||||
});
|
||||
a('form#changelist-form input[name="_save"]').click(function () {
|
||||
var c = false;
|
||||
a("div.actions select option:selected").each(function () {
|
||||
if (a(this).val())c = true
|
||||
});
|
||||
if (c)return g ? confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")) :
|
||||
confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))
|
||||
})
|
||||
};
|
||||
a.fn.actions.defaults = {actionContainer: "div.actions", counterContainer: "span.action-counter", allContainer: "div.actions span.all", acrossInput: "div.actions input.select-across", acrossQuestions: "div.actions span.question", acrossClears: "div.actions span.clear", allToggle: "#action-toggle", selectedClass: "selected"}
|
||||
})(django.jQuery);
|
||||
|
@ -41,7 +41,10 @@ var DateTimeShortcuts = {
|
||||
addClock: function (inp) {
|
||||
var num = DateTimeShortcuts.clockInputs.length;
|
||||
DateTimeShortcuts.clockInputs[num] = inp;
|
||||
DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };
|
||||
DateTimeShortcuts.dismissClockFunc[num] = function () {
|
||||
DateTimeShortcuts.dismissClock(num);
|
||||
return true;
|
||||
};
|
||||
|
||||
// Shortcut links (clock icon and "Now" link)
|
||||
var shortcuts_span = document.createElement('span');
|
||||
@ -137,7 +140,10 @@ var DateTimeShortcuts = {
|
||||
var num = DateTimeShortcuts.calendars.length;
|
||||
|
||||
DateTimeShortcuts.calendarInputs[num] = inp;
|
||||
DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };
|
||||
DateTimeShortcuts.dismissCalendarFunc[num] = function () {
|
||||
DateTimeShortcuts.dismissCalendar(num);
|
||||
return true;
|
||||
};
|
||||
|
||||
// Shortcut links (calendar icon and "Today" link)
|
||||
var shortcuts_span = document.createElement('span');
|
||||
|
14
static/admin/js/collapse.min.js
vendored
14
static/admin/js/collapse.min.js
vendored
@ -1,2 +1,12 @@
|
||||
(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(c,b){0==a(b).find("div.errors").length&&a(b).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser'+c+'" class="collapse-toggle" href="#">'+gettext("Show")+"</a>)")});a("fieldset.collapse a.collapse-toggle").click(function(){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset",
|
||||
[a(this).attr("id")]);return!1})})})(django.jQuery);
|
||||
(function (a) {
|
||||
a(document).ready(function () {
|
||||
a("fieldset.collapse").each(function (c, b) {
|
||||
0 == a(b).find("div.errors").length && a(b).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser' + c + '" class="collapse-toggle" href="#">' + gettext("Show") + "</a>)")
|
||||
});
|
||||
a("fieldset.collapse a.collapse-toggle").click(function () {
|
||||
a(this).closest("fieldset").hasClass("collapsed") ? a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [a(this).attr("id")]) : a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset",
|
||||
[a(this).attr("id")]);
|
||||
return!1
|
||||
})
|
||||
})
|
||||
})(django.jQuery);
|
||||
|
@ -107,8 +107,7 @@
|
||||
}
|
||||
// Also, update names and ids for all remaining form controls
|
||||
// so they remain in sequence:
|
||||
for (var i=0, formCount=forms.length; i<formCount; i++)
|
||||
{
|
||||
for (var i = 0, formCount = forms.length; i < formCount; i++) {
|
||||
updateElementIndex($(forms).get(i), options.prefix, i);
|
||||
$(forms.get(i)).find("*").each(function () {
|
||||
updateElementIndex(this, options.prefix, i);
|
||||
|
116
static/admin/js/inlines.min.js
vendored
116
static/admin/js/inlines.min.js
vendored
@ -1,9 +1,107 @@
|
||||
(function(b){b.fn.formset=function(d){var a=b.extend({},b.fn.formset.defaults,d),c=b(this),d=c.parent(),i=function(a,e,g){var d=RegExp("("+e+"-(\\d+|__prefix__))"),e=e+"-"+g;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(d,e));a.id&&(a.id=a.id.replace(d,e));a.name&&(a.name=a.name.replace(d,e))},f=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),g=parseInt(f.val(),10),e=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),f=""===e.val()||0<e.val()-f.val();c.each(function(){b(this).not("."+
|
||||
a.emptyCssClass).addClass(a.formCssClass)});if(c.length&&f){var h;"TR"==c.prop("tagName")?(c=this.eq(-1).children().length,d.append('<tr class="'+a.addCssClass+'"><td colspan="'+c+'"><a href="javascript:void(0)">'+a.addText+"</a></tr>"),h=d.find("tr:last a")):(c.filter(":last").after('<div class="'+a.addCssClass+'"><a href="javascript:void(0)">'+a.addText+"</a></div>"),h=c.filter(":last").next().find("a"));h.click(function(d){d.preventDefault();var f=b("#id_"+a.prefix+"-TOTAL_FORMS"),d=b("#"+a.prefix+
|
||||
"-empty"),c=d.clone(true);c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+g);c.is("tr")?c.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></div>"):c.is("ul")||c.is("ol")?c.append('<li><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></li>"):c.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></span>");c.find("*").each(function(){i(this,
|
||||
a.prefix,f.val())});c.insertBefore(b(d));b(f).val(parseInt(f.val(),10)+1);g=g+1;e.val()!==""&&e.val()-f.val()<=0&&h.parent().hide();c.find("a."+a.deleteCssClass).click(function(d){d.preventDefault();d=b(this).parents("."+a.formCssClass);d.remove();g=g-1;a.removed&&a.removed(d);d=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(d.length);(e.val()===""||e.val()-d.length>0)&&h.parent().show();for(var c=0,f=d.length;c<f;c++){i(b(d).get(c),a.prefix,c);b(d.get(c)).find("*").each(function(){i(this,
|
||||
a.prefix,c)})}});a.added&&a.added(c)})}return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};b.fn.tabularFormset=function(d){var a=b(this),c=function(){b(a.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+
|
||||
d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:c,added:function(a){a.find(".prepopulated_field").each(function(){var d=b(this).find("input, select, textarea"),c=d.data("dependency_list")||[],e=[];b.each(c,function(d,b){e.push("#"+a.find(".field-"+b).find("input, select, textarea").attr("id"))});e.length&&d.prepopulate(e,d.attr("maxlength"))});"undefined"!=typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());"undefined"!=
|
||||
typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],false,d.adminStaticPrefix)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],true,d.adminStaticPrefix)}));c(a)}});return a};b.fn.stackedFormset=function(d){var a=b(this),c=function(){b(a.selector).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g,"#"+a))})};a.formset({prefix:d.prefix,
|
||||
addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:c,added:function(a){a.find(".prepopulated_field").each(function(){var d=b(this).find("input, select, textarea"),c=d.data("dependency_list")||[],e=[];b.each(c,function(d,b){e.push("#"+a.find(".form-row .field-"+b).find("input, select, textarea").attr("id"))});e.length&&d.prepopulate(e,d.attr("maxlength"))});"undefined"!=typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),
|
||||
DateTimeShortcuts.init());"undefined"!=typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],false,d.adminStaticPrefix)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],true,d.adminStaticPrefix)}));c(a)}});return a}})(django.jQuery);
|
||||
(function (b) {
|
||||
b.fn.formset = function (d) {
|
||||
var a = b.extend({}, b.fn.formset.defaults, d), c = b(this), d = c.parent(), i = function (a, e, g) {
|
||||
var d = RegExp("(" + e + "-(\\d+|__prefix__))"), e = e + "-" + g;
|
||||
b(a).prop("for") && b(a).prop("for", b(a).prop("for").replace(d, e));
|
||||
a.id && (a.id = a.id.replace(d, e));
|
||||
a.name && (a.name = a.name.replace(d, e))
|
||||
}, f = b("#id_" + a.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"), g = parseInt(f.val(), 10), e = b("#id_" + a.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"), f = "" === e.val() || 0 < e.val() - f.val();
|
||||
c.each(function () {
|
||||
b(this).not("." +
|
||||
a.emptyCssClass).addClass(a.formCssClass)
|
||||
});
|
||||
if (c.length && f) {
|
||||
var h;
|
||||
"TR" == c.prop("tagName") ? (c = this.eq(-1).children().length, d.append('<tr class="' + a.addCssClass + '"><td colspan="' + c + '"><a href="javascript:void(0)">' + a.addText + "</a></tr>"), h = d.find("tr:last a")) : (c.filter(":last").after('<div class="' + a.addCssClass + '"><a href="javascript:void(0)">' + a.addText + "</a></div>"), h = c.filter(":last").next().find("a"));
|
||||
h.click(function (d) {
|
||||
d.preventDefault();
|
||||
var f = b("#id_" + a.prefix + "-TOTAL_FORMS"), d = b("#" + a.prefix +
|
||||
"-empty"), c = d.clone(true);
|
||||
c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id", a.prefix + "-" + g);
|
||||
c.is("tr") ? c.children(":last").append('<div><a class="' + a.deleteCssClass + '" href="javascript:void(0)">' + a.deleteText + "</a></div>") : c.is("ul") || c.is("ol") ? c.append('<li><a class="' + a.deleteCssClass + '" href="javascript:void(0)">' + a.deleteText + "</a></li>") : c.children(":first").append('<span><a class="' + a.deleteCssClass + '" href="javascript:void(0)">' + a.deleteText + "</a></span>");
|
||||
c.find("*").each(function () {
|
||||
i(this,
|
||||
a.prefix, f.val())
|
||||
});
|
||||
c.insertBefore(b(d));
|
||||
b(f).val(parseInt(f.val(), 10) + 1);
|
||||
g = g + 1;
|
||||
e.val() !== "" && e.val() - f.val() <= 0 && h.parent().hide();
|
||||
c.find("a." + a.deleteCssClass).click(function (d) {
|
||||
d.preventDefault();
|
||||
d = b(this).parents("." + a.formCssClass);
|
||||
d.remove();
|
||||
g = g - 1;
|
||||
a.removed && a.removed(d);
|
||||
d = b("." + a.formCssClass);
|
||||
b("#id_" + a.prefix + "-TOTAL_FORMS").val(d.length);
|
||||
(e.val() === "" || e.val() - d.length > 0) && h.parent().show();
|
||||
for (var c = 0, f = d.length; c < f; c++) {
|
||||
i(b(d).get(c), a.prefix, c);
|
||||
b(d.get(c)).find("*").each(function () {
|
||||
i(this,
|
||||
a.prefix, c)
|
||||
})
|
||||
}
|
||||
});
|
||||
a.added && a.added(c)
|
||||
})
|
||||
}
|
||||
return this
|
||||
};
|
||||
b.fn.formset.defaults = {prefix: "form", addText: "add another", deleteText: "remove", addCssClass: "add-row", deleteCssClass: "delete-row", emptyCssClass: "empty-row", formCssClass: "dynamic-form", added: null, removed: null};
|
||||
b.fn.tabularFormset = function (d) {
|
||||
var a = b(this), c = function () {
|
||||
b(a.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")
|
||||
};
|
||||
a.formset({prefix: d.prefix, addText: d.addText, formCssClass: "dynamic-" +
|
||||
d.prefix, deleteCssClass: "inline-deletelink", deleteText: d.deleteText, emptyCssClass: "empty-form", removed: c, added: function (a) {
|
||||
a.find(".prepopulated_field").each(function () {
|
||||
var d = b(this).find("input, select, textarea"), c = d.data("dependency_list") || [], e = [];
|
||||
b.each(c, function (d, b) {
|
||||
e.push("#" + a.find(".field-" + b).find("input, select, textarea").attr("id"))
|
||||
});
|
||||
e.length && d.prepopulate(e, d.attr("maxlength"))
|
||||
});
|
||||
"undefined" != typeof DateTimeShortcuts && (b(".datetimeshortcuts").remove(), DateTimeShortcuts.init());
|
||||
"undefined" != typeof SelectFilter && (b(".selectfilter").each(function (a, b) {
|
||||
var c = b.name.split("-");
|
||||
SelectFilter.init(b.id, c[c.length - 1], false, d.adminStaticPrefix)
|
||||
}), b(".selectfilterstacked").each(function (a, b) {
|
||||
var c = b.name.split("-");
|
||||
SelectFilter.init(b.id, c[c.length - 1], true, d.adminStaticPrefix)
|
||||
}));
|
||||
c(a)
|
||||
}});
|
||||
return a
|
||||
};
|
||||
b.fn.stackedFormset = function (d) {
|
||||
var a = b(this), c = function () {
|
||||
b(a.selector).find(".inline_label").each(function (a) {
|
||||
a += 1;
|
||||
b(this).html(b(this).html().replace(/(#\d+)/g, "#" + a))
|
||||
})
|
||||
};
|
||||
a.formset({prefix: d.prefix,
|
||||
addText: d.addText, formCssClass: "dynamic-" + d.prefix, deleteCssClass: "inline-deletelink", deleteText: d.deleteText, emptyCssClass: "empty-form", removed: c, added: function (a) {
|
||||
a.find(".prepopulated_field").each(function () {
|
||||
var d = b(this).find("input, select, textarea"), c = d.data("dependency_list") || [], e = [];
|
||||
b.each(c, function (d, b) {
|
||||
e.push("#" + a.find(".form-row .field-" + b).find("input, select, textarea").attr("id"))
|
||||
});
|
||||
e.length && d.prepopulate(e, d.attr("maxlength"))
|
||||
});
|
||||
"undefined" != typeof DateTimeShortcuts && (b(".datetimeshortcuts").remove(),
|
||||
DateTimeShortcuts.init());
|
||||
"undefined" != typeof SelectFilter && (b(".selectfilter").each(function (a, b) {
|
||||
var c = b.name.split("-");
|
||||
SelectFilter.init(b.id, c[c.length - 1], false, d.adminStaticPrefix)
|
||||
}), b(".selectfilterstacked").each(function (a, b) {
|
||||
var c = b.name.split("-");
|
||||
SelectFilter.init(b.id, c[c.length - 1], true, d.adminStaticPrefix)
|
||||
}));
|
||||
c(a)
|
||||
}});
|
||||
return a
|
||||
}
|
||||
})(django.jQuery);
|
||||
|
68
static/admin/js/jquery.js
vendored
68
static/admin/js/jquery.js
vendored
@ -476,9 +476,7 @@ jQuery.extend({
|
||||
|
||||
try {
|
||||
// Not own constructor property must be Object
|
||||
if ( obj.constructor &&
|
||||
!core_hasOwn.call(obj, "constructor") &&
|
||||
!core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
|
||||
if (obj.constructor && !core_hasOwn.call(obj, "constructor") && !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf")) {
|
||||
return false;
|
||||
}
|
||||
} catch (e) {
|
||||
@ -490,7 +488,8 @@ jQuery.extend({
|
||||
// if last one is own, then all properties are own.
|
||||
|
||||
var key;
|
||||
for ( key in obj ) {}
|
||||
for (key in obj) {
|
||||
}
|
||||
|
||||
return key === undefined || core_hasOwn.call(obj, key);
|
||||
},
|
||||
@ -589,7 +588,8 @@ jQuery.extend({
|
||||
return xml;
|
||||
},
|
||||
|
||||
noop: function() {},
|
||||
noop: function () {
|
||||
},
|
||||
|
||||
// Evaluates a script in a global context
|
||||
// Workarounds based on findings by Jim Driscoll
|
||||
@ -916,7 +916,8 @@ jQuery.ready.promise = function( obj ) {
|
||||
|
||||
try {
|
||||
top = window.frameElement == null && document.documentElement;
|
||||
} catch(e) {}
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
if (top && top.doScroll) {
|
||||
(function doScrollCheck() {
|
||||
@ -1505,8 +1506,7 @@ jQuery.support = (function() {
|
||||
marginDiv.style.marginRight = marginDiv.style.width = "0";
|
||||
div.style.width = "1px";
|
||||
|
||||
support.reliableMarginRight =
|
||||
!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
|
||||
support.reliableMarginRight = !parseFloat(( window.getComputedStyle(marginDiv, null) || {} ).marginRight);
|
||||
}
|
||||
|
||||
if (typeof div.style.zoom !== core_strundefined) {
|
||||
@ -1856,7 +1856,8 @@ function dataAttr( elem, key, data ) {
|
||||
+data + "" === data ? +data :
|
||||
rbrace.test(data) ? jQuery.parseJSON(data) :
|
||||
data;
|
||||
} catch( e ) {}
|
||||
} catch (e) {
|
||||
}
|
||||
|
||||
// Make sure we set the data so it isn't changed later
|
||||
jQuery.data(elem, key, data);
|
||||
@ -1885,6 +1886,7 @@ function isEmptyDataObject( obj ) {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
jQuery.extend({
|
||||
queue: function (elem, type, data) {
|
||||
var queue;
|
||||
@ -2064,7 +2066,8 @@ jQuery.fn.extend({
|
||||
try {
|
||||
this[ name ] = undefined;
|
||||
delete this[ name ];
|
||||
} catch( e ) {}
|
||||
} catch (e) {
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
@ -2997,8 +3000,7 @@ jQuery.event = {
|
||||
// If nobody prevented the default action, do it now
|
||||
if (!onlyHandlers && !event.isDefaultPrevented()) {
|
||||
|
||||
if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
|
||||
!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
|
||||
if ((!special._default || special._default.apply(elem.ownerDocument, data) === false) && !(type === "click" && jQuery.nodeName(elem, "a")) && jQuery.acceptData(elem)) {
|
||||
|
||||
// Call a native DOM method on the target with the same name name as the event.
|
||||
// Can't use an .isFunction() check here because IE6/7 fails that test.
|
||||
@ -4381,7 +4383,8 @@ Sizzle.matchesSelector = function( elem, expr ) {
|
||||
elem.document && elem.document.nodeType !== 11) {
|
||||
return ret;
|
||||
}
|
||||
} catch(e) {}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
return Sizzle(expr, document, null, [elem]).length > 0;
|
||||
@ -4634,7 +4637,9 @@ Expr = Sizzle.selectors = {
|
||||
|
||||
"TAG": function (nodeName) {
|
||||
if (nodeName === "*") {
|
||||
return function() { return true; };
|
||||
return function () {
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
nodeName = nodeName.replace(runescape, funescape).toLowerCase();
|
||||
@ -5524,7 +5529,9 @@ function select( selector, context, results, seed ) {
|
||||
Expr.pseudos["nth"] = Expr.pseudos["eq"];
|
||||
|
||||
// Easy API for creating new setFilters
|
||||
function setFilters() {}
|
||||
function setFilters() {
|
||||
}
|
||||
|
||||
Expr.filters = setFilters.prototype = Expr.pseudos;
|
||||
Expr.setFilters = new setFilters();
|
||||
|
||||
@ -5818,6 +5825,7 @@ function winnow( elements, qualifier, keep ) {
|
||||
return ( jQuery.inArray(elem, qualifier) >= 0 ) === keep;
|
||||
});
|
||||
}
|
||||
|
||||
function createSafeFragment(document) {
|
||||
var list = nodeNames.split("|"),
|
||||
safeFrag = document.createDocumentFragment();
|
||||
@ -6049,8 +6057,7 @@ jQuery.fn.extend({
|
||||
// See if we can take a shortcut and just use innerHTML
|
||||
if (typeof value === "string" && !rnoInnerhtml.test(value) &&
|
||||
( jQuery.support.htmlSerialize || !rnoshimcache.test(value) ) &&
|
||||
( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
|
||||
!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
|
||||
( jQuery.support.leadingWhitespace || !rleadingWhitespace.test(value) ) && !wrapMap[ ( rtagName.exec(value) || ["", ""] )[1].toLowerCase() ]) {
|
||||
|
||||
value = value.replace(rxhtmlTag, "<$1></$2>");
|
||||
|
||||
@ -6067,7 +6074,8 @@ jQuery.fn.extend({
|
||||
elem = 0;
|
||||
|
||||
// If using innerHTML throws an exception, use the fallback method
|
||||
} catch(e) {}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
if (elem) {
|
||||
@ -6170,8 +6178,7 @@ jQuery.fn.extend({
|
||||
// Evaluate executable scripts on first document insertion
|
||||
for (i = 0; i < hasScripts; i++) {
|
||||
node = scripts[ i ];
|
||||
if ( rscriptType.test( node.type || "" ) &&
|
||||
!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
|
||||
if (rscriptType.test(node.type || "") && !jQuery._data(node, "globalEval") && jQuery.contains(doc, node)) {
|
||||
|
||||
if (node.src) {
|
||||
// Hope ajax is available...
|
||||
@ -6209,6 +6216,7 @@ function disableScript( elem ) {
|
||||
elem.type = ( attr && attr.specified ) + "/" + elem.type;
|
||||
return elem;
|
||||
}
|
||||
|
||||
function restoreScript(elem) {
|
||||
var match = rscriptTypeMasked.exec(elem.type);
|
||||
if (match) {
|
||||
@ -6849,7 +6857,8 @@ jQuery.extend({
|
||||
// Fixes bug #5509
|
||||
try {
|
||||
style[ name ] = value;
|
||||
} catch(e) {}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -7392,6 +7401,7 @@ function buildParams( prefix, obj, traditional, add ) {
|
||||
add(prefix, obj);
|
||||
}
|
||||
}
|
||||
|
||||
jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick " +
|
||||
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
||||
"change select submit keydown keypress keyup error contextmenu").split(" "), function (i, name) {
|
||||
@ -8258,6 +8268,7 @@ function ajaxConvert( s, response ) {
|
||||
|
||||
return { state: "success", data: response };
|
||||
}
|
||||
|
||||
// Install script dataType
|
||||
jQuery.ajaxSetup({
|
||||
accepts: {
|
||||
@ -8439,13 +8450,15 @@ var xhrCallbacks, xhrSupported,
|
||||
function createStandardXHR() {
|
||||
try {
|
||||
return new window.XMLHttpRequest();
|
||||
} catch( e ) {}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
function createActiveXHR() {
|
||||
try {
|
||||
return new window.ActiveXObject("Microsoft.XMLHTTP");
|
||||
} catch( e ) {}
|
||||
} catch (e) {
|
||||
}
|
||||
}
|
||||
|
||||
// Create the request object
|
||||
@ -8518,7 +8531,8 @@ if ( xhrSupported ) {
|
||||
for (i in headers) {
|
||||
xhr.setRequestHeader(i, headers[ i ]);
|
||||
}
|
||||
} catch( err ) {}
|
||||
} catch (err) {
|
||||
}
|
||||
|
||||
// Do send the request
|
||||
// This may raise an exception which is actually
|
||||
@ -9004,6 +9018,7 @@ function defaultPrefilter( elem, props, opts ) {
|
||||
function Tween(elem, options, prop, end, easing) {
|
||||
return new Tween.prototype.init(elem, options, prop, end, easing);
|
||||
}
|
||||
|
||||
jQuery.Tween = Tween;
|
||||
|
||||
Tween.prototype = {
|
||||
@ -9530,6 +9545,7 @@ function getWindow( elem ) {
|
||||
elem.defaultView || elem.parentWindow :
|
||||
false;
|
||||
}
|
||||
|
||||
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
||||
jQuery.each({ Height: "height", Width: "width" }, function (name, type) {
|
||||
jQuery.each({ padding: "inner" + name, content: type, "": "outer" + name }, function (defaultExtra, funcName) {
|
||||
@ -9591,7 +9607,9 @@ window.jQuery = window.$ = jQuery;
|
||||
// Do this after creating the global so that if an AMD module wants to call
|
||||
// noConflict to hide this version of jQuery, it will work.
|
||||
if (typeof define === "function" && define.amd && define.amd.jQuery) {
|
||||
define( "jquery", [], function () { return jQuery; } );
|
||||
define("jquery", [], function () {
|
||||
return jQuery;
|
||||
});
|
||||
}
|
||||
|
||||
})(window);
|
||||
|
2205
static/admin/js/jquery.min.js
vendored
2205
static/admin/js/jquery.min.js
vendored
File diff suppressed because one or more lines are too long
22
static/admin/js/prepopulate.min.js
vendored
22
static/admin/js/prepopulate.min.js
vendored
@ -1 +1,21 @@
|
||||
(function(a){a.fn.prepopulate=function(d,g){return this.each(function(){var b=a(this);b.data("_changed",false);b.change(function(){b.data("_changed",true)});var c=function(){if(b.data("_changed")!=true){var e=[];a.each(d,function(h,f){a(f).val().length>0&&e.push(a(f).val())});b.val(URLify(e.join(" "),g))}};a(d.join(",")).keyup(c).change(c).focus(c)})}})(django.jQuery);
|
||||
(function (a) {
|
||||
a.fn.prepopulate = function (d, g) {
|
||||
return this.each(function () {
|
||||
var b = a(this);
|
||||
b.data("_changed", false);
|
||||
b.change(function () {
|
||||
b.data("_changed", true)
|
||||
});
|
||||
var c = function () {
|
||||
if (b.data("_changed") != true) {
|
||||
var e = [];
|
||||
a.each(d, function (h, f) {
|
||||
a(f).val().length > 0 && e.push(a(f).val())
|
||||
});
|
||||
b.val(URLify(e.join(" "), g))
|
||||
}
|
||||
};
|
||||
a(d.join(",")).keyup(c).change(c).focus(c)
|
||||
})
|
||||
}
|
||||
})(django.jQuery);
|
||||
|
@ -1,12 +1,8 @@
|
||||
var LATIN_MAP = {
|
||||
'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':
|
||||
'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',
|
||||
'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':
|
||||
'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',
|
||||
'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä':
|
||||
'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',
|
||||
'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó':
|
||||
'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',
|
||||
'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',
|
||||
'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',
|
||||
'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à': 'a', 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',
|
||||
'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',
|
||||
'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'
|
||||
}
|
||||
var LATIN_SYMBOLS_MAP = {
|
||||
@ -73,17 +69,14 @@ ALL_DOWNCODE_MAPS[7]=POLISH_MAP
|
||||
ALL_DOWNCODE_MAPS[8] = LATVIAN_MAP
|
||||
|
||||
var Downcoder = new Object();
|
||||
Downcoder.Initialize = function()
|
||||
{
|
||||
Downcoder.Initialize = function () {
|
||||
if (Downcoder.map) // already made
|
||||
return;
|
||||
Downcoder.map = {}
|
||||
Downcoder.chars = '';
|
||||
for(var i in ALL_DOWNCODE_MAPS)
|
||||
{
|
||||
for (var i in ALL_DOWNCODE_MAPS) {
|
||||
var lookup = ALL_DOWNCODE_MAPS[i]
|
||||
for (var c in lookup)
|
||||
{
|
||||
for (var c in lookup) {
|
||||
Downcoder.map[c] = lookup[c];
|
||||
Downcoder.chars += c;
|
||||
}
|
||||
@ -91,20 +84,15 @@ Downcoder.Initialize = function()
|
||||
Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+', 'g');
|
||||
}
|
||||
|
||||
downcode= function( slug )
|
||||
{
|
||||
downcode = function (slug) {
|
||||
Downcoder.Initialize();
|
||||
var downcoded = ""
|
||||
var pieces = slug.match(Downcoder.regex);
|
||||
if(pieces)
|
||||
{
|
||||
for (var i = 0 ; i < pieces.length ; i++)
|
||||
{
|
||||
if (pieces[i].length == 1)
|
||||
{
|
||||
if (pieces) {
|
||||
for (var i = 0; i < pieces.length; i++) {
|
||||
if (pieces[i].length == 1) {
|
||||
var mapped = Downcoder.map[pieces[i]];
|
||||
if (mapped != null)
|
||||
{
|
||||
if (mapped != null) {
|
||||
downcoded += mapped;
|
||||
continue;
|
||||
}
|
||||
@ -112,8 +100,7 @@ downcode= function( slug )
|
||||
downcoded += pieces[i];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
else {
|
||||
downcoded = slug;
|
||||
}
|
||||
return downcoded;
|
||||
|
450
static/css/bootstrap-theme.min.css
vendored
450
static/css/bootstrap-theme.min.css
vendored
File diff suppressed because one or more lines are too long
6663
static/css/bootstrap.min.css
vendored
6663
static/css/bootstrap.min.css
vendored
File diff suppressed because one or more lines are too long
1964
static/css/font-awesome.min.css
vendored
1964
static/css/font-awesome.min.css
vendored
File diff suppressed because one or more lines are too long
@ -25,10 +25,12 @@ body {
|
||||
margin: 0 0 0 250px;
|
||||
padding: 0 30px;
|
||||
border-left: 1px solid #e7e7e7;
|
||||
overflow: hidden;}
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.navbar-top-links li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
651
static/js/bootstrap.min.js
vendored
651
static/js/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
@ -19,6 +19,11 @@
|
||||
<link href="{% static 'css/font-awesome.min.css' %}" rel="stylesheet" type="text/css">
|
||||
<link href="{% static 'css/sb-admin-2.css' %}" rel="stylesheet">
|
||||
{% block extra_css %}{% endblock extra_css %}
|
||||
<style>
|
||||
.grayiconecolor {
|
||||
color: #505050;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@ -57,43 +62,68 @@
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<a {% ifequal request.path "/dashboard/" %} class="active" {% endifequal %} href="{% url 'auth_dashboard' %}"><i class="fa fa-dashboard fa-fw"></i> Dashboard</a>
|
||||
<a {% ifequal request.path "/dashboard/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_dashboard' %}"><i
|
||||
class="fa fa-dashboard fa-fw grayiconecolor"></i> Dashboard</a>
|
||||
</li>
|
||||
<li>
|
||||
<a {% ifequal request.path "/characters/" %} class="active" {% endifequal %} href="{% url 'auth_characters' %}"><i class="fa fa-users fa-fw"></i> Characters</a>
|
||||
<a {% ifequal request.path "/characters/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_characters' %}"><i
|
||||
class="fa fa-users fa-fw grayiconecolor"></i> Characters</a>
|
||||
</li>
|
||||
<li>
|
||||
<a {% ifequal request.path "/api_key_management/" %} class="active" {% endifequal %} href="{% url 'auth_api_key_management' %}"><i class="fa fa-key fa-fw"></i> Api Keys</a>
|
||||
<a {% ifequal request.path "/api_key_management/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_api_key_management' %}"><i
|
||||
class="fa fa-key fa-fw grayiconecolor"></i> Api Keys</a>
|
||||
</li>
|
||||
<li>
|
||||
<a {% ifequal request.path "/groups/" %} class="active" {% endifequal %} href="{% url 'auth_groups' %}"><i class="fa fa-cogs fa-sitemap"></i> Groups</a>
|
||||
<a {% ifequal request.path "/groups/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_groups' %}"><i
|
||||
class="fa fa-cogs fa-sitemap grayiconecolor"></i> Groups</a>
|
||||
</li>
|
||||
<li>
|
||||
<a {% ifequal request.path "/services/" %} class="active" {% endifequal %} href="{% url 'auth_services' %}"><i class="fa fa-cogs fa-fw"></i> Services</a>
|
||||
<a {% ifequal request.path "/services/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_services' %}"><i
|
||||
class="fa fa-cogs fa-fw grayiconecolor"></i> Services</a>
|
||||
</li>
|
||||
<li>
|
||||
<a {% ifequal request.path "/help/" %} class="active" {% endifequal %} href="{% url 'auth_help' %}"><i class="fa fa-question fa-fw"></i> Help</a>
|
||||
<a {% ifequal request.path "/help/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_help' %}"><i
|
||||
class="fa fa-question fa-fw grayiconecolor"></i> Help</a>
|
||||
</li>
|
||||
<li>
|
||||
<a {% ifequal request.path "/hr_application_management/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_hrapplications_view' %}"><i
|
||||
class="fa fa-file-o fa-fw grayiconecolor"></i> Applications</a>
|
||||
</li>
|
||||
|
||||
<li class="text-center divider-horizontal">
|
||||
<h5>Util</h5>
|
||||
</li>
|
||||
<li>
|
||||
<a {% ifequal request.path "/user/password/" %} class="active" {% endifequal %} href="{% url 'password_change' %}"><i class="fa fa-lock fa-fw"></i>Change Password</a>
|
||||
<a {% ifequal request.path "/user/password/" %} class="active" {% endifequal %}
|
||||
href="{% url 'password_change' %}"><i
|
||||
class="fa fa-lock fa-fw grayiconecolor"></i>Change Password</a>
|
||||
</li>
|
||||
{% if perms.auth.group_management %}
|
||||
<li>
|
||||
<a {% ifequal request.path "/user/group_management/" %} class="active" {% endifequal %} href="{% url 'auth_group_management' %}"><i class="fa fa-lock fa-sitemap"></i> Group Management</a>
|
||||
<a {% ifequal request.path "/user/group_management/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_group_management' %}"><i
|
||||
class="fa fa-lock fa-sitemap grayiconecolor"></i> Group Management</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if perms.auth.jabber_broadcast %}
|
||||
<li>
|
||||
<a {% ifequal request.path "/serivces/jabber_broadcast/" %} class="active" {% endifequal %} href="{% url 'auth_jabber_broadcast_view' %}"><i class="fa fa-lock fa-bullhorn"></i> Jabber Broadcast</a>
|
||||
<a {% ifequal request.path "/serivces/jabber_broadcast/" %}
|
||||
class="active" {% endifequal %} href="{% url 'auth_jabber_broadcast_view' %}"><i
|
||||
class="fa fa-lock fa-bullhorn grayiconecolor"></i> Jabber Broadcast</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li>
|
||||
<a {% ifequal request.path "/tool/fleet_formatter_tool/" %} class="active" {% endifequal %} href="{% url 'auth_fleet_format_tool_view' %}"><i class="fa fa-space-shuttle fa-fw"></i> Fleet Broadcast Formatter</a>
|
||||
<a {% ifequal request.path "/tool/fleet_formatter_tool/" %} class="active" {% endifequal %}
|
||||
href="{% url 'auth_fleet_format_tool_view' %}"><i
|
||||
class="fa fa-space-shuttle fa-fw grayiconecolor"></i> Fleet Broadcast Formatter</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -32,6 +32,7 @@ div {
|
||||
<img src="{% static 'img/index_images/auth.png' %}" border="0">
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<p style="text-align:center">
|
||||
<a href="/forums/">
|
||||
<img src="{% static 'img/index_images/forums.png' %}" border="0">
|
||||
|
@ -45,6 +45,7 @@
|
||||
<a href="{% url 'auth_register_user' %}">
|
||||
<button class="btn btn- btn-success btn-block">Register</button>
|
||||
</a>
|
||||
|
||||
<form class="form-signin" role="form" action="{% url 'auth_login_user' %}" method="POST">
|
||||
{% csrf_token %}
|
||||
<h2 class="form-signin-heading text-center">Please sign in</h2>
|
||||
|
@ -27,6 +27,7 @@
|
||||
background: rgba(48, 48, 48, 0.7);
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
.panel-body {
|
||||
|
||||
}
|
||||
|
@ -10,13 +10,16 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Add Api Key</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
<p class="text-center">
|
||||
Full API Key is required for auth services
|
||||
</p>
|
||||
<a target="_blank" href="https://community.eveonline.com/support/api-key/CreatePredefined?accessMask=268435455">Create a full API key</a>
|
||||
<a target="_blank"
|
||||
href="https://community.eveonline.com/support/api-key/CreatePredefined?accessMask=268435455">Create
|
||||
a full API key</a>
|
||||
</p>
|
||||
<form class="form-signin" role="form" action="{% url 'auth_add_api_key' %}" method="POST">
|
||||
{% csrf_token %}
|
||||
|
@ -33,7 +33,8 @@
|
||||
<td class="text-center">{{ pair.api_key }}</td>
|
||||
<td class="text-center">
|
||||
<a href="/delete_api_pair/{{ pair.api_id }}">
|
||||
<button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-remove"></span></button>
|
||||
<button type="button" class="btn btn-danger"><span
|
||||
class="glyphicon glyphicon-remove"></span></button>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -9,6 +9,7 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12 container">
|
||||
<h1 class="page-header text-center">Characters</h1>
|
||||
|
||||
<div class="col-lg-12 container" id="example">
|
||||
|
||||
{% if authinfo.main_char_id %}
|
||||
@ -30,9 +31,13 @@
|
||||
<div class="text-right col-md-4">
|
||||
<a href="/main_character_change/{{ character.character_id }}">
|
||||
{% ifequal character.character_id authinfo.main_char_id %}
|
||||
<button type="button" class="btn btn-default btn-xs" disabled>Make Primary</button>
|
||||
<button type="button" class="btn btn-default btn-xs" disabled>
|
||||
Make Primary
|
||||
</button>
|
||||
{% else %}
|
||||
<button type="button" class="btn btn-primary btn-xs">Make Primary</button>
|
||||
<button type="button" class="btn btn-primary btn-xs">Make
|
||||
Primary
|
||||
</button>
|
||||
{% endifequal %}
|
||||
</a>
|
||||
</div>
|
||||
@ -44,11 +49,14 @@
|
||||
<div class="panel-body">
|
||||
<div class="col-lg-5 col-sm-2"><img class=
|
||||
"ra-avatar img-responsive" src=
|
||||
"https://image.eveonline.com/Character/{{character.character_id}}_128.jpg"></div>
|
||||
"https://image.eveonline.com/Character/{{ character.character_id }}_128.jpg">
|
||||
</div>
|
||||
|
||||
<div class="col-lg-7 col-sm-2">
|
||||
<p><strong>Alliance: </strong> {{ character.alliance_name }} </p>
|
||||
|
||||
<p><strong>Corporation: </strong>{{ character.corporation_name }}</p>
|
||||
|
||||
<p><strong>Corporation Ticker: </strong> {{ character.corporation_ticker }} </p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -20,11 +20,14 @@
|
||||
<div class="panel-body">
|
||||
<div class="col-lg-5 col-sm-2"><img class=
|
||||
"ra-avatar img-responsive" src=
|
||||
"https://image.eveonline.com/Character/{{character.character_id}}_128.jpg"></div>
|
||||
"https://image.eveonline.com/Character/{{ character.character_id }}_128.jpg">
|
||||
</div>
|
||||
|
||||
<div class="col-lg-7 col-sm-2">
|
||||
<h4 class="">{{ character.character_name }}</h4>
|
||||
|
||||
<p>{{ character.corporation_name }}</p>
|
||||
|
||||
<p>{{ character.alliance_name }}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -8,6 +8,7 @@
|
||||
<div class="col-lg-12">
|
||||
|
||||
<h1 class="page-header text-center">Help</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
|
23
templates/registered/hrapplicationmanagement.html
Normal file
23
templates/registered/hrapplicationmanagement.html
Normal file
@ -0,0 +1,23 @@
|
||||
{% extends "public/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}Alliance Auth{% endblock %}
|
||||
|
||||
{% block page_title %}HR Application Management{% endblock page_title %}
|
||||
{% block extra_css %}{% endblock extra_css %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">HR Applications
|
||||
<div class="text-right">
|
||||
<a href="{% url 'auth_hrapplication_create_view' %}">
|
||||
<button type="button" class="btn btn-success">Create Application</button>
|
||||
</a>
|
||||
</div>
|
||||
</h1>
|
||||
<div class="container-fluid">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
28
templates/registered/hrcreateapplication.html
Normal file
28
templates/registered/hrcreateapplication.html
Normal file
@ -0,0 +1,28 @@
|
||||
{% extends "public/base.html" %}
|
||||
{% load bootstrap %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}Alliance Auth - Create Application{% endblock %}
|
||||
|
||||
{% block page_title %}Create Application{% endblock page_title %}
|
||||
{% block extra_css %}{% endblock extra_css %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Create Application</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
{{ form|bootstrap }}
|
||||
<br/>
|
||||
<button class="btn btn-lg btn-primary btn-block" type="submit">Submit Application</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
@ -10,6 +10,7 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Jabber Broadcast</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
|
@ -26,14 +26,17 @@
|
||||
<td class="text-center">
|
||||
{% ifequal authinfo.forum_username "" %}
|
||||
<a href="{% url 'auth_activate_forum' %}">
|
||||
<button type="button" class="btn btn-success"><span class="glyphicon glyphicon-ok"></span></button>
|
||||
<button type="button" class="btn btn-success"><span
|
||||
class="glyphicon glyphicon-ok"></span></button>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'auth_reset_forum_password' %}">
|
||||
<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-refresh"></span></button>
|
||||
<button type="button" class="btn btn-primary"><span
|
||||
class="glyphicon glyphicon-refresh"></span></button>
|
||||
</a>
|
||||
<a href="{% url 'auth_deactivate_forum' %}">
|
||||
<button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-remove"></span></button>
|
||||
<button type="button" class="btn btn-danger"><span
|
||||
class="glyphicon glyphicon-remove"></span></button>
|
||||
</a>
|
||||
{% endifequal %}
|
||||
</td>
|
||||
@ -46,14 +49,17 @@
|
||||
<td class="text-center">
|
||||
{% ifequal authinfo.jabber_username "" %}
|
||||
<a href="{% url 'auth_activate_jabber' %}">
|
||||
<button type="button" class="btn btn-success"><span class="glyphicon glyphicon-ok"></span></button>
|
||||
<button type="button" class="btn btn-success"><span
|
||||
class="glyphicon glyphicon-ok"></span></button>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'auth_reset_jabber_password' %}">
|
||||
<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-refresh"></span></button>
|
||||
<button type="button" class="btn btn-primary"><span
|
||||
class="glyphicon glyphicon-refresh"></span></button>
|
||||
</a>
|
||||
<a href="{% url 'auth_deactivate_jabber' %}">
|
||||
<button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-remove"></span></button>
|
||||
<button type="button" class="btn btn-danger"><span
|
||||
class="glyphicon glyphicon-remove"></span></button>
|
||||
</a>
|
||||
{% endifequal %}
|
||||
</td>
|
||||
@ -66,14 +72,17 @@
|
||||
<td class="text-center">
|
||||
{% ifequal authinfo.mumble_username "" %}
|
||||
<a href="{% url 'auth_activate_mumble' %}">
|
||||
<button type="button" class="btn btn-success"><span class="glyphicon glyphicon-ok"></span></button>
|
||||
<button type="button" class="btn btn-success"><span
|
||||
class="glyphicon glyphicon-ok"></span></button>
|
||||
</a>
|
||||
{% else %}
|
||||
<a href="{% url 'auth_reset_mumble_password' %}">
|
||||
<button type="button" class="btn btn-primary"><span class="glyphicon glyphicon-refresh"></span></button>
|
||||
<button type="button" class="btn btn-primary"><span
|
||||
class="glyphicon glyphicon-refresh"></span></button>
|
||||
</a>
|
||||
<a href="{% url 'auth_deactivate_mumble' %}">
|
||||
<button type="button" class="btn btn-danger"><span class="glyphicon glyphicon-remove"></span></button>
|
||||
<button type="button" class="btn btn-danger"><span
|
||||
class="glyphicon glyphicon-remove"></span></button>
|
||||
</a>
|
||||
{% endifequal %}
|
||||
</td>
|
||||
|
@ -8,6 +8,7 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Change Password</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
|
@ -8,6 +8,7 @@
|
||||
{% block content %}
|
||||
<div class="col-lg-12">
|
||||
<h1 class="page-header text-center">Change Password</h1>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div class="col-md-4 col-md-offset-4">
|
||||
<div class="row">
|
||||
|
@ -42,6 +42,7 @@
|
||||
<form class="form-signin" role="form" action="" method="POST">
|
||||
{% csrf_token %}
|
||||
<h1 class="text-center">{% trans "Password Reset" %}</h1>
|
||||
|
||||
<p class="text-center">{% trans "Forgotten your password? Enter your email below." %}</p>
|
||||
{{ form|bootstrap }}
|
||||
<div class="">
|
||||
|
@ -1,7 +1,7 @@
|
||||
from django.contrib.auth.models import Group
|
||||
from django.contrib.auth.models import User
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
|
||||
from authentication.managers import AuthServicesInfoManager
|
||||
from services.managers.jabber_manager import JabberManager
|
||||
from services.managers.forum_manager import ForumManager
|
||||
from services.managers.mumble_manager import MumbleManager
|
||||
|
Loading…
x
Reference in New Issue
Block a user