Skip to content

Commit

Permalink
[fix] Migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
dyohan9 committed Dec 18, 2019
1 parent 4587741 commit d05357b
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 80 deletions.
144 changes: 65 additions & 79 deletions bothub/common/migrations/0043_migrate_all_train_for_versioning.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from django.db import migrations

from bothub.common import languages


def noop(apps, schema_editor): # pragma: no cover
pass
Expand Down Expand Up @@ -33,86 +35,70 @@ def migrate_data(apps, schema_editor): # pragma: no cover
"common", "RepositoryTranslatedExample"
)

current_updates = []
for repo in Repository.objects.all():
update = RepositoryUpdate.objects.filter(
repository=repo, trained_at__isnull=False
).last()
if update is None:
update = RepositoryUpdate.objects.filter(repository=repo).last()

RepositoryExample.objects.filter(repository_update__repository=repo).update(
repository_update=update
)
RepositoryEvaluate.objects.filter(repository_update__repository=repo).update(
repository_update=update
)
RepositoryEvaluateResult.objects.filter(
repository_update__repository=repo
).update(repository_update=update)
RepositoryTranslatedExample.objects.filter(
repository_update__repository=repo
).update(repository_update=update)

if not update in current_updates:
if update is not None:
current_updates.append(update.pk)

if current_updates:
delete_rows = RepositoryUpdate.objects

for i in current_updates:
delete_rows = delete_rows.exclude(pk=i)

delete_rows.delete()

for repo_update in RepositoryUpdate.objects.all():
version_language = current_version(
repository=Repository.objects.get(pk=repo_update.repository.pk),
repositoryversionlanguage=RepositoryVersionLanguage,
language=repo_update.language,
)

version_language.bot_data = repo_update.bot_data
version_language.training_started_at = repo_update.training_started_at
version_language.training_end_at = repo_update.trained_at
version_language.failed_at = repo_update.failed_at
version_language.use_analyze_char = repo_update.use_analyze_char
version_language.use_name_entities = repo_update.use_name_entities
version_language.use_competing_intents = repo_update.use_competing_intents
version_language.algorithm = repo_update.algorithm
version_language.training_log = repo_update.training_log
version_language.last_update = repo_update.trained_at
version_language.save(
update_fields=[
"bot_data",
"training_started_at",
"training_end_at",
"failed_at",
"use_analyze_char",
"use_name_entities",
"use_competing_intents",
"algorithm",
"training_log",
"last_update",
]
)

RepositoryExample.objects.filter(repository_update=repo_update).update(
repository_version_language=version_language
)

RepositoryEvaluate.objects.filter(repository_update=repo_update).update(
repository_version_language=version_language
)

RepositoryEvaluateResult.objects.filter(repository_update=repo_update).update(
repository_version_language=version_language
)

RepositoryTranslatedExample.objects.filter(
repository_update=repo_update
).update(repository_version_language=version_language)
for lang in languages.VERBOSE_LANGUAGES.keys():
update = RepositoryUpdate.objects.filter(
repository=repo, trained_at__isnull=False, language=lang
).last()

if update is None:
update = RepositoryUpdate.objects.filter(
repository=repo, language=lang
).last()
if update is None:
continue

version_language = current_version(
repository=Repository.objects.get(pk=update.repository.pk),
repositoryversionlanguage=RepositoryVersionLanguage,
language=update.language,
)

version_language.bot_data = update.bot_data
version_language.training_started_at = update.training_started_at
version_language.training_end_at = update.trained_at
version_language.failed_at = update.failed_at
version_language.use_analyze_char = update.use_analyze_char
version_language.use_name_entities = update.use_name_entities
version_language.use_competing_intents = update.use_competing_intents
version_language.algorithm = update.algorithm
version_language.training_log = update.training_log
version_language.last_update = update.trained_at
version_language.save(
update_fields=[
"bot_data",
"training_started_at",
"training_end_at",
"failed_at",
"use_analyze_char",
"use_name_entities",
"use_competing_intents",
"algorithm",
"training_log",
"last_update",
]
)

RepositoryExample.objects.filter(
repository_update__repository=repo, repository_update__language=lang
).update(
repository_update=update, repository_version_language=version_language
)
RepositoryEvaluate.objects.filter(
repository_update__repository=repo, repository_update__language=lang
).update(
repository_update=update, repository_version_language=version_language
)
RepositoryEvaluateResult.objects.filter(
repository_update__repository=repo, repository_update__language=lang
).update(
repository_update=update, repository_version_language=version_language
)
RepositoryTranslatedExample.objects.filter(
repository_update__repository=repo, repository_update__language=lang
).update(
repository_update=update, repository_version_language=version_language
)


class Migration(migrations.Migration):
Expand Down
2 changes: 1 addition & 1 deletion bothub/common/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ def publics(self):
def order_by_relevance(self):
return self.order_by(
"-versions__repositoryversionlanguage__total_training_end", "-created_at"
)
).distinct()

def supported_language(self, language):
valid_examples = RepositoryExample.objects.all()
Expand Down

0 comments on commit d05357b

Please sign in to comment.