Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions api/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.contrib import admin

# Register your models here.
2 changes: 0 additions & 2 deletions api/apps.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
from __future__ import unicode_literals

from django.apps import AppConfig


Expand Down
142 changes: 33 additions & 109 deletions api/migrations/0001_initial_squash.py → api/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,33 +1,11 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.2 on 2018-05-27 23:31
from __future__ import unicode_literals
# Generated by Django 2.0.6 on 2018-06-19 04:52

from django.db import migrations, models
import django.db.models.deletion


# Functions from the following migrations need manual copying.
# Move them and any dependencies into this file, then update the
# RunPython operations to refer to the local versions:
# api.migrations.0002_add_test_data

class Migration(migrations.Migration):

replaces = [
(b'api', '0001_initial'),
(b'api', '0002_add_test_data'),
(b'api', '0003_remove_server_public_secret'),
(b'api', '0004_characterhistory'),
(b'api', '0005_ginfocharacter'),
(b'api', '0006_clan'),
(b'api', 'add_clan_id'),
(b'api', '0001_server_ip_address'),
(b'api', '0002_clean_data_schema'),
(b'api', '0003_add_server_fields'),
(b'api', '0004_server_version'),
(b'api', '0005_make_location_nullable')
]

initial = True

dependencies = [
Expand All @@ -43,136 +21,82 @@ class Migration(migrations.Migration):
('is_online', models.BooleanField()),
('steam_id', models.TextField()),
('conan_id', models.TextField()),
('conan_clan_id', models.TextField(null=True)),
('last_online', models.DateTimeField(null=True)),
('last_killed_by', models.TextField(null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('x', models.FloatField()),
('y', models.FloatField()),
('z', models.FloatField()),
('x', models.FloatField(null=True)),
('y', models.FloatField(null=True)),
('z', models.FloatField(null=True)),
],
),
migrations.CreateModel(
name='Server',
name='CharacterHistory',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
('public_secret', models.UUIDField()),
('private_secret', models.UUIDField()),
('last_sync', models.DateTimeField(null=True)),
('created', models.DateTimeField(auto_now_add=True)),
('x', models.FloatField()),
('y', models.FloatField()),
('z', models.FloatField()),
('character', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='history', to='api.Character')),
],
),
migrations.AddField(
model_name='character',
name='server',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.Server'),
),
migrations.RemoveField(
model_name='server',
name='public_secret',
),
migrations.CreateModel(
name='CharacterHistory',
name='Clan',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
('conan_id', models.TextField()),
('conan_owner_id', models.TextField()),
('motd', models.TextField()),
('created', models.DateTimeField(auto_now_add=True)),
('x', models.FloatField()),
('y', models.FloatField()),
('z', models.FloatField()),
('character', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='history', to='api.Character')),
('owner', models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='owner', to='api.Character')),
],
),
migrations.CreateModel(
name='GinfoCharacter',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('ginfo_marker_uid', models.TextField()),
('character', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ginfo_character', related_query_name='ginfo_character', to='api.Character')),
('character', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='ginfo_character', related_query_name='ginfo_character', to='api.Character')),
],
),
migrations.CreateModel(
name='Clan',
name='Server',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.TextField()),
('conan_id', models.TextField()),
('conan_owner_id', models.TextField()),
('motd', models.TextField()),
('created', models.DateTimeField(auto_now_add=True)),
('server', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.Server')),
('ip_address', models.TextField(default='')),
('version', models.TextField(null=True)),
('query_port', models.TextField(null=True)),
('max_players', models.IntegerField(null=True)),
('tick_rate', models.IntegerField(null=True)),
('private_secret', models.UUIDField()),
('last_sync', models.DateTimeField(null=True)),
],
),
migrations.AddField(
model_name='character',
name='conan_clan_id',
field=models.TextField(null=True),
),
migrations.AlterField(
model_name='character',
name='server',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='characters', to='api.Server'),
),
migrations.AddField(
model_name='server',
name='ip_address',
field=models.TextField(default=b''),
),
migrations.CreateModel(
name='ServerSyncData',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('data', models.TextField()),
('created', models.DateTimeField(auto_now_add=True)),
('server', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='api.Server')),
('server', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='api.Server')),
],
),
migrations.AddField(
model_name='character',
name='clan',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='members', to='api.Clan'),
),
migrations.AddField(
model_name='clan',
name='owner',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='owner', to='api.Character'),
),
migrations.AlterField(
model_name='clan',
name='server',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='clans', to='api.Server'),
),
migrations.AddField(
model_name='server',
name='max_players',
field=models.IntegerField(null=True),
),
migrations.AddField(
model_name='server',
name='query_port',
field=models.TextField(null=True),
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='clans', to='api.Server'),
),
migrations.AddField(
model_name='server',
name='tick_rate',
field=models.IntegerField(null=True),
),
migrations.AddField(
model_name='server',
name='version',
field=models.TextField(null=True),
),
migrations.AlterField(
model_name='character',
name='x',
field=models.FloatField(null=True),
),
migrations.AlterField(
model_name='character',
name='y',
field=models.FloatField(null=True),
name='clan',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='members', to='api.Clan'),
),
migrations.AlterField(
migrations.AddField(
model_name='character',
name='z',
field=models.FloatField(null=True),
name='server',
field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='characters', to='api.Server'),
),
]
1 change: 0 additions & 1 deletion api/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# flake8: noqa
from .character import Character
from .characterhistory import CharacterHistory
from .server import Server
Expand Down
4 changes: 2 additions & 2 deletions api/models/character.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ class Character(models.Model):
last_online = models.DateTimeField(null=True)
last_killed_by = models.TextField(null=True)
created = models.DateTimeField(auto_now_add=True)
clan = models.ForeignKey('api.Clan', related_name='members', null=True)
server = models.ForeignKey('api.Server', related_name='characters')
clan = models.ForeignKey('api.Clan', related_name='members', null=True, on_delete=models.DO_NOTHING)
server = models.ForeignKey('api.Server', related_name='characters', on_delete=models.DO_NOTHING)
x = models.FloatField(null=True)
y = models.FloatField(null=True)
z = models.FloatField(null=True)
Expand Down
2 changes: 1 addition & 1 deletion api/models/characterhistory.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

class CharacterHistory(models.Model):
created = models.DateTimeField(auto_now_add=True)
character = models.ForeignKey('api.Character', related_name='history')
character = models.ForeignKey('api.Character', related_name='history', on_delete=models.DO_NOTHING)
x = models.FloatField()
y = models.FloatField()
z = models.FloatField()
2 changes: 1 addition & 1 deletion api/models/clan.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ class Clan(models.Model):
motd = models.TextField()
created = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey('api.Character', related_name='owner', null=True, on_delete=models.DO_NOTHING)
server = models.ForeignKey('api.Server', related_name='clans')
server = models.ForeignKey('api.Server', related_name='clans', on_delete=models.DO_NOTHING)

objects = ClanManager.as_manager()
2 changes: 1 addition & 1 deletion api/models/serversyncdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@


class ServerSyncData(models.Model):
server = models.ForeignKey('api.Server', related_name='+')
server = models.ForeignKey('api.Server', related_name='+', on_delete=models.DO_NOTHING)
data = models.TextField()
created = models.DateTimeField(auto_now_add=True)
2 changes: 1 addition & 1 deletion api/plugins/ginfo/firebase_pushid.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# https://gist.github.com/mikelehen/3596a30bd69384624c11
import random
import time
from exceptions import ValueError
#from exceptions import ValueError


"""
Expand Down
6 changes: 3 additions & 3 deletions api/plugins/ginfo/ginfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@

import requests

from firebase_pushid import PushID
from ginfocharacter import GinfoCharacter
from .firebase_pushid import PushID
from .ginfocharacter import GinfoCharacter


class GinfoPlugin(object):
Expand Down Expand Up @@ -116,7 +116,7 @@ def update_position(self, character, group, access_token):
json_data = response.json()
if "error" in json_data:
# TODO: Use proper logger
print "Error from Ginfo Firebase: " + json_data["error"]
print("Error from Ginfo Firebase: " + json_data["error"])
except:
pass

Expand Down
1 change: 1 addition & 0 deletions api/plugins/ginfo/ginfocharacter.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ class GinfoCharacter(models.Model):
Character,
related_name="ginfo_character",
related_query_name="ginfo_character",
on_delete=models.DO_NOTHING
)
ginfo_marker_uid = models.TextField()
4 changes: 2 additions & 2 deletions api/sync/serverdata.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,14 +139,14 @@ def sync_server_data(sync_data_id, request_get_params):
.first())

if sync_data is None:
print 'Dropping sync request because data is invalid'
print('Dropping sync request because data is invalid')
return

sync_data.delete()
server = sync_data.server

if server.last_sync and server.last_sync >= sync_data.created:
print "Dropping stale sync request"
print("Dropping stale sync request")
return

data = json.loads(sync_data.data)
Expand Down
3 changes: 3 additions & 0 deletions api/tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from django.test import TestCase

# Create your tests here.
24 changes: 12 additions & 12 deletions api/urls.py
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
from django.conf.urls import url
from django.urls import path

from .views import (CharacterHistoryView, CharactersView, CharacterView,
ClansView, ClanView, ServersView, ServerView,
SyncCharactersView, ClanCharactersView, ActiveClansView,
ServerInfoView)

urlpatterns = [
url(r'^$', ServersView.as_view()),
url(r'^widgets/serverinfo$', ServerInfoView.as_view()),
url(r'^(?P<server_id>\d+)$', ServerView.as_view()),
url(r'^(?P<server_id>\d+)/sync/characters$', SyncCharactersView.as_view()),
url(r'^(?P<server_id>\d+)/clans$', ClansView.as_view()),
url(r'^(?P<server_id>\d+)/clans/(?P<clan_id>\d+)$', ClanView.as_view()),
url(r'^(?P<server_id>\d+)/clans/(?P<clan_id>\d+)/characters$', ClanCharactersView.as_view()),
url(r'^(?P<server_id>\d+)/characters$', CharactersView.as_view()),
url(r'^(?P<server_id>\d+)/characters/(?P<character_id>\d+)$', CharacterView.as_view()),
url(r'^(?P<server_id>\d+)/characters/(?P<character_id>\d+)/history$', CharacterHistoryView.as_view()),
url(r'^(?P<server_id>\d+)/widgets/activeclans$', ActiveClansView.as_view()),
path(r'', ServersView.as_view()),
path(r'widgets/serverinfo/', ServerInfoView.as_view()),
path(r'<int:server_id>/', ServerView.as_view()),
path(r'<int:server_id>/sync/characters/', SyncCharactersView.as_view()),
path(r'<int:server_id>/clans/', ClansView.as_view()),
path(r'<int:server_id>/clans/<int:clan_id>/', ClanView.as_view()),
path(r'<int:server_id>/clans/<int:clan_id>/characters/', ClanCharactersView.as_view()),
path(r'<int:server_id>/characters/', CharactersView.as_view()),
path(r'<int:server_id>/characters/<int:character_id>/', CharacterView.as_view()),
path(r'<int:server_id>/characters/<int:character_id>/history/', CharacterHistoryView.as_view()),
path(r'<int:server_id>/widgets/activeclans/', ActiveClansView.as_view()),
]
1 change: 0 additions & 1 deletion api/views/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
# flake8: noqa
from .character import CharacterView
from .characterhistory import CharacterHistoryView
from .characters import CharactersView
Expand Down
22 changes: 6 additions & 16 deletions manage.py
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
#!/usr/bin/env python
# flake8: noqa
import os
import sys

sys.dont_write_bytecode = True

if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "serverthrallapi.settings")
try:
from django.core.management import execute_from_command_line
except ImportError:
# The above import may fail for some other reason. Ensure that the
# issue is really that Django is missing to avoid masking other
# exceptions on Python 2.
try:
import django
except ImportError:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
)
raise
except ImportError as exc:
raise ImportError(
"Couldn't import Django. Are you sure it's installed and "
"available on your PYTHONPATH environment variable? Did you "
"forget to activate a virtual environment?"
) from exc
execute_from_command_line(sys.argv)
13 changes: 0 additions & 13 deletions requirements.txt

This file was deleted.

1 change: 0 additions & 1 deletion runtime.txt

This file was deleted.

Loading