Skip to content

Commit

Permalink
fixed mediator and attendance error before saving
Browse files Browse the repository at this point in the history
  • Loading branch information
jahnavik committed Dec 15, 2015
1 parent 9707395 commit 9aa251a
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 16 deletions.
2 changes: 1 addition & 1 deletion dimagi/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ class CommCareUserAdmin(admin.ModelAdmin):
fieldsets = [(None, {'fields': ['username', 'guid', 'coco_user', 'project', 'mediator']
}
)]
list_display = ('username', 'guid', 'coco_user', 'project', 'mediator')
list_display = ('username', 'coco_user', 'project', 'mediator')
search_fields = ['username']


Expand Down
24 changes: 24 additions & 0 deletions dimagi/management/commands/test_xml.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import os
from django.core.management.base import BaseCommand, CommandError
from django.db.models import get_model
from datetime import datetime, timedelta
from dg.settings import MEDIA_ROOT

from dimagi.models import CommCareProject, CommCareUser, CommCareCase
from dimagi.scripts.update_cases_functions import close_case, update_case, write_new_cases
from people.models import Person

from xml.dom import minidom
from django.core.management.base import BaseCommand

from dimagi.models import error_list, XMLSubmission
from dimagi.scripts import save_mobile_data
from dimagi.scripts.exception_email import sendmail

class Command(BaseCommand):

def handle(self, *args, **options):
xml_object = XMLSubmission.objects.get(id=12098)
xml_string = xml_object.xml_data
xml_parse = minidom.parseString(xml_string)
save_mobile_data.save_screening_data(xml_parse)
49 changes: 34 additions & 15 deletions dimagi/scripts/save_mobile_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,40 +16,59 @@ def save_screening_data(xml_tree):
xml_data = xml_tree.getElementsByTagName('data')
commcare_user = CommCareUser.objects.get(guid=str(xml_tree.getElementsByTagName('n0:userID')[0].childNodes[0].nodeValue))
cocouser = commcare_user.coco_user
mediator = commcare_user.mediator
for record in xml_data:
try:
screening_data = {}
screening_data['date'] = record.getElementsByTagName('date')[0].firstChild.data
screening_data['time'] = record.getElementsByTagName('time')[0].firstChild.data
screening_data['selected_village'] = record.getElementsByTagName('selected_village')[0].firstChild.data
screening_data['selected_group'] = record.getElementsByTagName('selected_group')[0].firstChild.data
screening_data['selected_mediator'] = record.getElementsByTagName('selected_mediator')[0].firstChild.data
if record.getElementsByTagName('selected_mediator'):
screening_data['selected_mediator'] = record.getElementsByTagName('selected_mediator')[0].firstChild.data
else:
screening_data['selected_mediator'] = mediator
screening_data['selected_video'] = record.getElementsByTagName('selected_video')[0].firstChild.data
if screening_data['selected_video'] == '0' :
screening_data['selected_video'] = record.getElementsByTagName('additional_selected_video')[0].firstChild.data
screening_data['attendance_record'] = record.getElementsByTagName('attendance_record')
pma_record = []
for person in screening_data['attendance_record']:
if int(person.getElementsByTagName('attended')[0].firstChild.data) == 1:
#Check if 'attendance_record' or 'attended' tag
pma_record =[]
if record.getElementsByTagName('attendance_record'):
screening_data['attendance_record'] = record.getElementsByTagName('attendance_record')
for person in screening_data['attendance_record']:
if int(person.getElementsByTagName('attended')[0].firstChild.data) == 1:
pma = {}
pma['person_id'] = person.getElementsByTagName('attendee_id')[0].firstChild.data
if person.getElementsByTagName('interested')[0].firstChild:
pma['interested'] = person.getElementsByTagName('interested')[0].firstChild.data
else:
pma['interested'] = 0
if person.getElementsByTagName('question_asked')[0].firstChild:
pma['question'] = person.getElementsByTagName('question_asked')[0].firstChild.data
else:
pma['question'] = ""
pma_record.append(pma)
error_msg = 'Successful'
else:
attendance_list = str(record.getElementsByTagName('attended')[0].firstChild.data)
screening_data['attendance_record'] = map(int, str.split(attendance_list))
for person in screening_data['attendance_record']:
pma = {}
pma['person_id'] = person.getElementsByTagName('attendee_id')[0].firstChild.data
if person.getElementsByTagName('interested')[0].firstChild:
pma['interested'] = person.getElementsByTagName('interested')[0].firstChild.data
else:
pma['interested'] = 0
if person.getElementsByTagName('question_asked')[0].firstChild:
pma['question'] = person.getElementsByTagName('question_asked')[0].firstChild.data
else:
pma['question'] = ""
pma['person_id'] = person
pma_record.append(pma)
error_msg = 'Successful'
error_msg = 'Successful'
#Adding question asked to first farmer
if pma_record:
if record.getElementsByTagName('Feedback'):
pma_record[0]['question'] = record.getElementsByTagName('Feedback')[0].firstChild.data
# time is returned as string, doing funky things to retrieve it in time format
temp_time = screening_data['time'].split('.')
temp_time = time.strptime(temp_time[0], "%H:%M:%S")
temp_time = datetime(*temp_time[:6])
screening_data['start_time'] = temp_time.time()
screening_data['end_time'] = temp_time + timedelta(minutes=45)
screening_data['end_time'] = screening_data['end_time'].time()

try:
ScreeningObject = Screening.objects.get(animator_id=screening_data['selected_mediator'], date=screening_data['date'], start_time=screening_data['start_time'], end_time=screening_data['end_time'], village_id=screening_data['selected_village'])
status['screening'] = 1
Expand Down

0 comments on commit 9aa251a

Please sign in to comment.