Skip to content

Commit db3871f

Browse files
authored
Merge pull request #258 from Mosquito-Alert/auto_executive_validation
Move executive validation into ExpertReportAnnotation save()
2 parents a894dd3 + 6b0f86f commit db3871f

File tree

2 files changed

+49
-33
lines changed

2 files changed

+49
-33
lines changed

tigacrafting/models.py

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
1+
import copy
2+
13
from django.db import models
2-
from django.contrib.auth.models import User
4+
from django.db.utils import IntegrityError
5+
from django.contrib.auth import get_user_model
36
from datetime import datetime, timedelta
47
from django.core.validators import MaxValueValidator, MinValueValidator
58
from django.utils import timezone
@@ -9,6 +12,8 @@
912
import tigacrafting.html_utils as html_utils
1013
import pytz
1114

15+
User = get_user_model()
16+
1217
def score_computation(n_total, n_yes, n_no, n_unknown = 0, n_undefined =0):
1318
return float(n_yes - n_no)/n_total
1419

@@ -420,6 +425,49 @@ def save(self, *args, **kwargs):
420425

421426
super(ExpertReportAnnotation, self).save(*args, **kwargs)
422427

428+
if self.validation_complete and self.validation_complete_executive:
429+
cloned_instance = copy.deepcopy(self)
430+
cloned_instance.simplified_annotation = True
431+
cloned_instance.tiger_certainty_notes = 'exec_auto'
432+
cloned_instance.validation_complete = True
433+
cloned_instance.validation_complete_executive = False
434+
cloned_instance.best_photo = None
435+
cloned_instance.edited_user_notes = ""
436+
cloned_instance.message_for_user = ""
437+
cloned_instance.revise = False
438+
439+
for dummy_user in User.objects.filter(username__in=["innie", "minnie"]):
440+
try:
441+
cloned_instance.pk = None
442+
cloned_instance.user = dummy_user
443+
cloned_instance.save()
444+
except IntegrityError:
445+
# Case unique constraint raises
446+
pass
447+
448+
try:
449+
ExpertReportAnnotation.objects.update_or_create(
450+
user=User.objects.get(username="super_reritja"),
451+
report=self.report,
452+
defaults={
453+
"validation_complete": True
454+
}
455+
)
456+
except User.DoesNotExist:
457+
pass
458+
459+
def delete(self, *args, **kwargs):
460+
if self.validation_complete_executive:
461+
ExpertReportAnnotation.objects.filter(
462+
report=self.report,
463+
validation_complete=True,
464+
validation_complete_executive=False
465+
).filter(
466+
models.Q(user__username__in=["innie", "minnie"])
467+
| models.Q(user__username="super_reritja", revise=False)
468+
).delete()
469+
470+
return super().delete(*args, **kwargs)
423471

424472
class UserStat(models.Model):
425473
user = models.OneToOneField(User, primary_key=True, on_delete=models.CASCADE, )

tigacrafting/views.py

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -793,36 +793,6 @@ def report_expiration(request, country_id=None):
793793
return HttpResponse("You need to be logged in as superexpert to view this page. If you have have been recruited as an expert and have lost your log-in credentials, please contact MoveLab.")
794794

795795

796-
def executive_auto_validate(annotation, request):
797-
users = []
798-
report = annotation.report
799-
users.append(User.objects.get(username="innie"))
800-
users.append(User.objects.get(username="minnie"))
801-
super_reritja = User.objects.get(username="super_reritja")
802-
for u in users:
803-
if not ExpertReportAnnotation.objects.filter(report=report).filter(user=u).exists():
804-
new_annotation = ExpertReportAnnotation(report=report, user=u)
805-
new_annotation.simplified_annotation = True
806-
new_annotation.tiger_certainty_notes = 'exec_auto'
807-
new_annotation.tiger_certainty_category = annotation.tiger_certainty_category
808-
new_annotation.aegypti_certainty_category = annotation.aegypti_certainty_category
809-
new_annotation.status = annotation.status
810-
new_annotation.category = annotation.category
811-
new_annotation.complex = annotation.complex
812-
new_annotation.validation_value = annotation.validation_value
813-
new_annotation.other_species = annotation.other_species
814-
new_annotation.validation_complete = True
815-
new_annotation.save()
816-
try:
817-
roger_annotation = ExpertReportAnnotation.objects.get(user=super_reritja, report=report)
818-
except ExpertReportAnnotation.DoesNotExist:
819-
roger_annotation = ExpertReportAnnotation(user=super_reritja, report=report)
820-
821-
roger_annotation.validation_complete = True
822-
roger_annotation.save()
823-
current_domain = get_current_domain(request)
824-
issue_notification(roger_annotation, current_domain)
825-
826796
@transaction.atomic
827797
@login_required
828798
def expert_report_annotation(request, scroll_position='', tasks_per_page='10', note_language='es', load_new_reports='F', year='all', orderby='date', tiger_certainty='all', site_certainty='all', pending='na', checked='na', status='all', final_status='na', max_pending=5, max_given=3, version_uuid='na', linked_id='na', ns_exec='all', edit_mode='off', tags_filter='na',loc='na'):
@@ -880,8 +850,6 @@ def expert_report_annotation(request, scroll_position='', tasks_per_page='10', n
880850
one_form.status = 0
881851
one_form.save()
882852
f.save_m2m()
883-
if one_form.validation_complete_executive:
884-
executive_auto_validate(one_form, request)
885853
if(this_user_is_reritja and one_form.validation_complete == True):
886854
issue_notification(one_form,current_domain)
887855
if auto_flag:

0 commit comments

Comments
 (0)