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 dpr/apps.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,6 @@
class DprConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "dpr"

def ready(self):
import dpr.signals
12 changes: 12 additions & 0 deletions dpr/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class ODK_settlement(models.Model):
nrega_issues = models.TextField()
nrega_community = models.TextField()
data_settlement = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_settlement = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -103,6 +104,7 @@ class ODK_well(models.Model):
system = models.JSONField(default=dict)
gps_point = models.JSONField(default=dict)
data_well = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_well = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -158,6 +160,7 @@ class ODK_waterbody(models.Model):
system = models.JSONField(default=dict)
gps_point = models.JSONField(default=dict)
data_waterbody = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_waterbody = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -204,6 +207,7 @@ class ODK_groundwater(models.Model):
gps_point = models.JSONField()
work_dimensions = models.JSONField(default=dict)
data_groundwater = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_groundwater = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -256,6 +260,7 @@ class ODK_agri(models.Model):
gps_point = models.JSONField()
work_dimensions = models.JSONField(default=dict)
data_agri = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_agri = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -311,6 +316,7 @@ class ODK_crop(models.Model):
system = models.JSONField()
gps_point = models.JSONField(default=dict, null=True, blank=True)
data_crop = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_crop = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -359,6 +365,7 @@ class ODK_livelihood(models.Model):
system = models.JSONField()
gps_point = models.JSONField()
data_livelihood = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_livelihood = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -410,6 +417,7 @@ class GW_maintenance(models.Model):
corresponding_work_id = models.CharField(max_length=255)
submission_time = models.DateTimeField(null=True, blank=True)
data_gw_maintenance = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_gw_maintenance = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -452,6 +460,7 @@ class SWB_RS_maintenance(models.Model):
corresponding_work_id = models.CharField(max_length=255)
submission_time = models.DateTimeField(null=True, blank=True)
data_swb_rs_maintenance = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_swb_rs_maintenance = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -494,6 +503,7 @@ class SWB_maintenance(models.Model):
corresponding_work_id = models.CharField(max_length=255)
submission_time = models.DateTimeField(null=True, blank=True)
data_swb_maintenance = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_swb_maintenance = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -536,6 +546,7 @@ class Agri_maintenance(models.Model):
corresponding_work_id = models.CharField(max_length=255)
submission_time = models.DateTimeField(null=True, blank=True)
data_agri_maintenance = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_agri_maintenance = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down Expand Up @@ -575,6 +586,7 @@ class ODK_agrohorticulture(models.Model):
longitude = models.FloatField()
status_re = models.TextField()
data_agohorticulture = models.JSONField(default=dict, null=True, blank=True)
unmodified_data_agohorticulture = models.JSONField(default=dict, null=True, blank=True)
is_moderated = models.BooleanField(default=False, blank=True, null=True)
moderated_at = models.DateTimeField(null=True, blank=True)
moderated_by = models.ForeignKey(
Expand Down
64 changes: 64 additions & 0 deletions dpr/signals.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from django.db.models.signals import pre_save
from django.dispatch import receiver

from .models import (
ODK_waterbody,
ODK_well,
)


def preserve_unmodified_demand_type(
instance,
data_field,
unmodified_data_field,
source_field,
):
"""
Preserve only the original value of the field that is modified
by classify_demand_type().
"""

data = getattr(instance, data_field, None) or {}
unmodified_data = getattr(instance, unmodified_data_field, None) or {}

# Original ODK value
original_value = data.get(source_field)

# Preserve it only once.
# Never overwrite the already preserved original value.
if original_value is not None and "demand_type" not in unmodified_data:
unmodified_data["demand_type"] = original_value

setattr(
instance,
unmodified_data_field,
unmodified_data,
)


@receiver(pre_save, sender=ODK_waterbody)
def preserve_waterbody_unmodified_demand_type(
sender,
instance,
**kwargs,
):
preserve_unmodified_demand_type(
instance=instance,
data_field="data_waterbody",
unmodified_data_field="unmodified_data_waterbody",
source_field="select_one_owns",
)


@receiver(pre_save, sender=ODK_well)
def preserve_well_unmodified_demand_type(
sender,
instance,
**kwargs,
):
preserve_unmodified_demand_type(
instance=instance,
data_field="data_well",
unmodified_data_field="unmodified_data_well",
source_field="select_one_owns",
)
3 changes: 3 additions & 0 deletions moderation/utils/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,9 @@ def sync_edited_updated_well(well_submission):
"data_well": well_submission,
}

print("WELL ID:", well_id)
print("MAPPED:", mapped)

ODK_well.objects.update_or_create(well_id=well_id, defaults=mapped)


Expand Down