Skip to content

Commit

Permalink
Checkpoint:
Browse files Browse the repository at this point in the history
   1. Add is_public_visible field in facility status
   2. Fix user ordering fields
   3. Fix chul ordering fields
  • Loading branch information
bmarika committed Mar 18, 2016
1 parent ddf5657 commit ef5dd22
Show file tree
Hide file tree
Showing 13 changed files with 85 additions and 11 deletions.
24 changes: 24 additions & 0 deletions chul/migrations/0001_auto_20160318_0338.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('chul', 'set_code_sequence'),
]

operations = [
migrations.AddField(
model_name='communityhealthunit',
name='number_of_chvs',
field=models.PositiveIntegerField(default=0, help_text=b'Number of Community Health volunteers in the CHU'),
),
migrations.AlterField(
model_name='communityhealthunit',
name='households_monitored',
field=models.PositiveIntegerField(default=0, help_text=b'The number of house holds a CHU is in-charge of'),
),
]
4 changes: 4 additions & 0 deletions chul/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ class CommunityHealthUnit(SequenceMixin, AbstractBase):
help_text='The facility on which the health unit is tied to.')
status = models.ForeignKey(Status)
households_monitored = models.PositiveIntegerField(
default=0,
help_text='The number of house holds a CHU is in-charge of')
date_established = models.DateField(default=timezone.now)
date_operational = models.DateField(null=True, blank=True)
Expand All @@ -89,6 +90,9 @@ class CommunityHealthUnit(SequenceMixin, AbstractBase):
default=False,
help_text='Indicates that a community health unit has updates that are'
' pending approval')
number_of_chvs = models.PositiveIntegerField(
default=0,
help_text='Number of Community Health volunteers in the CHU')

def __str__(self):
return self.name
Expand Down
4 changes: 2 additions & 2 deletions chul/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ class CHUServiceListView(generics.ListCreateAPIView):
queryset = CHUService.objects.all()
serializer_class = CHUServiceSerializer
filter_class = CHUServiceFilter
ordering_fields = ('name', 'description', )
ordering_fields = ('name', 'description', 'date_established')


class CHUServiceDetailView(
Expand Down Expand Up @@ -203,7 +203,7 @@ class CommunityHealthUnitListView(
queryset = CommunityHealthUnit.objects.all()
serializer_class = CommunityHealthUnitSerializer
filter_class = CommunityHealthUnitFilter
ordering_fields = ('name', 'facility',)
ordering_fields = ('name', 'facility', 'code',)


class CommunityHealthUnitDetailView(
Expand Down
1 change: 1 addition & 0 deletions common/serializers/serializer_declarations.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ class WardSerializer(AbstractFieldsMixin, GeoModelSerializer):
county_name = serializers.ReadOnlyField(source="constituency.county.name")
constituency_name = serializers.ReadOnlyField(source="constituency.name")
sub_county_name = serializers.ReadOnlyField(source="sub_county.name")
sub_county = serializers.CharField(source='sub_county.id')

class Meta(object):
model = Ward
Expand Down
2 changes: 1 addition & 1 deletion config/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,5 +54,5 @@
url(r'^accounts/',
include('rest_framework.urls', namespace='rest_framework')),
url(r'^api/token/', 'rest_framework.authtoken.views.obtain_auth_token'),
url(r'^o/', include('oauth2_provider.urls')),
url(r'^o/', include('oauth2_provider.urls', namespace='oauth2_provider')),
)
4 changes: 2 additions & 2 deletions facilities/filters/facility_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -363,9 +363,9 @@ def facilities_pending_approval(self, value):
keph_level = ListCharFilter(lookup_type='exact')
operation_status = ListCharFilter(lookup_type='icontains')
ward = ListCharFilter(lookup_type='icontains')
sub_county = ListCharFilter(lookup_type='exact')
sub_county = ListCharFilter(lookup_type='exact', name='ward__sub_county')
sub_county_code = ListCharFilter(
name="sub_county__code", lookup_type='exact')
name="ward__sub_county__code", lookup_type='exact')
ward_code = ListCharFilter(name="ward__code", lookup_type='icontains')
county_code = ListCharFilter(
name='ward__constituency__county__code',
Expand Down
19 changes: 19 additions & 0 deletions facilities/migrations/0007_facilitystatus_is_public_visible.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('facilities', '0006_auto_20160309_1419'),
]

operations = [
migrations.AddField(
model_name='facilitystatus',
name='is_public_visible',
field=models.BooleanField(default=False, help_text=b'The facilities with this status should be visible to the public'),
),
]
3 changes: 3 additions & 0 deletions facilities/migrations/mat_view.sql
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,14 @@ facilities_facility.open_weekends, facilities_facility.open_late_night,
facilities_facility.closed, facilities_facility.is_published,
common_county.name as county_name, common_county.id as county,
common_constituency.name as constituency_name,common_constituency.id as constituency,
common_subcounty.name as sub_county_name,common_subcounty.id as sub_county,
facilities_facilitytype.name as facility_type_name, facilities_facilitytype.id as facility_type,
facilities_kephlevel.name as keph_level_name,facilities_kephlevel.id as keph_level,
facilities_owner.name as owner_name,facilities_owner.id as owner,
facilities_ownertype.name as owner_type_name,facilities_ownertype.id as owner_type,
facilities_regulatingbody.name as regulatory_body_name,facilities_regulatingbody.id as regulatory_body,
facilities_facilitystatus.name as operation_status_name, facilities_facilitystatus.id as operation_status,
facilities_facilitystatus.is_public_visible as is_public_visible,
array(select distinct service_id from facilities_facilityservice where facilities_facilityservice.facility_id=facilities_facility.id) as services,
array(select distinct category_id from facilities_facilityservice inner join facilities_service on facilities_service.id=facilities_facilityservice.service_id where facilities_facilityservice.facility_id=facilities_facility.id) as categories

Expand All @@ -29,6 +31,7 @@ LEFT JOIN facilities_regulatingbody ON facilities_regulatingbody.id = facilities
LEFT JOIN facilities_facilitystatus ON facilities_facilitystatus.id = facilities_facility.operation_status_id
LEFT JOIN common_ward ON common_ward.id = facilities_facility.ward_id
LEFT JOIN common_constituency ON common_constituency.id = common_ward.constituency_id
LEFT JOIN common_subcounty ON common_subcounty.id = common_ward.sub_county_id
LEFT JOIN common_county ON common_county.id = common_constituency.county_id;

DROP TRIGGER IF EXISTS refresh_mat_view ON facilities_facility;
Expand Down
7 changes: 7 additions & 0 deletions facilities/models/facility_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,10 @@ class FacilityStatus(AbstractBase):
description = models.TextField(
null=True, blank=True,
help_text="A short explanation of what the status entails.")
is_public_visible = models.BooleanField(
default=False,
help_text='The facilities with this status '
'should be visible to the public')

def __str__(self):
return self.name
Expand Down Expand Up @@ -592,6 +596,8 @@ class FacilityExportExcelMaterialView(models.Model):
help_text='A dummy search field')
county_name = models.CharField(max_length=100, null=True, blank=True)
constituency_name = models.CharField(max_length=100, null=True, blank=True)
sub_county = models.CharField(max_length=100, null=True, blank=True)
sub_county_name = models.CharField(max_length=100, null=True, blank=True)
ward_name = models.CharField(max_length=100, null=True, blank=True)
keph_level = models.CharField(max_length=100, null=True, blank=True)
facility_type = models.CharField(max_length=100, null=True, blank=True)
Expand Down Expand Up @@ -619,6 +625,7 @@ class FacilityExportExcelMaterialView(models.Model):
models.UUIDField(null=True, blank=True), null=True, blank=True
)
approved = models.BooleanField(default=False)
is_public_visible = models.BooleanField(default=False)
created = models.DateTimeField()
closed = models.BooleanField(default=False)
is_published = models.BooleanField(default=False)
Expand Down
6 changes: 6 additions & 0 deletions facilities/serializers/facility_serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -383,6 +383,9 @@ class FacilitySerializer(
operation_status_name = serializers.CharField(read_only=True)
county = serializers.CharField(read_only=True)
constituency = serializers.CharField(read_only=True)
constituency_name = serializers.CharField(
read_only=True,
source='ward.constituency.name')
ward_name = serializers.ReadOnlyField()
average_rating = serializers.ReadOnlyField()
facility_services = serializers.ReadOnlyField(
Expand All @@ -407,6 +410,9 @@ class FacilitySerializer(
source='ward.constituency.county.name')
constituency_id = serializers.ReadOnlyField(
source='ward.constituency.id')
county_id = serializers.ReadOnlyField(
source='ward.constituency.county.id')
keph_level_name = serializers.ReadOnlyField(source='keph_level.name')

class Meta(object):
model = Facility
Expand Down
10 changes: 9 additions & 1 deletion facilities/views/facility_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,15 @@ def get_queryset(self, *args, **kwargs):
is False and 'approved' in [
field.name for field in
self.queryset.model._meta.get_fields()]:
self.queryset = self.queryset.filter(approved=True)

# filter both facilities and facilities materialized view
try:
self.queryset = self.queryset.filter(
approved=True,
operation_status__is_public_visible=True)
except:
self.queryset = self.queryset.filter(
approved=True, is_public_visible=True)

if self.request.user.has_perm(
"facilities.view_classified_facilities") \
Expand Down
4 changes: 2 additions & 2 deletions users/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,8 +116,6 @@ class GroupSerializer(PartialResponseMixin, serializers.ModelSerializer):
def update_users_in_group(self, instance):

for user in MflUser.objects.all():
import pdb
pdb.set_trace()
if instance in user.groups.all():
user.is_staff = True
else:
Expand Down Expand Up @@ -220,6 +218,7 @@ class MflUserSerializer(PartialResponseMixin, serializers.ModelSerializer):
county_name = serializers.ReadOnlyField(source='county.name')
constituency = serializers.ReadOnlyField(source='constituency.id')
constituency_name = serializers.ReadOnlyField(source='constituency.name')
sub_county_name = serializers.ReadOnlyField(source='sub_county.name')
contacts = serializers.ReadOnlyField()
regulatory_users = RegulatoryBodyUserSerializer(many=True, required=False)
user_constituencies = UserConstituencySerializer(many=True, required=False)
Expand Down Expand Up @@ -308,6 +307,7 @@ def _create_user_county(self, instance, counties):
"""
updated_counties = []
user = self.context.get('request').user

UserCounty.everything.filter(user=instance).delete()
for county in counties:
county_obj = {}
Expand Down
8 changes: 5 additions & 3 deletions users/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,10 @@ class UserList(generics.ListCreateAPIView):
queryset = MflUser.objects.all()
serializer_class = MflUserSerializer
filter_class = MFLUserFilter
ordering_fields = ('first_name', 'last_name', 'email', 'username',)
ordering_fields = (
'first_name', 'email', 'is_active',
'last_login', 'employee_number'
)

def get_queryset(self, *args, **kwargs):
from common.models import UserCounty, UserConstituency
Expand Down Expand Up @@ -162,10 +165,9 @@ class UserDetailView(CustomRetrieveUpdateDestroyView):
serializer_class = MflUserSerializer

def delete(self, request, pk, format=None):

user = get_object_or_404(MflUser, id=pk)
user_contacts = UserContact.objects.filter(user=user)
[uc.contact.delete for uc in user_contacts]
[uc.contact.delete() for uc in user_contacts]
user_contacts.delete()
UserCounty.objects.filter(user=user).delete()
UserConstituency.objects.filter(user=user).delete()
Expand Down

0 comments on commit ef5dd22

Please sign in to comment.