Example #1
0
def view_submissions(request, reporter_id=None):
    if reporter_id:
        reporter = get_object_or_404(Reporter, pk=reporter_id)
        health_provider = reporter.healthprovider_ptr
        submissions = XFormSubmission.objects.filter(
            connection__contact__healthproviderbase__healthprovider=health_provider)
    else:
        group, _ = Group.objects.get_or_create(name='Ntds')
        submissions = XFormSubmission.objects.filter(connection__contact__groups=group).order_by("-message__date")

    columns = [('Name', True, 'name', SimpleSorter()),
               ('Parish', True, 'connection__contact__healthproviderbase__healthprovider__location', SimpleSorter()),
               ('District', True, 'connection__contact__healthproviderbase__healthprovider__reporter__district', SimpleSorter()),
               ('Mobile', True, 'connection__identity', SimpleSorter()),
               ('Valid', True, 'enabled', SimpleSorter()),
               ('Message', False, 'message__text', SimpleSorter()),

    ]

    return generic(
        request,
        model=XFormSubmission,
        queryset=submissions,
        filter_forms=[],
        action_forms=[],
        objects_per_page=25,
        partial_row='ntds/partials/submission_row.html',
        base_template='ntds/submissions_base.html',
        columns=columns,
        sort_column='pk',
        sort_ascending=False,
        current='survey'
    )
Example #2
0
def drug_report(request):
    context = {}

    columns = [('Name', True, 'title', SimpleSorter()),
               ('Parish', True, 'decription', SimpleSorter()),
               ('Mobile', True, 'questions__name', SimpleSorter()),
               ('Status', True, 'enabled', SimpleSorter()),
               ('Submissions', False, '', ''),
               ('Last Submission', False, '', ''),
    ]

    return generic(
        request,
        model=NTDReport,
        queryset=NTDReport.objects.all(),
        filter_forms=[],
        action_forms=[],
        objects_per_page=25,
        partial_row='ntds/partials/reporter_row.html',
        base_template='ntds/reporters_base.html',
        columns=columns,
        sort_column='pk',
        sort_ascending=False,
        current='survey'
    )
Example #3
0
def view_messages(request):
    # filter_forms = []
    #action_forms = []
    group, _ = Group.objects.get_or_create(name='Ntds')
    messages = Message.objects.filter(connection__contact__groups=group).order_by("-date")

    partial_row = 'ntds/partials/message_row.html'
    columns = [('Message', True, 'text', SimpleSorter()),
               ('Mobile', True, 'identity', SimpleSorter()),
               ('Date', True, 'date', SimpleSorter()),
               ('Direction', True, 'direction', SimpleSorter()),

    ]
    return generic(
        request,
        model=Message,
        queryset=messages,
        objects_per_page=25,
        partial_row=partial_row,
        results_title="Messages",
        title="All SMS ",
        base_template="ntds/messages_base.html",
        columns=columns,
        sort_column='pk',
        show_unfiltered=False,
        sort_ascending=False,
    )
Example #4
0
def view_messages(request):
    context = {}

    columns = [('Name', True, 'title', SimpleSorter()),
               ('Parish', True, 'decription', SimpleSorter()),
               ('Mobile', True, 'questions__name', SimpleSorter()),
               ('Status', True, 'enabled', SimpleSorter()),
               ('Submissions', False, '', ''),
               ('Last Submission', False, '', ''),
    ]

    messages = Message.objects.filter(connection__pk__in=Reporter.objects.values("connection")).order_by("-pk")

    return generic(
        request,
        model=Message,
        queryset=Reporter.objects.all(),
        filter_forms=[],
        action_forms=[],
        objects_per_page=25,
        partial_row='ntds/partials/reporter_row.html',
        base_template='ntds/reporter_base.html',
        columns=columns,
        sort_column='pk',
        sort_ascending=False,
        current='survey'
    )
Example #5
0
def view_messages(request):

    #filter_forms = []
    #action_forms = []

    partial_row = 'mission/partials/messages_row.html'
    base_template = 'mission/partials/messages_base.html'
    paginator_template = 'mission/partials/pagination.html'
    columns = [
        ('Message', True, 'text', SimpleSorter()),
        ('Type', True, 'type', SimpleSorter()),
        ('sender', True, 'sender__username', SimpleSorter()),
        ('Destination', True, 'identifier', SimpleSorter()),
        ('Date', True, 'created', SimpleSorter()),
        ('Status', True, 'delivered', SimpleSorter()),
    ]
    return generic(
        request,
        model=Message,
        queryset=Message.objects.all(),
        objects_per_page=25,
        partial_row=partial_row,
        results_title="Messages",
        title="All SMS and Emails",
        base_template=base_template,
        paginator_template=paginator_template,
        paginator_func=paginate,
        columns=columns,
        sort_column='pk',
        show_unfiltered=False,
        sort_ascending=False,
    )
Example #6
0
def script_polls(request):
    columns = [('Name', True, 'name', SimpleSorter()),
               (
                   'Question',
                   True,
                   'question',
                   SimpleSorter(),
               ), (
                   'Start Date',
                   True,
                   'start_date',
                   SimpleSorter(),
               ), ('Closing Date', True, 'end_date', SimpleSorter()),
               ('', False, '', None)]
    return generic(request,
                   model=Poll,
                   queryset=get_script_polls,
                   objects_per_page=10,
                   selectable=False,
                   partial_row='ureport/partials/polls/poll_admin_row.html',
                   base_template='ureport/poll_admin_base.html',
                   paginator_template='ureport/partials/new_pagination.html',
                   paginator_func=ureport_paginate,
                   results_title='Polls',
                   sort_column='start_date',
                   auto_reg=True,
                   sort_ascending=False,
                   columns=columns)
def cloud_dashboard(request, name):
    name = name.replace("_", " ")
    category = get_object_or_404(IbmCategory, name__iexact=name)
    tags = get_category_tags(category=category)
    columns = [('Identifier', True, 'message__connection_id', SimpleSorter()),
               ('Text', True, 'msg__text', SimpleSorter()),
               ('Date', True, 'msg__date', SimpleSorter()),
               ('Score', True, 'score', SimpleSorter()),
               ('Category', True, 'category', SimpleSorter(),),
               ('Action', True, 'action', SimpleSorter(),),
               ('Rating', False, '', None)]

    return generic(
        request,
        model=IbmMsgCategory,
        queryset=IbmMsgCategory.objects.filter(category=category, msg__direction='I', score__gte=0.5),
        objects_per_page=20,
        results_title='Classified Messages',
        partial_row='message_classifier/message_row.html',
        base_template='message_classifier/message_classifier_cloud_base.html',
        paginator_template='ureport/partials/new_pagination.html',
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='msg__date',
        sort_ascending=False,
        tags=tags,
        ibm_categories=IbmCategory.objects.all()
    )
def unsolicitized_messages(request):

    filter_forms = [FreeSearchTextForm, DistictFilterMessageForm]
    action_forms = [ReplyTextForm, BlacklistForm2]
    partial_row = 'ureport/partials/messages/message_row.html'
    base_template = 'ureport/contact_message_base.html'
    paginator_template = 'ureport/partials/new_pagination.html'
    columns = [('Text', True, 'text', SimpleSorter()),
               ('Contact Information', True, 'connection__contact__name'
                , SimpleSorter()), ('Date', True, 'date',
                                    SimpleSorter()), ('Type', True, 'application',
                                                      SimpleSorter()), ('Response', False, 'response', None)]
    return generic(
        request,
        model=Message,
        queryset=get_unsolicitized_messages,
        filter_forms=filter_forms,
        action_forms=action_forms,
        objects_per_page=25,
        partial_row=partial_row,
        base_template=base_template,
        results_title="Unsolicitized Messages",
        paginator_template=paginator_template,
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='date',
        sort_ascending=False,
    )
Example #9
0
def view_responses(req, poll_id):
    poll = get_object_or_404(Poll, pk=poll_id)

    script_polls = \
        ScriptStep.objects.exclude(poll=None).values_list('poll',
                                                          flat=True)
    response_rates = {}
    if poll.pk in script_polls:
        responses = poll.responses.order_by('-date')
    else:
        if hasattr(Contact, 'groups'):
            responses = \
                poll.responses.filter(contact__groups__in=req.user.groups.all()).distinct()
        else:
            responses = poll.responses.all()
        responses = responses.order_by('-date')

        for group in req.user.groups.all():
            try:
                contact_count = \
                    poll.contacts.filter(groups__in=[group]).distinct().count()
                response_count = \
                    poll.responses.filter(contact__groups__in=[group]).distinct().count()
                response_rates[str(group.name)] = [contact_count]
                response_rates[str(group.name)].append(response_count)
                response_rates[str(group.name)].append(response_count
                                                       * 100.0 / contact_count)
            except ZeroDivisionError:
                response_rates.pop(group.name)
    typedef = Poll.TYPE_CHOICES[poll.type]
    # columns = [('Sender', False, 'sender', None)]
    # for (column, style_class, sortable, db_field, sorter) in \
    #     typedef['report_columns']:
    #     columns.append((column, sortable, db_field, sorter))
    columns = (
        ('Date', True, 'date', SimpleSorter()),
        ('Text', True, 'poll__question', SimpleSorter()),
        ('Category', True, 'categories', SimpleSorter())
    )

   

    return generic(
        req,
        model=Response,
        response_rates=response_rates,
        queryset=responses,
        objects_per_page=25,
        selectable=True,
        partial_base='ureport/partials/polls/poll_partial_base.html',
        base_template='ureport/responses_base.html',
        paginator_template='ureport/partials/new_pagination.html',
        paginator_func=ureport_paginate,
        row_base=typedef['view_template'],
        action_forms=[AssignToPollForm, AssignResponseGroupForm, ReplyTextForm,
                      DeleteSelectedForm],
        filter_forms=[SearchResponsesForm],
        columns=columns,
        partial_row='ureport/partials/polls/response_row.html',
    )
Example #10
0
def ureport_polls(request):
    access = get_access(request)
    columns = [('Name', True, 'name', SimpleSorter()),
               (
                   'Question',
                   True,
                   'question',
                   SimpleSorter(),
               ), (
                   'Start Date',
                   True,
                   'start_date',
                   SimpleSorter(),
               ), ('Closing Date', True, 'end_date', SimpleSorter()),
               ('', False, '', None)]
    queryset = get_polls(request=request)
    if access:
        queryset = queryset.filter(user=access.user)
    return generic(request,
                   model=Poll,
                   queryset=queryset,
                   objects_per_page=10,
                   selectable=False,
                   partial_row='ureport/partials/polls/poll_admin_row.html',
                   base_template='ureport/poll_admin_base.html',
                   paginator_template='ureport/partials/new_pagination.html',
                   results_title='Polls',
                   paginator_func=ureport_paginate,
                   sort_column='start_date',
                   sort_ascending=False,
                   columns=columns)
Example #11
0
def manage_reporters(request):
    columns = [('Name', True, 'mobile', SimpleSorter()),
               ('Parish', True, 'parish', SimpleSorter()),
               ('Subcounty', True, 'subcounty', SimpleSorter()),
               ('District', True, 'district', SimpleSorter()),
               ('Mobile', True, 'default_connection', SimpleSorter()),
               ('Active', True, 'active', SimpleSorter()),
               ('Submissions', False, '', ''),

    ]

    filter_forms = [FreeSearchForm, MultipleDistictFilterForm]
    action_forms = [DownloadForm, SendTextForm]


    return generic(
        request,
        model=Reporter,
        queryset=Reporter.objects.all(),
        filter_forms=filter_forms,
        action_forms=action_forms,
        objects_per_page=25,
        partial_row='ntds/partials/reporter_row.html',
        base_template='ntds/reporter_base.html',
        columns=columns,
        sort_column='pk',
        sort_ascending=False,
    )
Example #12
0
def mass_messages(request):
    access = get_access(request)
    columns = [(_('Message'), True, 'text', TupleSorter(0)),
               (_('Time'), True, 'date', TupleSorter(1)), (_('User'), True, 'user', TupleSorter(2)),
               (_('Recipients'), True, 'response', TupleSorter(3)),
               (_('Type'), True, 'type', TupleSorter(4))]

    queryset = get_mass_messages(request=request)
    if access:
        queryset = queryset.filter(user=access.user)
    return generic(
        request,
        model=MassText,
        queryset=queryset,
        objects_per_page=10,
        partial_row='contact/partials/mass_message_row.html',
        paginator_template='ureport/partials/new_pagination.html',
        paginator_func=ureport_paginate,
        base_template='ureport/contacts_base.html',
        sort_column='date',
        results_title="Mass Messages",
        sort_ascending=False,
        selectable=False,
        columns=columns
    )
Example #13
0
def view_submissions(req, form_id=None):
    if form_id == None:
        if req.method == 'POST':
            form_id = req.POST.get('form_id') if req.POST.get('form_id') else None

    xform = XForm.on_site.get(keyword = mcd_keywords[0]) if form_id == None\
         else XForm.on_site.get(pk=form_id)

    submissions = xform.submissions.all().order_by('-pk')
    fields = xform.fields.all().order_by('pk')

#    breadcrumbs = (('XForms', '/xforms/'), ('Submissions', ''))
    return generic(
      request = req,
      model = XFormSubmission,
      queryset = submissions,
      filter_forms = [XFormsForm],  # , FacilityFilterForm,
      objects_per_page = 25,
      partial_row = 'mcdtrac/submissions/partials/submission_row.html',
      partial_header = 'mcdtrac/submissions/partials/submission_header.html',
      base_template = 'mcdtrac/submissions_base.html',
#      base_template = 'cvs/messages_base.html',
      results_title = 'Submissions for %s' % xform.name,
      columns = [('Name', True, 'name', None)],
      sort_column = 'last_reporting_date',
      sort_ascending = False,
      fields = fields,
      selectable = False,
      submissions = submissions,
      xform = xform,
            )
def flagged_messages(request):
    all_flags = Flag.objects.all()
    if request.GET.get('export', None):
        flaggedmessages = MessageFlag.objects.exclude(flag=None)
        data = flaggedmessages.values_list('message__connection_id', 'message__text', 'flag__name', 'message__date',
                                           'message__connection__contact__reporting_location__name')
        headers = ['Identifier', 'Message', 'Flag', 'Date', 'District']
        return ExcelResponse(data=data, headers=headers)
    return generic(
        request,
        model=MessageFlag,
        queryset=get_flagged_messages,
        objects_per_page=10,
        results_title='Flagged Messages',
        selectable=False,
        partial_row='ureport/partials/messages/flagged_message_row.html'
        ,
        base_template='ureport/flagged_message_base.html',
        columns=[(_('Identifier'), True, 'message__connection_id', SimpleSorter()),
                 (_('Message'), True, 'message__text', SimpleSorter()),
                 (_('Date'), True, 'message__date', SimpleSorter()),
                 (_('Flags'), False, 'message__flagged', None)],
        sort_column='date',
        sort_ascending=False,
        all_flags=all_flags,
    )
def autoreg_messages(request):
    access = get_access(request)
    filter_forms = [SearchInMessagesForm, DistictFilterMessageForm]
    action_forms = [ReplyTextForm, BlacklistForm2]
    partial_row = 'ureport/partials/messages/message_row.html'
    base_template = 'ureport/contact_message_base.html'
    paginator_template = 'ureport/partials/new_pagination.html'
    columns = [('Text', True, 'text', SimpleSorter()),
               ('Identifier', True, 'connection__pk', SimpleSorter()),
               ('Date', True, 'date', SimpleSorter()),
               ('Type', True, 'application', SimpleSorter()),
               ('Response', False, 'response', None)]

    queryset = get_autoreg_messages(request=request)
    if access:
        queryset = queryset.filter(
            connection__contact__groups__in=access.groups.all())
    return generic(
        request,
        model=Message,
        queryset=queryset,
        filter_forms=filter_forms,
        action_forms=action_forms,
        objects_per_page=25,
        partial_row=partial_row,
        results_title="Autoreg Messages",
        base_template=base_template,
        paginator_template=paginator_template,
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='date',
        sort_ascending=False,
    )
Example #16
0
def htattendance(request, start_date=None, end_date=None, district_id=None):
    user_location = get_location(request, district_id)
    dates = get_xform_dates(request)
        
    smc_htpresent = Poll.objects.get(name='emis_absence').responses.exclude(has_errors=True)\
                            .filter(date__range=(dates.get('start'), dates.get('end')))\
                            .filter(message__connection__contact__emisreporter__reporting_location__in=user_location.get_descendants(include_self=True).all())\
                            .order_by('message__date')
   
    return generic(request,
      model = Poll,
      queryset = smc_htpresent,
      objects_per_page = 50,
      results_title = 'Head Teacher Presence as Reported by SMCs',
#      top_columns = [
#            ('', 1, None),
#            ('head teacher attendance (reported by SMCs)', 2, None),
#            ('head teacher attendance (reported by GEM)', 2, None),
#        ],
      columns = [
            ('school', False, 'school', None),
            ('present', False, 'present', None),
            ('reporting date', False, 'date', None),
#            ('present', False, 'present', None),
#            ('reporting date', False, 'date', None),
        ],
    partial_row = 'education/partials/ht_attendance_row.html',
    partial_header = 'education/partials/partial_header.html',
    base_template = 'education/timeslider_base.html',
    needs_date = True,
    selectable = False,
    dates = get_xform_dates,
    )
Example #17
0
def ureport_polls(request, pk):
    access = get_access(request)
    columns = [(_('Name'), True, 'name', SimpleSorter()),
               (_('Question'), True, 'question', SimpleSorter(),),
               (_('Start Date'), True, 'start_date', SimpleSorter(),),
               (_('Closing Date'), True, 'end_date', SimpleSorter()),
               ('', False, '', None)]
    queryset = get_polls(request=request)
    if access:
        queryset = queryset.filter(user=access.user)
    return generic(request,
                   model=Poll,
                   queryset=queryset,
                   objects_per_page=10,
                   selectable=False,
                   partial_row='ureport/partials/polls/poll_admin_row.html',
                   base_template='ureport/poll_admin_base.html',
                   paginator_template='ureport/partials/new_pagination.html',
                   results_title='Polls',
                   paginator_func=ureport_paginate,
                   sort_column='start_date',
                   sort_ascending=False,
                   filter_forms=[SearchPollsForm],
                   columns=columns
    )
Example #18
0
def reports(request):

    columns = [
        ('Name', True, 'title', SimpleSorter()),
        ('Parish', True, 'decription', SimpleSorter()),
        ('Mobile', True, 'questions__name', SimpleSorter()),
        ('Status', True, 'enabled', SimpleSorter()),
        ('Submissions', False, '', ''),
        ('Last Submission', False, '', ''),
    ]

    filter_forms = [FreeSearchForm, MultipleDistictFilterForm]
    action_forms = [DownloadForm, SendTextForm]

    return generic(
        request,
        model=Reporter,
        queryset=Reporter.objects.all(),
        filter_forms=filter_forms,
        action_forms=action_forms,
        objects_per_page=25,
        partial_row='ntds/partials/report_row.html',
        base_template='ntds/report_base.html',
        columns=columns,
        sort_column='pk',
        sort_ascending=False,
    )
Example #19
0
def view_messages(request):
    context = {}

    columns = [
        ('Name', True, 'title', SimpleSorter()),
        ('Parish', True, 'decription', SimpleSorter()),
        ('Mobile', True, 'questions__name', SimpleSorter()),
        ('Status', True, 'enabled', SimpleSorter()),
        ('Submissions', False, '', ''),
        ('Last Submission', False, '', ''),
    ]

    messages = Message.objects.filter(connection__pk__in=Reporter.objects.
                                      values("connection")).order_by("-pk")

    return generic(request,
                   model=Message,
                   queryset=Reporter.objects.all(),
                   filter_forms=[],
                   action_forms=[],
                   objects_per_page=25,
                   partial_row='ntds/partials/reporter_row.html',
                   base_template='ntds/reporter_base.html',
                   columns=columns,
                   sort_column='pk',
                   sort_ascending=False,
                   current='survey')
def flagged_messages(request):
    all_flags = Flag.objects.all()
    if request.GET.get('export', None):
        flaggedmessages = MessageFlag.objects.exclude(flag=None)
        data = flaggedmessages.values_list(
            'message__connection_id', 'message__text', 'flag__name',
            'message__date',
            'message__connection__contact__reporting_location__name')
        headers = ['Identifier', 'Message', 'Flag', 'Date', 'District']
        return ExcelResponse(data=data, headers=headers)
    return generic(
        request,
        model=MessageFlag,
        queryset=get_flagged_messages,
        objects_per_page=10,
        results_title='Flagged Messages',
        selectable=False,
        partial_row='ureport/partials/messages/flagged_message_row.html',
        base_template='ureport/flagged_message_base.html',
        columns=[('Identifier', True, 'message__connection_id',
                  SimpleSorter()),
                 ('Message', True, 'message__text', SimpleSorter()),
                 ('Date', True, 'message__date', SimpleSorter()),
                 ('Flags', False, 'message__flagged', None)],
        sort_column='date',
        sort_ascending=False,
        all_flags=all_flags,
    )
Example #21
0
def view_autoreg_rules(request):
    columns = [(
        'Group',
        True,
        'group__name',
        SimpleSorter(),
    ), (
        'Rule',
        True,
        'rule',
        SimpleSorter(),
    ), (
        'Words',
        True,
        'values',
        SimpleSorter(),
    ), (
        'Closed',
        True,
        'closed',
        SimpleSorter(),
    ), ('', False, '', None)]
    qs = AutoregGroupRules.objects.all()
    return generic(
        request,
        model=AutoregGroupRules,
        queryset=qs,
        objects_per_page=20,
        results_title='Group Rules',
        selectable=False,
        partial_row='ureport/partials/group_row.html',
        base_template='ureport/group_base.html',
        columns=columns,
    )
def flag_categories(request, name):
    group = get_object_or_404(Group, name=name)
    if get_access(request) and request.user not in group.user_set.all():
        return render(request, '403.html', status=403)
    access = group.access_set.all()[0]
    flags = access.flags.all()
    flagged_messages = MessageFlag.objects.filter(flag__in=flags,
                                                  message__connection__contact__reporting_location__name__in=access.allowed_locations)
    if request.GET.get('export', None):
        data = flagged_messages.filter(
            message__connection__contact__reporting_location__name__in=access.allowed_locations).values_list(
            'message__connection_id', 'message__text', 'flag__name', 'message__date',
            'message__connection__contact__reporting_location__name')
        headers = ['Identifier', 'Message', 'Flag', 'Date', 'District']
        return ExcelResponse(data=data, headers=headers)
    return generic(
        request,
        model=MessageFlag,
        queryset=flagged_messages,
        objects_per_page=10,
        results_title='Flagged Messages',
        selectable=False,
        partial_row='ureport/partials/messages/flagged_message_row.html'
        ,
        base_template='ureport/flagged_message_base.html',
        columns=[('Identifier', True, 'message__connection_id', SimpleSorter()),
                 ('Message', True, 'message__text', SimpleSorter()),
                 ('Date', True, 'message__date', SimpleSorter()),
                 ('Flags', False, 'message__flagged', None)],
        sort_column='date',
        sort_ascending=False,
        all_flags=flags,
        go_to_dashboards=True
    )
def cloud_dashboard(request, name):
    name = name.replace("_", " ")
    category = get_object_or_404(IbmCategory, name__iexact=name)
    tags = get_category_tags(category=category)
    columns = [('Identifier', True, 'message__connection_id', SimpleSorter()),
               ('Text', True, 'msg__text', SimpleSorter()),
               ('Date', True, 'msg__date', SimpleSorter()),
               ('Score', True, 'score', SimpleSorter()),
               ('Category', True, 'category', SimpleSorter(),),
               ('Action', True, 'action', SimpleSorter(),),
               ('Rating', False, '', None)]

    return generic(
        request,
        model=IbmMsgCategory,
        queryset=IbmMsgCategory.objects.filter(category=category, msg__direction='I', score__gte=0.5),
        objects_per_page=20,
        results_title='Classified Messages',
        partial_row='message_classifier/message_row.html',
        base_template='message_classifier/message_classifier_cloud_base.html',
        paginator_template='ureport/partials/new_pagination.html',
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='msg__date',
        sort_ascending=False,
        tags=tags,
        ibm_categories=IbmCategory.objects.all()
    )
Example #24
0
def view_responses(req, poll_id):
    poll = get_object_or_404(Poll, pk=poll_id)
    responses = poll.responses.all()
    responses = responses.order_by('-date')
    response_rates = {}
    for group in req.user.groups.all():
        try:
            contact_count = poll.contacts.filter(groups__in=[group]).distinct().count()
            response_count = poll.responses.filter(contact__groups__in=[group]).distinct().count()
            response_rates[str(group.name)] = [contact_count]
            response_rates[str(group.name)].append(response_count)
            response_rates[str(group.name)].append(response_count * 100.0 / contact_count)

        except(ZeroDivisionError):
            response_rates.pop(group.name)
    typedef = Poll.TYPE_CHOICES[poll.type]
    columns = [('Sender', False, 'sender', None)]
    for column, style_class in typedef['report_columns']:
        columns.append((column, False, style_class, None))

    return generic(req,
        model=Response,
        response_rates=response_rates,
        queryset=responses,
        objects_per_page=25,
        selectable=True,
        partial_base='kenya/partials/poll_partial_base.html',
        base_template='kenya/responses_base.html',
        row_base=typedef['view_template'],
        action_forms=[AssignToPollForm],
        filter_forms=[SearchResponsesForm],
        columns=columns,
        partial_row='ureport/partials/polls/response_row.html'
    )
Example #25
0
def view_submissions(req, form_id):
    xform = XForm.on_site.get(pk=form_id)

    submissions = xform.submissions.all().order_by('-pk')
    fields = xform.fields.all().order_by('pk')

    breadcrumbs = (('XForms', '/xforms/'), ('Submissions', ''))
    columns = [('Type', False, 'type', None), ('Date', True, 'created', SimpleSorter())]
    for field in fields:
        columns.append((field.name.capitalize(), True, field.slug, SubmissionValueSorter()))

    return generic(req,
        model=XFormSubmission,
        queryset=xform.submissions.all(),
        sort_column='created',
        sort_ascending=False,
        objects_per_page=25,
        selectable=False,
        results_title=' %s Submissions' % xform.name.capitalize(),
        base_template='cvs/submissions_base.html',
        columns=columns,
        fields=fields,
        form=xform,
        partial_row='cvs/partials/submission_row.html',
    )
def comfirmmessages(request, key):
    messages = Message.objects.filter(
        details__attribute__name=key).order_by('-date')
    partial_row = 'ureport/partials/messages/message_row.html'
    base_template = 'ureport/comfirmbase.html'
    paginator_template = 'ureport/partials/new_pagination.html'
    columns = [('Text', True, 'text', SimpleSorter()),
               ('Date', True, 'date', SimpleSorter())]

    if request.method == "POST":
        res = dict(request.POST)['results']
        messages = Message.objects.filter(pk__in=res).update(status="Q")
        return HttpResponseRedirect("/reporter/")

    return generic(
        request,
        model=Message,
        queryset=messages,
        objects_per_page=25,
        partial_row=partial_row,
        base_template=base_template,
        results_title="Messages To be Sent. Please Comfirm to sent .",
        paginator_template=paginator_template,
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='date',
        key=key,
        sort_ascending=False,
    )
def flag_categories(request, name):
    group = get_object_or_404(Group, name=name)
    if get_access(request) and request.user not in group.user_set.all():
        return render(request, '403.html', status=403)
    access = group.access_set.all()[0]
    flags = access.flags.all()
    flagged_messages = MessageFlag.objects.filter(flag__in=flags,
                                                  message__connection__contact__reporting_location__name__in=access.allowed_locations)
    if request.GET.get('export', None):
        data = flagged_messages.filter(
            message__connection__contact__reporting_location__name__in=access.allowed_locations).values_list(
            'message__connection_id', 'message__text', 'flag__name', 'message__date',
            'message__connection__contact__reporting_location__name')
        headers = ['Identifier', 'Message', 'Flag', 'Date', 'District']
        return ExcelResponse(data=data, headers=headers)
    return generic(
        request,
        model=MessageFlag,
        queryset=flagged_messages,
        objects_per_page=10,
        results_title='Flagged Messages',
        selectable=False,
        partial_row='ureport/partials/messages/flagged_message_row.html'
        ,
        base_template='ureport/flagged_message_base.html',
        columns=[('Identifier', True, 'message__connection_id', SimpleSorter()),
                 ('Message', True, 'message__text', SimpleSorter()),
                 ('Date', True, 'message__date', SimpleSorter()),
                 ('Flags', False, 'message__flagged', None)],
        sort_column='date',
        sort_ascending=False,
        all_flags=flags,
        go_to_dashboards=True
    )
def autoreg_messages(request):
    access = get_access(request)
    filter_forms = [FreeSearchTextForm, DistictFilterMessageForm]
    action_forms = [ReplyTextForm, BlacklistForm2]
    partial_row = 'ureport/partials/messages/message_row.html'
    base_template = 'ureport/contact_message_base.html'
    paginator_template = 'ureport/partials/new_pagination.html'
    columns = [(_('Text'), True, 'text', SimpleSorter()),
               (_('Identifier'), True, 'connection__pk', SimpleSorter()),
               (_('Date'), True, 'date',
                SimpleSorter()), (_('Type'), True, 'application',
                                  SimpleSorter()), (_('Response'), False, 'response', None)]

    queryset = get_autoreg_messages(request=request)
    if access:
        queryset = queryset.filter(connection__contact__groups__in=access.groups.all())
    return generic(
        request,
        model=Message,
        queryset=queryset,
        filter_forms=filter_forms,
        action_forms=action_forms,
        objects_per_page=25,
        partial_row=partial_row,
        results_title="Autoreg Messages",
        base_template=base_template,
        paginator_template=paginator_template,
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='date',
        sort_ascending=False,
    )
Example #29
0
def manage_reporters(request):
    queryset = Reporter.objects.all(),

    columns = [
        ('Name', True, 'title', SimpleSorter()),
        ('Parish', True, 'decription', SimpleSorter()),
        ('Subcounty', True, 'decription', SimpleSorter()),
        ('District', True, 'decription', SimpleSorter()),
        ('Mobile', True, 'questions__name', SimpleSorter()),
        ('Status', True, 'enabled', SimpleSorter()),
        ('Submissions', False, '', ''),
    ]

    filter_forms = [FreeSearchForm, MultipleDistictFilterForm]
    action_forms = [DownloadForm, SendTextForm]

    if not request.POST.get("page_num") and request.method == "POST":
        return ExcelResponse(queryset)
    return generic(
        request,
        model=Reporter,
        queryset=queryset,
        filter_forms=filter_forms,
        action_forms=action_forms,
        objects_per_page=25,
        partial_row='ntds/partials/reporter_row.html',
        base_template='ntds/reporter_base.html',
        columns=columns,
        sort_column='pk',
        sort_ascending=False,
    )
Example #30
0
def gem_htattendance(request, start_date=None, end_date=None, district_id=None):
    user_location = get_location(request, district_id)
    dates = get_xform_dates(request)
        
    gem_htpresent = XFormSubmission.objects.filter(xform__keyword='gemteachers').exclude(has_errors=True)\
                    .filter(created__range=(dates.get('start'), dates.get('end')))\
                    .filter(connection__contact__emisreporter__reporting_location__in=user_location.get_descendants(include_self=True).all())\
                    .order_by('created')

    return generic(request,
      model = XFormSubmission,
      queryset = gem_htpresent,
      objects_per_page = 50,
      results_title = 'Head Teacher Presence as Reported by GEM',
      columns = [
            ('school', False, 'school', None),
            ('present', False, 'present', None),
            ('reporting date', False, 'date', None),
        ],
    partial_row = 'education/partials/gemht_attendance_row.html',
    partial_header = 'education/partials/partial_header.html',
    base_template = 'education/timeslider_base.html',
    needs_date = True,
    selectable = False,
    dates = get_xform_dates,
    )
Example #31
0
def meals(request, district_id=None):
    user_location = get_location(request, district_id)
    dates = get_xform_dates(request)
        
    meals = Poll.objects.get(name='emis_meals').responses.exclude(has_errors=True)\
                            .filter(date__range=(dates.get('start'), dates.get('end')))\
                            .filter(message__connection__contact__emisreporter__reporting_location__in=user_location.get_descendants(include_self=True).all())

    return generic(request,
      model = Poll,
      queryset = meals,
      objects_per_page = 50,
      results_title = 'Pupils who had Meals at School',
      columns = [
            ('school', False, 'school', None),
            ('estimated number', False, 'number', None),
            ('reporting date', False, 'date', None),
        ],
    partial_row = 'education/partials/meals_row.html',
    partial_header = 'education/partials/partial_header.html',
    base_template = 'education/timeslider_base.html',
    needs_date = True,
    selectable = False,
    dates = get_xform_dates,
    )
Example #32
0
def view_flagged_with(request, pk):
    flag = get_object_or_404(Flag, pk=pk)
    access = get_access(request)
    if access and not flag in access.flags.all():
        return render(request, '403.html', status=403)
    messages = flag.get_messages()
    if request.GET.get('export', None):
        export_data = messages.values_list('text', 'connection_id', 'date',
                                           'connection__contact__reporting_location__name')
        headers = ['Message', 'Identifier', 'Date', 'District']
        return ExcelResponse(data=export_data, headers=headers)
    return generic(
        request,
        model=Message,
        queryset=messages,
        objects_per_page=25,
        partial_row='ureport/partials/contacts/contacts_row_flag.html',
        base_template='ureport/view_flagged_with_base.html',
        results_title='Messages Flagged With %s' % flag.name,
        columns=[('Message', True, 'text', SimpleSorter()),
                 ('Identifier', True, 'connection_id', SimpleSorter()),
                 ('Date', True, 'date', SimpleSorter()),
                 ('Type', True, 'application', SimpleSorter())],
        sort_column='date',
        sort_ascending=False,
    )
def comfirmmessages(request, key):
    messages = Message.objects.filter(details__attribute__name=key).order_by('-date')
    partial_row = 'ureport/partials/messages/message_row.html'
    base_template = 'ureport/comfirmbase.html'
    paginator_template = 'ureport/partials/new_pagination.html'
    columns = [('Text', True, 'text', SimpleSorter()),
               ('Date', True, 'date', SimpleSorter())]

    if request.method == "POST":
        res = dict(request.POST)['results']
        messages = Message.objects.filter(pk__in=res).update(status="Q")
        return HttpResponseRedirect("/reporter/")

    return generic(
        request,
        model=Message,
        queryset=messages,
        objects_per_page=25,
        partial_row=partial_row,
        base_template=base_template,
        results_title="Messages To be Sent. Please Comfirm to sent .",
        paginator_template=paginator_template,
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='date',
        key=key,
        sort_ascending=False,
    )
Example #34
0
def view_responses(req, poll_id):
    poll = get_object_or_404(Poll, pk=poll_id)
    access = get_access(req)
    if access and not poll.user == access.user:
        return render(req, '403.html', status=403)

    script_polls = \
        ScriptStep.objects.exclude(poll=None).values_list('poll',
                                                          flat=True)
    response_rates = {}
    if poll.pk in script_polls:
        responses = poll.responses.order_by('-date')
        log.info("[reponses] 1 - %s " % responses)
    else:
        responses = poll.responses.all()
        responses = responses.order_by('-date')
        log.info("[reponses] 3 - %s " % responses)
        for group in req.user.groups.all():
            try:
                contact_count = \
                    poll.contacts.filter(groups__in=[group]).distinct().count()
                response_count = \
                    poll.responses.filter(contact__groups__in=[group]).distinct().count()
                response_rates[str(group.name)] = [contact_count]
                response_rates[str(group.name)].append(response_count)
                response_rates[str(group.name)].append(response_count * 100.0 /
                                                       contact_count)
            except ZeroDivisionError:
                response_rates.pop(group.name)
    typedef = Poll.TYPE_CHOICES[poll.type]
    # columns = [('Sender', False, 'sender', None)]
    # for (column, style_class, sortable, db_field, sorter) in \
    #     typedef['report_columns']:
    #     columns.append((column, sortable, db_field, sorter))
    columns = ((_('Date'), True, 'date', SimpleSorter()),
               (_('Text'), True, 'poll__question', SimpleSorter()),
               (_('Category'), True, 'categories__category', SimpleSorter()))

    return generic(
        req,
        model=Response,
        response_rates=response_rates,
        queryset=responses,
        objects_per_page=25,
        selectable=True,
        partial_base='ureport/partials/polls/poll_partial_base.html',
        base_template='ureport/responses_base.html',
        paginator_template='ureport/partials/new_pagination.html',
        paginator_func=ureport_paginate,
        row_base=typedef['view_template'],
        action_forms=[
            AssignToPollForm, AssignResponseGroupForm, ReplyTextForm,
            DeleteSelectedForm
        ],
        filter_forms=[SearchResponsesForm],
        columns=columns,
        partial_row='ureport/partials/polls/response_row.html',
        poll_id=poll_id,
    )
Example #35
0
def alerts_detail(request, alert, district_id=None):
    user_location = get_location(request, district_id)
    schools_queryset = School.objects.filter(location__in=user_location.get_descendants(include_self=True).all())
    start_date = datetime.datetime(datetime.datetime.now().year, 1, 1)
    end_date = datetime.datetime.now()
    if int(alert) == 1:
        results_title = "Schools which didn't send in Pupil Attendance Data this Week"
        start_date, end_date = previous_calendar_week()
        responsive_schools = XFormSubmissionValue.objects.all()\
                            .filter(Q(submission__xform__keyword__icontains='boys')|Q(submission__xform__keyword__icontains='girls'))\
                            .filter(created__range=(start_date, end_date))\
                            .filter(submission__connection__contact__emisreporter__schools__location__in=user_location.get_descendants(include_self=True).all())\
                            .values_list('submission__connection__contact__emisreporter__schools__name', flat=True)
        schools_queryset = schools_queryset.exclude(name__in=responsive_schools)
        
    if int(alert) == 2:
        print 2
        results_title = "Schools which have not sent in Pupil Enrollment Data this Year"
        responsive_schools = XFormSubmissionValue.objects.all()\
                            .filter(Q(submission__xform__keyword__icontains='enrolledb')|Q(submission__xform__keyword__icontains='enrolledg'))\
                            .filter(created__range=(start_date, end_date))\
                            .filter(submission__connection__contact__emisreporter__schools__location__in=user_location.get_descendants(include_self=True).all())\
                            .values_list('submission__connection__contact__emisreporter__schools__name', flat=True)
        schools_queryset = schools_queryset.exclude(name__in=responsive_schools)
        
    if int(alert) == 3:
        results_title = "Schools which have not sent in Teacher Deployment Data this Year"
        responsive_schools = XFormSubmissionValue.objects.all()\
                        .filter(submission__xform__keyword__icontains='deploy')\
                        .filter(created__range=(start_date, end_date))\
                        .filter(submission__connection__contact__emisreporter__schools__location__in=user_location.get_descendants(include_self=True).all())\
                        .values_list('submission__connection__contact__emisreporter__schools__name', flat=True)
        schools_queryset = schools_queryset.exclude(name__in=responsive_schools)
                            
    return generic(request,
      model = School,
      queryset = schools_queryset,
      filter_forms = [FreeSearchSchoolsForm, SchoolDistictFilterForm],
      action_forms = [SchoolMassTextForm],
      objects_per_page = 25,
      results_title = results_title,
      partial_row = 'education/partials/alerts_row.html',
      partial_header = 'education/partials/partial_header.html',
      base_template = 'education/schools_base.html',
      columns = [('Name', True, 'name', SimpleSorter()),
                 ('District', True, 'location__name', None,),
                 ('Head Teacher', False, 'emisreporter', None,),
                 ('Reporters', False, 'emisreporter', None,),
                 ('Last Report Date ', True, 'report_date', None,)
                 ],
      sort_column = 'date',
      sort_ascending = False,
      alert = alert,
    )
def ureporters(request):
    access = get_access(request)
    download_form = DownloadForm(request.POST or None)
    if request.POST and request.POST.get('download', None):
        if download_form.is_valid():
            download_form.export(request, request.session['queryset'], 'autoreg_join_date')
        else:
            return HttpResponse("Some thing went wrong")

    columns = [
        (_('Identifier'), True, 'connection_pk', SimpleSorter()),
        (_('Age'), True, 'age', SimpleSorter(),),
        (_('Gender'), True, 'gender', SimpleSorter(),),
        (_('Language'), True, 'language', SimpleSorter(),),
        (_('District'), True, 'district', SimpleSorter(),),
        (_('Group(s)'), True, 'group', SimpleSorter(),),
        (_('Questions '), True, 'questions', SimpleSorter(),),
        (_('Responses '), True, 'responses', SimpleSorter(),),
        (_('Messages Sent'), True, 'incoming', SimpleSorter(),),
        (_('caregiver'), True, 'is_caregiver', SimpleSorter(),),
        (_('join date'), True, 'autoreg_join_date', SimpleSorter(),),
        (_('quit date'), True, 'quit_date', SimpleSorter(),),
    ]

    if request.user.is_staff:
        columns.insert(1, ('Phone', True, 'mobile', SimpleSorter()))

    queryset = get_contacts2(request=request)
    if access is not None:
        groups = list(access.groups.values_list('name', flat=True))
        if len(groups) > 0:
            qset = Q(group__icontains=groups[0])
        if len(groups) > 1:
            for group in groups[1:]:
                qset = qset | Q(group__icontains=group)
        queryset = queryset.filter(qset)
    return generic(request,
                   model=UreportContact,
                   queryset=queryset,
                   download_form=download_form,
                   results_title= _('uReporters'),
                   filter_forms=[UreporterSearchForm, GenderFilterForm, AgeFilterForm, MultipleDistictFilterForm,
                                 FilterGroupsForm],
                   action_forms=[MassTextForm, AssignGroupForm, BlacklistForm, AssignToNewPollForm, RemoveGroupForm,
                                 TemplateMessage],
                   objects_per_page=25,
                   partial_row='ureport/partials/contacts/contacts_row.html',
                   base_template='ureport/ureporters_base.html',
                   paginator_template='ureport/partials/new_pagination.html',
                   paginator_func=ureport_paginate,
                   columns=columns,

    )
def view_autoreg_rules(request):
    columns = [('Group', True, 'group__name', SimpleSorter(),),('Rule', True, 'rule', SimpleSorter(),),('Words', True, 'words', SimpleSorter(),)]
    qs=AutoregGroupRules.objects.all()
    return generic(
        request,
        model=AutoregGroupRules,
        queryset=qs,   
        objects_per_page=20,
        results_title='Group Rules',
        selectable=False,
        partial_row='ureport/partials/group_row.html',
        base_template='ureport/group_base.html',
        columns=columns,
        
    )
Example #38
0
def patients(request):
    from generic.views import generic
    from generic.sorters import SimpleSorter

    filter_forms = [SearchPatientsForm, AgeFilterForm]
    action_forms = [DownloadForm, SendTextForm, SendEmailForm]
    if not request.user.is_superuser or not request.user.is_staff:
        country = request.user.get_profile().country
        title = "Patient Listing For %s" % (" ".join(
            country.values_list("name", flat=True)))
        patients = Patient.objects.filter(
            mission__country__in=country.values("pk")).prefetch_related(
                "phase1", "phase2", "phase3", "mission")
        filter_forms.append(SiteFilterForm)
    else:
        title = "All Patients"
        patients = Patient.objects.all().prefetch_related(
            "phase1", "phase2", "phase3", "mission")
        filter_forms.append(CountryFilterForm)
    partial_row = 'mission/partials/patient_row.html'
    base_template = 'mission/partials/patients_base.html'
    paginator_template = 'mission/partials/pagination.html'
    columns = [('Name', True, 'first_name', SimpleSorter()),
               ('Age', True, 'age', SimpleSorter()),
               ('Gender', True, 'gender', SimpleSorter()),
               ('Country', True, 'mission__country__name', SimpleSorter()),
               ('Mobile', True, 'mobile', SimpleSorter()),
               ('Email', True, 'email', SimpleSorter()),
               ('User', True, 'user', SimpleSorter()),
               ('Actions', False, '', '')]
    return generic(
        request,
        model=Patient,
        queryset=patients,
        filter_forms=filter_forms,
        action_forms=action_forms,
        objects_per_page=25,
        partial_row=partial_row,
        results_title="Patients",
        title=title,
        base_template=base_template,
        paginator_template=paginator_template,
        paginator_func=paginate,
        columns=columns,
        sort_column='pk',
        show_unfiltered=False,
        sort_ascending=False,
    )
def message_classification(request):
    queryset = IbmMsgCategory.objects.filter(msg__direction='I', score__gte=0.1)
    filter_forms = [ChooseCategoryForm, ChooseActionForm]
    FILTER_REQUEST_KEY = "%s_filter_request" % request.path
    if request.method == "POST" and 'startdate' in request.POST:
        filter_request_post = request.session.setdefault(FILTER_REQUEST_KEY, None)
        if filter_request_post:
            for form_class in filter_forms:
                form_instance = form_class(filter_request_post, request=request)
                if form_instance.is_valid():
                    queryset = form_instance.filter(request, queryset)
        queue_form = QueueForm(request.POST)
        if queue_form.is_valid():
            queue_form.queue_export(request.user.username, request.get_host(), queryset)
            return HttpResponse("All is good... You will receive an email when export is ready")

    msg_form = QueueForm()
    action_form = NewActionForm

    columns = [(_('Identifier'), True, 'message__connection_id', SimpleSorter()),
               (_('Text'), True, 'msg__text', SimpleSorter()),
               (_('Date'), True, 'msg__date', SimpleSorter()),
               (_('Score'), True, 'score', SimpleSorter()),
               (_('Category'), True, 'category', SimpleSorter(),),
               (_('Action'), True, 'action', SimpleSorter(),),
               (_('Rating'), False, '', None)]

    return generic(
        request,
        model=IbmMsgCategory,
        queryset=queryset,
        objects_per_page=20,
        results_title='Classified Messages',
        partial_row='message_classifier/message_row.html',
        base_template='message_classifier/message_classifier_base.html',
        paginator_template='ureport/partials/new_pagination.html',
        paginator_func=ureport_paginate,
        columns=columns,
        sort_column='score',
        sort_ascending=False,
        msg_form=msg_form,
        action_form=action_form,
        ibm_actions=IbmAction.objects.all(),
        filter_forms=filter_forms,
        action_forms=[PushToMtracForm, QueueAllForm, AssignActionForm]
    )
Example #40
0
def view_submissions(request, xform_pk):
    xform = get_object_or_404(XForm, pk=xform_pk)
    return generic(\
        request, \
        model=XFormSubmission, \
        queryset=xform.submissions.all().order_by('-created'), \
        objects_per_page=25, \
        base_template='kit/submissions_base.html', \
        partial_row='kit/partials/reports/submission_row.html', \
        results_title='Last Reporting Period Results', \
        columns=[('Reporter', True, 'message__connection__contact__name', SimpleSorter(),), \
                 ('Location', True, 'message__connection__contact__reporting_location__name', SimpleSorter(),), \
                 ('Report', True, 'raw', SimpleSorter(),), \
                 ('Date', True, 'created', SimpleSorter(),), \
                 ('Approved', True, 'approved', SimpleSorter(),), \
                 ('', False, '', None,)], \
        sort_column='message__connection__contact__healthproviderbase__healthprovider__facility__name', \
    )
Example #41
0
def view_submissions(request, xform_pk):
    xform = get_object_or_404(XForm, pk=xform_pk)
    return generic(\
        request, \
        model=XFormSubmission, \
        queryset=xform.submissions.all().order_by('-created'), \
        objects_per_page=25, \
        base_template='kit/submissions_base.html', \
        partial_row='kit/partials/reports/submission_row.html', \
        results_title='Last Reporting Period Results', \
        columns=[('Reporter', True, 'message__connection__contact__name', SimpleSorter(),), \
                 ('Location', True, 'message__connection__contact__reporting_location__name', SimpleSorter(),), \
                 ('Report', True, 'raw', SimpleSorter(),), \
                 ('Date', True, 'created', SimpleSorter(),), \
                 ('Approved', True, 'approved', SimpleSorter(),), \
                 ('', False, '', None,)], \
        sort_column='message__connection__contact__healthproviderbase__healthprovider__facility__name', \
    )
Example #42
0
def ureport_polls(request):
    columns = [('Name', True, 'name', SimpleSorter()),
               ('Question', True, 'question', SimpleSorter(),),
               ('Start Date', True, 'start_date', SimpleSorter(),),
               ('Closing Date', True, 'end_date', SimpleSorter()),
               ('', False, '', None)]
    return generic(request,
                   model=Poll,
                   queryset=get_polls,
                   objects_per_page=10,
                   selectable=False,
                   partial_row='ureport/partials/polls/poll_admin_row.html',
                   base_template='ureport/poll_admin_base.html',
                   paginator_template='ureport/partials/new_pagination.html',
                   results_title='Polls',
                   paginator_func=ureport_paginate,
                   sort_column='start_date',
                   sort_ascending=False,
    )
Example #43
0
def poll_dashboard(request):
    columns = [
        (_('Name'), True, 'name', SimpleSorter()),
        (
            _('Question'),
            True,
            'question',
            SimpleSorter(),
        ),
        (
            _('Start Date'),
            True,
            'start_date',
            SimpleSorter(),
        ),
        (
            _('# Participants'),
            False,
            'participants',
            None,
        ),
        (
            _('Visuals'),
            False,
            'visuals',
            None,
        ),
    ]
    return generic(request,
                   model=Poll,
                   queryset=get_polls,
                   results_title='Polls',
                   objects_per_page=10,
                   partial_row='ureport/partials/dashboard/poll_row.html',
                   partial_header=
                   'ureport/partials/dashboard/partial_header_dashboard.html',
                   base_template='ureport/dashboard.html',
                   paginator_template='ureport/partials/new_pagination.html',
                   paginator_func=ureport_paginate,
                   selectable=False,
                   sort_column='start_date',
                   columns=columns)
Example #44
0
def get_facility_reports(request, facility_pk=0):
    reports = XFormSubmissionExtras.objects.filter(facility=facility_pk).\
    exclude(submission__has_errors=True).order_by('-cdate')
    facility = reports[0].facility.name if reports else ''
    return generic(
                   request=request,
                   model=XFormSubmissionExtras,
                   queryset=reports,
                   objects_per_page=25,
                   partial_row='cvs/facility/partials/facility_report_row.html',
                   paginator_template='cvs/partials/new_pagination.html',
                   partial_header='cvs/facility/partials/facility_report_header.html',
                   base_template='cvs/facility/facility_base.html',
                   # columns=[('Text', 'Reporter', 'Date', '')],
                   results_title='%s Reports' % facility,
                   sort_column='cdate',
                   selectable=False,
                   paginator_func=mtrac_paginate,
                   sort_ascending=False
            )
Example #45
0
def poll_dashboard(request):
    columns = [('Name', True, 'name', SimpleSorter()),
               ('Question', True, 'question', SimpleSorter(),),
               ('Start Date', True, 'start_date', SimpleSorter(),),
               ('# Participants', False, 'participants', None,),
               ('Visuals', False, 'visuals', None,),
    ]
    return generic(request,
                   model=Poll,
                   queryset=get_polls,
                   results_title='Polls',
                   objects_per_page=10,
                   partial_row='ureport/partials/dashboard/poll_row.html',
                   partial_header='ureport/partials/dashboard/partial_header_dashboard.html',
                   base_template='ureport/dashboard.html',
                   paginator_template='ureport/partials/new_pagination.html',
                   paginator_func=ureport_paginate,
                   selectable=False,
                   sort_column='start_date'
    )
def view_autoreg_rules(request):
    columns = [
        ("Group", True, "group__name", SimpleSorter()),
        ("Rule", True, "rule", SimpleSorter()),
        ("Words", True, "values", SimpleSorter()),
        ("Closed", True, "closed", SimpleSorter()),
        ("", False, "", None),
    ]
    qs = AutoregGroupRules.objects.all()
    return generic(
        request,
        model=AutoregGroupRules,
        queryset=qs,
        objects_per_page=20,
        results_title="Group Rules",
        selectable=False,
        partial_row="ureport/partials/group_row.html",
        base_template="ureport/group_base.html",
        columns=columns,
    )
def ussd_manager(request):
    ussd_contacts = Contact.objects.filter(groups__name='equatel')
    ussd_conns = Connection.objects.filter(contact__in=ussd_contacts)
    messages = \
        Message.objects.filter(connection__in=ussd_conns).order_by('-date'
            )

    return generic(
        request,
        model=Message,
        queryset=messages,
        objects_per_page=25,
        partial_row='contact/partials/message_row.html',
        base_template='ureport/ussd_messages_base.html',
        results_title='Ussd Messages',
        columns=[('Message', True, 'text', SimpleSorter()),
                 ('Date', True, 'date', SimpleSorter()),
                 ('Type', True, 'application', SimpleSorter())],
        sort_column='date',
        sort_ascending=False,
    )
Example #48
0
def view_submissions(request, reporter=None):

    columns = [
        ('Name', True, 'title', SimpleSorter()),
        ('Parish', True, 'decription', SimpleSorter()),
        ('Mobile', True, 'questions__name', SimpleSorter()),
        ('Status', True, 'enabled', SimpleSorter()),
        ('Submissions', False, '', ''),
        ('Last Submission', False, '', ''),
    ]

    return generic(request,
                   model=XFormSubmission,
                   queryset=XFormSubmission.objects.all(),
                   filter_forms=[],
                   action_forms=[],
                   objects_per_page=25,
                   partial_row='ntds/partials/submission_row.html',
                   base_template='ntds/submissions_base.html',
                   columns=columns,
                   sort_column='pk',
                   sort_ascending=False,
                   current='survey')
def ureporter_profile(request, connection_pk):
    from script.models import ScriptSession, ScriptResponse, Script

    connection = get_object_or_404(Connection, pk=connection_pk)
    session = ScriptSession.objects.filter(connection__pk=connection_pk)
    messages = Message.objects.filter(connection=connection).order_by('-date')
    contact = connection.contact
    if contact:
        #get the proxy
        contact = Ureporter.objects.get(pk=connection.contact.pk)

    reporter_form = EditReporterForm(instance=contact)
    total_outgoing = messages.filter(direction='O',
                                     connection__pk=connection_pk).count()
    total_incoming = messages.filter(direction='I',
                                     connection__pk=connection_pk).count()
    try:
        response_rate = contact.responses.values_list(
            'poll').distinct().count() * 100 / float(
                Poll.objects.filter(contacts=contact).distinct().count())
    except (ZeroDivisionError, ValueError):
        response_rate = None


#    gr_poll = Poll.objects.get(pk=121)
    gr_poll = Script.objects.get(slug="autoreg_en").steps.get(order=1).poll
    how_did_u_hear = None
    if session:
        try:
            how_did_u_hear = \
                session[0].responses.filter(response__poll=gr_poll)[0].response.message.text
        except (ScriptResponse.DoesNotExist, IndexError):
            how_did_u_hear = 'N/A'
    if request.GET.get('download', None):
        data = []
        data = messages.values_list(
            'text', 'direction', 'date',
            'connection__contact__reporting_location__name').iterator()
        headers = ['Message', 'Direction', 'Date', 'District']

        return ExcelResponse(data=data, headers=headers)
    columns = [('Message', True, 'text', SimpleSorter()),
               ('connection', True, 'connection', SimpleSorter()),
               ('Date', True, 'date', SimpleSorter()),
               ('Direction', True, 'direction', SimpleSorter())]

    # hack hack send the reply message by hacking the sendmessage form
    if request.method == 'POST':
        if not request.POST.get('text', None) == u'' and request.POST.get(
                'action'
        ) == u'ureport.forms.ReplyTextForm' and not request.POST.get(
                'page_action', None):
            rep_form = ReplyTextForm(request=request)
            Message.objects.create(connection=connection,
                                   direction='O',
                                   status='Q',
                                   text=request.POST.get('text'))
            return generic(
                request,
                model=Message,
                queryset=messages,
                total_outgoing=total_outgoing,
                total_incoming=total_incoming,
                response_rate=response_rate,
                how_did_u_hear=how_did_u_hear,
                contact=contact,
                reporter_form=reporter_form,
                objects_per_page=20,
                status_message='Message sent',
                status_message_type='success',
                results_title='Message History',
                selectable=False,
                partial_row=
                'ureport/partials/messages/message_history_row.html',
                base_template='ureport/message_history_base.html',
                action_forms=[ReplyTextForm],
                columns=columns,
                sort_column='date',
                sort_ascending=False,
            )

    return generic(
        request,
        model=Message,
        queryset=messages,
        contact=contact,
        total_outgoing=total_outgoing,
        total_incoming=total_incoming,
        response_rate=response_rate,
        objects_per_page=20,
        how_did_u_hear=how_did_u_hear,
        reporter_form=reporter_form,
        results_title='Message History',
        selectable=False,
        partial_row='ureport/partials/messages/message_history_row.html',
        base_template='ureport/message_history_base.html',
        action_forms=[ReplyTextForm],
        columns=columns,
        sort_column='date',
        sort_ascending=False,
    )
def ureporters(request):
    access = get_access(request)
    print request.method
    message = ''
    if request.method == 'POST' and request.FILES:
        contactsform = ExcelTestUploadForm(request.POST, request.FILES)
        if contactsform.is_valid() and contactsform.good_file():
            new_file = contactsform.cleaned_data
            fields = [
                'number',
                'name',
                'province',
                'commune',
                'colline',
                'language',
                'county',
                'village',
                'birthdate',
                'group',
                'gender',
            ]
            message = handle_excel_file_update(new_file['excel_file'], fields)
            print(message)
            messages.success(request, message)
            return HttpResponseRedirect("/reporter")

        else:
            return HttpResponse(
                content='The form is not valid. Resfresh this page')

    columns = [
        ('Identifier', True, 'connection_pk', SimpleSorter()),
        ('Modile', True, 'mobile', SimpleSorter()),
        (
            'Age',
            True,
            'age',
            SimpleSorter(),
        ),
        (
            'Gender',
            True,
            'gender',
            SimpleSorter(),
        ),
        (
            'Language',
            True,
            'language',
            SimpleSorter(),
        ),
        (
            'Province',
            True,
            'province',
            SimpleSorter(),
        ),
        (
            'Group(s)',
            True,
            'group',
            SimpleSorter(),
        ),
        (
            'Polls ',
            True,
            'questions',
            SimpleSorter(),
        ),
        (
            'Responses ',
            True,
            'responses',
            SimpleSorter(),
        ),
        (
            'Messages Sent',
            True,
            'incoming',
            SimpleSorter(),
        ),
        #        ('caregiver', True, 'is_caregiver', SimpleSorter(),),
        #        ('join date', True, 'autoreg_join_date', SimpleSorter(),),
        #        ('quit date', True, 'quit_date', SimpleSorter(),),
    ]
    queryset = get_contacts2(request=request)
    if access is not None:
        groups = ",".join(list(access.groups.values_list('name', flat=True)))
        queryset = queryset.filter(group__icontains=groups)
    return generic(
        request,
        model=UreportContact,
        queryset=get_contacts2,
        contactsform=ExcelTestUploadForm,
        message=message,
        results_title='uReporters',
        filter_forms=[
            UreporterSearchForm, GenderFilterForm, AgeFilterForm,
            MultipleDistictFilterForm, FilterGroupsForm, FilterByGroupForm,
            FilterByLocationForm
        ],
        action_forms=[
            MassTextForm, AssignGroupForm, BlacklistForm, AssignToNewPollForm,
            RemoveGroupForm, TemplateMessage, ExportToExcelForm
        ],
        objects_per_page=25,
        base_template='ureport/ureporters_base.html',
        partial_base='ureport/partials/contacts/partial_base.html',
        partial_row='ureport/partials/contacts/partial_row.html',
        paginator_template='ureport/partials/new_pagination.html',
        paginator_func=ureport_paginate,
        columns=columns,
    )