mirror of
https://github.com/nikdoof/test-auth.git
synced 2025-12-13 22:32:15 +00:00
Reorganise the file structure into a project tree
This commit is contained in:
0
app/__init__.py
Normal file
0
app/__init__.py
Normal file
0
app/api/__init__.py
Normal file
0
app/api/__init__.py
Normal file
15
app/api/admin.py
Normal file
15
app/api/admin.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from django.contrib import admin
|
||||
from api.models import AuthAPIKey, AuthAPILog
|
||||
|
||||
|
||||
class AuthAPIKeyAdmin(admin.ModelAdmin):
|
||||
list_display = ('key', 'name', 'url', 'active')
|
||||
search_fields = ['name']
|
||||
|
||||
|
||||
class AuthAPILogAdmin(admin.ModelAdmin):
|
||||
list_display = ('key', 'url', 'access_datetime')
|
||||
|
||||
|
||||
admin.site.register(AuthAPIKey, AuthAPIKeyAdmin)
|
||||
admin.site.register(AuthAPILog, AuthAPILogAdmin)
|
||||
27
app/api/auth.py
Normal file
27
app/api/auth.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from django.http import HttpResponseForbidden
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
from api.models import AuthAPIKey
|
||||
|
||||
|
||||
class APIKeyAuthentication(object):
|
||||
|
||||
def is_authenticated(self, request):
|
||||
|
||||
params = {}
|
||||
for key, value in request.GET.items():
|
||||
params[key.lower()] = value
|
||||
|
||||
if 'apikey' in params:
|
||||
try:
|
||||
keyobj = AuthAPIKey.objects.get(key=params['apikey'])
|
||||
except:
|
||||
keyobj = None
|
||||
|
||||
if keyobj and keyobj.active:
|
||||
request.user = AnonymousUser()
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def challenge(self):
|
||||
return HttpResponseForbidden('Access Denied, use a API Key')
|
||||
2
app/api/handlers/__init__.py
Normal file
2
app/api/handlers/__init__.py
Normal file
@@ -0,0 +1,2 @@
|
||||
from v1 import *
|
||||
from v2 import *
|
||||
250
app/api/handlers/v1.py
Normal file
250
app/api/handlers/v1.py
Normal file
@@ -0,0 +1,250 @@
|
||||
import re
|
||||
from datetime import datetime
|
||||
|
||||
from piston.handler import BaseHandler
|
||||
from piston.utils import rc, throttle
|
||||
|
||||
from django.contrib.auth import login, logout, authenticate
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from api.models import AuthAPIKey, AuthAPILog
|
||||
from eve_proxy.models import CachedDocument
|
||||
from eve_proxy.exceptions import *
|
||||
from eve_api.models import EVEAccount, EVEPlayerCharacter
|
||||
from sso.models import ServiceAccount, Service
|
||||
from hr.models import Blacklist
|
||||
|
||||
from settings import FULL_API_USER_ID
|
||||
from settings import FULL_API_CHARACTER_ID
|
||||
|
||||
from xml.dom import minidom
|
||||
|
||||
|
||||
class UserHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request):
|
||||
if 'userid' in request.GET:
|
||||
try:
|
||||
u = User.objects.get(id=request.GET['userid'])
|
||||
except (User.DoesNotExist, ValueError):
|
||||
return {'auth': 'missing', 'missing': 'userid'}
|
||||
elif 'user' in request.GET:
|
||||
try:
|
||||
u = User.objects.get(username=request.GET['user'])
|
||||
except User.DoesNotExist:
|
||||
return {'auth': 'missing', 'missing': 'username'}
|
||||
elif 'serviceuid' in request.GET:
|
||||
try:
|
||||
u = ServiceAccount.objects.get(service_uid=request.GET['serviceuid']).user
|
||||
except ServiceAccount.DoesNotExist:
|
||||
return {'auth': 'missing', 'missing': 'ServiceAccount'}
|
||||
elif 'apiuserid' in request.GET:
|
||||
try:
|
||||
u = EVEAccount.objects.get(api_user_id=request.GET['apiuserid']).user
|
||||
except EVEAccount.DoesNotExist:
|
||||
return {'auth': 'missing', 'missing': 'apiuserid'}
|
||||
|
||||
chars = []
|
||||
for a in u.eveaccount_set.all():
|
||||
chars.extend(a.characters.all())
|
||||
|
||||
d = {'id': u.id, 'username': u.username, 'email': u.email,
|
||||
'serviceaccounts': u.serviceaccount_set.all(), 'characters': chars,
|
||||
'groups': u.groups.all(), 'staff': u.is_staff, 'superuser': u.is_superuser}
|
||||
|
||||
return d
|
||||
|
||||
|
||||
class LoginHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request):
|
||||
|
||||
u = None
|
||||
if request.GET.get('user', None):
|
||||
try:
|
||||
u = User.objects.get(username=request.GET['user'])
|
||||
except User.DoesNotExist:
|
||||
return {'auth': 'missing', 'missing': 'Username'}
|
||||
|
||||
if u:
|
||||
if request.GET.get('pass', None) and request.GET['pass'] == u.get_profile().api_service_password:
|
||||
return {'auth': 'ok', 'id': u.id, 'username': u.username,
|
||||
'email': u.email, 'groups': u.groups.all(),
|
||||
'staff': u.is_staff, 'superuser': u.is_superuser}
|
||||
else:
|
||||
return {'auth': 'failed'}
|
||||
|
||||
return {'auth': 'missing', 'missing': 'all'}
|
||||
|
||||
|
||||
class EveAPIHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
exclude = ('api_key')
|
||||
|
||||
def read(self, request):
|
||||
if request.GET.get('id', None):
|
||||
s = get_object_or_404(EVEAccount, pk=id)
|
||||
elif request.GET.get('userid', None):
|
||||
s = EVEAccount.objects.filter(user=request.GET['userid'])
|
||||
elif request.GET.get('corpid', None):
|
||||
s = EVEAccount.objects.filter(characters__corporation__id=request.GET['corpid'])
|
||||
elif request.GET.get('allianceid', None):
|
||||
s = EVEAccount.objects.filter(characters__corporation__alliance__id=request.GET['allianceid'])
|
||||
|
||||
return {'keys': s.values('id', 'user_id', 'api_status', 'api_last_updated')}
|
||||
|
||||
|
||||
class EveAPIProxyHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request):
|
||||
url_path = request.META['PATH_INFO'].replace(reverse('api-eveapiproxy'), "/")
|
||||
|
||||
params = {}
|
||||
for key, value in request.GET.items():
|
||||
params[key.lower()] = value
|
||||
|
||||
if 'userid' in params:
|
||||
obj = get_object_or_404(EVEAccount, pk=params['userid'])
|
||||
params['apikey'] = obj.api_key
|
||||
|
||||
try:
|
||||
cached_doc = CachedDocument.objects.api_query(url_path, params)
|
||||
except DocumentRetrievalError, exc:
|
||||
return HttpResponse(exc, status=500)
|
||||
else:
|
||||
return HttpResponse(cached_doc.body)
|
||||
|
||||
|
||||
class OpTimerHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request, id=None):
|
||||
obj = get_object_or_404(EVEAccount, id=FULL_API_USER_ID)
|
||||
|
||||
params = {'userID': obj.id, 'apiKey': obj.api_key, 'characterID': FULL_API_CHARACTER_ID}
|
||||
|
||||
error_doc = {'ops': [{'startsIn': -1, 'eventID': 0, 'ownerName': '', 'eventDate': '', 'eventTitle': '<div style="text-align:center">The EVE API calendar is unavailable</div>', 'duration': 0, 'isImportant': 0, 'eventText': 'Fuck CCP tbqh imho srsly', 'endsIn':-1, 'forumLink': ''}]}
|
||||
|
||||
try:
|
||||
cached_doc = CachedDocument.objects.api_query('/char/UpcomingCalendarEvents.xml.aspx', params)
|
||||
except DocumentRetrievalError:
|
||||
return error_doc
|
||||
dom = minidom.parseString(cached_doc.body.encode('utf-8'))
|
||||
if dom.getElementsByTagName('error'):
|
||||
error_doc['raw_xml'] = cached_doc.body
|
||||
return error_doc
|
||||
|
||||
events = []
|
||||
for node in dom.getElementsByTagName('rowset')[0].childNodes:
|
||||
if node.nodeType == 1:
|
||||
ownerID = node.getAttribute('ownerID')
|
||||
if ownerID != '1':
|
||||
date = node.getAttribute('eventDate')
|
||||
dt = datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
|
||||
now = datetime.utcnow()
|
||||
startsIn = int(dt.strftime('%s')) - int(now.strftime('%s'))
|
||||
duration = int(node.getAttribute('duration'))
|
||||
|
||||
fid = re.search('topic=[\d]+', node.getAttribute('eventText'))
|
||||
if fid:
|
||||
forumlink = 'http://forum.pleaseignore.com/index.php?%s' % fid.group(0)
|
||||
else:
|
||||
forumlink = ''
|
||||
#In case people forget to set a duration, we'll give a default of 1 hour
|
||||
if duration == 0:
|
||||
duration = 60
|
||||
endsIn = startsIn + (duration * 60)
|
||||
if startsIn < 0:
|
||||
startsIn = 0
|
||||
if endsIn > 0:
|
||||
event = {
|
||||
'startsIn': startsIn,
|
||||
'eventID': node.getAttribute('eventID'),
|
||||
'ownerName': node.getAttribute('ownerName'),
|
||||
'eventDate': date,
|
||||
'eventTitle': node.getAttribute('eventTitle'),
|
||||
'duration': duration,
|
||||
'isImportant': node.getAttribute('importance'),
|
||||
'eventText': node.getAttribute('eventText'),
|
||||
'endsIn':endsIn,
|
||||
'forumLink': forumlink}
|
||||
events.append(event)
|
||||
if len(events) == 0:
|
||||
return {'ops':[{
|
||||
'startsIn': -1,
|
||||
'eventID': 0,
|
||||
'ownerName': '',
|
||||
'eventDate': '',
|
||||
'eventTitle': '<div style="text-align:center">No ops are currently scheduled</div>',
|
||||
'duration': 0,
|
||||
'isImportant': 0,
|
||||
'eventText': 'Add ops using EVE-Gate or the in-game calendar',
|
||||
'endsIn':-1,
|
||||
'forumLink': ''}]}
|
||||
else:
|
||||
return {'ops': events, 'doc_time': cached_doc.time_retrieved, 'cache_until': cached_doc.cached_until, 'current_time': datetime.utcnow() }
|
||||
|
||||
|
||||
class BlacklistHandler(BaseHandler):
|
||||
model = Blacklist
|
||||
allowed_methods = ('GET')
|
||||
fields = ('type', 'value', 'source', ('name', 'ticker'), 'created_date', 'expiry_date', 'reason')
|
||||
|
||||
def read(self, request):
|
||||
if request.GET.get('value'):
|
||||
obj = Blacklist.objects.select_related('blacklistsource').filter(value__icontains=request.GET.get('value'))
|
||||
if obj.count() and request.GET.get('type'):
|
||||
obj = obj.filter(type=request.GET.get('type'))
|
||||
else:
|
||||
obj = []
|
||||
|
||||
return obj
|
||||
|
||||
|
||||
class CharacterHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
|
||||
fields = ('id', 'name', ('corporation', ('id', 'name', ('alliance', ('id', 'name')))), 'corporation_date', 'balance', 'total_sp', 'security_status', 'director', 'skillset')
|
||||
|
||||
@classmethod
|
||||
def skillset(cls, instance):
|
||||
return instance.eveplayercharacterskill_set.all().values('skill__id', 'skill__name', 'level', 'skillpoints')
|
||||
|
||||
def read(self, request):
|
||||
s = []
|
||||
|
||||
if request.GET.get('id', None):
|
||||
s = get_object_or_404(EVEPlayerCharacter, pk=id)
|
||||
elif request.GET.get('corpid', None):
|
||||
s = EVEPlayerCharacter.objects.filter(corporation__id=request.GET['corpid'])
|
||||
elif request.GET.get('allianceid', None):
|
||||
s = EVEPlayerCharacter.objects.filter(corporation__alliance__id=request.GET['allianceid'])
|
||||
return s
|
||||
|
||||
class AnnounceHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request):
|
||||
|
||||
sid = request.GET.get('sid', None)
|
||||
to = request.GET.getlist('to')
|
||||
message = request.GET.get('message', None)
|
||||
subject = request.GET.get('subject', None)
|
||||
|
||||
if sid and to and message:
|
||||
srv = get_object_or_404(Service, pk=sid)
|
||||
|
||||
if not srv.api == 'sso.services.jabber':
|
||||
return {'result': 'invalid'}
|
||||
|
||||
api = srv.api_class
|
||||
return {'result': api.announce(api.settings['jabber_server'], message, subject, groups=to)}
|
||||
|
||||
return {'result': 'invalid'}
|
||||
113
app/api/handlers/v2.py
Normal file
113
app/api/handlers/v2.py
Normal file
@@ -0,0 +1,113 @@
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from piston.handler import BaseHandler
|
||||
from piston.utils import rc
|
||||
|
||||
from eve_api.models import EVEAccount, EVEPlayerCharacter
|
||||
from eve_proxy.models import CachedDocument
|
||||
|
||||
|
||||
class V2AuthenticationHandler(BaseHandler):
|
||||
"""
|
||||
Authenticate a user against the Auth user DB.
|
||||
Provides back a session allowing further access
|
||||
"""
|
||||
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request):
|
||||
"""
|
||||
Validates login details for the provided user as
|
||||
long as 'username' and 'password' are provided.
|
||||
"""
|
||||
|
||||
username = request.GET.get('username', None)
|
||||
password = request.GET.get('password', None)
|
||||
|
||||
if not username or not password:
|
||||
return rc.BAD_REQUEST
|
||||
|
||||
try:
|
||||
user = User.object.get(username=username)
|
||||
except User.DoesNotExist:
|
||||
resp = rc.NOT_FOUND
|
||||
resp.write({'auth': 'notfound'})
|
||||
return resp
|
||||
|
||||
if password and password == user.get_profile().api_service_password:
|
||||
return {'userid': user.id,
|
||||
'username': user.username,
|
||||
'email': user.email,
|
||||
'groups': user.groups.all().values('id', 'name'),
|
||||
'staff': user.is_staff,
|
||||
'superuser': user.is_superuser}
|
||||
|
||||
resp = rc.FORBIDDEN
|
||||
resp.write({'auth': 'failed'})
|
||||
return resp
|
||||
|
||||
|
||||
class V2EveAPIProxyHandler(BaseHandler):
|
||||
"""
|
||||
Provides a proxy handler to the EVE API using 'eve_proxy'
|
||||
"""
|
||||
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request):
|
||||
"""
|
||||
Acts as a EVE API proxy, all params are passed to the
|
||||
API, for the exception of 'apikey' which is dervived from the
|
||||
stored information and 'userid'
|
||||
|
||||
'apikey' field should be populated with the Auth API key.
|
||||
"""
|
||||
url_path = request.META['PATH_INFO'].url_path.replace(reverse('v2-api-eveapiproxy'), "/")
|
||||
|
||||
params = {}
|
||||
for key, value in request.GET.items():
|
||||
params[key.lower()] = value
|
||||
|
||||
try:
|
||||
userid = request.GET.get('userid', None)
|
||||
obj = EVEAccount.objects.get(api_user_id=userid)
|
||||
params['apikey'] = obj.api_key
|
||||
except EVEAccount.DoesNotExist:
|
||||
pass
|
||||
|
||||
try:
|
||||
cached_doc = CachedDocument.objects.api_query(url_path, params)
|
||||
except DocumentRetrievalError:
|
||||
return HttpResponse(status=500)
|
||||
else:
|
||||
return HttpResponse(cached_doc.body)
|
||||
|
||||
|
||||
class V2UserHandler(BaseHandler):
|
||||
allowed_methods = ('GET')
|
||||
|
||||
def read(self, request, userid):
|
||||
try:
|
||||
u = User.objects.get(id=userid)
|
||||
except (User.DoesNotExist, ValueError):
|
||||
resp = rc.NOT_FOUND
|
||||
|
||||
charlist = []
|
||||
for acc in u.eveaccount_set.all():
|
||||
for char in acc.characters.all().select_related('characters').values('id', 'name', 'corporation', 'corporation_date', 'corporation__name'):
|
||||
d = dict(char)
|
||||
d['eveaccount'] = acc.id
|
||||
charlist.append(d)
|
||||
|
||||
d = {'id': u.id,
|
||||
'username': u.username,
|
||||
'email': u.email,
|
||||
'eveaccounts': u.eveaccount_set.all().values('api_user_id', 'description', 'api_status', 'api_keytype'),
|
||||
'serviceaccounts': u.serviceaccount_set.all().values('service', 'service__name', 'service__api', 'service_uid'),
|
||||
'characters': charlist,
|
||||
'groups': u.groups.all().values('id', 'name'),
|
||||
'staff': u.is_staff,
|
||||
'superuser': u.is_superuser}
|
||||
|
||||
return d
|
||||
|
||||
58
app/api/migrations/0001_initial.py
Normal file
58
app/api/migrations/0001_initial.py
Normal file
@@ -0,0 +1,58 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'AuthAPIKey'
|
||||
db.create_table('api_authapikey', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=200)),
|
||||
('url', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
|
||||
('active', self.gf('django.db.models.fields.BooleanField')(default=True, blank=True)),
|
||||
('key', self.gf('django.db.models.fields.CharField')(max_length=200, blank=True)),
|
||||
))
|
||||
db.send_create_signal('api', ['AuthAPIKey'])
|
||||
|
||||
# Adding model 'AuthAPILog'
|
||||
db.create_table('api_authapilog', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('access_datetime', self.gf('django.db.models.fields.DateTimeField')()),
|
||||
('key', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['api.AuthAPIKey'])),
|
||||
('url', self.gf('django.db.models.fields.CharField')(max_length=200)),
|
||||
))
|
||||
db.send_create_signal('api', ['AuthAPILog'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'AuthAPIKey'
|
||||
db.delete_table('api_authapikey')
|
||||
|
||||
# Deleting model 'AuthAPILog'
|
||||
db.delete_table('api_authapilog')
|
||||
|
||||
|
||||
models = {
|
||||
'api.authapikey': {
|
||||
'Meta': {'object_name': 'AuthAPIKey'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'key': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
|
||||
'url': ('django.db.models.fields.CharField', [], {'max_length': '200', 'blank': 'True'})
|
||||
},
|
||||
'api.authapilog': {
|
||||
'Meta': {'object_name': 'AuthAPILog'},
|
||||
'access_datetime': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'key': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['api.AuthAPIKey']"}),
|
||||
'url': ('django.db.models.fields.CharField', [], {'max_length': '200'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['api']
|
||||
0
app/api/migrations/__init__.py
Normal file
0
app/api/migrations/__init__.py
Normal file
37
app/api/models.py
Normal file
37
app/api/models.py
Normal file
@@ -0,0 +1,37 @@
|
||||
import uuid
|
||||
from django.db import models
|
||||
|
||||
|
||||
class AuthAPIKey(models.Model):
|
||||
""" Auth API Key storage model """
|
||||
|
||||
name = models.CharField("Service Name", max_length=200)
|
||||
url = models.CharField("Service URL", max_length=200, blank=True)
|
||||
active = models.BooleanField(default=True)
|
||||
key = models.CharField("API Key", max_length=200, blank=True)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.key or self.key == '':
|
||||
self.key = uuid.uuid4()
|
||||
|
||||
models.Model.save(self, *args, **kwargs)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'API Key'
|
||||
verbose_name_plural = "API Keys"
|
||||
|
||||
|
||||
class AuthAPILog(models.Model):
|
||||
""" Auth API Access Log """
|
||||
|
||||
access_datetime = models.DateTimeField("Date/Time Accessed")
|
||||
key = models.ForeignKey(AuthAPIKey)
|
||||
url = models.CharField("Accessed URL", max_length=200)
|
||||
|
||||
class Meta:
|
||||
ordering = ['access_datetime']
|
||||
verbose_name = 'API Access Log'
|
||||
verbose_name_plural = "API Access Logs"
|
||||
41
app/api/urls.py
Executable file
41
app/api/urls.py
Executable file
@@ -0,0 +1,41 @@
|
||||
from django.conf.urls.defaults import *
|
||||
from piston.resource import Resource
|
||||
from piston.authentication import NoAuthentication
|
||||
|
||||
from api.auth import APIKeyAuthentication
|
||||
from api.handlers import *
|
||||
|
||||
noauth = {'authentication': NoAuthentication() }
|
||||
apikeyauth = {'authentication': APIKeyAuthentication() }
|
||||
|
||||
# v1 APIs
|
||||
user_resource = Resource(handler=UserHandler, **apikeyauth)
|
||||
login_resource = Resource(handler=LoginHandler, **noauth)
|
||||
eveapi_resource = Resource(handler=EveAPIHandler, **apikeyauth)
|
||||
eveapiproxy_resource = Resource(handler=EveAPIProxyHandler, **apikeyauth)
|
||||
optimer_resource = Resource(handler=OpTimerHandler, **apikeyauth)
|
||||
blacklist_resource = Resource(handler=BlacklistHandler, **apikeyauth)
|
||||
characters_resource = Resource(handler=CharacterHandler, **apikeyauth)
|
||||
announce_resource = Resource(handler=AnnounceHandler, **apikeyauth)
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^user/$', user_resource),
|
||||
url(r'^login/$', login_resource),
|
||||
url(r'^eveapi/$', eveapi_resource),
|
||||
url(r'^eveapi/', eveapiproxy_resource, name='api-eveapiproxy'),
|
||||
url(r'^character/$', characters_resource),
|
||||
url(r'^optimer/$', optimer_resource),
|
||||
url(r'^blacklist/$', blacklist_resource),
|
||||
url(r'^announce/$', announce_resource),
|
||||
)
|
||||
|
||||
# v2 APIs
|
||||
v2_authenticate_resource = Resource(handler=V2AuthenticationHandler, **noauth)
|
||||
v2_eveapiproxy_resource = Resource(handler=V2EveAPIProxyHandler, **apikeyauth)
|
||||
v2_user_resource = Resource(handler=V2UserHandler, **apikeyauth)
|
||||
|
||||
urlpatterns += patterns('',
|
||||
url(r'^v2/authenticate/$', v2_authenticate_resource),
|
||||
url(r'^v2/proxy/', v2_eveapiproxy_resource, name='v2-api-eveapiproxy'),
|
||||
url(r'^v2/user/(?P<userid>\d+)/$', v2_user_resource),
|
||||
)
|
||||
5
app/api/views.py
Normal file
5
app/api/views.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django.http import HttpResponse
|
||||
|
||||
|
||||
def oauth_callback(request, other):
|
||||
return HttpResponse('Fake callback view.')
|
||||
0
app/conf/__init__.py
Normal file
0
app/conf/__init__.py
Normal file
6
app/conf/brokersettings.py.example
Normal file
6
app/conf/brokersettings.py.example
Normal file
@@ -0,0 +1,6 @@
|
||||
BROKER_HOST = "localhost"
|
||||
BROKER_PORT = 5672
|
||||
BROKER_USER = "%(user)s"
|
||||
BROKER_PASSWORD = "%(password)s"
|
||||
BROKER_VHOST = "%(vhost)s"
|
||||
|
||||
8
app/conf/dbsettings.py.example
Normal file
8
app/conf/dbsettings.py.example
Normal file
@@ -0,0 +1,8 @@
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'NAME': 'dreddit_sso.db',
|
||||
'ENGINE': 'django.db.backends.sqlite3',
|
||||
'USER': '',
|
||||
'PASSWORD': '',
|
||||
}
|
||||
}
|
||||
0
app/eve_api/__init__.py
Normal file
0
app/eve_api/__init__.py
Normal file
60
app/eve_api/admin.py
Normal file
60
app/eve_api/admin.py
Normal file
@@ -0,0 +1,60 @@
|
||||
"""
|
||||
Admin interface models. Automatically detected by admin.autodiscover().
|
||||
"""
|
||||
from django.contrib import admin
|
||||
from eve_api.models import *
|
||||
|
||||
from eve_api.tasks import import_apikey
|
||||
|
||||
def account_api_update(modeladmin, request, queryset):
|
||||
for obj in queryset:
|
||||
import_apikey.delay(api_key=obj.api_key, api_userid=obj.api_user_id)
|
||||
|
||||
account_api_update.short_description = "Update account from the EVE API"
|
||||
|
||||
class EVEAccountAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'user', 'api_keytype', 'api_status', 'api_last_updated')
|
||||
search_fields = ['id', 'user__username']
|
||||
readonly_fields = ('api_keytype', 'api_user_id', 'api_key', 'api_status', 'characters', 'api_last_updated', 'characters')
|
||||
|
||||
actions = [account_api_update]
|
||||
|
||||
admin.site.register(EVEAccount, EVEAccountAdmin)
|
||||
|
||||
class EVEPlayerCharacterAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'name', 'corporation')
|
||||
search_fields = ['id', 'name']
|
||||
admin.site.register(EVEPlayerCharacter, EVEPlayerCharacterAdmin)
|
||||
|
||||
class EVEPlayerCharacterRoleAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'roleid', 'name')
|
||||
search_fields = ['roleid', 'name']
|
||||
admin.site.register(EVEPlayerCharacterRole, EVEPlayerCharacterRoleAdmin)
|
||||
|
||||
class EVEPlayerCorporationInline(admin.TabularInline):
|
||||
model = EVEPlayerCorporation
|
||||
fields = ('name', 'ticker')
|
||||
extra = 0
|
||||
|
||||
class EVEPlayerAllianceAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'name', 'ticker', 'member_count', 'date_founded')
|
||||
search_fields = ['name', 'ticker']
|
||||
date_hierarchy = 'date_founded'
|
||||
inlines = [EVEPlayerCorporationInline]
|
||||
admin.site.register(EVEPlayerAlliance, EVEPlayerAllianceAdmin)
|
||||
|
||||
class EVEPlayerCorporationAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'name', 'ticker', 'member_count', 'alliance')
|
||||
search_fields = ['name', 'ticker']
|
||||
admin.site.register(EVEPlayerCorporation, EVEPlayerCorporationAdmin)
|
||||
|
||||
class EVESkillAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'name', 'group' )
|
||||
search_fields = ['id', 'name']
|
||||
admin.site.register(EVESkill, EVESkillAdmin)
|
||||
|
||||
class EVESkillGroupAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'name', )
|
||||
search_fields = ['id', 'name']
|
||||
admin.site.register(EVESkillGroup, EVESkillGroupAdmin)
|
||||
|
||||
24
app/eve_api/api_exceptions.py
Normal file
24
app/eve_api/api_exceptions.py
Normal file
@@ -0,0 +1,24 @@
|
||||
"""
|
||||
Contains exeptions used in the eve_api app.
|
||||
"""
|
||||
class APIAuthException(Exception):
|
||||
"""
|
||||
Raised when an invalid userID and/or authKey were provided.
|
||||
"""
|
||||
def __str__(self):
|
||||
return "An authentication was encountered while querying the EVE API."
|
||||
|
||||
class APINoUserIDException(Exception):
|
||||
"""
|
||||
Raised when a userID is required, but missing.
|
||||
"""
|
||||
def __str__(self):
|
||||
return "This query requires a valid userID, but yours is either missing or invalid."
|
||||
|
||||
class APIAccessException(Exception):
|
||||
"""
|
||||
Raised on Access errors of any kind, network and EVE API failures
|
||||
"""
|
||||
|
||||
def __str__(self):
|
||||
return "An error was encountered while accessing the EVE API."
|
||||
58
app/eve_api/app_defines.py
Normal file
58
app/eve_api/app_defines.py
Normal file
@@ -0,0 +1,58 @@
|
||||
"""
|
||||
Standard definitions that don't change.
|
||||
"""
|
||||
# API status definitions for EVEAccount.
|
||||
API_STATUS_PENDING = 0
|
||||
API_STATUS_OK = 1
|
||||
API_STATUS_AUTH_ERROR = 2
|
||||
API_STATUS_OTHER_ERROR = 3
|
||||
API_STATUS_ACC_EXPIRED = 4
|
||||
# This tuple is used to assemble the choices list for the field.
|
||||
API_STATUS_CHOICES = (
|
||||
(API_STATUS_PENDING, 'Unknown'),
|
||||
(API_STATUS_OK, 'OK'),
|
||||
(API_STATUS_AUTH_ERROR, 'Auth Error'),
|
||||
(API_STATUS_OTHER_ERROR, 'Other Error'),
|
||||
(API_STATUS_ACC_EXPIRED, 'Account Expired'),
|
||||
)
|
||||
|
||||
API_KEYTYPE_UNKNOWN = 0
|
||||
API_KEYTYPE_LIMITED = 1
|
||||
API_KEYTYPE_FULL = 2
|
||||
|
||||
API_KEYTYPE_CHOICES = (
|
||||
(API_KEYTYPE_UNKNOWN, 'Unknown'),
|
||||
(API_KEYTYPE_LIMITED, 'Limited'),
|
||||
(API_KEYTYPE_FULL, 'Full'),
|
||||
)
|
||||
|
||||
API_GENDER_MALE = 1
|
||||
API_GENDER_FEMALE = 2
|
||||
|
||||
API_GENDER_CHOICES = (
|
||||
(API_GENDER_MALE, 'Male'),
|
||||
(API_GENDER_FEMALE, 'Female'),
|
||||
)
|
||||
|
||||
API_RACES_CHOICES = (
|
||||
(1, 'Caldari'),
|
||||
(2, 'Minmatar'),
|
||||
(3, 'Gallente'),
|
||||
(4, 'Amarr'),
|
||||
)
|
||||
|
||||
API_BLOODLINES_CHOICES = (
|
||||
(1, 'Sebiestor'),
|
||||
(2, 'Vherokior'),
|
||||
(3, 'Brutor'),
|
||||
(4, 'Intaki'),
|
||||
(5, 'Gallente'),
|
||||
(6, 'Jin-Mei'),
|
||||
(7, 'Civire'),
|
||||
(8, 'Deteis'),
|
||||
(9, 'Achura'),
|
||||
(10, 'Amarr'),
|
||||
(11, 'Khanid'),
|
||||
(12, 'Ni-Kunni'),
|
||||
(13, 'Caldari'),
|
||||
)
|
||||
41
app/eve_api/forms.py
Normal file
41
app/eve_api/forms.py
Normal file
@@ -0,0 +1,41 @@
|
||||
import re
|
||||
|
||||
from django import forms
|
||||
from eve_api.models import EVEAccount, EVEPlayerCharacter, EVEPlayerCorporation
|
||||
|
||||
|
||||
class EveAPIForm(forms.Form):
|
||||
""" EVE API input form """
|
||||
|
||||
user_id = forms.IntegerField(label=u'User ID')
|
||||
api_key = forms.CharField(label=u'API Key', max_length=64)
|
||||
description = forms.CharField(max_length=100, required=False)
|
||||
|
||||
def clean_api_key(self):
|
||||
|
||||
if not len(self.cleaned_data['api_key']) == 64:
|
||||
raise forms.ValidationError("Provided API Key is not 64 characters long.")
|
||||
|
||||
if re.search(r'[^\.a-zA-Z0-9]', self.cleaned_data['api_key']):
|
||||
raise forms.ValidationError("Provided API Key has invalid characters.")
|
||||
|
||||
return self.cleaned_data['api_key']
|
||||
|
||||
def clean_user_id(self):
|
||||
|
||||
if not 'user_id' in self.cleaned_data or self.cleaned_data['user_id'] == '':
|
||||
raise forms.ValidationError("Please provide a valid User ID")
|
||||
|
||||
try:
|
||||
int(self.cleaned_data['user_id'])
|
||||
except ValueError:
|
||||
raise forms.ValidationError("Please provide a valid user ID.")
|
||||
|
||||
try:
|
||||
eaccount = EVEAccount.objects.get(api_user_id=self.cleaned_data['user_id'])
|
||||
except EVEAccount.DoesNotExist:
|
||||
pass
|
||||
else:
|
||||
raise forms.ValidationError("This API User ID is already registered")
|
||||
|
||||
return self.cleaned_data['user_id']
|
||||
214
app/eve_api/migrations/0001_initial.py
Normal file
214
app/eve_api/migrations/0001_initial.py
Normal file
@@ -0,0 +1,214 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'EVEAccount'
|
||||
db.create_table('eve_api_eveaccount', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('api_last_updated', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True, blank=True)),
|
||||
('description', self.gf('django.db.models.fields.CharField')(max_length=50, blank=True)),
|
||||
('api_key', self.gf('django.db.models.fields.CharField')(max_length=64)),
|
||||
('api_user_id', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('api_status', self.gf('django.db.models.fields.IntegerField')(default=0)),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVEAccount'])
|
||||
|
||||
# Adding M2M table for field characters on 'EVEAccount'
|
||||
db.create_table('eve_api_eveaccount_characters', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('eveaccount', models.ForeignKey(orm['eve_api.eveaccount'], null=False)),
|
||||
('eveplayercharacter', models.ForeignKey(orm['eve_api.eveplayercharacter'], null=False))
|
||||
))
|
||||
db.create_unique('eve_api_eveaccount_characters', ['eveaccount_id', 'eveplayercharacter_id'])
|
||||
|
||||
# Adding model 'EVEPlayerCharacter'
|
||||
db.create_table('eve_api_eveplayercharacter', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('api_last_updated', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
|
||||
('corporation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerCorporation'], null=True, blank=True)),
|
||||
('race', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('gender', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('balance', self.gf('django.db.models.fields.FloatField')(null=True, blank=True)),
|
||||
('attrib_intelligence', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('attrib_memory', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('attrib_charisma', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('attrib_perception', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('attrib_willpower', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('total_sp', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('current_location_id', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('last_login', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('last_logoff', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('director_update', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVEPlayerCharacter'])
|
||||
|
||||
# Adding model 'EVEPlayerAlliance'
|
||||
db.create_table('eve_api_eveplayeralliance', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('api_last_updated', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
|
||||
('ticker', self.gf('django.db.models.fields.CharField')(max_length=15, blank=True)),
|
||||
('member_count', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('date_founded', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
|
||||
('group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.Group'], null=True, blank=True)),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVEPlayerAlliance'])
|
||||
|
||||
# Adding model 'EVEPlayerCorporation'
|
||||
db.create_table('eve_api_eveplayercorporation', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('api_last_updated', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
|
||||
('ticker', self.gf('django.db.models.fields.CharField')(max_length=15, null=True, blank=True)),
|
||||
('description', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
|
||||
('url', self.gf('django.db.models.fields.URLField')(max_length=200, null=True, blank=True)),
|
||||
('ceo_character', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerCharacter'], null=True, blank=True)),
|
||||
('alliance', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerAlliance'], null=True, blank=True)),
|
||||
('alliance_join_date', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
|
||||
('tax_rate', self.gf('django.db.models.fields.FloatField')(null=True, blank=True)),
|
||||
('member_count', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('shares', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('logo_graphic_id', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('logo_shape1', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('logo_shape2', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('logo_shape3', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('logo_color1', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('logo_color2', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('logo_color3', self.gf('django.db.models.fields.IntegerField')(null=True, blank=True)),
|
||||
('group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.Group'], null=True, blank=True)),
|
||||
('applications', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVEPlayerCorporation'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'EVEAccount'
|
||||
db.delete_table('eve_api_eveaccount')
|
||||
|
||||
# Removing M2M table for field characters on 'EVEAccount'
|
||||
db.delete_table('eve_api_eveaccount_characters')
|
||||
|
||||
# Deleting model 'EVEPlayerCharacter'
|
||||
db.delete_table('eve_api_eveplayercharacter')
|
||||
|
||||
# Deleting model 'EVEPlayerAlliance'
|
||||
db.delete_table('eve_api_eveplayeralliance')
|
||||
|
||||
# Deleting model 'EVEPlayerCorporation'
|
||||
db.delete_table('eve_api_eveplayercorporation')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director_update': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
@@ -0,0 +1,138 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Deleting field 'EVEPlayerCharacter.director_update'
|
||||
db.delete_column('eve_api_eveplayercharacter', 'director_update')
|
||||
|
||||
# Adding field 'EVEPlayerCharacter.director'
|
||||
db.add_column('eve_api_eveplayercharacter', 'director', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)
|
||||
|
||||
# Adding field 'EVEAccount.api_keytype'
|
||||
db.add_column('eve_api_eveaccount', 'api_keytype', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Adding field 'EVEPlayerCharacter.director_update'
|
||||
db.add_column('eve_api_eveplayercharacter', 'director_update', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)
|
||||
|
||||
# Deleting field 'EVEPlayerCharacter.director'
|
||||
db.delete_column('eve_api_eveplayercharacter', 'director')
|
||||
|
||||
# Deleting field 'EVEAccount.api_keytype'
|
||||
db.delete_column('eve_api_eveaccount', 'api_keytype')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'symmetrical': 'False', 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
137
app/eve_api/migrations/0003_auto__add_eveplayercharacterrole.py
Normal file
137
app/eve_api/migrations/0003_auto__add_eveplayercharacterrole.py
Normal file
@@ -0,0 +1,137 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'EVEPlayerCharacterRole'
|
||||
db.create_table('eve_api_eveplayercharacterrole', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('api_last_updated', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVEPlayerCharacterRole'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'EVEPlayerCharacterRole'
|
||||
db.delete_table('eve_api_eveplayercharacterrole')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
138
app/eve_api/migrations/0004_auto.py
Normal file
138
app/eve_api/migrations/0004_auto.py
Normal file
@@ -0,0 +1,138 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding M2M table for field roles on 'EVEPlayerCharacter'
|
||||
db.create_table('eve_api_eveplayercharacter_roles', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('eveplayercharacter', models.ForeignKey(orm['eve_api.eveplayercharacter'], null=False)),
|
||||
('eveplayercharacterrole', models.ForeignKey(orm['eve_api.eveplayercharacterrole'], null=False))
|
||||
))
|
||||
db.create_unique('eve_api_eveplayercharacter_roles', ['eveplayercharacter_id', 'eveplayercharacterrole_id'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Removing M2M table for field roles on 'EVEPlayerCharacter'
|
||||
db.delete_table('eve_api_eveplayercharacter_roles')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
@@ -0,0 +1,134 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'EVEPlayerCharacterRole.roleid'
|
||||
db.add_column('eve_api_eveplayercharacterrole', 'roleid', self.gf('django.db.models.fields.CharField')(default='', max_length=64), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'EVEPlayerCharacterRole.roleid'
|
||||
db.delete_column('eve_api_eveplayercharacterrole', 'roleid')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
@@ -0,0 +1,142 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'EVEPlayerCharacter.corporation_date'
|
||||
db.add_column('eve_api_eveplayercharacter', 'corporation_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False)
|
||||
|
||||
# Adding field 'EVEPlayerCharacter.security_status'
|
||||
db.add_column('eve_api_eveplayercharacter', 'security_status', self.gf('django.db.models.fields.FloatField')(null=True, blank=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'EVEPlayerCharacter.corporation_date'
|
||||
db.delete_column('eve_api_eveplayercharacter', 'corporation_date')
|
||||
|
||||
# Deleting field 'EVEPlayerCharacter.security_status'
|
||||
db.delete_column('eve_api_eveplayercharacter', 'security_status')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'corporation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'security_status': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '2', 'decimal_places': '2', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
@@ -0,0 +1,143 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Changing field 'EVEPlayerCharacter.security_status'
|
||||
db.alter_column('eve_api_eveplayercharacter', 'security_status', self.gf('django.db.models.fields.FloatField')(null=True, blank=True))
|
||||
|
||||
# Adding field 'EVEPlayerAlliance.executor'
|
||||
db.add_column('eve_api_eveplayeralliance', 'executor', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerCorporation'], null=True, blank=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Changing field 'EVEPlayerCharacter.security_status'
|
||||
db.alter_column('eve_api_eveplayercharacter', 'security_status', self.gf('django.db.models.fields.DecimalField')(null=True, max_digits=2, decimal_places=2, blank=True))
|
||||
|
||||
# Deleting field 'EVEPlayerAlliance.executor'
|
||||
db.delete_column('eve_api_eveplayeralliance', 'executor_id')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'executor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'corporation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'security_status': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
@@ -0,0 +1,173 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'EVEPlayerCharacterSkill'
|
||||
db.create_table('eve_api_eveplayercharacterskill', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('character', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerCharacter'])),
|
||||
('skill', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVESkill'])),
|
||||
('level', self.gf('django.db.models.fields.IntegerField')()),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVEPlayerCharacterSkill'])
|
||||
|
||||
# Adding model 'EVESkill'
|
||||
db.create_table('eve_api_eveskill', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
|
||||
('description', self.gf('django.db.models.fields.TextField')(blank=True)),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVESkill'])
|
||||
|
||||
# Deleting field 'EVEPlayerCharacterRole.api_last_updated'
|
||||
db.delete_column('eve_api_eveplayercharacterrole', 'api_last_updated')
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'EVEPlayerCharacterSkill'
|
||||
db.delete_table('eve_api_eveplayercharacterskill')
|
||||
|
||||
# Deleting model 'EVESkill'
|
||||
db.delete_table('eve_api_eveskill')
|
||||
|
||||
# Adding field 'EVEPlayerCharacterRole.api_last_updated'
|
||||
db.add_column('eve_api_eveplayercharacterrole', 'api_last_updated', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True), keep_default=False)
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'ordering': "['api_user_id']", 'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'ordering': "['date_founded']", 'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'executor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'corporation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'security_status': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'skills': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['eve_api.EVESkill']", 'through': "orm['eve_api.EVEPlayerCharacterSkill']", 'symmetrical': 'False'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercharacterskill': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterSkill'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'level': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'skill': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkill']"})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskill': {
|
||||
'Meta': {'object_name': 'EVESkill'},
|
||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
@@ -0,0 +1,151 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'EVEPlayerCharacterSkill.skillpoints'
|
||||
db.add_column('eve_api_eveplayercharacterskill', 'skillpoints', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'EVEPlayerCharacterSkill.skillpoints'
|
||||
db.delete_column('eve_api_eveplayercharacterskill', 'skillpoints')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'ordering': "['api_user_id']", 'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'ordering': "['date_founded']", 'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'executor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'corporation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'security_status': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'skills': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['eve_api.EVESkill']", 'through': "orm['eve_api.EVEPlayerCharacterSkill']", 'symmetrical': 'False'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercharacterskill': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterSkill'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'level': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'skill': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkill']"}),
|
||||
'skillpoints': ('django.db.models.fields.IntegerField', [], {'default': '0'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskill': {
|
||||
'Meta': {'object_name': 'EVESkill'},
|
||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
@@ -0,0 +1,167 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'EVESkillGroup'
|
||||
db.create_table('eve_api_eveskillgroup', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255, blank=True)),
|
||||
))
|
||||
db.send_create_signal('eve_api', ['EVESkillGroup'])
|
||||
|
||||
# Adding field 'EVESkill.group'
|
||||
db.add_column('eve_api_eveskill', 'group', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVESkillGroup'], null=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'EVESkillGroup'
|
||||
db.delete_table('eve_api_eveskillgroup')
|
||||
|
||||
# Deleting field 'EVESkill.group'
|
||||
db.delete_column('eve_api_eveskill', 'group_id')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'ordering': "['api_user_id']", 'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'ordering': "['date_founded']", 'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'executor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'corporation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'security_status': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'skills': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['eve_api.EVESkill']", 'through': "orm['eve_api.EVEPlayerCharacterSkill']", 'symmetrical': 'False'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercharacterskill': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterSkill'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'level': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'skill': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkill']"}),
|
||||
'skillpoints': ('django.db.models.fields.IntegerField', [], {'default': '0'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskill': {
|
||||
'Meta': {'object_name': 'EVESkill'},
|
||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkillGroup']", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskillgroup': {
|
||||
'Meta': {'object_name': 'EVESkillGroup'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
152
app/eve_api/migrations/0011_add_skills_index.py
Normal file
152
app/eve_api/migrations/0011_add_skills_index.py
Normal file
@@ -0,0 +1,152 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import DataMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(DataMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
db.create_index('eve_api_eveplayercharacterskill', ['character_id', 'skill_id'], unique=True)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
db.delete_index('eve_api_eveplayercharacterskill', ['character_id', 'skill_id'], unique=True)
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveaccount': {
|
||||
'Meta': {'ordering': "['api_user_id']", 'object_name': 'EVEAccount'},
|
||||
'api_key': ('django.db.models.fields.CharField', [], {'max_length': '64'}),
|
||||
'api_keytype': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'api_user_id': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'characters': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'max_length': '50', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'ordering': "['date_founded']", 'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'executor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'corporation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'security_status': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'skills': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['eve_api.EVESkill']", 'through': "orm['eve_api.EVEPlayerCharacterSkill']", 'symmetrical': 'False'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercharacterskill': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterSkill'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'level': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'skill': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkill']"}),
|
||||
'skillpoints': ('django.db.models.fields.IntegerField', [], {'default': '0'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskill': {
|
||||
'Meta': {'object_name': 'EVESkill'},
|
||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkillGroup']", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskillgroup': {
|
||||
'Meta': {'object_name': 'EVESkillGroup'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_api']
|
||||
0
app/eve_api/migrations/__init__.py
Normal file
0
app/eve_api/migrations/__init__.py
Normal file
26
app/eve_api/models/__init__.py
Normal file
26
app/eve_api/models/__init__.py
Normal file
@@ -0,0 +1,26 @@
|
||||
"""
|
||||
By importing all of these sub-modules, the models package is transparently
|
||||
accessible by the rest of the project. This makes it act just as if it were
|
||||
one monolithic models.py.
|
||||
"""
|
||||
|
||||
from django.db import models
|
||||
|
||||
class EVEAPIModel(models.Model):
|
||||
"""
|
||||
A simple abstract base class to set some consistent fields on the models
|
||||
that are updated from the EVE API.
|
||||
"""
|
||||
api_last_updated = models.DateTimeField(blank=True, null=True,
|
||||
verbose_name="Time last updated from API",
|
||||
help_text="When this object was last updated from the EVE API.")
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
from static import *
|
||||
from account import *
|
||||
from character import *
|
||||
from corporation import *
|
||||
from alliance import *
|
||||
38
app/eve_api/models/account.py
Normal file
38
app/eve_api/models/account.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from eve_api.app_defines import *
|
||||
from eve_api.models import EVEAPIModel
|
||||
|
||||
class EVEAccount(EVEAPIModel):
|
||||
"""
|
||||
Use this class to store EVE user account information. Note that its use is
|
||||
entirely optional and up to the developer's discretion.
|
||||
"""
|
||||
user = models.ForeignKey(User, blank=True, null=True,
|
||||
help_text="User that owns this account")
|
||||
description = models.CharField(max_length=50, blank=True,
|
||||
help_text="User-provided description.")
|
||||
api_key = models.CharField(max_length=64, verbose_name="API Key")
|
||||
api_user_id = models.IntegerField(verbose_name="API User ID")
|
||||
characters = models.ManyToManyField('eve_api.EVEPlayerCharacter', blank=True, null=True)
|
||||
api_status = models.IntegerField(choices=API_STATUS_CHOICES,
|
||||
default=API_STATUS_PENDING,
|
||||
verbose_name="API Status",
|
||||
help_text="End result of the last attempt at updating this object from the API.")
|
||||
api_keytype = models.IntegerField(choices=API_KEYTYPE_CHOICES,
|
||||
default=API_KEYTYPE_UNKNOWN,
|
||||
verbose_name="API Key Type",
|
||||
help_text="Type of API key")
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s" % self.id
|
||||
|
||||
def in_corp(self, corpid):
|
||||
return self.character.filter(corporation__id=corpid).count()
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
verbose_name = 'EVE Account'
|
||||
verbose_name_plural = 'EVE Accounts'
|
||||
ordering = ['api_user_id']
|
||||
|
||||
27
app/eve_api/models/alliance.py
Normal file
27
app/eve_api/models/alliance.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import Group
|
||||
from eve_api.models import EVEAPIModel
|
||||
|
||||
class EVEPlayerAlliance(EVEAPIModel):
|
||||
"""
|
||||
Represents a player-controlled alliance. Updated from the alliance
|
||||
EVE XML API puller at intervals.
|
||||
"""
|
||||
name = models.CharField(max_length=255, blank=True, null=False)
|
||||
ticker = models.CharField(max_length=15, blank=True, null=False)
|
||||
executor = models.ForeignKey('eve_api.EVEPlayerCorporation', blank=True, null=True)
|
||||
member_count = models.IntegerField(blank=True, null=True)
|
||||
date_founded = models.DateField(blank=True, null=True)
|
||||
group = models.ForeignKey(Group, blank=True, null=True)
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
ordering = ['date_founded']
|
||||
verbose_name = 'Player Alliance'
|
||||
verbose_name_plural = 'Player Alliances'
|
||||
|
||||
def __unicode__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return "(#%d)" % self.id
|
||||
64
app/eve_api/models/character.py
Normal file
64
app/eve_api/models/character.py
Normal file
@@ -0,0 +1,64 @@
|
||||
from django.db import models
|
||||
from eve_api.app_defines import *
|
||||
from eve_api.models import EVEAPIModel
|
||||
|
||||
|
||||
class EVEPlayerCharacter(EVEAPIModel):
|
||||
"""
|
||||
Represents an individual player character within the game. Not to be
|
||||
confused with an account.
|
||||
"""
|
||||
name = models.CharField(max_length=255, blank=True, null=False)
|
||||
corporation = models.ForeignKey('eve_api.EVEPlayerCorporation', blank=True, null=True)
|
||||
corporation_date = models.DateTimeField(blank=True, null=True, verbose_name="Corporation Join Date")
|
||||
race = models.IntegerField(blank=True, null=True, choices=API_RACES_CHOICES)
|
||||
gender = models.IntegerField(blank=True, null=True, choices=API_GENDER_CHOICES)
|
||||
balance = models.FloatField("Account Balance", blank=True, null=True)
|
||||
attrib_intelligence = models.IntegerField("Intelligence", blank=True, null=True)
|
||||
attrib_memory = models.IntegerField("Memory", blank=True, null=True)
|
||||
attrib_charisma = models.IntegerField("Charisma", blank=True, null=True)
|
||||
attrib_perception = models.IntegerField("Perception", blank=True, null=True)
|
||||
attrib_willpower = models.IntegerField("Willpower", blank=True, null=True)
|
||||
total_sp = models.IntegerField("Total SP", blank=True, null=True)
|
||||
security_status = models.FloatField("Security Status", blank=True, null=True)
|
||||
current_location_id = models.IntegerField("Current Location ID", blank=True, null=True)
|
||||
last_login = models.DateTimeField(blank=True, null=True,
|
||||
verbose_name="Last Login Date/Time",
|
||||
help_text="The last time this character logged into EVE")
|
||||
last_logoff = models.DateTimeField(blank=True, null=True, verbose_name="Last Logoff Date/Time",
|
||||
help_text="The last time this character logged off EVE")
|
||||
director = models.BooleanField(blank=False, default=False, verbose_name="Director",
|
||||
help_text="This character is a Director of the associated corporation")
|
||||
roles = models.ManyToManyField('eve_api.EVEPlayerCharacterRole', blank=True, null=True,
|
||||
help_text="Roles associated with this character")
|
||||
skills = models.ManyToManyField('eve_api.EVESkill', through='eve_api.EVEPlayerCharacterSkill')
|
||||
|
||||
def __unicode__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return u"(%d)" % self.id
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
verbose_name = 'Player Character'
|
||||
verbose_name_plural = 'Player Characters'
|
||||
|
||||
|
||||
class EVEPlayerCharacterSkill(models.Model):
|
||||
"""
|
||||
For our m2m join to EVESkills
|
||||
"""
|
||||
character = models.ForeignKey('eve_api.EVEPlayerCharacter')
|
||||
skill = models.ForeignKey('eve_api.EVESkill')
|
||||
level = models.IntegerField(default=0)
|
||||
skillpoints = models.IntegerField(default=0)
|
||||
|
||||
def __unicode__(self):
|
||||
return u"%s - Level %s" % (self.skill, self.level)
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
verbose_name = 'Player Character Skill'
|
||||
verbose_name_plural = 'Player Character Skills'
|
||||
|
||||
43
app/eve_api/models/corporation.py
Normal file
43
app/eve_api/models/corporation.py
Normal file
@@ -0,0 +1,43 @@
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import Group
|
||||
from eve_api.models import EVEAPIModel
|
||||
|
||||
class EVEPlayerCorporation(EVEAPIModel):
|
||||
"""
|
||||
Represents a player-controlled corporation. Updated from a mixture of
|
||||
the alliance and corporation API pullers.
|
||||
"""
|
||||
name = models.CharField(max_length=255, blank=True, null=True)
|
||||
ticker = models.CharField(max_length=15, blank=True, null=True)
|
||||
description = models.TextField(blank=True, null=True)
|
||||
url = models.URLField(verify_exists=False, blank=True, null=True)
|
||||
ceo_character = models.ForeignKey('eve_api.EVEPlayerCharacter', blank=True, null=True)
|
||||
alliance = models.ForeignKey('eve_api.EVEPlayerAlliance', blank=True, null=True)
|
||||
alliance_join_date = models.DateField(blank=True, null=True)
|
||||
tax_rate = models.FloatField(blank=True, null=True)
|
||||
member_count = models.IntegerField(blank=True, null=True)
|
||||
shares = models.IntegerField(blank=True, null=True)
|
||||
|
||||
# Logo generation stuff
|
||||
logo_graphic_id = models.IntegerField(blank=True, null=True)
|
||||
logo_shape1 = models.IntegerField(blank=True, null=True)
|
||||
logo_shape2 = models.IntegerField(blank=True, null=True)
|
||||
logo_shape3 = models.IntegerField(blank=True, null=True)
|
||||
logo_color1 = models.IntegerField(blank=True, null=True)
|
||||
logo_color2 = models.IntegerField(blank=True, null=True)
|
||||
logo_color3 = models.IntegerField(blank=True, null=True)
|
||||
|
||||
group = models.ForeignKey(Group, blank=True, null=True)
|
||||
applications = models.BooleanField(blank=False, default=False)
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
verbose_name = 'Player Corporation'
|
||||
verbose_name_plural = 'Player Corporations'
|
||||
|
||||
def __str__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return "Corp #%d" % self.id
|
||||
|
||||
64
app/eve_api/models/static.py
Normal file
64
app/eve_api/models/static.py
Normal file
@@ -0,0 +1,64 @@
|
||||
"""
|
||||
This file covers any static information from the EVE data dumps. While
|
||||
using django-evedb would be a smarter choice, for the limited subset of
|
||||
data we're using it isn't worth the overhead
|
||||
"""
|
||||
|
||||
from django.db import models
|
||||
|
||||
|
||||
class EVESkill(models.Model):
|
||||
""" Represents a skill in EVE Online """
|
||||
|
||||
name = models.CharField(blank=True, max_length=255)
|
||||
group = models.ForeignKey('eve_api.EVESkillGroup', null=True)
|
||||
description = models.TextField(blank=True)
|
||||
|
||||
def __unicode__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return u"Skill %d" % self.id
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
verbose_name = 'Character Skill'
|
||||
verbose_name_plural = 'Character Skills'
|
||||
|
||||
|
||||
class EVESkillGroup(models.Model):
|
||||
""" Represents a skill group in EVE Online """
|
||||
|
||||
name = models.CharField(blank=True, max_length=255)
|
||||
|
||||
def __unicode__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return u"Skill Group %d" % self.id
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
verbose_name = 'Character Skill Group'
|
||||
verbose_name_plural = 'Character Skill Groups'
|
||||
|
||||
|
||||
class EVEPlayerCharacterRole(models.Model):
|
||||
"""
|
||||
Represents a role which can be applied to a character
|
||||
"""
|
||||
|
||||
roleid = models.CharField(max_length=64, blank=False, null=False)
|
||||
name = models.CharField(max_length=255, blank=False, null=False)
|
||||
|
||||
def __unicode__(self):
|
||||
if self.name:
|
||||
return self.name
|
||||
else:
|
||||
return u"Role %d" % self.id
|
||||
|
||||
class Meta:
|
||||
app_label = 'eve_api'
|
||||
verbose_name = 'Character Role'
|
||||
verbose_name_plural = 'Character Roles'
|
||||
|
||||
5
app/eve_api/tasks/__init__.py
Normal file
5
app/eve_api/tasks/__init__.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from account import *
|
||||
from alliance import *
|
||||
from character import *
|
||||
from corporation import *
|
||||
from static import *
|
||||
145
app/eve_api/tasks/account.py
Normal file
145
app/eve_api/tasks/account.py
Normal file
@@ -0,0 +1,145 @@
|
||||
from datetime import datetime, timedelta
|
||||
from xml.dom import minidom
|
||||
import logging
|
||||
|
||||
from celery.decorators import task
|
||||
from celery.task.sets import TaskSet
|
||||
|
||||
from eve_proxy.models import CachedDocument
|
||||
|
||||
from eve_api.models import EVEAccount, EVEPlayerCharacter
|
||||
from eve_api.app_defines import *
|
||||
from eve_api.api_exceptions import *
|
||||
from eve_api.utils import basic_xml_parse_doc
|
||||
from eve_api.tasks.character import import_eve_characters
|
||||
from eve_api.tasks.corporation import import_corp_members, import_corp_details
|
||||
|
||||
from sso.tasks import update_user_access
|
||||
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
@task(ignore_result=True, expires=120)
|
||||
def queue_apikey_updates(update_delay=86400, batch_size=50):
|
||||
"""
|
||||
Updates all Eve API elements in the database
|
||||
"""
|
||||
|
||||
log = queue_apikey_updates.get_logger()
|
||||
# Update all the eve accounts and related corps
|
||||
delta = timedelta(seconds=update_delay)
|
||||
log.info("Updating APIs older than %s" % (datetime.now() - delta))
|
||||
|
||||
accounts = EVEAccount.objects.filter(api_last_updated__lt=(datetime.now() - delta)).exclude(api_status=API_STATUS_ACC_EXPIRED).exclude(api_status=API_STATUS_AUTH_ERROR).order_by('api_last_updated')[:batch_size]
|
||||
log.info("%s account(s) to update" % accounts.count())
|
||||
for acc in accounts:
|
||||
log.debug("Queueing UserID %s for update" % acc.api_user_id)
|
||||
if not acc.user:
|
||||
acc.delete()
|
||||
continue
|
||||
import_apikey.delay(api_key=acc.api_key, api_userid=acc.api_user_id)
|
||||
|
||||
|
||||
@task(ignore_result=True)
|
||||
def import_apikey(api_userid, api_key, user=None, force_cache=False):
|
||||
"""
|
||||
Imports a EVE Account from the API, doesn't return a result
|
||||
"""
|
||||
log = import_apikey.get_logger()
|
||||
try:
|
||||
import_apikey_func(api_userid, api_key, user, force_cache, log)
|
||||
except:
|
||||
log.error('Error importing API Key')
|
||||
|
||||
@task()
|
||||
def import_apikey_result(api_userid, api_key, user=None, force_cache=False, callback=None):
|
||||
"""
|
||||
Imports a EVE Account from the API and returns the account object when completed
|
||||
"""
|
||||
|
||||
log = import_apikey_result.get_logger()
|
||||
try:
|
||||
results = import_apikey_func(api_userid, api_key, user, force_cache, log)
|
||||
except APIAccessException, exc:
|
||||
log.error('Error importing API Key - flagging for retry')
|
||||
else:
|
||||
if callback:
|
||||
subtask(callback).delay(account=results)
|
||||
else:
|
||||
return results
|
||||
|
||||
|
||||
def import_apikey_func(api_userid, api_key, user=None, force_cache=False, log=logging.getLogger(__name__)):
|
||||
log.info('Importing %s/%s' % (api_userid, api_key))
|
||||
|
||||
auth_params = {'userid': api_userid, 'apikey': api_key}
|
||||
account_doc = CachedDocument.objects.api_query('/account/Characters.xml.aspx', params=auth_params, no_cache=force_cache)
|
||||
|
||||
doc = basic_xml_parse_doc(account_doc)['eveapi']
|
||||
|
||||
# Checks for a document error
|
||||
if 'error' in doc:
|
||||
try:
|
||||
account = EVEAccount.objects.get(id=api_userid)
|
||||
except EVEAccount.DoesNotExist:
|
||||
# If no Account exists in the DB, just ignore it
|
||||
return
|
||||
|
||||
error = doc['error']['code']
|
||||
if int(error) >= 500:
|
||||
# API disabled, down or rejecting, return without changes
|
||||
return
|
||||
elif error in ['202', '203', '204', '205', '212']:
|
||||
account.api_status = API_STATUS_AUTH_ERROR
|
||||
elif error == '211':
|
||||
account.api_status = API_STATUS_ACC_EXPIRED
|
||||
else:
|
||||
account.api_status = API_STATUS_OTHER_ERROR
|
||||
account.api_last_updated = datetime.utcnow()
|
||||
account.save()
|
||||
if account.user:
|
||||
update_user_access.delay(account.user.id)
|
||||
return account
|
||||
|
||||
# Create or retrieve the account last to make sure everything
|
||||
# before here is good to go.
|
||||
account, created = EVEAccount.objects.get_or_create(id=api_userid, api_user_id=api_userid, api_key=api_key)
|
||||
account.api_status = API_STATUS_OK
|
||||
if user and created:
|
||||
account.user = User.objects.get(id=user)
|
||||
|
||||
account.api_last_updated = datetime.utcnow()
|
||||
account.save()
|
||||
|
||||
# Check API keytype if we have a character and a unknown key status
|
||||
if account.api_keytype == API_KEYTYPE_UNKNOWN:
|
||||
keycheck = CachedDocument.objects.api_query('/account/AccountStatus.xml.aspx', params=auth_params, no_cache=True)
|
||||
keydoc = basic_xml_parse_doc(keycheck)['eveapi']
|
||||
|
||||
if 'error' in keydoc:
|
||||
account.api_keytype = API_KEYTYPE_LIMITED
|
||||
elif not 'error' in keydoc:
|
||||
account.api_keytype = API_KEYTYPE_FULL
|
||||
else:
|
||||
account.api_keytype = API_KEYTYPE_UNKNOWN
|
||||
|
||||
account.api_last_updated = datetime.utcnow()
|
||||
account.save()
|
||||
|
||||
tasklist = []
|
||||
|
||||
# Process the account's character list
|
||||
charlist = set(account.characters.all().values_list('id', flat=True))
|
||||
newcharlist = [int(char['characterID']) for char in doc['result']['characters']]
|
||||
|
||||
log.info("[CHAR] Current %s, New: %s, Remove: %s" % (charlist, newcharlist, set(charlist - set(newcharlist))))
|
||||
|
||||
for char in account.characters.filter(id__in=set(charlist - set(newcharlist))):
|
||||
account.characters.remove(char)
|
||||
|
||||
if account.user:
|
||||
cb = update_user_access.subtask(kwargs={'user': account.user.id })
|
||||
else:
|
||||
cb = None
|
||||
import_eve_characters.delay(newcharlist, api_key, api_userid, callback=cb)
|
||||
|
||||
return account
|
||||
42
app/eve_api/tasks/alliance.py
Normal file
42
app/eve_api/tasks/alliance.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from datetime import datetime
|
||||
from xml.dom import minidom
|
||||
|
||||
from celery.decorators import task
|
||||
|
||||
from eve_proxy.models import CachedDocument
|
||||
|
||||
from eve_api.models import EVEAccount, EVEPlayerCorporation, EVEPlayerAlliance
|
||||
from eve_api.utils import basic_xml_parse_doc
|
||||
from eve_api.tasks.corporation import import_corp_details, import_corp_details_result
|
||||
|
||||
from django.core.exceptions import ValidationError
|
||||
|
||||
@task(ignore_result=True)
|
||||
def import_alliance_details():
|
||||
"""
|
||||
Imports all in-game alliances and links their related corporations
|
||||
|
||||
"""
|
||||
|
||||
doc = CachedDocument.objects.api_query('/eve/AllianceList.xml.aspx')
|
||||
|
||||
for alliance in basic_xml_parse_doc(doc)['eveapi']['result']['alliances']:
|
||||
allobj, created = EVEPlayerAlliance.objects.get_or_create(pk=alliance['allianceID'])
|
||||
allobj.name = alliance['name']
|
||||
allobj.ticker = alliance['shortName']
|
||||
allobj.date_founded = datetime.strptime(alliance['startDate'],"%Y-%m-%d %H:%M:%S")
|
||||
allobj.executor, created = EVEPlayerCorporation.objects.get_or_create(id=alliance['executorCorpID'])
|
||||
allobj.member_count = alliance['memberCount']
|
||||
allobj.api_last_updated = datetime.utcnow()
|
||||
allobj.save()
|
||||
|
||||
corplist = allobj.eveplayercorporation_set.all().values_list('id', flat=True)
|
||||
|
||||
validcorps = []
|
||||
for corp in alliance['memberCorporations']:
|
||||
if int(corp['corporationID']) not in corplist:
|
||||
import_corp_details.delay(corp['corporationID'])
|
||||
validcorps.append(int(corp['corporationID']))
|
||||
|
||||
delcorps = set(corplist) - set(validcorps)
|
||||
EVEPlayerCorporation.objects.filter(id__in=delcorps).update(alliance=None)
|
||||
158
app/eve_api/tasks/character.py
Normal file
158
app/eve_api/tasks/character.py
Normal file
@@ -0,0 +1,158 @@
|
||||
from datetime import datetime, timedelta
|
||||
from xml.dom import minidom
|
||||
import logging
|
||||
|
||||
from celery.decorators import task
|
||||
from celery.task.sets import subtask
|
||||
|
||||
from eve_proxy.exceptions import *
|
||||
from eve_proxy.models import CachedDocument
|
||||
|
||||
from eve_api.api_exceptions import *
|
||||
from eve_api.models import EVEPlayerCorporation, EVEPlayerCharacter, EVEPlayerCharacterRole, EVEPlayerCharacterSkill, EVESkill, EVEAccount
|
||||
from eve_api.app_defines import *
|
||||
from eve_api.utils import basic_xml_parse, basic_xml_parse_doc
|
||||
|
||||
|
||||
@task()
|
||||
def import_eve_character(character_id, api_key=None, user_id=None, callback=None, **kwargs):
|
||||
"""
|
||||
Imports a character from the API, providing a API key will populate
|
||||
further details. Returns a single EVEPlayerCharacter object
|
||||
|
||||
"""
|
||||
|
||||
log = import_eve_character.get_logger()
|
||||
try:
|
||||
pchar = import_eve_character_func(character_id, api_key, user_id, log)
|
||||
except APIAccessException, exc:
|
||||
log.error('Error importing character - flagging for retry')
|
||||
import_eve_character.retry(args=[character_id, api_key, user_id, callback], exc=exc, kwargs=kwargs)
|
||||
|
||||
if not pchar:
|
||||
log.error('Error importing character %s' % character_id)
|
||||
else:
|
||||
if callback:
|
||||
subtask(callback).delay(character=pchar.id)
|
||||
else:
|
||||
return pchar
|
||||
|
||||
|
||||
@task()
|
||||
def import_eve_characters(character_list, api_key=None, user_id=None, callback=None, **kwargs):
|
||||
"""
|
||||
Imports characters from the API, providing a API key will populate
|
||||
further details. Returns a list of EVEPlayerCharacter objects
|
||||
|
||||
"""
|
||||
|
||||
log = import_eve_characters.get_logger()
|
||||
try:
|
||||
results = [import_eve_character_func(char, api_key, user_id, log) for char in character_list]
|
||||
except APIAccessException, exc:
|
||||
log.error('Error importing characters - flagging for retry')
|
||||
import_eve_characters.retry(args=[character_list, api_key, user_id, callback], exc=exc, kwargs=kwargs)
|
||||
if callback:
|
||||
subtask(callback).delay(characters=results)
|
||||
else:
|
||||
return results
|
||||
|
||||
|
||||
def import_eve_character_func(character_id, api_key=None, user_id=None, logger=logging.getLogger(__name__)):
|
||||
|
||||
try:
|
||||
char_doc = CachedDocument.objects.api_query('/eve/CharacterInfo.xml.aspx', params={'characterID': character_id}, no_cache=False)
|
||||
except DocumentRetrievalError, exc:
|
||||
logger.error('Error retrieving CharacterInfo.xml.aspx for Character ID %s - %s' % (character_id, exc))
|
||||
raise APIAccessException
|
||||
|
||||
d = basic_xml_parse_doc(char_doc)['eveapi']
|
||||
if 'error' in d:
|
||||
logger.debug('EVE API Error enountered in API document')
|
||||
return
|
||||
|
||||
values = d['result']
|
||||
pchar, created = EVEPlayerCharacter.objects.get_or_create(id=character_id)
|
||||
if not values['characterName'] == {}:
|
||||
pchar.name = values['characterName']
|
||||
else:
|
||||
pchar.name = ""
|
||||
pchar.security_status = values['securityStatus']
|
||||
|
||||
corp, created = EVEPlayerCorporation.objects.get_or_create(id=values['corporationID'])
|
||||
from eve_api.tasks.corporation import import_corp_details
|
||||
if created or not corp.name or corp.api_last_updated < (datetime.utcnow() - timedelta(hours=12)):
|
||||
import_corp_details.delay(values['corporationID'])
|
||||
|
||||
pchar.corporation = corp
|
||||
pchar.corporation_date = values['corporationDate']
|
||||
|
||||
for v in API_RACES_CHOICES:
|
||||
val, race = v
|
||||
if race == values['race']:
|
||||
pchar.race = val
|
||||
break
|
||||
|
||||
if api_key and user_id:
|
||||
auth_params = {'userID': user_id, 'apiKey': api_key, 'characterID': character_id }
|
||||
try:
|
||||
char_doc = CachedDocument.objects.api_query('/char/CharacterSheet.xml.aspx', params=auth_params, no_cache=False)
|
||||
except DocumentRetrievalError, exc:
|
||||
logger.error('Error retrieving CharacterSheet.xml.aspx for User ID %s, Character ID %s - %s' % (user_id, character_id, exc))
|
||||
raise APIAccessException
|
||||
|
||||
doc = basic_xml_parse_doc(char_doc)['eveapi']
|
||||
if not 'error' in doc:
|
||||
|
||||
values = doc['result']
|
||||
pchar.name = values['name']
|
||||
pchar.balance = values['balance']
|
||||
pchar.attrib_intelligence = values['attributes']['intelligence']
|
||||
pchar.attrib_charisma = values['attributes']['charisma']
|
||||
pchar.attrib_perception = values['attributes']['perception']
|
||||
pchar.attrib_willpower = values['attributes']['willpower']
|
||||
pchar.attrib_memory = values['attributes']['memory']
|
||||
|
||||
# Process the character's skills
|
||||
pchar.total_sp = 0
|
||||
for skill in values.get('skills', None):
|
||||
skillobj, created = EVESkill.objects.get_or_create(id=skill['typeID'])
|
||||
charskillobj, created = EVEPlayerCharacterSkill.objects.get_or_create(skill=skillobj, character=pchar)
|
||||
if created or not charskillobj.level == int(skill['level']) or not charskillobj.skillpoints == int(skill['skillpoints']):
|
||||
charskillobj.level = int(skill['level'])
|
||||
charskillobj.skillpoints = int(skill['skillpoints'])
|
||||
charskillobj.save()
|
||||
pchar.total_sp = pchar.total_sp + int(skill['skillpoints'])
|
||||
|
||||
# Process the character's roles
|
||||
pchar.director = False
|
||||
pchar.roles.clear()
|
||||
roles = values.get('corporationRoles', None)
|
||||
if roles and len(roles):
|
||||
for r in roles:
|
||||
role, created = EVEPlayerCharacterRole.objects.get_or_create(roleid=r['roleID'], name=r['roleName'])
|
||||
pchar.roles.add(role)
|
||||
if r['roleName'] == 'roleDirector':
|
||||
pchar.director = True
|
||||
|
||||
if values['gender'] == 'Male':
|
||||
pchar.gender = API_GENDER_MALE
|
||||
else:
|
||||
pchar.gender = API_GENDER_FEMALE
|
||||
|
||||
|
||||
pchar.api_last_updated = datetime.utcnow()
|
||||
pchar.save()
|
||||
|
||||
try:
|
||||
acc = EVEAccount.objects.get(api_user_id=user_id)
|
||||
if not pchar.id in acc.characters.all().values_list('id', flat=True):
|
||||
acc.characters.add(pchar)
|
||||
|
||||
if pchar.director and acc.api_keytype == API_KEYTYPE_FULL:
|
||||
from eve_api.tasks.corporation import import_corp_members
|
||||
import_corp_members.delay(api_key=api_key, api_userid=user_id, character_id=pchar.id)
|
||||
except EVEAccount.DoesNotExist:
|
||||
pass
|
||||
|
||||
return pchar
|
||||
125
app/eve_api/tasks/corporation.py
Normal file
125
app/eve_api/tasks/corporation.py
Normal file
@@ -0,0 +1,125 @@
|
||||
import logging
|
||||
from datetime import datetime, timedelta
|
||||
from xml.dom import minidom
|
||||
|
||||
from celery.decorators import task
|
||||
from eve_proxy.models import CachedDocument
|
||||
from eve_proxy.exceptions import DocumentRetrievalError
|
||||
from eve_api.models import EVEPlayerCorporation, EVEPlayerCharacter, EVEPlayerAlliance
|
||||
from eve_api.utils import basic_xml_parse_doc
|
||||
from eve_api.tasks.character import import_eve_character
|
||||
from eve_api.api_exceptions import APIAccessException
|
||||
|
||||
@task(ignore_result=True)
|
||||
def import_corp_details(corp_id, callback=None, **kwargs):
|
||||
log = import_corp_details.get_logger()
|
||||
try:
|
||||
corp = import_corp_details_func(corp_id, log)
|
||||
except APIAccessException, exc:
|
||||
log.error('Error importing corporation - queueing for retry')
|
||||
if not kwargs:
|
||||
kwargs = {}
|
||||
import_corp_details.retry(args=[corp_id, callback], exc=exc, kwargs=kwargs)
|
||||
else:
|
||||
if callback:
|
||||
subtask(callback).delay(corporation=corp.id)
|
||||
|
||||
|
||||
@task()
|
||||
def import_corp_details_result(corp_id, callback=None):
|
||||
log = import_corp_details_result.get_logger()
|
||||
try:
|
||||
corp = import_corp_details_func(corp_id, log)
|
||||
except APIAccessException, exc:
|
||||
log.error('Error importing corporation')
|
||||
else:
|
||||
if callback:
|
||||
subtask(callback).delay(corporation=corp.id)
|
||||
else:
|
||||
return corp
|
||||
|
||||
|
||||
def import_corp_details_func(corp_id, log=logging.getLogger(__name__)):
|
||||
|
||||
corpobj, created = EVEPlayerCorporation.objects.get_or_create(id=corp_id)
|
||||
if created or not corpobj.api_last_updated or corpobj.api_last_updated < (datetime.utcnow() - timedelta(hours=12)):
|
||||
|
||||
try:
|
||||
doc = CachedDocument.objects.api_query('/corp/CorporationSheet.xml.aspx', {'corporationID': corp_id})
|
||||
except DocumentRetrievalError, exc:
|
||||
log.error('Error retrieving CorporationSheet.xml.aspx for ID %s - %s' % (corp_id, exc))
|
||||
raise APIAccessException
|
||||
|
||||
d = basic_xml_parse_doc(doc)['eveapi']
|
||||
|
||||
if 'error' in d:
|
||||
log.error("Error importing Corp %s: %s" % (corp_id, d['error']))
|
||||
raise APIAccessException
|
||||
else:
|
||||
d = d['result']
|
||||
|
||||
tag_mappings = (
|
||||
('corporationName', 'name'),
|
||||
('ticker', 'ticker'),
|
||||
('url', 'url'),
|
||||
('description', 'description'),
|
||||
('memberCount', 'member_count'),
|
||||
)
|
||||
|
||||
for tag_map in tag_mappings:
|
||||
setattr(corpobj, tag_map[1], d[tag_map[0]])
|
||||
|
||||
logo_mappings = (
|
||||
('graphicID', 'logo_graphic_id'),
|
||||
('shape1', 'logo_shape1'),
|
||||
('shape2', 'logo_shape2'),
|
||||
('shape3', 'logo_shape3'),
|
||||
('color1', 'logo_color1'),
|
||||
('color2', 'logo_color2'),
|
||||
('color3', 'logo_color3'),
|
||||
)
|
||||
|
||||
for logo_map in logo_mappings:
|
||||
setattr(corpobj, logo_map[1], d['logo'][logo_map[0]])
|
||||
|
||||
if int(d['allianceID']):
|
||||
corpobj.alliance, created = EVEPlayerAlliance.objects.get_or_create(id=d['allianceID'])
|
||||
corpobj.api_last_updated = datetime.utcnow()
|
||||
corpobj.save()
|
||||
|
||||
import_eve_character.delay(d['ceoID'], callback=link_ceo.subtask(corporation=corpobj.id))
|
||||
|
||||
return EVEPlayerCorporation.objects.get(pk=corpobj.pk)
|
||||
|
||||
|
||||
@task(ignore_result=True)
|
||||
def link_ceo(corporation, character):
|
||||
""" Links a character to the CEO position of a corporation """
|
||||
corpobj = EVEPlayerCorporation.objects.filter(id=corporation).update(ceo_character=EVEPlayerCharacter.objects.get(id=character))
|
||||
|
||||
|
||||
@task(ignore_result=True)
|
||||
def import_corp_members(api_userid, api_key, character_id):
|
||||
"""
|
||||
This function pulls all corporation members from the EVE API using a director's
|
||||
API key. It'll add as much information as it can about the character.
|
||||
"""
|
||||
|
||||
# grab and decode /corp/MemberTracking.xml.aspx
|
||||
auth_params = {'userID': api_userid, 'apiKey': api_key, 'characterID': character_id }
|
||||
char_doc = CachedDocument.objects.api_query('/corp/MemberTracking.xml.aspx',
|
||||
params=auth_params,
|
||||
no_cache=False)
|
||||
|
||||
set = basic_xml_parse_doc(char_doc)['eveapi']['result']['members']
|
||||
corp = EVEPlayerCharacter.objects.get(id=character_id).corporation
|
||||
|
||||
charlist = []
|
||||
for character in set:
|
||||
charlist.append(int(character['characterID']))
|
||||
charobj = EVEPlayerCharacter.objects.filter(id=character['characterID'])
|
||||
charobj.update(corporation=corp, last_login=character['logonDateTime'], last_logoff=character['logoffDateTime'], current_location_id=int(character['locationID']), corporation_date=character['startDateTime'])
|
||||
|
||||
for char in EVEPlayerCharacter.objects.filter(corporation=corp).exclude(id__in=charlist):
|
||||
import_eve_character.delay(char.id)
|
||||
|
||||
30
app/eve_api/tasks/static.py
Normal file
30
app/eve_api/tasks/static.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from celery.decorators import task
|
||||
from eve_proxy.models import CachedDocument
|
||||
from eve_api.utils import basic_xml_parse_doc
|
||||
from eve_api.models import EVESkill, EVESkillGroup
|
||||
|
||||
@task()
|
||||
def import_eve_skills():
|
||||
"""
|
||||
Imports the skill tree and groups
|
||||
"""
|
||||
|
||||
char_doc = CachedDocument.objects.api_query('/eve/SkillTree.xml.aspx')
|
||||
d = basic_xml_parse_doc(char_doc)['eveapi']
|
||||
if 'error' in d:
|
||||
return
|
||||
values = d['result']
|
||||
|
||||
for group in values['skillGroups']:
|
||||
gobj, created = EVESkillGroup.objects.get_or_create(id=group['groupID'])
|
||||
if created:
|
||||
gobj.name = group['groupName']
|
||||
gobj.save()
|
||||
|
||||
for skill in group['skills']:
|
||||
skillobj, created = EVESkill.objects.get_or_create(id=skill['typeID'])
|
||||
if created or not skillobj.name or not skillobj.group:
|
||||
skillobj.name = skill['typeName']
|
||||
skillobj.group = gobj
|
||||
skillobj.save()
|
||||
|
||||
19
app/eve_api/templates/eve_api/add.html
Normal file
19
app/eve_api/templates/eve_api/add.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Add EVE API Key{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>Please fill in your API key as provided on the <a
|
||||
href="http://eve-online.com/api">EVE Online API
|
||||
page</a> and a optional description.</p>
|
||||
|
||||
<form action="{% url eve_api.views.eveapi_add %}" method="post">
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
<br />
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Add Key" />
|
||||
</form>
|
||||
|
||||
{% endblock %}
|
||||
100
app/eve_api/templates/eve_api/character.html
Normal file
100
app/eve_api/templates/eve_api/character.html
Normal file
@@ -0,0 +1,100 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load humanize %}
|
||||
{% load naturaltimediff %}
|
||||
{% block content %}
|
||||
|
||||
<div class="character_info">
|
||||
<h1>{{ character.name }}</h1>
|
||||
|
||||
<div class="character_portrait">
|
||||
<img src="http://image.eveonline.com/Character/{{ character.id }}_256.jpg" />
|
||||
</div>
|
||||
|
||||
<div class="character_corporation">
|
||||
<span><a href="http://evemaps.dotlan.net/corp/{{ character.corporation.name }}">{{ character.corporation.ticker }}</a></span>
|
||||
<img src="http://image.eveonline.com/Corporation/{{ character.corporation.id }}_64.png" />
|
||||
</div>
|
||||
|
||||
{% if character.corporation.alliance %}
|
||||
<div class="character_alliance">
|
||||
<span><a href="http://evemaps.dotlan.net/alliance/{{ character.corporation.alliance.name }}">{{ character.corporation.alliance.ticker }}</a></span>
|
||||
<img src="http://image.eveonline.com/Alliance/{{ character.corporation.alliance.id }}_64.png" />
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="character_attributes">
|
||||
<h2>Attributes</h2>
|
||||
|
||||
<ul>
|
||||
<li><span class="stat">Race:</span> <span class="value">{{ character.get_race_display }}</span></li>
|
||||
<li><span class="stat">Gender:</span> <span class="value">{{ character.get_gender_display }}</span></li>
|
||||
<li><span class="stat">Corporation:</span> <a href="http://evemaps.dotlan.net/corp/{{ character.corporation.name }}">{{ character.corporation.name }}</a></span></li>
|
||||
<li><span class="stat">Joined Corporation:</span> <span class="value">{{ character.corporation_date|date:"Y/m/d H:i:s" }} ({{ character.corporation_date|naturaltimediff }})</span></li>
|
||||
<li><span class="stat">Alliance:</span> <span class="value"><a href="http://evemaps.dotlan.net/alliance/{{ character.corporation.alliance.name }}">{{ character.corporation.alliance.name }}</a></span></li>
|
||||
<li><span class="stat">Security Status:</span> {{ character.security_status }}</span></li>
|
||||
<li><span class="stat">Director:</span> <span class="value">{{ character.director }}</span></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="character_stats">
|
||||
<h2>Stats</h2>
|
||||
|
||||
<table>
|
||||
<tr><th>Stat</th><th>Value</th></tr>
|
||||
<tr><td class="stat">Intelligence</td><td> {{ character.attrib_intelligence }}</td></tr>
|
||||
<tr><td class="stat">Memory</td><td>{{ character.attrib_memory }}</td></tr>
|
||||
<tr><td class="stat">Charisma</td><td>{{ character.attrib_charisma }}</td></tr>
|
||||
<tr><td class="stat">Perception</td><td>{{ character.attrib_perception }}</td></tr>
|
||||
<tr><td class="stat">Willpower</td><td>{{ character.attrib_willpower }}</td></tr>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="character_skills">
|
||||
<h2>Skills</h2>
|
||||
|
||||
<div class="skill_controls">
|
||||
<a href=#" id="openAll">Open All</a>
|
||||
<a href=#" id="collapseAll">Collapse All</a>
|
||||
</div>
|
||||
<table>
|
||||
|
||||
{% regroup skills by skill.group as skill_group %}
|
||||
{% for group in skill_group %}
|
||||
<tr class="skill_heading"><th colspan=3>{{ group.grouper }}</th</tr>
|
||||
{% for skill in group.list %}
|
||||
<tr style="display:none;"><td>{{ skill.skill.name }} </td><td><img src="/static/img/skills/level{{ skill.level }}.gif" alt="Level {{ skill.level }}" /></td><td>{{ skill.skillpoints|intcomma }} SP</td></tr>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
<tr><th colspan=2>Total SP</th><th>{{ character.total_sp|intcomma }} SP</th></tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
|
||||
<script type="text/javascript">
|
||||
$(function(){
|
||||
$(".skill_heading").bind("click", function(){
|
||||
$this = $(this);
|
||||
$this.nextUntil(".skill_heading").toggle('fast');
|
||||
|
||||
if($this.hasClass("toggle_off")){
|
||||
$this.removeClass("toggle_off").removeClass("toggle_on");
|
||||
}else{
|
||||
$this.removeClass("toggle_on").removeClass("toggle_off");
|
||||
}
|
||||
});
|
||||
|
||||
$("#openAll").bind("click", function(e){
|
||||
e.preventDefault();
|
||||
$(".character_skills tr").css({ display: "table-row" });
|
||||
});
|
||||
|
||||
$("#collapseAll").bind("click", function(e){
|
||||
e.preventDefault();
|
||||
$(".character_skills tr:not(.skill_heading)").css({ display: "none" });
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endblock %}
|
||||
19
app/eve_api/templates/eve_api/character_list.html
Normal file
19
app/eve_api/templates/eve_api/character_list.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h1>Character List</h1>
|
||||
|
||||
{% if characters %}
|
||||
<table>
|
||||
<tr><th>Character Name</th><th>Corporation</th><th>Alliance</th></tr>
|
||||
{% for char in characters %}
|
||||
<tr><td><a href="{% url eveapi-character char.id %}">{{ char.name }}</a></td>
|
||||
<td><a href="{% url eveapi-corporation char.corporation.id %}">{{ char.corporation }}</a></td>
|
||||
<td>{% if char.corporation.alliance %}{{ char.corporation.alliance }}{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
30
app/eve_api/templates/eve_api/corporation.html
Normal file
30
app/eve_api/templates/eve_api/corporation.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load humanize %}
|
||||
{% load naturaltimediff %}
|
||||
{% load pagination_tags %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<div class="corporation_info">
|
||||
<h1>{{ corporation.name }}</h1>
|
||||
|
||||
<ul>
|
||||
<li><b>Member Count:</b> {{ corporation.member_count }}</li>
|
||||
<li><b>Known Members:</b> {{ corporation.eveplayercharacter_set.all.count }}</li>
|
||||
</ul>
|
||||
|
||||
{% if view_members %}
|
||||
<table>
|
||||
<tr><th>Name</th><th>Join Date</th></tr>
|
||||
{% autopaginate members 10 %}
|
||||
{% for char in members %}
|
||||
<tr><td><a href="{% url eveapi-character char.id %}">{{ char.name }}</a></td><td>{{ char.corporation_date }}</td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% paginate %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
22
app/eve_api/templates/eve_api/log.html
Normal file
22
app/eve_api/templates/eve_api/log.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}EVE API Access Logs{% endblock %}
|
||||
{% load pagination_tags %}
|
||||
{% block content %}
|
||||
|
||||
<h1>Access Logs for API Key {{ userid }}</h1>
|
||||
|
||||
<table>
|
||||
<tr><th>Service ID</th><th>Date / Time</th><th>API</th></tr>
|
||||
{% autopaginate logs 20 %}
|
||||
{% for log in logs %}
|
||||
<tr><td>{{ log.service }}</td>
|
||||
<td>{{ log.time_access }}</td>
|
||||
<td>{{ log.document }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% paginate %}
|
||||
|
||||
|
||||
{% endblock %}
|
||||
0
app/eve_api/templatetags/__init__.py
Normal file
0
app/eve_api/templatetags/__init__.py
Normal file
33
app/eve_api/templatetags/naturaltimediff.py
Normal file
33
app/eve_api/templatetags/naturaltimediff.py
Normal file
@@ -0,0 +1,33 @@
|
||||
from django import template
|
||||
|
||||
register = template.Library()
|
||||
|
||||
MOMENT = 120 # duration in seconds within which the time difference
|
||||
# will be rendered as 'a moment ago'
|
||||
|
||||
@register.filter
|
||||
def naturaltimediff(value):
|
||||
"""
|
||||
Finds the difference between the datetime value given and now()
|
||||
and returns appropriate humanize form
|
||||
"""
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
if isinstance(value, datetime):
|
||||
delta = datetime.now() - value
|
||||
if delta.days > 6:
|
||||
return value.strftime("%b %d") # May 15
|
||||
if delta.days > 1:
|
||||
return value.strftime("%A") # Wednesday
|
||||
elif delta.days == 1:
|
||||
return 'yesterday' # yesterday
|
||||
elif delta.seconds > 3600:
|
||||
return str(delta.seconds / 3600 ) + ' hours ago' # 3 hours ago
|
||||
elif delta.seconds > MOMENT:
|
||||
return str(delta.seconds/60) + ' minutes ago' # 29 minutes ago
|
||||
else:
|
||||
return 'a moment ago' # a moment ago
|
||||
return defaultfilters.date(value)
|
||||
else:
|
||||
return str(value)
|
||||
17
app/eve_api/urls.py
Normal file
17
app/eve_api/urls.py
Normal file
@@ -0,0 +1,17 @@
|
||||
from django.conf.urls.defaults import *
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from eve_api import views
|
||||
|
||||
urlpatterns = patterns('',
|
||||
url(r'^eveapi/add/', views.eveapi_add, name="eveapi-add"),
|
||||
url(r'^eveapi/delete/(?P<userid>\d+)/$', views.eveapi_del, name="eveapi-delete"),
|
||||
url(r'^eveapi/refresh/(?P<userid>\d+)/$', views.eveapi_refresh, name="eveapi-refresh"),
|
||||
url(r'^eveapi/log/(?P<userid>\d+)/$', views.eveapi_log, name="eveapi-log"),
|
||||
|
||||
url(r'^character/list/$', views.eveapi_character, name="eveapi-characters-list"),
|
||||
url(r'^character/(?P<charid>\d+)/$', views.eveapi_character, name="eveapi-character"),
|
||||
|
||||
url(r'^corporation/(?P<corporationid>\d+)/$', views.eveapi_corporation, name="eveapi-corporation"),
|
||||
|
||||
)
|
||||
49
app/eve_api/utils.py
Normal file
49
app/eve_api/utils.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from xml.dom import minidom
|
||||
from eve_proxy.models import CachedDocument
|
||||
|
||||
def basic_xml_parse(nodes):
|
||||
""" Parses a minidom set of nodes into a tree dict """
|
||||
values = {}
|
||||
for node in nodes:
|
||||
if node.nodeType == 1:
|
||||
node.normalize()
|
||||
if len(node.childNodes) == 1:
|
||||
if node.attributes.keys():
|
||||
values[node.tagName] = {}
|
||||
for e in node.attributes.keys():
|
||||
values[node.tagName][e] = node.attributes[e].value
|
||||
values[node.tagName]['value'] = node.childNodes[0].nodeValue
|
||||
else:
|
||||
values[node.tagName] = node.childNodes[0].nodeValue
|
||||
else:
|
||||
nv = {}
|
||||
if node.tagName == "rowset":
|
||||
rset = []
|
||||
for nd in node.childNodes:
|
||||
if nd.nodeType == 1:
|
||||
d = {}
|
||||
for e in nd.attributes.keys():
|
||||
d[e] = nd.attributes[e].value
|
||||
|
||||
if len(nd.childNodes) > 0:
|
||||
p = basic_xml_parse(nd.childNodes)
|
||||
for i in p.keys():
|
||||
d[i] = p[i]
|
||||
|
||||
rset.append(d)
|
||||
values[node.attributes['name'].value] = rset
|
||||
else:
|
||||
values[node.tagName] = basic_xml_parse(node.childNodes)
|
||||
|
||||
return values
|
||||
|
||||
def basic_xml_parse_doc(doc):
|
||||
"""
|
||||
Parses a CachedDocument object into a dict
|
||||
"""
|
||||
|
||||
if type(doc) == CachedDocument:
|
||||
dom = minidom.parseString(doc.body.encode('utf-8'))
|
||||
return basic_xml_parse(dom.childNodes)
|
||||
|
||||
return {}
|
||||
129
app/eve_api/views.py
Normal file
129
app/eve_api/views.py
Normal file
@@ -0,0 +1,129 @@
|
||||
import celery
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import render_to_response, get_object_or_404, redirect
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.template import RequestContext
|
||||
from django.http import Http404
|
||||
from django.core import serializers
|
||||
|
||||
from eve_proxy.models import ApiAccessLog
|
||||
from eve_proxy.exceptions import DocumentRetrievalError
|
||||
from eve_api.forms import EveAPIForm
|
||||
from eve_api.models import EVEAccount, EVEPlayerCharacter, EVEPlayerCorporation
|
||||
from eve_api.tasks import import_apikey_result
|
||||
|
||||
|
||||
@login_required
|
||||
def eveapi_add(request, post_save_redirect='/'):
|
||||
""" Add a EVE API key to a user's account """
|
||||
|
||||
if request.method == 'POST':
|
||||
form = EveAPIForm(request.POST)
|
||||
if form.is_valid():
|
||||
|
||||
task = import_apikey_result.delay(api_key=form.cleaned_data['api_key'], api_userid=form.cleaned_data['user_id'], user=request.user.id)
|
||||
try:
|
||||
task.wait(10)
|
||||
except celery.exceptions.TimeoutError:
|
||||
msg = "The addition of your API key is still processing, please check back in a minute or so."
|
||||
pass
|
||||
except DocumentRetrievalError:
|
||||
msg = "An issue with the EVE API was encountered while adding your API, please try again later."
|
||||
except:
|
||||
msg = "An unknown error was encountered while trying to add your API key, please try again later."
|
||||
else:
|
||||
msg = "EVE API key %d successfully added." % form.cleaned_data['user_id']
|
||||
messages.success(request, msg, fail_silently=True)
|
||||
return redirect(post_save_redirect)
|
||||
else:
|
||||
form = EveAPIForm() # An unbound form
|
||||
|
||||
return render_to_response('eve_api/add.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def eveapi_del(request, userid, post_save_redirect='/'):
|
||||
""" Delete a EVE API key from a account """
|
||||
|
||||
try:
|
||||
acc = EVEAccount.objects.get(id=userid)
|
||||
except EVEAccount.DoesNotExist:
|
||||
return redirect(post_save_redirect)
|
||||
if acc.user == request.user:
|
||||
acc.delete()
|
||||
messages.success(request, "EVE API key successfully deleted.", fail_silently=True)
|
||||
|
||||
return redirect(post_save_redirect)
|
||||
|
||||
|
||||
@login_required
|
||||
def eveapi_refresh(request, userid, post_save_redirect='/'):
|
||||
""" Force refresh a EVE API key """
|
||||
|
||||
try:
|
||||
acc = EVEAccount.objects.get(id=userid)
|
||||
except EVEAccount.DoesNotExist:
|
||||
pass
|
||||
else:
|
||||
if acc.user == request.user or request.user.is_superuser:
|
||||
task = import_apikey_result.delay(api_key=acc.api_key, api_userid=acc.api_user_id, force_cache=True, user=request.user.id)
|
||||
if request.is_ajax():
|
||||
try:
|
||||
acc = task.wait(30)
|
||||
except (celery.exceptions.TimeoutError, DocumentRetrievalError):
|
||||
acc = EVEAccount.objects.get(id=userid)
|
||||
return HttpResponse(serializers.serialize('json', [acc]), mimetype='application/javascript')
|
||||
else:
|
||||
messages.add_message(request, messages.INFO, "Key %s has been queued to be refreshed from the API" % acc.api_user_id)
|
||||
|
||||
return redirect(post_save_redirect)
|
||||
|
||||
|
||||
@login_required
|
||||
def eveapi_log(request, userid):
|
||||
""" Provides a list of access logs for a specific EVE API key """
|
||||
|
||||
try:
|
||||
acc = EVEAccount.objects.get(id=userid)
|
||||
except EVEAccount.DoesNotExist:
|
||||
pass
|
||||
else:
|
||||
if acc and (acc.user == request.user or request.user.is_staff):
|
||||
logs = ApiAccessLog.objects.filter(userid=userid).order_by('-time_access')[:50]
|
||||
return render_to_response('eve_api/log.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
raise Http404
|
||||
|
||||
|
||||
@login_required
|
||||
def eveapi_character(request, charid=None):
|
||||
""" Provide a list of characters, or a indivdual character sheet """
|
||||
|
||||
if charid:
|
||||
character = get_object_or_404(EVEPlayerCharacter.objects.select_related('corporation', 'corporation__aliance'), id=charid)
|
||||
skills = character.eveplayercharacterskill_set.all().order_by('skill__group__name', 'skill__name')
|
||||
return render_to_response('eve_api/character.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
characters = EVEPlayerCharacter.objects.select_related('corporation', 'corporation__alliance').filter(eveaccount__user=request.user).only('id', 'name', 'corporation__name', 'corporation__alliance__name')
|
||||
return render_to_response('eve_api/character_list.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def eveapi_corporation(request, corporationid):
|
||||
"""
|
||||
Provide details of a corporation, and for admins, a list of members
|
||||
"""
|
||||
|
||||
try:
|
||||
corporation = EVEPlayerCorporation.objects.get(id=corporationid)
|
||||
except EVEPlayerCorporation.DoesNotExist:
|
||||
raise Http404
|
||||
|
||||
if request.user.is_superuser:
|
||||
view_members = True
|
||||
members = corporation.eveplayercharacter_set.all().order_by('corporation_date').only('id', 'name', 'corporation_date')
|
||||
|
||||
return render_to_response('eve_api/corporation.html', locals(), context_instance=RequestContext(request))
|
||||
9
app/eve_proxy/__init__.py
Executable file
9
app/eve_proxy/__init__.py
Executable file
@@ -0,0 +1,9 @@
|
||||
VERSION = (0, 4)
|
||||
|
||||
# Dynamically calculate the version based on VERSION tuple
|
||||
if len(VERSION)>2 and VERSION[2] is not None:
|
||||
str_version = "%d.%d_%s" % VERSION[:3]
|
||||
else:
|
||||
str_version = "%d.%d" % VERSION[:2]
|
||||
|
||||
__version__ = str_version
|
||||
16
app/eve_proxy/admin.py
Executable file
16
app/eve_proxy/admin.py
Executable file
@@ -0,0 +1,16 @@
|
||||
from django.contrib import admin
|
||||
from eve_proxy.models import CachedDocument, ApiAccessLog
|
||||
|
||||
class CachedDocumentAdmin(admin.ModelAdmin):
|
||||
model = CachedDocument
|
||||
list_display = ('url_path', 'time_retrieved', 'cached_until')
|
||||
verbose_name = 'Cached Document'
|
||||
verbose_name_plural = 'Cached Documents'
|
||||
admin.site.register(CachedDocument, CachedDocumentAdmin)
|
||||
|
||||
class ApiAccessLogAdmin(admin.ModelAdmin):
|
||||
model = ApiAccessLog
|
||||
list_display = ('userid', 'service', 'document', 'time_access')
|
||||
verbose_name = 'API Access Log'
|
||||
verbose_name_plural = 'API Access Logs'
|
||||
admin.site.register(ApiAccessLog, ApiAccessLogAdmin)
|
||||
17
app/eve_proxy/exceptions.py
Normal file
17
app/eve_proxy/exceptions.py
Normal file
@@ -0,0 +1,17 @@
|
||||
class DocumentRetrievalError(Exception):
|
||||
"""
|
||||
Unable to retrieve a document from the EVE API: %s
|
||||
"""
|
||||
def __init__(self, value):
|
||||
self.value = value
|
||||
|
||||
def __str__(self):
|
||||
return self.__doc__ % self.value
|
||||
|
||||
class InvalidDocument(Exception):
|
||||
"""
|
||||
The document retrieved from the EVE API is not a valid XML document
|
||||
"""
|
||||
def __str__(self):
|
||||
return self.__doc__
|
||||
|
||||
60
app/eve_proxy/migrations/0001_initial.py
Normal file
60
app/eve_proxy/migrations/0001_initial.py
Normal file
@@ -0,0 +1,60 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'CachedDocument'
|
||||
db.create_table('eve_proxy_cacheddocument', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('url_path', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('body', self.gf('django.db.models.fields.TextField')()),
|
||||
('time_retrieved', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
('cached_until', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
|
||||
))
|
||||
db.send_create_signal('eve_proxy', ['CachedDocument'])
|
||||
|
||||
# Adding model 'ApiAccessLog'
|
||||
db.create_table('eve_proxy_apiaccesslog', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('userid', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('service', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('time_access', self.gf('django.db.models.fields.DateTimeField')()),
|
||||
('document', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
))
|
||||
db.send_create_signal('eve_proxy', ['ApiAccessLog'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'CachedDocument'
|
||||
db.delete_table('eve_proxy_cacheddocument')
|
||||
|
||||
# Deleting model 'ApiAccessLog'
|
||||
db.delete_table('eve_proxy_apiaccesslog')
|
||||
|
||||
|
||||
models = {
|
||||
'eve_proxy.apiaccesslog': {
|
||||
'Meta': {'object_name': 'ApiAccessLog'},
|
||||
'document': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'service': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'time_access': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'userid': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'eve_proxy.cacheddocument': {
|
||||
'Meta': {'object_name': 'CachedDocument'},
|
||||
'body': ('django.db.models.fields.TextField', [], {}),
|
||||
'cached_until': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'time_retrieved': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'url_path': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_proxy']
|
||||
@@ -0,0 +1,40 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding unique constraint on 'CachedDocument', fields ['url_path']
|
||||
db.create_unique('eve_proxy_cacheddocument', ['url_path'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Removing unique constraint on 'CachedDocument', fields ['url_path']
|
||||
db.delete_unique('eve_proxy_cacheddocument', ['url_path'])
|
||||
|
||||
|
||||
models = {
|
||||
'eve_proxy.apiaccesslog': {
|
||||
'Meta': {'object_name': 'ApiAccessLog'},
|
||||
'document': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'service': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'time_access': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'userid': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'eve_proxy.cacheddocument': {
|
||||
'Meta': {'object_name': 'CachedDocument'},
|
||||
'body': ('django.db.models.fields.TextField', [], {}),
|
||||
'cached_until': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'time_retrieved': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'url_path': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_proxy']
|
||||
@@ -0,0 +1,55 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Delete all records
|
||||
db.execute("DELETE FROM eve_proxy_cacheddocument")
|
||||
|
||||
# Removing unique constraint on 'CachedDocument', fields ['url_path']
|
||||
db.delete_unique('eve_proxy_cacheddocument', ['url_path'])
|
||||
|
||||
# Deleting field 'CachedDocument.id'
|
||||
db.delete_column('eve_proxy_cacheddocument', 'id')
|
||||
|
||||
# Adding field 'CachedDocument.doc_key'
|
||||
db.add_column('eve_proxy_cacheddocument', 'doc_key', self.gf('django.db.models.fields.CharField')(default='xxx', max_length=40, primary_key=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# User chose to not deal with backwards NULL issues for 'CachedDocument.id'
|
||||
raise RuntimeError("Cannot reverse this migration. 'CachedDocument.id' and its values cannot be restored.")
|
||||
|
||||
# Deleting field 'CachedDocument.doc_key'
|
||||
db.delete_column('eve_proxy_cacheddocument', 'doc_key')
|
||||
|
||||
# Adding unique constraint on 'CachedDocument', fields ['url_path']
|
||||
db.create_unique('eve_proxy_cacheddocument', ['url_path'])
|
||||
|
||||
|
||||
models = {
|
||||
'eve_proxy.apiaccesslog': {
|
||||
'Meta': {'ordering': "['time_access']", 'object_name': 'ApiAccessLog'},
|
||||
'document': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'service': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'time_access': ('django.db.models.fields.DateTimeField', [], {}),
|
||||
'userid': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'eve_proxy.cacheddocument': {
|
||||
'Meta': {'ordering': "['time_retrieved']", 'object_name': 'CachedDocument'},
|
||||
'body': ('django.db.models.fields.TextField', [], {}),
|
||||
'cached_until': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'doc_key': ('django.db.models.fields.CharField', [], {'max_length': '40', 'primary_key': 'True'}),
|
||||
'time_retrieved': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'url_path': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['eve_proxy']
|
||||
0
app/eve_proxy/migrations/__init__.py
Normal file
0
app/eve_proxy/migrations/__init__.py
Normal file
139
app/eve_proxy/models.py
Executable file
139
app/eve_proxy/models.py
Executable file
@@ -0,0 +1,139 @@
|
||||
import urllib, urllib2
|
||||
import xml
|
||||
import hashlib
|
||||
import socket
|
||||
from datetime import datetime, timedelta
|
||||
from xml.dom import minidom
|
||||
from django.db import models
|
||||
from eve_proxy.exceptions import *
|
||||
import settings
|
||||
|
||||
# You generally never want to change this unless you have a very good reason.
|
||||
|
||||
try:
|
||||
API_URL = getattr(settings, 'EVE_API_URL')
|
||||
except AttributeError:
|
||||
API_URL = 'https://api.eve-online.com'
|
||||
|
||||
# Errors to rollback if we have a cached version of the document
|
||||
# Errors 500-999 at the moment, this can be trimmed down as needed
|
||||
ROLLBACK_ERRORS = range(500, 999)
|
||||
|
||||
class CachedDocumentManager(models.Manager):
|
||||
"""
|
||||
This manager handles querying or retrieving CachedDocuments.
|
||||
"""
|
||||
|
||||
def construct_url(self, url_path, params):
|
||||
|
||||
# Valid arguments for EVE API Calls
|
||||
allowed_params = ['userid', 'apikey', 'characterid', 'version', 'names', 'ids', 'corporationid', 'beforerefid', 'accountkey']
|
||||
|
||||
if len(params):
|
||||
for k, v in params.items():
|
||||
del params[k]
|
||||
if k.lower() in allowed_params:
|
||||
params[k.lower()] = v
|
||||
url = "%s%s?%s" % (API_URL, url_path, urllib.urlencode(params))
|
||||
else:
|
||||
url = "%s%s" % (API_URL, url_path)
|
||||
|
||||
return url
|
||||
|
||||
def api_query(self, url_path, params={}, no_cache=False, exceptions=True):
|
||||
"""
|
||||
Transparently handles querying EVE API or retrieving the document from
|
||||
the cache.
|
||||
|
||||
Arguments:
|
||||
url_path: (string) Path to the EVE API page to query. For example:
|
||||
/eve/ErrorList.xml.aspx
|
||||
params: (dictionary/string) A dictionary of extra parameters to include.
|
||||
May also be a string representation of
|
||||
the query: userID=1&characterID=xxxxxxxx
|
||||
"""
|
||||
|
||||
url = self.construct_url(url_path, params)
|
||||
doc_key = hashlib.sha1(url).hexdigest()
|
||||
|
||||
|
||||
try:
|
||||
doc = super(CachedDocumentManager, self).get_query_set().get(pk=doc_key)
|
||||
except self.model.DoesNotExist:
|
||||
doc = CachedDocument(pk=doc_key, url_path=url)
|
||||
|
||||
if not doc.cached_until or datetime.utcnow() > doc.cached_until or no_cache:
|
||||
|
||||
req = urllib2.Request(url)
|
||||
req.add_header('CCP-Contact', 'matalok@pleaseignore.com')
|
||||
try:
|
||||
conn = urllib2.urlopen(req)
|
||||
except urllib2.HTTPError, e:
|
||||
print "HTTP Error Code: %s" % e.code
|
||||
raise DocumentRetrievalError(e.code)
|
||||
except urllib2.URLError, e:
|
||||
print "URLError: %s" % e.reason
|
||||
raise DocumentRetrievalError(e.reason)
|
||||
|
||||
doc.body = unicode(conn.read(), 'utf-8')
|
||||
doc.time_retrieved = datetime.utcnow()
|
||||
|
||||
error = 0
|
||||
try:
|
||||
# Parse the response via minidom
|
||||
dom = minidom.parseString(doc.body.encode('utf-8'))
|
||||
except:
|
||||
doc.cached_until = datetime.utcnow()
|
||||
else:
|
||||
doc.cached_until = dom.getElementsByTagName('cachedUntil')[0].childNodes[0].nodeValue
|
||||
enode = dom.getElementsByTagName('error')
|
||||
if enode:
|
||||
error = enode[0].getAttribute('code')
|
||||
|
||||
# If we have a error in the ignored error list use the cached doc, otherwise return the new doc
|
||||
if not error or not error in ROLLBACK_ERRORS:
|
||||
doc.save()
|
||||
doc = self.get(pk=doc.pk)
|
||||
|
||||
# If this is user related, write a log instance
|
||||
if params and params.get('userid', None):
|
||||
try:
|
||||
v = int(params.get('userid', None))
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
ApiAccessLog(userid=v, service='Unknown', time_access=doc.time_retrieved, document=url).save()
|
||||
|
||||
return doc
|
||||
|
||||
class CachedDocument(models.Model):
|
||||
"""
|
||||
This is a cached XML document from the EVE API.
|
||||
"""
|
||||
doc_key = models.CharField(max_length=40, primary_key=True)
|
||||
url_path = models.CharField(max_length=255)
|
||||
body = models.TextField()
|
||||
time_retrieved = models.DateTimeField(blank=True, null=True)
|
||||
cached_until = models.DateTimeField(blank=True, null=True)
|
||||
|
||||
# The custom manager handles the querying.
|
||||
objects = CachedDocumentManager()
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Cached Document'
|
||||
verbose_name_plural = 'Cached Documents'
|
||||
ordering = ['time_retrieved']
|
||||
|
||||
class ApiAccessLog(models.Model):
|
||||
"""
|
||||
Provides a list of API accesses made by applications or Auth
|
||||
"""
|
||||
userid = models.IntegerField()
|
||||
service = models.CharField(max_length=255)
|
||||
time_access = models.DateTimeField()
|
||||
document = models.CharField(max_length=255)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'API Access Log'
|
||||
verbose_name_plural = 'API Access Logs'
|
||||
ordering = ['time_access']
|
||||
24
app/eve_proxy/tasks.py
Normal file
24
app/eve_proxy/tasks.py
Normal file
@@ -0,0 +1,24 @@
|
||||
from django.conf import settings
|
||||
import logging
|
||||
from datetime import datetime, timedelta
|
||||
from celery.decorators import task
|
||||
from eve_proxy.models import CachedDocument, ApiAccessLog
|
||||
|
||||
@task(ignore_result=True)
|
||||
def clear_stale_cache(cache_extension=0):
|
||||
log = clear_stale_cache.get_logger()
|
||||
|
||||
time = datetime.utcnow() - timedelta(seconds=cache_extension)
|
||||
objs = CachedDocument.objects.filter(cached_until__lt=time)
|
||||
log.info('Removing %s stale cache documents' % objs.count())
|
||||
objs.delete()
|
||||
|
||||
|
||||
@task(ignore_result=True)
|
||||
def clear_old_logs():
|
||||
log = clear_old_logs.get_logger()
|
||||
|
||||
time = datetime.utcnow() - timedelta(days=settings.EVE_PROXY_KEEP_LOGS)
|
||||
objs = ApiAccessLog.objects.filter(time_access__lt=time)
|
||||
log.info('Removing %s old access logs' % objs.count())
|
||||
objs.delete()
|
||||
70
app/eve_proxy/tests.py
Normal file
70
app/eve_proxy/tests.py
Normal file
@@ -0,0 +1,70 @@
|
||||
from __future__ import with_statement
|
||||
import unittest
|
||||
from datetime import datetime
|
||||
import time
|
||||
from eve_proxy.models import CachedDocument
|
||||
from eve_proxy.exceptions import *
|
||||
|
||||
class CachedDocumentTestCase(unittest.TestCase):
|
||||
|
||||
params = {'apikey': 'B149FF0C66D6488CA9C0DA8B7E49F4C9CC0064BA38B043819146992510DA8C83' , 'userid': 415631 }
|
||||
|
||||
def tearDown(self):
|
||||
CachedDocument.objects.all().delete()
|
||||
|
||||
def testDumbApiQuery(self):
|
||||
""" Queries the EVE API with a non authenticated request """
|
||||
url = '/server/ServerStatus.xml.aspx'
|
||||
|
||||
obj = CachedDocument.objects.api_query(url, no_cache=True)
|
||||
|
||||
self.assertNotEqual(obj, None, "No CachedDocument returned")
|
||||
self.assertNotEqual(obj.body, None, "CachedDocument has no body")
|
||||
self.assertNotEqual(obj.cached_until, None, "CachedDocument has no cache expiry time")
|
||||
self.assertNotEqual(obj.time_retrieved, None, "CachedDocument has no retrieval time")
|
||||
|
||||
def testUserApiQuery(self):
|
||||
""" Queries the EVE API with a authenticated request """
|
||||
|
||||
url = '/account/Characters.xml.aspx'
|
||||
|
||||
obj = CachedDocument.objects.api_query(url, params=self.params, no_cache=True)
|
||||
|
||||
self.assertNotEqual(obj, None, "No CachedDocument returned")
|
||||
self.assertNotEqual(obj.body, None, "CachedDocument has no body")
|
||||
self.assertNotEqual(obj.cached_until, None, "CachedDocument has no cache expiry time")
|
||||
self.assertNotEqual(obj.time_retrieved, None, "CachedDocument has no retrieval time")
|
||||
|
||||
def testCaching(self):
|
||||
""" Tests if objects are being cached correctly """
|
||||
|
||||
url = '/server/ServerStatus.xml.aspx'
|
||||
obj = CachedDocument.objects.api_query(url, no_cache=True)
|
||||
obj2 = CachedDocument.objects.api_query(url)
|
||||
|
||||
self.assertEqual(obj.pk, obj2.pk, "Objects are not caching correctly")
|
||||
|
||||
def testCacheExpiry(self):
|
||||
""" Tests that cache expiry is working """
|
||||
|
||||
url = '/server/ServerStatus.xml.aspx'
|
||||
obj = CachedDocument.objects.api_query(url, no_cache=True)
|
||||
ret_time = obj.time_retrieved
|
||||
obj.cached_until = datetime.utcnow()
|
||||
obj.save()
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
obj2 = CachedDocument.objects.api_query(url)
|
||||
|
||||
self.assertEqual(obj.pk, obj2.pk, "Cache Expiry test returned different objects")
|
||||
self.assertNotEqual(obj2.time_retrieved, ret_time, "Retrieval time not updated")
|
||||
|
||||
def testInvalidApiQuery(self):
|
||||
""" Attempts to request a invalid EVE API endpoint """
|
||||
|
||||
url = '/server/ServerStatus.xml.aspx'
|
||||
|
||||
with self.assertRaises(DocumentRetrievalError):
|
||||
obj = CachedDocument.objects.api_query(url, no_cache=True)
|
||||
|
||||
8
app/eve_proxy/urls.py
Executable file
8
app/eve_proxy/urls.py
Executable file
@@ -0,0 +1,8 @@
|
||||
from django.conf.urls.defaults import *
|
||||
|
||||
urlpatterns = patterns('eve_proxy.views',
|
||||
# This view can be used just like EVE API's http://api.eve-online.com.
|
||||
# Any parameters or URL paths are sent through the cache system and
|
||||
# forwarded to the EVE API site as needed.
|
||||
url(r'^', 'retrieve_xml', name='eve_proxy-retrieve_xml'),
|
||||
)
|
||||
39
app/eve_proxy/views.py
Executable file
39
app/eve_proxy/views.py
Executable file
@@ -0,0 +1,39 @@
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.http import HttpResponse, HttpResponseNotFound, HttpResponseServerError
|
||||
from eve_proxy.models import CachedDocument
|
||||
|
||||
def retrieve_xml(request):
|
||||
"""
|
||||
A view that forwards EVE API requests through the cache system, either
|
||||
retrieving a cached document or querying and caching as needed.
|
||||
"""
|
||||
# This is the URL path (minus the parameters).
|
||||
url_path = request.META['PATH_INFO'].replace(reverse('eve_proxy.views.retrieve_xml'),"/")
|
||||
# The parameters attached to the end of the URL path.
|
||||
|
||||
if request.method == 'POST':
|
||||
p = request.POST
|
||||
else:
|
||||
p = request.GET
|
||||
|
||||
# Convert the QuerySet object into a dict
|
||||
params = {}
|
||||
for key,value in p.items():
|
||||
params[key] = value
|
||||
|
||||
if url_path == '/' or url_path == '':
|
||||
# If they don't provide any kind of query, shoot a quick error message.
|
||||
return HttpResponseNotFound('No API query specified.')
|
||||
|
||||
if 'userID' in params and not 'service' in params:
|
||||
return HttpResponse('No Service ID provided.')
|
||||
|
||||
try:
|
||||
cached_doc = CachedDocument.objects.api_query(url_path, params, exceptions=False)
|
||||
except:
|
||||
return HttpResponseServerError('Error occured')
|
||||
|
||||
if cached_doc:
|
||||
return HttpResponse(cached_doc.body, mimetype='text/xml')
|
||||
|
||||
return HttpResponseNotFound('Error retrieving the document')
|
||||
0
app/groups/__init__.py
Normal file
0
app/groups/__init__.py
Normal file
26
app/groups/admin.py
Normal file
26
app/groups/admin.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.models import Group
|
||||
from django.contrib.auth.admin import GroupAdmin
|
||||
from groups.models import GroupInformation, GroupRequest
|
||||
|
||||
class GroupRequestAdmin(admin.ModelAdmin):
|
||||
pass
|
||||
|
||||
admin.site.register(GroupRequest, GroupRequestAdmin)
|
||||
|
||||
class SSOGroupInformationInline(admin.StackedInline):
|
||||
model = GroupInformation
|
||||
fk_name = 'group'
|
||||
max_num = 1
|
||||
|
||||
readonly_fields = ('admins',)
|
||||
|
||||
# Define a new UserAdmin class
|
||||
class SSOGroupAdmin(GroupAdmin):
|
||||
inlines = [SSOGroupInformationInline, ]
|
||||
|
||||
# Re-register UserAdmin
|
||||
admin.site.unregister(Group)
|
||||
admin.site.register(Group, SSOGroupAdmin)
|
||||
|
||||
|
||||
21
app/groups/app_defines.py
Normal file
21
app/groups/app_defines.py
Normal file
@@ -0,0 +1,21 @@
|
||||
# Group Types
|
||||
GROUP_TYPE_BUILTIN = 0
|
||||
GROUP_TYPE_MANAGED = 1
|
||||
GROUP_TYPE_PERMISSION = 2
|
||||
|
||||
GROUP_TYPE_CHOICES = (
|
||||
(GROUP_TYPE_BUILTIN, 'Built-In'),
|
||||
(GROUP_TYPE_PERMISSION, 'Permission'),
|
||||
(GROUP_TYPE_MANAGED, 'Managed'),
|
||||
)
|
||||
|
||||
# Request Status Codes
|
||||
REQUEST_PENDING = 0
|
||||
REQUEST_ACCEPTED = 1
|
||||
REQUEST_REJECTED = 2
|
||||
|
||||
REQUEST_STATUS_CHOICES = (
|
||||
(REQUEST_PENDING, 'Pending'),
|
||||
(REQUEST_ACCEPTED, 'Accepted'),
|
||||
(REQUEST_REJECTED, 'Rejected'),
|
||||
)
|
||||
10
app/groups/forms.py
Normal file
10
app/groups/forms.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from django import forms
|
||||
|
||||
from groups.models import GroupRequest
|
||||
from groups.app_defines import *
|
||||
|
||||
class GroupRequestForm(forms.ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = GroupRequest
|
||||
exclude = ('group', 'user', 'status', 'changed_by', 'changed_date', 'created_date')
|
||||
116
app/groups/migrations/0001_initial.py
Normal file
116
app/groups/migrations/0001_initial.py
Normal file
@@ -0,0 +1,116 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'GroupInformation'
|
||||
db.create_table('groups_groupinformation', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('group', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.Group'], unique=True)),
|
||||
('type', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('public', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
|
||||
('requestable', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True)),
|
||||
('description', self.gf('django.db.models.fields.TextField')()),
|
||||
))
|
||||
db.send_create_signal('groups', ['GroupInformation'])
|
||||
|
||||
# Adding M2M table for field admins on 'GroupInformation'
|
||||
db.create_table('groups_groupinformation_admins', (
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
|
||||
('groupinformation', models.ForeignKey(orm['groups.groupinformation'], null=False)),
|
||||
('user', models.ForeignKey(orm['auth.user'], null=False))
|
||||
))
|
||||
db.create_unique('groups_groupinformation_admins', ['groupinformation_id', 'user_id'])
|
||||
|
||||
# Adding model 'GroupRequest'
|
||||
db.create_table('groups_grouprequest', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('group', self.gf('django.db.models.fields.related.ForeignKey')(related_name='requests', to=orm['auth.Group'])),
|
||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(related_name='grouprequests', to=orm['auth.User'])),
|
||||
('reason', self.gf('django.db.models.fields.TextField')()),
|
||||
('status', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('changed_by', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
|
||||
('changed_date', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
|
||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
))
|
||||
db.send_create_signal('groups', ['GroupRequest'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'GroupInformation'
|
||||
db.delete_table('groups_groupinformation')
|
||||
|
||||
# Removing M2M table for field admins on 'GroupInformation'
|
||||
db.delete_table('groups_groupinformation_admins')
|
||||
|
||||
# Deleting model 'GroupRequest'
|
||||
db.delete_table('groups_grouprequest')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'groups.groupinformation': {
|
||||
'Meta': {'object_name': 'GroupInformation'},
|
||||
'admins': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {}),
|
||||
'group': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.Group']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'requestable': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {})
|
||||
},
|
||||
'groups.grouprequest': {
|
||||
'Meta': {'object_name': 'GroupRequest'},
|
||||
'changed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'requests'", 'to': "orm['auth.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'grouprequests'", 'to': "orm['auth.User']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['groups']
|
||||
80
app/groups/migrations/0002_groupinformation.py
Normal file
80
app/groups/migrations/0002_groupinformation.py
Normal file
@@ -0,0 +1,80 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import DataMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(DataMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
for group in orm['auth.Group'].objects.all():
|
||||
try:
|
||||
obj = orm.GroupInformation.objects.get(group=group)
|
||||
except orm.GroupInformation.DoesNotExist:
|
||||
obj = orm.GroupInformation(group=group)
|
||||
obj.save()
|
||||
|
||||
def backwards(self, orm):
|
||||
orm.GroupInformation.objects.all().delete()
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'groups.groupinformation': {
|
||||
'Meta': {'object_name': 'GroupInformation'},
|
||||
'admins': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {}),
|
||||
'group': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.Group']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'requestable': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {'default': '0'})
|
||||
},
|
||||
'groups.grouprequest': {
|
||||
'Meta': {'object_name': 'GroupRequest'},
|
||||
'changed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'requests'", 'to': "orm['auth.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'grouprequests'", 'to': "orm['auth.User']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['groups']
|
||||
@@ -0,0 +1,82 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'GroupInformation.parent'
|
||||
db.add_column('groups_groupinformation', 'parent', self.gf('django.db.models.fields.related.ForeignKey')(related_name='children', null=True, to=orm['auth.Group']), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'GroupInformation.parent'
|
||||
db.delete_column('groups_groupinformation', 'parent_id')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'groups.groupinformation': {
|
||||
'Meta': {'ordering': "['group']", 'object_name': 'GroupInformation'},
|
||||
'admins': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.User']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.Group']", 'unique': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'children'", 'null': 'True', 'to': "orm['auth.Group']"}),
|
||||
'public': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'requestable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {'default': '2'})
|
||||
},
|
||||
'groups.grouprequest': {
|
||||
'Meta': {'ordering': "['created_date']", 'object_name': 'GroupRequest'},
|
||||
'changed_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'changed_date': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'requests'", 'to': "orm['auth.Group']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'grouprequests'", 'to': "orm['auth.User']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['groups']
|
||||
0
app/groups/migrations/__init__.py
Normal file
0
app/groups/migrations/__init__.py
Normal file
55
app/groups/models.py
Normal file
55
app/groups/models.py
Normal file
@@ -0,0 +1,55 @@
|
||||
from django.db import models
|
||||
from django.db.models import signals
|
||||
from django.contrib.auth.models import Group, User
|
||||
|
||||
from groups.app_defines import *
|
||||
|
||||
class GroupInformation(models.Model):
|
||||
""" Extended group information """
|
||||
|
||||
group = models.OneToOneField(Group)
|
||||
|
||||
type = models.IntegerField("Group Type", choices=GROUP_TYPE_CHOICES, default=GROUP_TYPE_PERMISSION)
|
||||
admins = models.ManyToManyField(User, blank=True)
|
||||
public = models.BooleanField("Public", default=False, help_text="Indicates if the group is visible to all")
|
||||
requestable = models.BooleanField("Requestable", default=False, help_text="Indicates if people can request to join this group")
|
||||
parent = models.ForeignKey(Group, related_name="children", null=True, blank=True)
|
||||
|
||||
description = models.TextField(help_text="Description of the group and its permissions", blank=True)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.group and (self.group.eveplayercorporation_set.count() or self.group.eveplayeralliance_set.count()):
|
||||
self.type = GROUP_TYPE_MANAGED
|
||||
models.Model.save(self, *args, **kwargs)
|
||||
|
||||
@staticmethod
|
||||
def create_group(sender, instance, created, **kwargs):
|
||||
if created:
|
||||
profile, created = GroupInformation.objects.get_or_create(group=instance)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Group Information'
|
||||
verbose_name_plural = 'Group Information'
|
||||
ordering = ['group']
|
||||
|
||||
|
||||
signals.post_save.connect(GroupInformation.create_group, sender=Group)
|
||||
|
||||
|
||||
class GroupRequest(models.Model):
|
||||
""" Join requests for a group """
|
||||
|
||||
group = models.ForeignKey(Group, null=False, related_name='requests')
|
||||
user = models.ForeignKey(User, null=False, related_name='grouprequests')
|
||||
reason = models.TextField("Reason")
|
||||
status = models.IntegerField("Request Status", choices=REQUEST_STATUS_CHOICES, null=False, default=REQUEST_PENDING)
|
||||
|
||||
changed_by = models.ForeignKey(User)
|
||||
changed_date = models.DateTimeField("Changed Date/Time", auto_now=True)
|
||||
|
||||
created_date = models.DateTimeField("Created Date/Time", auto_now_add=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = 'Group Access Request'
|
||||
verbose_name_plural = 'Group Access Requests'
|
||||
ordering = ['created_date']
|
||||
23
app/groups/tests.py
Normal file
23
app/groups/tests.py
Normal file
@@ -0,0 +1,23 @@
|
||||
"""
|
||||
This file demonstrates two different styles of tests (one doctest and one
|
||||
unittest). These will both pass when you run "manage.py test".
|
||||
|
||||
Replace these with more appropriate tests for your application.
|
||||
"""
|
||||
|
||||
from django.test import TestCase
|
||||
|
||||
class SimpleTest(TestCase):
|
||||
def test_basic_addition(self):
|
||||
"""
|
||||
Tests that 1 + 1 always equals 2.
|
||||
"""
|
||||
self.failUnlessEqual(1 + 1, 2)
|
||||
|
||||
__test__ = {"doctest": """
|
||||
Another way to test that 1 + 1 is equal to 2.
|
||||
|
||||
>>> 1 + 1 == 2
|
||||
True
|
||||
"""}
|
||||
|
||||
18
app/groups/urls.py
Normal file
18
app/groups/urls.py
Normal file
@@ -0,0 +1,18 @@
|
||||
from django.conf.urls.defaults import *
|
||||
from django.core.urlresolvers import reverse
|
||||
from groups import views
|
||||
|
||||
urlpatterns = patterns('',
|
||||
(r'^list/$', views.group_list),
|
||||
(r'^request/(?P<groupid>\d+)/$', views.create_request),
|
||||
(r'^kick/(?P<groupid>\d+)/(?P<userid>\d+)/$', views.kick_member),
|
||||
(r'^promote/(?P<groupid>\d+)/(?P<userid>\d+)/$', views.promote_member),
|
||||
|
||||
(r'^admin/(?P<groupid>\d+)/$', views.admin_group),
|
||||
(r'^accept/(?P<requestid>\d+)/$', views.accept_request),
|
||||
(r'^reject/(?P<requestid>\d+)/$', views.reject_request),
|
||||
)
|
||||
|
||||
urlpatterns += patterns('django.views.generic.simple',
|
||||
('^$', 'redirect_to', {'url': reverse('groups.views.group_list')}),
|
||||
)
|
||||
180
app/groups/views.py
Normal file
180
app/groups/views.py
Normal file
@@ -0,0 +1,180 @@
|
||||
from django.db.models import Q
|
||||
from django.http import HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, get_object_or_404
|
||||
from django.template import RequestContext
|
||||
from django.core.urlresolvers import reverse
|
||||
|
||||
from django.contrib import messages
|
||||
from django.contrib.auth.models import Group, User
|
||||
from django.contrib.auth.decorators import login_required
|
||||
|
||||
from groups.models import GroupInformation, GroupRequest
|
||||
from groups.app_defines import *
|
||||
from groups.forms import GroupRequestForm
|
||||
|
||||
from sso.tasks import update_user_access
|
||||
|
||||
|
||||
@login_required
|
||||
def group_list(request):
|
||||
""" View all groups, for users only public ones """
|
||||
|
||||
if request.user.is_superuser:
|
||||
groups = Group.objects.select_related('groupinformation').all()
|
||||
else:
|
||||
groups = Group.objects.select_related('groupinformation').filter(Q(groupinformation__type=GROUP_TYPE_PERMISSION) |
|
||||
Q(groupinformation__public=True) |
|
||||
Q(groupinformation__admins__in=[request.user]) |
|
||||
Q(user__in=[request.user]))
|
||||
|
||||
# Process the query into a list of tuples including status
|
||||
group_list = []
|
||||
for group in set(groups):
|
||||
|
||||
if not group.groupinformation:
|
||||
g, c = GroupInformation.objects.get_or_create(group=group)
|
||||
|
||||
if group.groupinformation and request.user in group.groupinformation.admins.all():
|
||||
status = "Admin"
|
||||
elif request.user in group.user_set.all():
|
||||
status = "Member"
|
||||
else:
|
||||
status = None
|
||||
|
||||
requestable = False
|
||||
if group.groupinformation and group.groupinformation.requestable and not group.groupinformation.type == GROUP_TYPE_MANAGED:
|
||||
if not group.groupinformation.parent or group.groupinformation.parent in request.user.groups.all():
|
||||
requestable = True
|
||||
|
||||
fixed = not group.groupinformation.type == GROUP_TYPE_PERMISSION
|
||||
pending = group.requests.filter(status=REQUEST_PENDING,user=request.user).count()
|
||||
|
||||
group_list.append((group.id, group.name, group.groupinformation.description, status, requestable, fixed, pending))
|
||||
|
||||
group_list = sorted(group_list, key=lambda name: name[1].lower())
|
||||
|
||||
return render_to_response('groups/group_list.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def create_request(request, groupid):
|
||||
|
||||
group = get_object_or_404(Group, id=groupid)
|
||||
|
||||
if not group.groupinformation.requestable and not request.user in group.user_set.all():
|
||||
return HttpResponseRedirect(reverse('groups.views.group_list'))
|
||||
|
||||
if group.requests.filter(status=REQUEST_PENDING,user=request.user).count():
|
||||
messages.add_message(request, messages.INFO, "You already have a pending request for %s" % group.name)
|
||||
return HttpResponseRedirect(reverse('groups.views.group_list'))
|
||||
|
||||
if request.method == 'POST':
|
||||
form = GroupRequestForm(request.POST)
|
||||
if form.is_valid():
|
||||
obj = form.save(commit=False)
|
||||
obj.user = request.user
|
||||
obj.group = group
|
||||
obj.changed_by = request.user
|
||||
obj.save()
|
||||
messages.add_message(request, messages.INFO, "You membership request has been created.")
|
||||
return HttpResponseRedirect(reverse('groups.views.group_list')) # Redirect after POST
|
||||
else:
|
||||
form = GroupRequestForm() # An unbound form
|
||||
|
||||
return render_to_response('groups/create_request.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
|
||||
@login_required
|
||||
def accept_request(request, requestid):
|
||||
|
||||
requestobj = get_object_or_404(GroupRequest, id=requestid)
|
||||
|
||||
if request.user in requestobj.group.groupinformation.admins.all() or request.user.is_superuser:
|
||||
requestobj.status = REQUEST_ACCEPTED
|
||||
requestobj.user.groups.add(requestobj.group)
|
||||
requestobj.changed_by = request.user
|
||||
requestobj.save()
|
||||
update_user_access.delay(requestobj.user.id)
|
||||
messages.add_message(request, messages.INFO, "%s has been accepted into %s" % (requestobj.user, requestobj.group))
|
||||
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[requestobj.group.id]))
|
||||
|
||||
|
||||
@login_required
|
||||
def reject_request(request, requestid):
|
||||
|
||||
requestobj = get_object_or_404(GroupRequest, id=requestid)
|
||||
if request.user in requestobj.group.groupinformation.admins.all() or request.user.is_superuser:
|
||||
requestobj.status = REQUEST_REJECTED
|
||||
requestobj.changed_by = request.user
|
||||
requestobj.save()
|
||||
messages.add_message(request, messages.INFO, "%s has been rejected for %s" % (requestobj.user, requestobj.group))
|
||||
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[requestobj.group.id]))
|
||||
|
||||
|
||||
@login_required
|
||||
def admin_group(request, groupid):
|
||||
|
||||
group = get_object_or_404(Group, id=groupid)
|
||||
if group.groupinformation and request.user in group.groupinformation.admins.all() or request.user.is_superuser:
|
||||
|
||||
member_list = []
|
||||
for member in set(group.user_set.all()):
|
||||
if group.groupinformation and member in group.groupinformation.admins.all():
|
||||
status = "Admin"
|
||||
else:
|
||||
status = "Member"
|
||||
|
||||
chars = []
|
||||
for acc in member.eveaccount_set.all():
|
||||
chars.extend(acc.characters.all().values_list('name', flat=True))
|
||||
|
||||
member_list.append((member, ', '.join(chars), status))
|
||||
|
||||
requests = group.requests.filter(status=REQUEST_PENDING)
|
||||
return render_to_response('groups/group_admin.html', locals(), context_instance=RequestContext(request))
|
||||
|
||||
return HttpResponseRedirect(reverse('groups.views.group_list'))
|
||||
|
||||
|
||||
@login_required
|
||||
def promote_member(request, groupid, userid):
|
||||
|
||||
if request.user.is_superuser:
|
||||
|
||||
user = get_object_or_404(User, id=userid)
|
||||
group = get_object_or_404(Group, id=groupid)
|
||||
|
||||
if not user in group.groupinformation.admins.all():
|
||||
group.groupinformation.admins.add(user)
|
||||
messages.add_message(request, messages.INFO, "%s is now a admin of %s" % (user.username, group.name))
|
||||
else:
|
||||
group.groupinformation.admins.remove(user)
|
||||
messages.add_message(request, messages.INFO, "%s is no longer a admin of %s" % (user.username, group.name))
|
||||
|
||||
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[groupid]))
|
||||
|
||||
|
||||
@login_required
|
||||
def kick_member(request, groupid, userid):
|
||||
|
||||
group = get_object_or_404(Group, id=groupid)
|
||||
user = get_object_or_404(User, id=userid)
|
||||
|
||||
if user == request.user:
|
||||
if user in group.groupinformation.admins.all():
|
||||
group.groupinformation.admins.remove(user)
|
||||
user.groups.remove(group)
|
||||
update_user_access.delay(user.id)
|
||||
messages.add_message(request, messages.INFO, "You have left the group %s" % group.name)
|
||||
|
||||
elif request.user in group.groupinformation.admins.all() or request.user.is_superuser:
|
||||
if not user in group.groupinformation.admins.all():
|
||||
user.groups.remove(group)
|
||||
update_user_access.delay(user.id)
|
||||
messages.add_message(request, messages.INFO, "%s has been removed from %s." % (user.username, group.name))
|
||||
else:
|
||||
messages.add_message(request, messages.INFO, "%s is a admin of %s and cannot be removed." % (user.username, group.name))
|
||||
|
||||
return HttpResponseRedirect(reverse('groups.views.admin_group', args=[groupid]))
|
||||
|
||||
return HttpResponseRedirect(reverse('groups.views.group_list'))
|
||||
0
app/hr/__init__.py
Normal file
0
app/hr/__init__.py
Normal file
43
app/hr/admin.py
Normal file
43
app/hr/admin.py
Normal file
@@ -0,0 +1,43 @@
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.models import User
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
from hr.models import Application, Recommendation, Audit, Blacklist, BlacklistSource
|
||||
|
||||
class ApplicationAdmin(admin.ModelAdmin):
|
||||
list_display = ('user', 'character', 'corporation', 'status', 'application_date', 'recommendations')
|
||||
search_fields = ['user', 'character', 'status']
|
||||
list_filter = ('status',)
|
||||
|
||||
def recommendations(self, obj):
|
||||
return obj.recommendation_set.all().count()
|
||||
|
||||
recommendations.short_description = '# of Recommendations'
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
obj.save(user=request.user)
|
||||
|
||||
admin.site.register(Application, ApplicationAdmin)
|
||||
|
||||
class RecommendationAdmin(admin.ModelAdmin):
|
||||
list_display = ('user', 'user_character', 'application', 'recommendation_date', 'is_valid')
|
||||
search_fields = ['user_character']
|
||||
|
||||
admin.site.register(Recommendation, RecommendationAdmin)
|
||||
|
||||
class AuditAdmin(admin.ModelAdmin):
|
||||
list_display = ('application', 'event', 'date')
|
||||
list_filter = ('event',)
|
||||
|
||||
admin.site.register(Audit, AuditAdmin)
|
||||
|
||||
class BlacklistAdmin(admin.ModelAdmin):
|
||||
list_display = ('type', 'value', 'source', 'created_date', 'created_by')
|
||||
list_filter = ('source', 'type')
|
||||
search_fields = ('value',)
|
||||
|
||||
admin.site.register(Blacklist, BlacklistAdmin)
|
||||
|
||||
class BlacklistSourceAdmin(admin.ModelAdmin):
|
||||
list_display = ('id', 'name')
|
||||
|
||||
admin.site.register(BlacklistSource, BlacklistSourceAdmin)
|
||||
65
app/hr/app_defines.py
Normal file
65
app/hr/app_defines.py
Normal file
@@ -0,0 +1,65 @@
|
||||
# Permission Levels
|
||||
HR_NONE = 0
|
||||
HR_VIEWONLY = 1
|
||||
HR_ADMIN = 2
|
||||
|
||||
# Application Status Codes
|
||||
APPLICATION_STATUS_NOTSUBMITTED = 0
|
||||
APPLICATION_STATUS_AWAITINGREVIEW = 1
|
||||
APPLICATION_STATUS_REJECTED = 2
|
||||
APPLICATION_STATUS_ACCEPTED = 3
|
||||
APPLICATION_STATUS_QUERY = 4
|
||||
APPLICATION_STATUS_COMPLETED = 5
|
||||
APPLICATION_STATUS_FLAGGED = 6
|
||||
|
||||
APPLICATION_STATUS_CHOICES = (
|
||||
(APPLICATION_STATUS_NOTSUBMITTED, 'Not Submitted'),
|
||||
(APPLICATION_STATUS_AWAITINGREVIEW, 'Submitted'),
|
||||
(APPLICATION_STATUS_REJECTED, 'Rejected'),
|
||||
(APPLICATION_STATUS_ACCEPTED, 'Accepted'),
|
||||
(APPLICATION_STATUS_QUERY, 'In Query'),
|
||||
(APPLICATION_STATUS_COMPLETED, 'Completed'),
|
||||
(APPLICATION_STATUS_FLAGGED, 'Flagged For Review'),
|
||||
)
|
||||
|
||||
# Audit Event Type Codes
|
||||
AUDIT_EVENT_STATUSCHANGE = 0
|
||||
AUDIT_EVENT_NOTE = 1
|
||||
AUDIT_EVENT_REJECTION = 2
|
||||
AUDIT_EVENT_ACCEPTED = 3
|
||||
AUDIT_EVENT_MESSAGE = 4
|
||||
|
||||
AUDIT_EVENT_CHOICES = (
|
||||
(AUDIT_EVENT_STATUSCHANGE, 'Status Change'),
|
||||
(AUDIT_EVENT_NOTE, 'Staff Note'),
|
||||
(AUDIT_EVENT_REJECTION, 'Rejection Reason'),
|
||||
(AUDIT_EVENT_ACCEPTED, 'Accepted'),
|
||||
(AUDIT_EVENT_MESSAGE, 'Message'),
|
||||
)
|
||||
|
||||
# Blacklist Type Codes
|
||||
BLACKLIST_TYPE_REDDIT = 0
|
||||
BLACKLIST_TYPE_CHARACTER = 1
|
||||
BLACKLIST_TYPE_CORPORATION = 2
|
||||
BLACKLIST_TYPE_ALLIANCE = 3
|
||||
BLACKLIST_TYPE_EMAIL = 4
|
||||
BLACKLIST_TYPE_AUTH = 5
|
||||
BLACKLIST_TYPE_APIUSERID = 6
|
||||
|
||||
BLACKLIST_TYPE_CHOICES = (
|
||||
(BLACKLIST_TYPE_REDDIT, 'Reddit Account'),
|
||||
(BLACKLIST_TYPE_CHARACTER, 'Character'),
|
||||
(BLACKLIST_TYPE_CORPORATION, 'Corporation'),
|
||||
(BLACKLIST_TYPE_ALLIANCE, 'Alliance'),
|
||||
(BLACKLIST_TYPE_EMAIL, 'Email Address'),
|
||||
(BLACKLIST_TYPE_AUTH, 'Auth Account'),
|
||||
(BLACKLIST_TYPE_APIUSERID, 'EVE API User ID'),
|
||||
)
|
||||
|
||||
BLACKLIST_SOURCE_INTERNAL = 0
|
||||
BLACKLIST_SOURCE_EXTERNAL = 1
|
||||
|
||||
BLACKLIST_SOURCE_CHOICES = (
|
||||
(BLACKLIST_SOURCE_INTERNAL, 'Internal'),
|
||||
(BLACKLIST_SOURCE_EXTERNAL, 'External'),
|
||||
)
|
||||
49
app/hr/forms.py
Normal file
49
app/hr/forms.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from django import forms
|
||||
from django.conf import settings
|
||||
|
||||
from hr.app_defines import *
|
||||
from hr.models import Application, Audit
|
||||
from eve_api.models import EVEPlayerCharacter, EVEPlayerCorporation
|
||||
|
||||
def CreateRecommendationForm(user):
|
||||
""" Generate a Recommendation form based on the user's permissions """
|
||||
|
||||
characters = EVEPlayerCharacter.objects.filter(eveaccount__user=user)
|
||||
applications = Application.objects.filter(status=APPLICATION_STATUS_NOTSUBMITTED)
|
||||
|
||||
class RecommendationForm(forms.Form):
|
||||
""" Service Account Form """
|
||||
|
||||
character = forms.ModelChoiceField(queryset=characters, required=True, empty_label=None)
|
||||
application = forms.ModelChoiceField(queryset=applications, required=True, empty_label=None)
|
||||
|
||||
return RecommendationForm
|
||||
|
||||
|
||||
def CreateApplicationForm(user):
|
||||
""" Generate a Application form based on the user's permissions """
|
||||
|
||||
characters = EVEPlayerCharacter.objects.filter(eveaccount__user=user)
|
||||
corporations = EVEPlayerCorporation.objects.filter(applications=True)
|
||||
|
||||
class ApplicationForm(forms.Form):
|
||||
character = forms.ModelChoiceField(queryset=characters, required=True, empty_label=None)
|
||||
corporation = forms.ModelChoiceField(queryset=corporations, required=True, empty_label=None)
|
||||
|
||||
def clean_character(self):
|
||||
|
||||
if not 'character' in self.cleaned_data or not self.cleaned_data['character']:
|
||||
raise forms.ValidationError("Please select a character to apply with")
|
||||
|
||||
if Application.objects.filter(character=self.cleaned_data['character']).exclude(status__in=[APPLICATION_STATUS_COMPLETED, APPLICATION_STATUS_REJECTED]).count():
|
||||
raise forms.ValidationError("This character already has a open application")
|
||||
|
||||
return self.cleaned_data['character']
|
||||
|
||||
return ApplicationForm
|
||||
|
||||
class NoteForm(forms.ModelForm):
|
||||
|
||||
class Meta:
|
||||
model = Audit
|
||||
exclude = ('application', 'user', 'event')
|
||||
194
app/hr/migrations/0001_initial.py
Normal file
194
app/hr/migrations/0001_initial.py
Normal file
@@ -0,0 +1,194 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'Application'
|
||||
db.create_table('hr_application', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
|
||||
('character', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerCharacter'])),
|
||||
('corporation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerCorporation'])),
|
||||
('status', self.gf('django.db.models.fields.IntegerField')(default=0)),
|
||||
))
|
||||
db.send_create_signal('hr', ['Application'])
|
||||
|
||||
# Adding model 'Recommendation'
|
||||
db.create_table('hr_recommendation', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
|
||||
('user_character', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['eve_api.EVEPlayerCharacter'])),
|
||||
('application', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['hr.Application'])),
|
||||
))
|
||||
db.send_create_signal('hr', ['Recommendation'])
|
||||
|
||||
# Adding model 'Audit'
|
||||
db.create_table('hr_audit', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('application', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['hr.Application'])),
|
||||
('user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], blank=True)),
|
||||
('event', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('text', self.gf('django.db.models.fields.TextField')()),
|
||||
('date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
))
|
||||
db.send_create_signal('hr', ['Audit'])
|
||||
|
||||
# Adding model 'Blacklist'
|
||||
db.create_table('hr_blacklist', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('type', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('value', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('reason', self.gf('django.db.models.fields.TextField')()),
|
||||
('created_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
|
||||
('created_by', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'])),
|
||||
))
|
||||
db.send_create_signal('hr', ['Blacklist'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'Application'
|
||||
db.delete_table('hr_application')
|
||||
|
||||
# Deleting model 'Recommendation'
|
||||
db.delete_table('hr_recommendation')
|
||||
|
||||
# Deleting model 'Audit'
|
||||
db.delete_table('hr_audit')
|
||||
|
||||
# Deleting model 'Blacklist'
|
||||
db.delete_table('hr_blacklist')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director_update': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'hr.application': {
|
||||
'Meta': {'object_name': 'Application'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'hr.audit': {
|
||||
'Meta': {'object_name': 'Audit'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'event': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'text': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'blank': 'True'})
|
||||
},
|
||||
'hr.blacklist': {
|
||||
'Meta': {'object_name': 'Blacklist'},
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.recommendation': {
|
||||
'Meta': {'object_name': 'Recommendation'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'user_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['hr']
|
||||
148
app/hr/migrations/0002_auto__add_field_blacklist_expiry_date.py
Normal file
148
app/hr/migrations/0002_auto__add_field_blacklist_expiry_date.py
Normal file
@@ -0,0 +1,148 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'Blacklist.expiry_date'
|
||||
db.add_column('hr_blacklist', 'expiry_date', self.gf('django.db.models.fields.DateTimeField')(null=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'Blacklist.expiry_date'
|
||||
db.delete_column('hr_blacklist', 'expiry_date')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '80', 'unique': 'True'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'max_length': '30', 'unique': 'True'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director_update': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'hr.application': {
|
||||
'Meta': {'object_name': 'Application'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'hr.audit': {
|
||||
'Meta': {'object_name': 'Audit'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'event': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'text': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'blank': 'True'})
|
||||
},
|
||||
'hr.blacklist': {
|
||||
'Meta': {'object_name': 'Blacklist'},
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'expiry_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.recommendation': {
|
||||
'Meta': {'object_name': 'Recommendation'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'user_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['hr']
|
||||
157
app/hr/migrations/0003_auto__add_field_blacklist_source.py
Normal file
157
app/hr/migrations/0003_auto__add_field_blacklist_source.py
Normal file
@@ -0,0 +1,157 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'Blacklist.source'
|
||||
db.add_column('hr_blacklist', 'source', self.gf('django.db.models.fields.IntegerField')(default=0), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'Blacklist.source'
|
||||
db.delete_column('hr_blacklist', 'source')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'hr.application': {
|
||||
'Meta': {'object_name': 'Application'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'hr.audit': {
|
||||
'Meta': {'object_name': 'Audit'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'event': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'text': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'blank': 'True'})
|
||||
},
|
||||
'hr.blacklist': {
|
||||
'Meta': {'object_name': 'Blacklist'},
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'expiry_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'source': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.recommendation': {
|
||||
'Meta': {'object_name': 'Recommendation'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'user_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['hr']
|
||||
@@ -0,0 +1,182 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding model 'BlacklistSource'
|
||||
db.create_table('hr_blacklistsource', (
|
||||
('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
))
|
||||
db.send_create_signal('hr', ['BlacklistSource'])
|
||||
|
||||
# Renaming column for 'Blacklist.source' to match new field type.
|
||||
db.rename_column('hr_blacklist', 'source', 'source_id')
|
||||
# Changing field 'Blacklist.source'
|
||||
db.alter_column('hr_blacklist', 'source_id', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['hr.BlacklistSource']))
|
||||
|
||||
# Adding index on 'Blacklist', fields ['source']
|
||||
#db.create_index('hr_blacklist', ['source_id'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting model 'BlacklistSource'
|
||||
db.delete_table('hr_blacklistsource')
|
||||
|
||||
# Renaming column for 'Blacklist.source' to match new field type.
|
||||
db.rename_column('hr_blacklist', 'source_id', 'source')
|
||||
# Changing field 'Blacklist.source'
|
||||
db.alter_column('hr_blacklist', 'source', self.gf('django.db.models.fields.IntegerField')())
|
||||
|
||||
# Removing index on 'Blacklist', fields ['source']
|
||||
db.delete_index('hr_blacklist', ['source_id'])
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'hr.application': {
|
||||
'Meta': {'object_name': 'Application'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'hr.audit': {
|
||||
'Meta': {'object_name': 'Audit'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'event': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'text': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'blank': 'True'})
|
||||
},
|
||||
'hr.blacklist': {
|
||||
'Meta': {'object_name': 'Blacklist'},
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'expiry_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.BlacklistSource']"}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.blacklistsource': {
|
||||
'Meta': {'object_name': 'BlacklistSource'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.recommendation': {
|
||||
'Meta': {'object_name': 'Recommendation'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'user_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['hr']
|
||||
158
app/hr/migrations/0005_create_blacklist_sources.py
Normal file
158
app/hr/migrations/0005_create_blacklist_sources.py
Normal file
@@ -0,0 +1,158 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import DataMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(DataMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
orm.BlacklistSource(id=0, name="TEST Blacklist").save()
|
||||
orm.BlacklistSource(id=1, name="External Blacklist").save()
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
pass
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'hr.application': {
|
||||
'Meta': {'object_name': 'Application'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'hr.audit': {
|
||||
'Meta': {'object_name': 'Audit'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'event': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'text': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'blank': 'True'})
|
||||
},
|
||||
'hr.blacklist': {
|
||||
'Meta': {'object_name': 'Blacklist'},
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'expiry_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.BlacklistSource']"}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.blacklistsource': {
|
||||
'Meta': {'object_name': 'BlacklistSource'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.recommendation': {
|
||||
'Meta': {'object_name': 'Recommendation'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'user_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['hr']
|
||||
163
app/hr/migrations/0006_auto__add_field_blacklistsource_ticker.py
Normal file
163
app/hr/migrations/0006_auto__add_field_blacklistsource_ticker.py
Normal file
@@ -0,0 +1,163 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'BlacklistSource.ticker'
|
||||
db.add_column('hr_blacklistsource', 'ticker', self.gf('django.db.models.fields.CharField')(default='DFLT', max_length=255), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'BlacklistSource.ticker'
|
||||
db.delete_column('hr_blacklistsource', 'ticker')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'blank': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False', 'blank': 'True'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'hr.application': {
|
||||
'Meta': {'object_name': 'Application'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'hr.audit': {
|
||||
'Meta': {'object_name': 'Audit'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'event': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'text': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'blank': 'True'})
|
||||
},
|
||||
'hr.blacklist': {
|
||||
'Meta': {'object_name': 'Blacklist'},
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'expiry_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.BlacklistSource']"}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.blacklistsource': {
|
||||
'Meta': {'object_name': 'BlacklistSource'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.recommendation': {
|
||||
'Meta': {'object_name': 'Recommendation'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'user_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['hr']
|
||||
@@ -0,0 +1,194 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
|
||||
# Adding field 'Recommendation.recommendation_date'
|
||||
db.add_column('hr_recommendation', 'recommendation_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.date(2011, 1, 4), blank=True), keep_default=False)
|
||||
|
||||
# Adding field 'Application.application_date'
|
||||
db.add_column('hr_application', 'application_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, default=datetime.date(2001, 1, 1), blank=True), keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
|
||||
# Deleting field 'Recommendation.recommendation_date'
|
||||
db.delete_column('hr_recommendation', 'recommendation_date')
|
||||
|
||||
# Deleting field 'Application.application_date'
|
||||
db.delete_column('hr_application', 'application_date')
|
||||
|
||||
|
||||
models = {
|
||||
'auth.group': {
|
||||
'Meta': {'object_name': 'Group'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}),
|
||||
'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'})
|
||||
},
|
||||
'auth.permission': {
|
||||
'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'},
|
||||
'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
|
||||
},
|
||||
'auth.user': {
|
||||
'Meta': {'object_name': 'User'},
|
||||
'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
|
||||
'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
|
||||
'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
|
||||
'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
|
||||
'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}),
|
||||
'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'})
|
||||
},
|
||||
'contenttypes.contenttype': {
|
||||
'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'})
|
||||
},
|
||||
'eve_api.eveplayeralliance': {
|
||||
'Meta': {'ordering': "['date_founded']", 'object_name': 'EVEPlayerAlliance'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'date_founded': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'executor': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacter': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacter'},
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_charisma': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_intelligence': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_memory': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_perception': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'attrib_willpower': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'balance': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']", 'null': 'True', 'blank': 'True'}),
|
||||
'corporation_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'current_location_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'director': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'gender': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'last_login': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'last_logoff': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
|
||||
'race': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'roles': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['eve_api.EVEPlayerCharacterRole']", 'null': 'True', 'blank': 'True'}),
|
||||
'security_status': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'skills': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['eve_api.EVESkill']", 'through': "orm['eve_api.EVEPlayerCharacterSkill']", 'symmetrical': 'False'}),
|
||||
'total_sp': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveplayercharacterrole': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterRole'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'roleid': ('django.db.models.fields.CharField', [], {'max_length': '64'})
|
||||
},
|
||||
'eve_api.eveplayercharacterskill': {
|
||||
'Meta': {'object_name': 'EVEPlayerCharacterSkill'},
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'level': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'skill': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkill']"}),
|
||||
'skillpoints': ('django.db.models.fields.IntegerField', [], {'default': '0'})
|
||||
},
|
||||
'eve_api.eveplayercorporation': {
|
||||
'Meta': {'object_name': 'EVEPlayerCorporation'},
|
||||
'alliance': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerAlliance']", 'null': 'True', 'blank': 'True'}),
|
||||
'alliance_join_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'api_last_updated': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'applications': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'ceo_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']", 'null': 'True', 'blank': 'True'}),
|
||||
'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'logo_color1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_color3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_graphic_id': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape1': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape2': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'logo_shape3': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'member_count': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'shares': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'tax_rate': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}),
|
||||
'url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskill': {
|
||||
'Meta': {'object_name': 'EVESkill'},
|
||||
'description': ('django.db.models.fields.TextField', [], {'blank': 'True'}),
|
||||
'group': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVESkillGroup']", 'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'eve_api.eveskillgroup': {
|
||||
'Meta': {'object_name': 'EVESkillGroup'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'})
|
||||
},
|
||||
'hr.application': {
|
||||
'Meta': {'object_name': 'Application'},
|
||||
'application_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"}),
|
||||
'corporation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCorporation']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'status': ('django.db.models.fields.IntegerField', [], {'default': '0'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"})
|
||||
},
|
||||
'hr.audit': {
|
||||
'Meta': {'object_name': 'Audit'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'event': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'text': ('django.db.models.fields.TextField', [], {}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'blank': 'True'})
|
||||
},
|
||||
'hr.blacklist': {
|
||||
'Meta': {'object_name': 'Blacklist'},
|
||||
'created_by': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'created_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'expiry_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True'}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'reason': ('django.db.models.fields.TextField', [], {}),
|
||||
'source': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.BlacklistSource']"}),
|
||||
'type': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'value': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.blacklistsource': {
|
||||
'Meta': {'object_name': 'BlacklistSource'},
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'ticker': ('django.db.models.fields.CharField', [], {'max_length': '255'})
|
||||
},
|
||||
'hr.recommendation': {
|
||||
'Meta': {'object_name': 'Recommendation'},
|
||||
'application': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['hr.Application']"}),
|
||||
'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'recommendation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
|
||||
'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']"}),
|
||||
'user_character': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['eve_api.EVEPlayerCharacter']"})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['hr']
|
||||
0
app/hr/migrations/__init__.py
Normal file
0
app/hr/migrations/__init__.py
Normal file
155
app/hr/models.py
Normal file
155
app/hr/models.py
Normal file
@@ -0,0 +1,155 @@
|
||||
from datetime import datetime
|
||||
from django.conf import settings
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from eve_api.models import EVEPlayerCharacter, EVEPlayerCorporation
|
||||
from eve_api.app_defines import *
|
||||
from hr.app_defines import *
|
||||
|
||||
class Application(models.Model):
|
||||
""" Person's application to a corporation """
|
||||
|
||||
user = models.ForeignKey(User, blank=False, verbose_name="User")
|
||||
character = models.ForeignKey(EVEPlayerCharacter, blank=False,
|
||||
verbose_name="Character")
|
||||
corporation = models.ForeignKey(EVEPlayerCorporation, blank=False,
|
||||
verbose_name="Applying to Corporation")
|
||||
status = models.IntegerField(choices=APPLICATION_STATUS_CHOICES,
|
||||
default=APPLICATION_STATUS_NOTSUBMITTED,
|
||||
verbose_name="Status",
|
||||
help_text="Current status of this application request.")
|
||||
application_date = models.DateTimeField(auto_now_add=True, verbose_name="Created Date")
|
||||
|
||||
@models.permalink
|
||||
def get_absolute_url(self):
|
||||
return ('hr.views.view_application', [self.id])
|
||||
|
||||
@property
|
||||
def blacklisted(self):
|
||||
from hr.utils import blacklist_values
|
||||
if len(self.blacklist_values) > 0:
|
||||
return True
|
||||
return False
|
||||
|
||||
@property
|
||||
def blacklist_values(self):
|
||||
from hr.utils import blacklist_values
|
||||
return blacklist_values(self.user)
|
||||
|
||||
@property
|
||||
def last_action(self):
|
||||
if self.audit_set.count():
|
||||
return self.audit_set.all().order_by('-date')[0]
|
||||
return None
|
||||
|
||||
@property
|
||||
def alt_application(self):
|
||||
if EVEPlayerCharacter.objects.filter(corporation=self.corporation, eveaccount__user=self.user).count() > 0:
|
||||
return True
|
||||
return False
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
|
||||
user = None
|
||||
if 'user' in kwargs:
|
||||
user = kwargs['user']
|
||||
del kwargs['user']
|
||||
|
||||
try:
|
||||
old_instance = Application.objects.get(id=self.id)
|
||||
if not (old_instance.status == int(self.status)):
|
||||
event = Audit(application=self)
|
||||
event.user = user
|
||||
event.event = AUDIT_EVENT_STATUSCHANGE
|
||||
|
||||
# Save the application so we can get a up to date status
|
||||
super(Application, self).save(*args, **kwargs)
|
||||
new_instance = Application.objects.get(id=self.id)
|
||||
|
||||
event.text = "Status changed from %s to %s" % (old_instance.get_status_display(), new_instance.get_status_display())
|
||||
event.save()
|
||||
except:
|
||||
pass
|
||||
|
||||
super(Application, self).save(*args, **kwargs)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.character.name
|
||||
|
||||
class Meta:
|
||||
permissions = (
|
||||
("can_accept", "Can accept / reject applications"),
|
||||
("can_view_all", "Can view all applications"),
|
||||
("can_view_corp", "Can view corp applications"),
|
||||
)
|
||||
|
||||
class Recommendation(models.Model):
|
||||
""" User recommendation for a application """
|
||||
|
||||
user = models.ForeignKey(User, blank=False, verbose_name="User")
|
||||
user_character = models.ForeignKey(EVEPlayerCharacter, blank=False, verbose_name="Recommender")
|
||||
application = models.ForeignKey(Application, blank=False, verbose_name="Recommended Application")
|
||||
recommendation_date = models.DateTimeField(auto_now_add=True, verbose_name="Recommendation Date")
|
||||
|
||||
@models.permalink
|
||||
def get_absolute_url(self):
|
||||
return ('hr.views.view_application', [self.application.id])
|
||||
|
||||
@property
|
||||
def is_valid(self):
|
||||
diff = self.recommendation_date - self.user_character.corporation_date
|
||||
if self.user_character.eveaccount_set.count() and self.user_character.eveaccount_set.all()[0].api_status == API_STATUS_OK and diff.days >= settings.HR_RECOMMENDATION_DAYS and self.user_character.corporation == self.application.corporation:
|
||||
return True
|
||||
return False
|
||||
|
||||
def __unicode__(self):
|
||||
return self.user_character.name
|
||||
|
||||
|
||||
class Audit(models.Model):
|
||||
""" Auditing information regarding a application """
|
||||
|
||||
application = models.ForeignKey(Application, blank=False, verbose_name="Application")
|
||||
user = models.ForeignKey(User, blank=True, verbose_name="User")
|
||||
event = models.IntegerField(choices=AUDIT_EVENT_CHOICES,
|
||||
verbose_name="Event Type",
|
||||
help_text="Type of audit event")
|
||||
text = models.TextField(blank=False, verbose_name="Event Text",
|
||||
help_text="Detailed event text")
|
||||
date = models.DateTimeField(auto_now_add=True, verbose_name="Event Date")
|
||||
|
||||
@models.permalink
|
||||
def get_absolute_url(self):
|
||||
return ('hr.views.view_application', [self.application.id])
|
||||
|
||||
def __unicode__(self):
|
||||
return u"(%s) %s: %s" % (self.get_event_display(), self.user, self.text)
|
||||
|
||||
|
||||
class BlacklistSource(models.Model):
|
||||
""" Blacklist Source """
|
||||
|
||||
name = models.CharField("Blacklist Source Name", max_length=255, blank=False)
|
||||
ticker = models.CharField("Blacklist Source Ticker", max_length=255, blank=False)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Blacklist(models.Model):
|
||||
""" Blacklisted entries, stops people who match the criteria from applying """
|
||||
|
||||
type = models.IntegerField(choices=BLACKLIST_TYPE_CHOICES,
|
||||
verbose_name="Blacklisted Type",
|
||||
help_text="Type of entity to be blacklisted")
|
||||
value = models.CharField("Blacklisted Value", max_length=255, blank=False)
|
||||
reason = models.TextField(blank=False, verbose_name="Reason",
|
||||
help_text="Reason that the entity was blacklisted")
|
||||
expiry_date = models.DateTimeField(verbose_name="Expiry Date", blank=False, null=True,
|
||||
help_text="Date to expire this entry")
|
||||
source = models.ForeignKey(BlacklistSource, blank=False, verbose_name="Source")
|
||||
created_date = models.DateTimeField(auto_now_add=True, verbose_name="Created Date")
|
||||
created_by = models.ForeignKey(User, blank=False, verbose_name="Created By")
|
||||
|
||||
def __unicode__(self):
|
||||
return u'%s: %s' % (self.get_type_display(), self.value)
|
||||
27
app/hr/tasks.py
Normal file
27
app/hr/tasks.py
Normal file
@@ -0,0 +1,27 @@
|
||||
from django.conf import settings
|
||||
import logging
|
||||
from datetime import datetime, timedelta
|
||||
from celery.decorators import task
|
||||
from hr.utils import blacklist_values
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.mail import send_mail
|
||||
|
||||
@task(ignore_result=True)
|
||||
def blacklist_check():
|
||||
log = blacklist_check.get_logger()
|
||||
|
||||
users = User.objects.filter(is_active=True)
|
||||
|
||||
for u in users:
|
||||
if u.groups.count() > 0:
|
||||
# Has groups
|
||||
val = blacklist_values(u)
|
||||
if len(val) > 0:
|
||||
# Report possible issue
|
||||
log.warning("Suspect User: %s, %s entries found: %s" % (u.username, len(val), val))
|
||||
|
||||
blstr = ""
|
||||
for i in val:
|
||||
blstr = "%s%s - %s - %s\n" % (blstr, i.get_type_display(), i.value, i.reason)
|
||||
msg = "Suspect User found: %s\nGroups: %s\nBlacklist Items:\n\n%s" % (u.username, u.groups.all(), blstr)
|
||||
send_mail('Automated blacklist checker alert - %s' % u.username, msg, 'blacklist@pleaseignore.com', ['abuse@pleaseignore.com'])
|
||||
14
app/hr/templates/hr/applications/accept.html
Normal file
14
app/hr/templates/hr/applications/accept.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Accept Application{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>Fill in a note you want to send to the user.</p>
|
||||
<form action="{% url hr.views.accept_application applicationid %}" method="post">
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
{% csrf_token %}
|
||||
</table>
|
||||
<input type="submit" value="Apply" />
|
||||
</form>
|
||||
{% endblock %}
|
||||
15
app/hr/templates/hr/applications/add.html
Normal file
15
app/hr/templates/hr/applications/add.html
Normal file
@@ -0,0 +1,15 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Create Application{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>Select the character you wish to apply with, then the corporation you wish to apply for.</p>
|
||||
|
||||
<form action="{% url hr.views.add_application %}" method="post">
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Apply" />
|
||||
</form>
|
||||
{% endblock %}
|
||||
13
app/hr/templates/hr/applications/add_message.html
Normal file
13
app/hr/templates/hr/applications/add_message.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Send Message to Applicant{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<form action="{% url hr.views.add_message applicationid %}" method="post">
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Apply" />
|
||||
</form>
|
||||
{% endblock %}
|
||||
13
app/hr/templates/hr/applications/add_note.html
Normal file
13
app/hr/templates/hr/applications/add_note.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Add Note to Application{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<form action="{% url hr.views.add_note applicationid %}" method="post">
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Apply" />
|
||||
</form>
|
||||
{% endblock %}
|
||||
35
app/hr/templates/hr/applications/admin/view_list.html
Normal file
35
app/hr/templates/hr/applications/admin/view_list.html
Normal file
@@ -0,0 +1,35 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Applications{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h3>Search All Applications</h3>
|
||||
<form method="GET" action="{% url hr.views.admin_applications %}">
|
||||
<input type="text" name="q" />
|
||||
<input type="submit" value="Search" />
|
||||
</form>
|
||||
|
||||
{% if apps %}
|
||||
<table>
|
||||
<tr><th><a href="{% url hr.views.admin_applications %}?o=id">Application ID</a></th>
|
||||
<th><a href="{% url hr.views.admin_applications %}?o=character">Character</a></th>
|
||||
<th><a href="{% url hr.views.admin_applications %}?o=corporation">Corporation</a></th>
|
||||
<th>Application Status</th>
|
||||
<th>Last Action Date</th>
|
||||
<th>Last Action User</th></tr>
|
||||
{% for app in apps %}
|
||||
<tr {% if app.alt_application %}id="alt-application"{% endif %}><td><a href="{% url hr.views.view_application app.id %}">{{ app.id }}</a></td>
|
||||
<td>{{ app.character }}</td>
|
||||
<td>{{ app.corporation }}</td>
|
||||
<td>{{ app.get_status_display }}</td>
|
||||
<td>{{ app.last_action.date }}</td>
|
||||
<td>{{ app.last_action.user }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% else %}
|
||||
<p>No applications found.</p>
|
||||
{% endif %}
|
||||
|
||||
{% endblock %}
|
||||
7
app/hr/templates/hr/applications/noadd.html
Normal file
7
app/hr/templates/hr/applications/noadd.html
Normal file
@@ -0,0 +1,7 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Create Application{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>Unfortunatly, no Corporations are accepting applications at the moment.</p>
|
||||
{% endblock %}
|
||||
14
app/hr/templates/hr/applications/reject.html
Normal file
14
app/hr/templates/hr/applications/reject.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Reject Application{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<p>Fill in the rejection reason below, please note, this will be sent out to the user.</p>
|
||||
<form action="{% url hr.views.reject_application applicationid %}" method="post">
|
||||
<table>
|
||||
{{ form.as_table }}
|
||||
</table>
|
||||
{% csrf_token %}
|
||||
<input type="submit" value="Apply" />
|
||||
</form>
|
||||
{% endblock %}
|
||||
173
app/hr/templates/hr/applications/view.html
Normal file
173
app/hr/templates/hr/applications/view.html
Normal file
@@ -0,0 +1,173 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% load humanize %}
|
||||
{% load if_extra %}
|
||||
{% load installed %}
|
||||
|
||||
{% block title %}View Application{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h3>Application Details</h3>
|
||||
|
||||
<ul>
|
||||
<li>Applying Auth User: <a href="{% url sso.views.user_view app.user %}">{{ app.user }}</a></li>
|
||||
<li>Applying Character: <a href="{% url eve_api.views.eveapi_character app.character.id %}">{{ app.character }}</a></li>
|
||||
<li>Applying To: <a href="{% url eve_api.views.eveapi_corporation app.corporation.id %}">{{ app.corporation }}</a></li>
|
||||
<li>Application Status: <b>{{ app.get_status_display }}</b></li>
|
||||
<li>Blacklist Status: <b>{% if app.blacklisted %}<font color='red'>BLACKLISTED</font>{% else %}<font color='geen'>OK</font>{% endif %}</b></li>
|
||||
</ul>
|
||||
|
||||
{% ifnotequal app.status 5 %}
|
||||
<h3>Actions</h3>
|
||||
<div class="skill_controls">
|
||||
<p>
|
||||
{% if app.status < 1 %}
|
||||
<a href="{% url hr.views.update_application app.id 1 %}">Submit Application</a>
|
||||
{% else %}
|
||||
<a href="{% url hr.views.update_application app.id 0 %}">Withdraw Application</a>
|
||||
{% endif %}
|
||||
<a href="{% url hr.views.add_message app.id %}">Add Message</a>
|
||||
{% if hrstaff %}
|
||||
<a href="{% url hr.views.add_note app.id %}">Add Staff Note</a>
|
||||
{% if app.status < 2 or app.status = 4 or app.status = 6 %}
|
||||
{% if perms.hr.can_accept %}
|
||||
<a href="{% url hr.views.reject_application app.id %}">Reject Application</a>
|
||||
{% ifequal app.blacklisted 0 %}
|
||||
<a href="{% url hr.views.accept_application app.id %}">Accept Application</a>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
{% ifnotequal app.status 4 %}
|
||||
<a href="{% url hr.views.update_application app.id 4 %}">Mark as In Query</a>
|
||||
{% endifnotequal %}
|
||||
{% ifnotequal app.status 6 %}
|
||||
<a href="{% url hr.views.update_application app.id 6 %}">Flag for Review</a>
|
||||
{% endifnotequal %}
|
||||
{% endif %}
|
||||
{% ifequal app.status 3 %}
|
||||
<a href="{% url hr.views.update_application app.id 5 %}">Mark as Complete</a>
|
||||
{% endifequal %}
|
||||
{% endif %}
|
||||
</p>
|
||||
</div>
|
||||
{% endifnotequal %}
|
||||
|
||||
{% if audit %}
|
||||
<h3>Event Log</h3>
|
||||
<table width="100%">
|
||||
<tr><th width="50px">Event Type</th><th width="75px">User</th><th width="50px">Date</th><th>Event Details</th></tr>
|
||||
{% for a in audit %}
|
||||
<tr><td>{{ a.get_event_display }}</td><td>{{ a.user }}</td><td>{{ a.date|date:"Y/m/d H:i:s" }}</td><td>{{ a.text|linebreaks }}</td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% if app.blacklisted %}
|
||||
<h3>Blacklist Triggers</h3>
|
||||
<table>
|
||||
<tr><th>Blacklist Type</th><th>Blacklisted Value</th><th>Reason</th><th>Source</th></tr>
|
||||
{% for a in app.blacklist_values %}
|
||||
<tr><td>{{ a.get_type_display }}</td><td>{{ a.value }}</td><td>{{ a.reason }}</td><td>{{ a.source }}</td></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% if app.recommendation_set.all %}
|
||||
<h3>Recommendations</h3>
|
||||
<table>
|
||||
<tr><th>User</th><th>Character</th><th>Corporation</th><th>Valid Recommendation</th><th>Total User Recomendations</th></tr>
|
||||
{% for rec in app.recommendation_set.all %}
|
||||
<tr><td><a href="{% url sso.views.user_view rec.user %}">{{ rec.user }}</a></td>
|
||||
<td><a href="{% url eve_api.views.eveapi_character rec.user_character.id %}">{{ rec.user_character }}</a></td>
|
||||
<td><a href="http://evemaps.dotlan.net/corp/{{ rec.user_character.corporation.name }}">{{ rec.user_character.corporation }}</a></td>
|
||||
<td>{% if rec.is_valid %}<font color="green">Yes</font>{% else %}<font color="red">No</font>{% endif %}</td>
|
||||
<td>{{ rec.user.recommendation_set.all.count }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
|
||||
{% if hrstaff %}
|
||||
<h3>EVE Characters</h3>
|
||||
<table>
|
||||
<tr><th>Character</th><th>Corp / Alliance</th><th>ISK</th><th>SP</th><th>Links</th></tr>
|
||||
{% for acc in app.user.eveaccount_set.all %}
|
||||
{% for char in acc.characters.all %}
|
||||
<tr><td><a href="{% url eve_api.views.eveapi_character char.id %}">{{ char.name }}</a></td>
|
||||
<td><a href="http://evemaps.dotlan.net/corp/{{ char.corporation }}">{{ char.corporation }}</a>{% if char.corporation.alliance %} /
|
||||
<a href="http://evemaps.dotlan.net/alliance/{{ char.corporation.alliance }}">{{ char.corporation.alliance }}</a>{% endif %}
|
||||
</td>
|
||||
<td align="right">{{ char.balance|intcomma }} ISK</td>
|
||||
<td align="right">{{ char.total_sp|intcomma }} SP</td>
|
||||
<td>{% if request.is_igb %}<a href="javascript:CCPEVE.showInfo(1377, {{ char.id }})">Show In Eve</a> / {% endif %}<a href="https://gate.eveonline.com/Profile/{{ char.name }}/">EveGate Profile</a> / <a href="http://eve-search.com/search/author/{{ char.name }}">EveSearch</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% if "reddit"|installed %}
|
||||
{% if app.user.redditaccount_set.all %}
|
||||
<h3>Reddit Accounts</h3>
|
||||
<table>
|
||||
<tr><th>Account</th><th>Karma</th><th>Validated</th><th>Creation Date</th><th>Matches Criteria?</th></tr>
|
||||
{% for acc in app.user.redditaccount_set.all %}
|
||||
<tr><td><a href="http://reddit.com/user/{{ acc.username }}/">{{ acc.username }}</a></td>
|
||||
<td>{{ acc.link_karma }} / {{ acc.comment_karma }}</td>
|
||||
<td>{% if acc.validated %}Validated{%else %}<b>NOT VALIDATED</b>{% endif %}</td>
|
||||
<td>{{ acc.date_created }}</td>
|
||||
<td>{% if acc.is_valid %}<font color="green">Yes</font>{% else %}<font color="red">No</font>{% endif %}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
|
||||
<h3>Recent Reddit Posts</h3>
|
||||
|
||||
<span id="loadlink">
|
||||
<a href="javascript:redditposts()">Load recent Reddit posts</a>
|
||||
</span>
|
||||
|
||||
<script type="text/javascript">
|
||||
function createRequestObject() {
|
||||
var ro;
|
||||
var browser = navigator.appName;
|
||||
if(browser == "Microsoft Internet Explorer"){
|
||||
ro = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
}else{
|
||||
ro = new XMLHttpRequest();
|
||||
}
|
||||
return ro;
|
||||
}
|
||||
|
||||
var http = createRequestObject();
|
||||
|
||||
function redditposts(action) {
|
||||
http.open('get', '{% url hr.views.view_application app.id %}?redditxhr');
|
||||
http.onreadystatechange = handleResponse;
|
||||
http.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||
http.send(null);
|
||||
}
|
||||
|
||||
function handleResponse() {
|
||||
if(http.readyState == 4){
|
||||
var response = eval('(' + http.responseText + ')');
|
||||
var update = new Array();
|
||||
|
||||
document.getElementById('loadlink').style.display = 'none';
|
||||
|
||||
var out = '';
|
||||
for (var obj in response) {
|
||||
if (response[obj]['kind'] == 2) {
|
||||
var out = out + "<p><b><a href=\"http://reddit.com" + response[obj]['permalink'] + "\">" + response[obj]['title'] + "</a></b> - (/r/" + response[obj]['subreddit']+ ")</p>";
|
||||
} else {
|
||||
var out = out + "<p>" + response[obj]['body'] + "<br/><b>/r/" + response[obj]['subreddit'] + "</b> <a href=\"" + response[obj]['permalink'] + "\">Permalink</a></p>";
|
||||
}
|
||||
}
|
||||
document.getElementById('redditposts').innerHTML = out;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<div id="redditposts">
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user