Skip to content

Commit

Permalink
Updated all migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
dyohan9 committed Dec 17, 2019
1 parent 7036997 commit cd5d3bf
Show file tree
Hide file tree
Showing 7 changed files with 202 additions and 47 deletions.
17 changes: 13 additions & 4 deletions bothub/api/v2/nlp/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -304,13 +304,22 @@ def retrieve(self, request, *args, **kwargs):
check_auth(request)
repository_authorization = self.get_object()
repository = repository_authorization.repository
update = repository.last_trained_update(
str(request.query_params.get("language"))
)

repository_version = request.query_params.get("repository_version")

if repository_version:
update = repository.get_specific_version_id(
repository_version, str(request.query_params.get("language"))
)
else:
update = repository.last_trained_update(
str(request.query_params.get("language"))
)

return Response(
{
"update": False if update is None else True,
"update_id": update.id,
"repository_version": update.id,
"language": update.language,
"user_id": repository_authorization.user.id,
}
Expand Down
1 change: 1 addition & 0 deletions bothub/api/v2/repository/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,7 @@ class TrainSerializer(serializers.Serializer):

class EvaluateSerializer(serializers.Serializer):
language = serializers.ChoiceField(LANGUAGE_CHOICES, required=True)
repository_version = serializers.IntegerField(required=False)


class RepositoryUpdateSerializer(serializers.ModelSerializer):
Expand Down
2 changes: 2 additions & 0 deletions bothub/common/migrations/0041_delete_examples_isdeleted.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ def noop(apps, schema_editor): # pragma: no cover

def delete_examples_already_deleted(apps, schema_editor): # pragma: no cover
RepositoryExample = apps.get_model("common", "RepositoryExample")
RepositoryEvaluate = apps.get_model("common", "RepositoryEvaluate")
RepositoryExample.objects.filter(deleted_in__isnull=False).delete()
RepositoryEvaluate.objects.filter(deleted_in__isnull=False).delete()


class Migration(migrations.Migration):
Expand Down
58 changes: 17 additions & 41 deletions bothub/common/migrations/0042_auto_20191212_2013.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,42 +142,19 @@ class Migration(migrations.Migration):
"ordering": ["-created_at"],
},
),
migrations.RemoveField(model_name="repositoryupdate", name="by"),
migrations.RemoveField(model_name="repositoryupdate", name="repository"),
migrations.RemoveField(model_name="repository", name="total_updates"),
migrations.RemoveField(
model_name="repositoryevaluate", name="repository_update"
),
migrations.RemoveField(
model_name="repositoryevaluateresult", name="repository_update"
),
migrations.RemoveField(model_name="repositoryexample", name="deleted_in"),
migrations.RemoveField(
model_name="repositoryexample", name="repository_update"
),
migrations.RemoveField(
model_name="repositorytranslatedexample", name="repository_update"
),
migrations.AddField(
model_name="repositoryexample",
name="last_update",
field=models.DateTimeField(
default=django.utils.timezone.now, verbose_name="last update"
),
preserve_default=False,
),
migrations.AlterField(
model_name="repositoryevaluate",
name="deleted_in",
name="repository_version_language",
field=models.ForeignKey(
blank=True,
null=True,
default=None,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="deleted_evaluate",
related_name="added",
to="common.RepositoryVersionLanguage",
null=True,
),
preserve_default=False,
),
migrations.DeleteModel(name="RepositoryUpdate"),
migrations.AddField(
model_name="repositoryversion",
name="repository",
Expand All @@ -188,38 +165,36 @@ class Migration(migrations.Migration):
),
),
migrations.AddField(
model_name="repositoryevaluate",
name="repository_version_language",
field=models.ForeignKey(
default=None,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="added_evaluate",
to="common.RepositoryVersionLanguage",
model_name="repositoryexample",
name="last_update",
field=models.DateTimeField(
default=django.utils.timezone.now, verbose_name="last update"
),
preserve_default=False,
),
migrations.AddField(
model_name="repositoryevaluateresult",
model_name="repositoryevaluate",
name="repository_version_language",
field=models.ForeignKey(
default=None,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="results",
related_name="added_evaluate",
to="common.RepositoryVersionLanguage",
null=True,
),
preserve_default=False,
),
migrations.AddField(
model_name="repositoryexample",
model_name="repositoryevaluateresult",
name="repository_version_language",
field=models.ForeignKey(
default=None,
editable=False,
on_delete=django.db.models.deletion.CASCADE,
related_name="added",
related_name="results",
to="common.RepositoryVersionLanguage",
null=True,
),
preserve_default=False,
),
Expand All @@ -232,6 +207,7 @@ class Migration(migrations.Migration):
on_delete=django.db.models.deletion.CASCADE,
related_name="translated_added",
to="common.RepositoryVersionLanguage",
null=True,
),
preserve_default=False,
),
Expand Down
121 changes: 121 additions & 0 deletions bothub/common/migrations/0043_migrate_all_train_for_versioning.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Generated by Django 2.1.11 on 2019-12-12 20:13

from django.db import migrations


def noop(apps, schema_editor): # pragma: no cover
pass


def current_version(
repository, repositoryversionlanguage, language=None, is_default=True
):
language = language or repository.language

repository_version, created = repository.versions.get_or_create(
is_default=is_default
)

repository_version_language, created = repositoryversionlanguage.objects.get_or_create(
repository_version=repository_version, language=language
)
return repository_version_language


def migrate_data(apps, schema_editor): # pragma: no cover
Repository = apps.get_model("common", "Repository")
RepositoryVersionLanguage = apps.get_model("common", "RepositoryVersionLanguage")
RepositoryUpdate = apps.get_model("common", "RepositoryUpdate")
RepositoryExample = apps.get_model("common", "RepositoryExample")
RepositoryEvaluate = apps.get_model("common", "RepositoryEvaluate")
RepositoryEvaluateResult = apps.get_model("common", "RepositoryEvaluateResult")
RepositoryTranslatedExample = apps.get_model(
"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)


class Migration(migrations.Migration):
dependencies = [("common", "0042_auto_20191212_2013")]

operations = [migrations.RunPython(migrate_data, noop)]
40 changes: 40 additions & 0 deletions bothub/common/migrations/0044_auto_20191217_1414.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Generated by Django 2.1.11 on 2019-12-17 14:14

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


class Migration(migrations.Migration):

dependencies = [("common", "0043_migrate_all_train_for_versioning")]

operations = [
migrations.RemoveField(model_name="repositoryupdate", name="by"),
migrations.RemoveField(model_name="repositoryupdate", name="repository"),
migrations.RemoveField(model_name="repository", name="total_updates"),
migrations.RemoveField(
model_name="repositoryevaluate", name="repository_update"
),
migrations.RemoveField(
model_name="repositoryevaluateresult", name="repository_update"
),
migrations.RemoveField(model_name="repositoryexample", name="deleted_in"),
migrations.RemoveField(
model_name="repositoryexample", name="repository_update"
),
migrations.RemoveField(
model_name="repositorytranslatedexample", name="repository_update"
),
migrations.AlterField(
model_name="repositoryevaluate",
name="deleted_in",
field=models.ForeignKey(
blank=True,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="deleted_evaluate",
to="common.RepositoryVersionLanguage",
),
),
migrations.DeleteModel(name="RepositoryUpdate"),
]
10 changes: 8 additions & 2 deletions bothub/common/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,7 +218,6 @@ def save(

def request_nlp_train(self, user_authorization, data):
try: # pragma: no cover
print(data.get("repository_version"))
if data.get("repository_version"):
r = requests.post( # pragma: no cover
"{}train/".format(
Expand Down Expand Up @@ -777,7 +776,11 @@ class Meta:
ordering = ["-created_at"]

repository_version_language = models.ForeignKey(
RepositoryVersionLanguage, models.CASCADE, related_name="added", editable=False
RepositoryVersionLanguage,
models.CASCADE,
related_name="added",
editable=False,
null=True,
)
text = models.TextField(_("text"), help_text=_("Example text"))
intent = models.CharField(
Expand Down Expand Up @@ -864,6 +867,7 @@ class Meta:
models.CASCADE,
related_name="translated_added",
editable=False,
null=True,
)
original_example = models.ForeignKey(
RepositoryExample,
Expand Down Expand Up @@ -1321,6 +1325,7 @@ class Meta:
models.CASCADE,
related_name="added_evaluate",
editable=False,
null=True,
)
deleted_in = models.ForeignKey(
RepositoryVersionLanguage,
Expand Down Expand Up @@ -1409,6 +1414,7 @@ class Meta:
models.CASCADE,
editable=False,
related_name="results",
null=True,
)

intent_results = models.ForeignKey(
Expand Down

0 comments on commit cd5d3bf

Please sign in to comment.