Ejemplo n.º 1
0
class StaffPhoneReadView(BreadLabelValueReadView):
    fields = (
        (get_verbose_name(StaffPhone, 'phone_number'), 'formatted_phone_number_tag'),
        (get_verbose_name(StaffPhone, 'registration_center'), 'registration_center_as_html'),
        (get_verbose_name(StaffPhone, 'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(StaffPhone, 'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 2
0
class SubscriptionRead(LabelValueReadView):
    fields = [
        (_('User'), 'user'),
        (_('Type of subscription'), 'get_subscription_type_display'),
        (get_verbose_name(Subscription, 'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(Subscription, 'modification_date'), 'formatted_modification_date'),
    ]
Ejemplo n.º 3
0
class CenterClosedForElectionBrowse(PaginatedBrowseView):
    columns = (
        (get_verbose_name(CenterClosedForElection, 'election'), 'election'),
        (get_verbose_name(CenterClosedForElection,
                          'registration_center'), 'registration_center'),
    )
    filterset = CenterClosedForElectionFilterSet
Ejemplo n.º 4
0
class RegistrationBrowse(PaginatedBrowseView):
    filterset = RegistrationFilterSet
    queryset = get_registration_bread_queryset()
    columns = (
        (get_verbose_name(Citizen, 'national_id'), 'citizen__national_id'),
        (get_verbose_name(Registration, 'citizen'), 'citizen', False),
        (get_verbose_name(Registration, 'registration_center'), 'registration_center'),
        (get_verbose_name(Registration, 'archive_time'), 'formatted_archive_time'),
    )
    search_fields = ('citizen__national_id', 'citizen__first_name', 'citizen__father_name',
                     'citizen__grandfather_name', 'citizen__family_name')
    search_terms = _('national ID, first name, father name, grandfather name, family name ')

    def get_queryset(self, *args, **kwargs):
        queryset = super(RegistrationBrowse, self).get_queryset(*args, **kwargs)

        if not queryset.ordered:
            queryset = queryset.order_by('registration_center__center_id', '-modification_date')
        # else:
            # The queryset is already ordered according to the user's preference.

        # Fetch related entities in a single query rather than executing 1 query for each related
        # enitity for each registration.
        queryset = queryset.select_related('citizen', 'registration_center')

        return queryset
Ejemplo n.º 5
0
class RegistrationPeriodReadView(LabelValueReadView):
    fields = (
        (get_verbose_name(RegistrationPeriod, 'start_time'), 'formatted_start_time'),
        (get_verbose_name(RegistrationPeriod, 'end_time'), 'formatted_end_time'),
        (get_verbose_name(RegistrationPeriod, 'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(RegistrationPeriod, 'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 6
0
class CandidateRead(LabelValueReadView):
    fields = ((None, 'name_arabic'),
              (None, 'name_english'),
              (None, 'candidate_number'),
              (get_verbose_name(Candidate, 'ballot'), 'ballot_as_html'),
              (get_verbose_name(Candidate, 'creation_date'), 'formatted_creation_date'),
              (get_verbose_name(Candidate, 'modification_date'), 'formatted_modification_date'),
              )
Ejemplo n.º 7
0
class SubconstituencyReadView(BreadLabelValueReadView):
    """Semi-custom view for subcon read view"""
    fields = [
        (None, 'id'),
        (None, 'name_english'),
        (None, 'name_arabic'),
        (get_verbose_name(SubConstituency, 'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(SubConstituency, 'modification_date'), 'formatted_modification_date'),
    ]
Ejemplo n.º 8
0
class CenterOpenBrowse(PaginatedBrowseView):
    columns = (
        (get_verbose_name(CenterOpen, 'election'), 'election'),
        (get_verbose_name(CenterOpen, 'creation_date'),
         'formatted_creation_date', 'creation_date'),
        (get_verbose_name(CenterOpen,
                          'registration_center'), 'registration_center'),
    )
    filterset = CenterOpenFilterSet
Ejemplo n.º 9
0
class ElectionReadView(LoginPermissionRequiredMixin, LabelValueReadView):
    permission_required = "voting.read_election"
    fields = ((None, 'name_english'),
              (None, 'name_arabic'),
              (get_verbose_name(Election, 'polling_start_time'), 'formatted_polling_start_time'),
              (get_verbose_name(Election, 'polling_end_time'), 'formatted_polling_end_time'),
              (get_verbose_name(Election, 'creation_date'), 'formatted_creation_date'),
              (get_verbose_name(Election, 'modification_date'), 'formatted_modification_date'),
              )
Ejemplo n.º 10
0
class BallotReadView(LabelValueReadView):
    fields = ((get_verbose_name(Ballot, 'election'), 'election_as_html'),
              (get_verbose_name(Ballot, 'subconstituencies'), 'subconstituencies_as_html'),
              (None, 'internal_ballot_number'),
              (get_verbose_name(Ballot, 'ballot_type'), 'get_ballot_type_display'),
              (None, 'num_seats'),
              (get_verbose_name(Ballot, 'creation_date'), 'formatted_creation_date'),
              (get_verbose_name(Ballot, 'modification_date'), 'formatted_modification_date'),
              )
Ejemplo n.º 11
0
class WhitelistedNumberBrowse(PaginatedBrowseView):
    columns = [
        (get_verbose_name(Whitelist, 'phone_number'), 'formatted_phone_number_tag', 'phone_number'),
        (get_verbose_name(Whitelist, 'creation_date'), 'formatted_creation_date',
         'creation_date'),
        (get_verbose_name(Whitelist, 'modification_date'), 'formatted_modification_date',
         'modification_date'),
    ]
    search_fields = ('phone_number', )
    search_terms = _('Phone Number')
Ejemplo n.º 12
0
class OfficeReadView(BreadLabelValueReadView):
    """Semi-custom view for office read view"""
    fields = [
        (None, 'id'),
        (None, 'name_english'),
        (None, 'name_arabic'),
        (get_verbose_name(Office, 'region'), 'region_name'),
        (get_verbose_name(Office, 'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(Office, 'modification_date'), 'formatted_modification_date'),
    ]
Ejemplo n.º 13
0
class PollingReportBrowse(PaginatedBrowseView):
    columns = (
        (get_verbose_name(PollingReport, 'election'), 'election'),
        (get_verbose_name(PollingReport,
                          'phone_number'), 'formatted_phone_number_tag'),
        (get_verbose_name(PollingReport,
                          'registration_center'), 'registration_center'),
        (get_verbose_name(PollingReport, 'period_number'), 'period_number'),
    )
    filterset = PollingReportFilterSet
Ejemplo n.º 14
0
class CenterClosedForElectionRead(LabelValueReadView):
    fields = (
        (get_verbose_name(CenterClosedForElection,
                          'election'), 'election_as_html'),
        (get_verbose_name(CenterClosedForElection, 'registration_center'),
         'registration_center_as_html'),
        (get_verbose_name(CenterClosedForElection,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(CenterClosedForElection,
                          'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 15
0
class PreliminaryVoteCountBrowse(PaginatedBrowseView):
    columns = (
        (get_verbose_name(PreliminaryVoteCount, 'election'), 'election'),
        (get_verbose_name(PreliminaryVoteCount,
                          'phone_number'), 'formatted_phone_number_tag'),
        (get_verbose_name(PreliminaryVoteCount,
                          'registration_center'), 'registration_center'),
        (get_verbose_name(PreliminaryVoteCount, 'creation_date'),
         'formatted_creation_date', 'creation_date'),
    )
    filterset = PreliminaryVoteCountFilterSet
Ejemplo n.º 16
0
class FieldStaffBrowse(PaginatedBrowseView):
    filterset = FieldStaffFilterSet
    columns = (
        (get_verbose_name(FieldStaff, 'staff_id'), 'staff_id'),
        (get_verbose_name(FieldStaff, 'name'), 'name'),
        (get_verbose_name(FieldStaff,
                          'phone_number'), 'formatted_phone_number_tag'),
        (get_verbose_name(FieldStaff, 'suspended'), 'suspended'),
    )
    search_fields = ['staff_id', 'name', 'phone_number']
    search_terms = _('Staff Id, Name, or Phone Number')
Ejemplo n.º 17
0
class CenterOpenRead(LabelValueReadView):
    fields = (
        (get_verbose_name(CenterOpen, 'election'), 'election_as_html'),
        (get_verbose_name(CenterOpen, 'registration_center'),
         'registration_center_as_html'),
        (get_verbose_name(CenterOpen,
                          'phone_number'), 'formatted_phone_number_tag'),
        (get_verbose_name(CenterOpen,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(CenterOpen,
                          'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 18
0
class DiscrepanciesRead(LabelValueReadView):

    fields = [
        (_("Direction"), get_direction),
        (_("Message in registration system"), 'sms_as_html'),
        (_("Message to/from the mobile network operator"), 'vumilog_as_html'),
        (None, 'comments'),
        (None, 'resolved'),
        (get_verbose_name(Discrepancy,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(Discrepancy,
                          'modification_date'), 'formatted_modification_date'),
    ]
Ejemplo n.º 19
0
class FieldStaffRead(LabelValueReadView):
    fields = (
        (None, 'staff_id'),
        (None, 'name'),
        (get_verbose_name(FieldStaff,
                          'phone_number'), 'formatted_phone_number_tag'),
        (get_verbose_name(FieldStaff, 'suspended'),
         lambda context: format_tristate(context['object'].suspended)),
        (get_verbose_name(FieldStaff,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(FieldStaff,
                          'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 20
0
class UserRead(LabelValueReadView):
    fields = (
        (None, 'username'),
        (None, 'email'),
        (None, 'first_name'),
        (None, 'last_name'),
        (get_verbose_name(User, 'groups'), groups_formatted),
        (get_verbose_name(User, 'is_staff'),
         lambda context: format_tristate(context['object'].is_staff)),
        (get_verbose_name(User, 'is_active'),
         lambda context: format_tristate(context['object'].is_active)),
        (get_verbose_name(User, 'date_joined'), date_joined_formatted),
    )
Ejemplo n.º 21
0
class PollingReportRead(LabelValueReadView):
    fields = (
        (get_verbose_name(PollingReport, 'election'), 'election_as_html'),
        (get_verbose_name(PollingReport,
                          'phone_number'), 'formatted_phone_number_tag'),
        (get_verbose_name(PollingReport, 'registration_center'),
         'registration_center_as_html'),
        (None, 'period_number'),
        (None, 'num_voters'),
        (get_verbose_name(PollingReport,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(PollingReport,
                          'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 22
0
class DiscrepanciesBrowse(PaginatedBrowseView):
    columns = [
        (get_verbose_name(Discrepancy, 'creation_date'),
         'formatted_creation_date', 'creation_date'),
        (_("Direction"), 'get_direction_display'),
        (_("From"), 'get_from'),
        (_("To"), 'get_to'),
        (get_verbose_name(Discrepancy, 'resolved'), 'resolved'),
    ]
    filterset = DiscrepancyFilterSet
    search_fields = [
        'trail__sms__from_number',
        'trail__sms__to_number',
        'trail__sms__message',
        'trail__vumi__from_addr',
        'trail__vumi__to_addr',
        'trail__vumi__content',
    ]
    search_terms = _("source number, destination number, or message")

    def get(self, request, *args, **kwargs):
        # Default to "resolved=False"
        if 'resolved' not in request.GET:
            request.GET = request.GET.copy()  # make editable
            request.GET['resolved'] = '3'  # choices are 1=any, 2=True, 3=False

        response = super(DiscrepanciesBrowse,
                         self).get(request, *args, **kwargs)

        audited = SMSTrail.objects.count()
        audited_messages = ungettext('%(count)d message was audited.',
                                     '%(count)d messages were audited.',
                                     audited) % {
                                         'count': audited
                                     }
        messages.info(request, audited_messages)

        discrepancies = Discrepancy.objects.filter(resolved=False).count()
        if discrepancies:
            discrepancies_found = ungettext(
                'There was %(count)d discrepancy found.',
                'There were %(count)d discrepancies found.', discrepancies) % {
                    'count': discrepancies
                }
            messages.error(request, discrepancies_found)
        return response

    def get_queryset(self):
        qset = super(DiscrepanciesBrowse, self).get_queryset()
        return qset.select_related('trail', 'trail__sms', 'trail__vumi')
Ejemplo n.º 23
0
class PreliminaryVoteCountRead(LabelValueReadView):
    fields = (
        (get_verbose_name(PreliminaryVoteCount,
                          'election'), 'election_as_html'),
        (get_verbose_name(PreliminaryVoteCount,
                          'phone_number'), 'formatted_phone_number_tag'),
        (None, 'option'),
        (None, 'num_votes'),
        (get_verbose_name(PreliminaryVoteCount, 'registration_center'),
         'registration_center_as_html'),
        (get_verbose_name(PreliminaryVoteCount,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(PreliminaryVoteCount,
                          'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 24
0
class CitizenRead(LabelValueReadView):
    fields = ((None, 'civil_registry_id'),
              (None, 'national_id'),
              (None, 'fbr_number'),
              (None, 'first_name'),
              (None, 'father_name'),
              (None, 'grandfather_name'),
              (None, 'family_name'),
              (None, 'mother_name'),
              (get_verbose_name(Citizen, 'birth_date'), 'formatted_birth_date'),
              (get_verbose_name(Citizen, 'gender'), 'gender_formatted'),
              (None, 'address'),
              (None, 'office_id'),
              (None, 'branch_id'),
              (None, 'state'),
              (_("Blocked"), 'blocked'),
              )
Ejemplo n.º 25
0
class StationRead(BreadLabelValueReadView):
    fields = (
        (get_verbose_name(Station, 'election'), 'election_as_html'),
        (get_verbose_name(Station, 'center'), 'registration_center_as_html'),
        (None, 'number'),
        (get_verbose_name(Station, 'gender'),
         lambda context: GENDER_MAP[context['object'].gender]),
        (None, 'n_registrants'),
        (None, 'first_voter_name'),
        (None, 'first_voter_number'),
        (None, 'last_voter_name'),
        (None, 'last_voter_number'),
        (get_verbose_name(Station,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(Station,
                          'modification_date'), 'formatted_modification_date'),
    )
Ejemplo n.º 26
0
class VumiLogRead(LabelValueReadView):
    fields = [
        (get_verbose_name(VumiLog, 'from_addr'), 'from_number_formatted_tag'),
        (get_verbose_name(VumiLog, 'direction'), 'get_direction_display'),
        (get_verbose_name(VumiLog, 'to_addr'), 'to_number_formatted_tag'),
        (None, 'content'),
        (get_verbose_name(VumiLog,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(VumiLog,
                          'modification_date'), 'formatted_modification_date'),
    ]

    def get_context_data(self, **kwargs):
        """Add a back_url so we can link back to the associated discrepancy"""
        context = super(VumiLogRead, self).get_context_data(**kwargs)
        context['back_url'] = self.get_object(
        ).smstrail.discrepancy.get_absolute_url()
        return context
Ejemplo n.º 27
0
class BroadcastApproveRejectView(LoginPermissionRequiredMixin,
                                 BreadLabelValueReadView):
    """View for displaying the form that allows one to approve or reject a broadcast"""
    exclude = []
    permission_required = 'bulk_sms.read_broadcast'
    fields = (
        (_('Sent To'), "sent_to"),
        (get_verbose_name(Broadcast, 'center'), "registration_center_as_html"),
        (None, "message"),
        (get_verbose_name(Broadcast, 'created_by'), "created_by_as_html"),
        (get_verbose_name(Broadcast, 'reviewed_by'), "reviewed_by_as_html"),
        (None, "batch"),
        (_('Status'), "status"),
        (_('Remaining Time'), "remaining_time"),
        (_('Total Messages'), "total_messages"),
        (_('Sent'), "sent"),
        (_('Errors'), "errors"),
        (_('Random Messages'), "random_messages"),
        (get_verbose_name(Broadcast,
                          'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(Broadcast,
                          'modification_date'), 'formatted_modification_date'),
    )

    def get(self, request, pk):
        """Override base class to add to context and use custom template"""
        # I have to override here (rather than get_template_names()/get_context_data()) in order
        # to get access to the request object.
        broadcast = get_object_or_404(Broadcast, pk=pk)
        batch = broadcast.batch

        # I must set self.object in order to use my base class' implementation of get_context_data()
        self.object = broadcast
        context = self.get_context_data()
        context['approve_reject_url'] = reverse(
            'approve_reject_broadcast', kwargs={'broadcast_id': broadcast.id})

        context['show_approve'] = request.user.has_perm('bulk_sms.approve_broadcast') and \
            (batch.status in (batch.PENDING, batch.REJECTED))
        context['show_reject'] = request.user.has_perm('bulk_sms.approve_broadcast') and \
            (batch.status not in (batch.REJECTED, ))

        return render(request, 'bulk_sms/broadcast_approve_reject.html',
                      context)
Ejemplo n.º 28
0
class SMSReadView(BreadLabelValueReadView):
    """View for reading SMSes."""
    fields = ((get_verbose_name(SMS, 'from_number'), 'from_number_formatted_tag'),
              (get_verbose_name(SMS, 'to_number'), 'to_number_formatted_tag'),
              (get_verbose_name(SMS, 'citizen'), 'citizen_as_html'),
              (None, 'carrier'),
              (get_verbose_name(SMS, 'direction'), 'direction_formatted'),
              (get_verbose_name(SMS, 'msg_type'), 'msg_type_formatted'),
              (None, 'message'),
              (get_verbose_name(SMS, 'message_code'), 'get_message_code_display'),
              (None, 'uuid'),
              (None, 'is_audited'),
              (get_verbose_name(SMS, 'in_response_to'), 'in_response_to_as_html'),
              (None, 'need_to_anonymize'),
              (get_verbose_name(SMS, 'creation_date'), 'formatted_creation_date'),
              (get_verbose_name(SMS, 'modification_date'), 'formatted_modification_date'),
              )
Ejemplo n.º 29
0
class RegistrationRead(BreadLabelValueReadView):
    queryset = get_registration_bread_queryset()
    fields = (
        (get_verbose_name(Registration, 'citizen'), 'citizen_as_html'),
        (get_verbose_name(Registration, 'registration_center'), 'registration_center_as_html'),
        (None, 'change_count'),
        (None, 'max_changes'),
        (None, 'repeat_count'),
        (_('Lock Status'), 'formatted_unlocked_until'),
        (get_verbose_name(Registration, 'sms'), 'sms_as_html'),
        (get_verbose_name(Registration, 'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(Registration, 'modification_date'), 'formatted_modification_date'),
        (get_verbose_name(Registration, 'archive_time'), 'formatted_archive_time'),
    )
Ejemplo n.º 30
0
class RegistrationCenterReadView(RegistrationCenterConditionalDeleteMixin, BreadLabelValueReadView):
    """View for reg center read, implements special delete logic via mixin"""
    fields = [
        (None, 'center_id'),
        (None, 'name'),
        (get_verbose_name(RegistrationCenter, 'office'), 'office_as_html'),
        (get_verbose_name(RegistrationCenter, 'constituency'), 'constituency_as_html'),
        (get_verbose_name(RegistrationCenter, 'subconstituency'), 'subconstituency_as_html'),
        (None, 'mahalla_name'),
        (None, 'village_name'),
        (get_verbose_name(RegistrationCenter, 'center_type'), 'center_type_label'),
        (None, 'center_lat'),
        (None, 'center_lon'),
        (None, 'copy_of'),
        (_("Copied by"), get_copied_by_formatted),
        (get_verbose_name(RegistrationCenter, 'reg_open'),
         lambda context: format_tristate(context['object'].reg_open)),
        (get_verbose_name(RegistrationCenter, 'creation_date'), 'formatted_creation_date'),
        (get_verbose_name(RegistrationCenter, 'modification_date'), 'formatted_modification_date'),
    ]
Ejemplo n.º 31
0
 def __init__(self, *args, **kwargs):
     super(StaffPhoneFilterset, self).__init__(*args, **kwargs)
     self.filters["registration_center__office"].label = get_verbose_name(RegistrationCenter, "office")
     self.filters["registration_center__subconstituency"].label = get_verbose_name(
         RegistrationCenter, "subconstituency"
     )