diff --git a/aiarena/core/migrations/0107_auto_20200622_1841.py b/aiarena/core/migrations/0107_auto_20200622_1841.py index 0bbf4164..b95a2fe0 100644 --- a/aiarena/core/migrations/0107_auto_20200622_1841.py +++ b/aiarena/core/migrations/0107_auto_20200622_1841.py @@ -14,19 +14,20 @@ class Migration(migrations.Migration): ] operations = [ - migrations.AddField( - model_name='bot', - name='is_probots_participant', - field=models.BooleanField(default=False), - ), - migrations.AddField( - model_name='bot', - name='probots_bot_data', - field=private_storage.fields.PrivateFileField(blank=True, null=True, storage=aiarena.core.storage.OverwritePrivateStorage(base_url='/'), upload_to=aiarena.core.models.bot.probots_bot_data_upload_to), - ), - migrations.AddField( - model_name='bot', - name='probots_bot_zip', - field=private_storage.fields.PrivateFileField(blank=True, null=True, storage=aiarena.core.storage.OverwritePrivateStorage(base_url='/'), upload_to=aiarena.core.models.bot.probots_bot_zip_upload_to, validators=[aiarena.core.validators.validate_bot_zip_file]), - ), + # Broken migrations - field removed + # migrations.AddField( + # model_name='bot', + # name='is_probots_participant', + # field=models.BooleanField(default=False), + # ), + # migrations.AddField( + # model_name='bot', + # name='probots_bot_data', + # field=private_storage.fields.PrivateFileField(blank=True, null=True, storage=aiarena.core.storage.OverwritePrivateStorage(base_url='/'), upload_to=aiarena.core.models.bot.probots_bot_data_upload_to), + # ), + # migrations.AddField( + # model_name='bot', + # name='probots_bot_zip', + # field=private_storage.fields.PrivateFileField(blank=True, null=True, storage=aiarena.core.storage.OverwritePrivateStorage(base_url='/'), upload_to=aiarena.core.models.bot.probots_bot_zip_upload_to, validators=[aiarena.core.validators.validate_bot_zip_file]), + # ), ] diff --git a/aiarena/core/migrations/0110_bot_probots_bot_source.py b/aiarena/core/migrations/0110_bot_probots_bot_source.py index 2c4904ea..a2749724 100644 --- a/aiarena/core/migrations/0110_bot_probots_bot_source.py +++ b/aiarena/core/migrations/0110_bot_probots_bot_source.py @@ -13,9 +13,10 @@ class Migration(migrations.Migration): ] operations = [ - migrations.AddField( - model_name='bot', - name='probots_bot_source', - field=private_storage.fields.PrivateFileField(blank=True, null=True, storage=aiarena.core.storage.OverwritePrivateStorage(base_url='/'), upload_to=aiarena.core.models.bot.probots_bot_source_upload_to), - ), + # Broken migration - field removed + # migrations.AddField( + # model_name='bot', + # name='probots_bot_source', + # field=private_storage.fields.PrivateFileField(blank=True, null=True, storage=aiarena.core.storage.OverwritePrivateStorage(base_url='/'), upload_to=aiarena.core.models.bot.probots_bot_source_upload_to), + # ), ] diff --git a/aiarena/core/models/bot.py b/aiarena/core/models/bot.py index 216e2840..2503079e 100644 --- a/aiarena/core/models/bot.py +++ b/aiarena/core/models/bot.py @@ -36,18 +36,6 @@ def bot_data_upload_to(instance, filename): return '/'.join(['bots', str(instance.id), 'bot_data']) -def probots_bot_zip_upload_to(instance, filename): - return '/'.join(['bots', str(instance.id), 'probots', 'bot_zip_' + timezone.now().strftime("%Y%m%d_%H%M%S")]) - - -def probots_bot_source_upload_to(instance, filename): - return '/'.join(['bots', str(instance.id), 'probots', 'bot_source_' + timezone.now().strftime("%Y%m%d_%H%M%S")]) - - -def probots_bot_data_upload_to(instance, filename): - return '/'.join(['bots', str(instance.id), 'probots', 'bot_data_' + timezone.now().strftime("%Y%m%d_%H%M%S")]) - - class Bot(models.Model, LockableModelMixin): RACES = ( ('T', 'Terran'), @@ -86,19 +74,6 @@ class Bot(models.Model, LockableModelMixin): game_display_id = models.UUIDField(default=uuid.uuid4) wiki_article = models.OneToOneField(Article, on_delete=models.PROTECT, blank=True, null=True) - # probots - is_probots_participant = models.BooleanField(default=False) - probots_bot_zip = PrivateFileField(upload_to=probots_bot_zip_upload_to, - storage=HardcodedURLFilenamePrivateStorage(url_filename='bot_zip', base_url='/'), - validators=[validate_bot_zip_file, ], blank=True, null=True) - probots_bot_source = PrivateFileField(upload_to=probots_bot_source_upload_to, - storage=HardcodedURLFilenamePrivateStorage(url_filename='bot_source', - base_url='/'), blank=True, - null=True) - probots_bot_data = PrivateFileField(upload_to=probots_bot_data_upload_to, - storage=HardcodedURLFilenamePrivateStorage(url_filename='bot_data', - base_url='/'), blank=True, null=True) - @property def current_matches(self): return Match.objects.only('id').filter(matchparticipation__bot=self, started__isnull=False, result__isnull=True) diff --git a/aiarena/core/stats/stats_generator.py b/aiarena/core/stats/stats_generator.py index c38db107..a4590cf2 100644 --- a/aiarena/core/stats/stats_generator.py +++ b/aiarena/core/stats/stats_generator.py @@ -184,8 +184,9 @@ def _get_data(bot_id): """) cursor.execute(query) elo_over_time = pd.DataFrame(cursor.fetchall()) - elo_over_time.to_csv('tmp.csv') - elo_over_time = pd.read_csv('tmp.csv') + # HACK - saving to a csv and loading it back normalizes the time format + elo_over_time.to_csv('./tmp/tmp.csv') + elo_over_time = pd.read_csv('./tmp/tmp.csv') elo_over_time = elo_over_time.drop('Unnamed: 0', axis=1) return elo_over_time diff --git a/aiarena/frontend/templates/bot_edit.html b/aiarena/frontend/templates/bot_edit.html index 2f440471..7c36f95e 100644 --- a/aiarena/frontend/templates/bot_edit.html +++ b/aiarena/frontend/templates/bot_edit.html @@ -16,22 +16,6 @@
Bot data:
{{ form.bot_data }}
Publicly downloadable: {{ form.bot_data_publicly_downloadable }}
Probots bot zip:
- {{ form.probots_bot_zip }}
Probots bot source/change log zip:
- {{ form.probots_bot_source }}
Probots bot data zip:
- {{ form.probots_bot_data }}
{{ form.wiki_article_content }}
diff --git a/aiarena/frontend/views.py b/aiarena/frontend/views.py
index 4b2f2868..f0b5a6b5 100644
--- a/aiarena/frontend/views.py
+++ b/aiarena/frontend/views.py
@@ -243,17 +243,10 @@ def __init__(self, *args, **kwargs, ):
self.fields['active'].required = False
- if not self.instance.is_probots_participant:
- # don't show these fields to non-probots participants
- del self.fields['probots_bot_zip']
- del self.fields['probots_bot_source']
- del self.fields['probots_bot_data']
-
-
class Meta:
model = Bot
fields = ['active', 'bot_zip', 'bot_zip_publicly_downloadable', 'bot_data',
- 'bot_data_publicly_downloadable', 'probots_bot_zip', 'probots_bot_source', 'probots_bot_data']
+ 'bot_data_publicly_downloadable']
class BotUpdate(SuccessMessageMixin, LoginRequiredMixin, UpdateView):
@@ -442,31 +435,6 @@ def can_access_file(self, private_file):
return user.is_authenticated and user.is_staff or private_file.parent_object.user == user or private_file.parent_object.bot_data_publicly_downloadable
-class ProbotsFileDownloadView(PrivateStorageDetailView):
- model = Bot
-
- content_disposition = 'attachment'
-
- def get_content_disposition_filename(self, private_file):
- return 'probots_{0}.zip'.format(private_file.relative_name.split('/')[-1])
-
- def can_access_file(self, private_file):
- user = private_file.request.user
- # Allow if staff, the owner of the file, or the file is marked as publicly downloadable
- return user.is_authenticated and user.is_staff or private_file.parent_object.user == user or private_file.parent_object.bot_data_publicly_downloadable
-
-class ProbotsZipDownloadView(ProbotsFileDownloadView):
- model_file_field = 'probots_bot_zip'
-
-
-class ProbotsSourceDownloadView(ProbotsFileDownloadView):
- model_file_field = 'probots_bot_source'
-
-
-class ProbotsDataDownloadView(ProbotsFileDownloadView):
- model_file_field = 'probots_bot_data'
-
-
class MatchLogDownloadView(PrivateStorageDetailView):
model = MatchParticipation
model_file_field = 'match_log'
diff --git a/aiarena/settings.py b/aiarena/settings.py
index 18c65dcf..3a00eada 100644
--- a/aiarena/settings.py
+++ b/aiarena/settings.py
@@ -207,7 +207,6 @@
'1/(1+e^(-AVG_BOT_ELO/COMBINED_ELO_RATING_DIVISOR))-0.5'),
'ENABLE_ELO_SANITY_CHECK': (True, 'Whether to sanity check the total sum of bot ELO '
'on result submission in order to detect ELO corruption.'),
- 'PROBOTS_SUBMISSION_DEADLINE': (datetime.datetime.now(), 'The next ProBots submission deadline datetime.'),
'BOT_UPLOADS_ENABLED': (True, 'Whether authors can upload new bots to the website.'),
}
@@ -223,7 +222,6 @@
'BOT_CONSECUTIVE_CRASH_LIMIT', 'REISSUE_UNFINISHED_MATCHES',),
'Integrations': ('DISCORD_CLIENT_ID', 'DISCORD_CLIENT_SECRET', 'PATREON_CLIENT_ID', 'PATREON_CLIENT_SECRET',),
'Match interest analysis': ('ELO_DIFF_RATING_MODIFIER', 'COMBINED_ELO_RATING_DIVISOR',),
- 'ProBots': ('PROBOTS_SUBMISSION_DEADLINE',),
}
LOGGING = {
diff --git a/aiarena/urls.py b/aiarena/urls.py
index a2fb6384..f8506927 100644
--- a/aiarena/urls.py
+++ b/aiarena/urls.py
@@ -67,9 +67,6 @@
path('bots/