Skip to content

Commit

Permalink
Merge pull request #769 from unicef/replace-3rd-party-django-hstore
Browse files Browse the repository at this point in the history
Replace 3rd party django hstore
  • Loading branch information
robertavram authored Jul 14, 2017
2 parents 63f7955 + 554fb27 commit 932ab34
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 39 deletions.
1 change: 0 additions & 1 deletion EquiTrack/EquiTrack/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,6 @@
'analytical',
'mptt',
'easy_pdf',
'django_hstore',

'vision',
'management',
Expand Down
4 changes: 2 additions & 2 deletions EquiTrack/partners/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
import EquiTrack.mixins
from django.conf import settings
import django.contrib.postgres.fields.jsonb
from django.contrib.postgres.fields import HStoreField
from django.db import migrations, models
import django.db.models.deletion
import django.utils.timezone
import django_hstore.fields
import model_utils.fields
import partners.models
import smart_selects.db_fields
Expand Down Expand Up @@ -187,7 +187,7 @@ class Migration(migrations.Migration):
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('year', models.CharField(max_length=4)),
('planned_amount', models.IntegerField(default=0, verbose_name=b'Planned Cash Transfers')),
('activities', django_hstore.fields.DictionaryField(blank=True, null=True)),
('activities', HStoreField(blank=True, null=True)),
('planned_visits', models.IntegerField(default=0)),
('activities_list', models.ManyToManyField(blank=True, related_name='activities_list', to='reports.Result')),
('intervention', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='results', to='partners.GovernmentIntervention')),
Expand Down
64 changes: 29 additions & 35 deletions EquiTrack/partners/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@
import logging
import datetime
import json
from dateutil.relativedelta import relativedelta

from django.conf import settings
from django.contrib.auth.models import Group
from django.contrib.postgres.fields import JSONField, ArrayField
from django.contrib.postgres.fields import JSONField, ArrayField, HStoreField
from django.db import models, connection, transaction
from django.db.models import Q, Sum, F, Min, Max
from django.db.models.signals import post_save, pre_delete
Expand All @@ -15,17 +14,16 @@
from django.utils.functional import cached_property

from django_fsm import FSMField, transition
from django_hstore import hstore
from smart_selects.db_fields import ChainedForeignKey
from model_utils.models import (
TimeFramedModel,
TimeStampedModel,
)
from model_utils import Choices, FieldTracker
from dateutil.relativedelta import relativedelta

from EquiTrack.utils import get_changeform_link, get_current_site, import_permissions
from EquiTrack.mixins import AdminURLMixin

from funds.models import Grant
from reports.models import (
Indicator,
Expand Down Expand Up @@ -169,10 +167,10 @@ def __unicode__(self):
MEDIUM = 'medium'
LOW = 'low'
RISK_RATINGS = (
(HIGH,'High'),
(SIGNIFICANT,'Significant'),
(MEDIUM,'Medium'),
(LOW,'Low'),
(HIGH, 'High'),
(SIGNIFICANT, 'Significant'),
(MEDIUM, 'Medium'),
(LOW, 'Low'),
)
CSO_TYPES = Choices(
'International',
Expand Down Expand Up @@ -459,7 +457,6 @@ def audit_needed(cls, partner, assesment=None):
hact = json.loads(partner.hact_values) if isinstance(partner.hact_values, str) else partner.hact_values
if partner.total_ct_cp > 500000.00:
audits = 1
current_cycle = CountryProgramme.main_active()
last_audit = partner.latest_assessment(u'Scheduled Audit report')
if assesment:
if last_audit:
Expand Down Expand Up @@ -518,9 +515,8 @@ def planned_cash_transfers(cls, partner, budget_record=None):
"""
Planned cash transfers for the current year
"""
year = datetime.date.today().year
total = 0
if partner.partner_type !='Government':
if partner.partner_type != 'Government':
q = InterventionBudget.objects.filter(
intervention__agreement__partner=partner,
intervention__status__in=[
Expand Down Expand Up @@ -562,7 +558,7 @@ def planned_visits(cls, partner, pv_intervention=None):
# planned visits
pv = 0
if partner.partner_type == 'Government':
pass
pass
else:
if pv_intervention:
pv = InterventionPlannedVisits.objects.filter(
Expand Down Expand Up @@ -699,11 +695,11 @@ class Assessment(models.Model):
"""

ASSESMENT_TYPES = (
('Micro Assessment','Micro Assessment'),
('Simplified Checklist','Simplified Checklist'),
('Scheduled Audit report','Scheduled Audit report'),
('Special Audit report','Special Audit report'),
('Other','Other'),
('Micro Assessment', 'Micro Assessment'),
('Simplified Checklist', 'Simplified Checklist'),
('Scheduled Audit report', 'Scheduled Audit report'),
('Special Audit report', 'Special Audit report'),
('Other', 'Other'),
)

partner = models.ForeignKey(
Expand All @@ -717,8 +713,7 @@ class Assessment(models.Model):
names_of_other_agencies = models.CharField(
max_length=255,
blank=True, null=True,
help_text='List the names of the other '
'agencies they have worked with'
help_text='List the names of the other agencies they have worked with'
)
expected_budget = models.IntegerField(
verbose_name='Planned amount',
Expand All @@ -728,8 +723,7 @@ class Assessment(models.Model):
max_length=255,
blank=True, null=True,
verbose_name='Special requests',
help_text='Note any special requests to be '
'considered during the assessment'
help_text='Note any special requests to be considered during the assessment'
)
requested_date = models.DateField(
auto_now_add=True
Expand Down Expand Up @@ -855,8 +849,8 @@ class Agreement(TimeStampedModel):
SSFA = 'SSFA'
AGREEMENT_TYPES = (
(PCA, u"Programme Cooperation Agreement"),
(SSFA,'Small Scale Funding Agreement'),
(MOU,'Memorandum of Understanding'),
(SSFA, 'Small Scale Funding Agreement'),
(MOU, 'Memorandum of Understanding'),
)

DRAFT = u"draft"
Expand Down Expand Up @@ -1315,7 +1309,6 @@ class Intervention(TimeStampedModel):
# previous status
metadata = JSONField(blank=True, null=True, default=dict)


class Meta:
ordering = ['-created']

Expand Down Expand Up @@ -1353,7 +1346,8 @@ def days_from_review_to_signed(self):

@property
def sector_names(self):
return ', '.join(Sector.objects.filter(intervention_locations__intervention=self).values_list('name', flat=True))
return ', '.join(Sector.objects.filter(intervention_locations__intervention=self).
values_list('name', flat=True))

@cached_property
def total_partner_contribution(self):
Expand All @@ -1365,7 +1359,6 @@ def total_unicef_cash(self):
# TODO: test this
return self.planned_budget.unicef_cash if self.planned_budget else 0


@cached_property
def total_in_kind_amount(self):
# TODO: test this
Expand Down Expand Up @@ -1647,6 +1640,7 @@ def __unicode__(self):
self.intervention, self.cp_output
)


@python_2_unicode_compatible
class InterventionBudget(TimeStampedModel):
"""
Expand Down Expand Up @@ -1744,7 +1738,8 @@ class InterventionSectorLocationLink(models.Model):

class GovernmentInterventionManager(models.Manager):
def get_queryset(self):
return super(GovernmentInterventionManager, self).get_queryset().prefetch_related('results', 'results__sectors', 'results__unicef_managers')
return super(GovernmentInterventionManager, self).get_queryset().prefetch_related('results', 'results__sectors',
'results__unicef_managers')


# TODO: check this for sanity
Expand Down Expand Up @@ -1777,8 +1772,7 @@ class GovernmentIntervention(models.Model):

def __unicode__(self):
return 'Number: {}'.format(self.number) if self.number else \
'{}: {}'.format(self.pk,
self.reference_number)
'{}: {}'.format(self.pk, self.reference_number)

# country/partner/year/#
@property
Expand Down Expand Up @@ -1837,7 +1831,7 @@ class GovernmentInterventionResult(models.Model):
default=0,
verbose_name='Planned Cash Transfers'
)
activities = hstore.DictionaryField(
activities = HStoreField(
blank=True, null=True
)
activity = JSONField(blank=True, null=True, default=activity_default)
Expand All @@ -1854,7 +1848,6 @@ class GovernmentInterventionResult(models.Model):
planned_visits = models.IntegerField(default=0)

tracker = FieldTracker()
objects = hstore.HStoreManager()

@transaction.atomic
def save(self, **kwargs):
Expand All @@ -1871,8 +1864,7 @@ def save(self, **kwargs):
super(GovernmentInterventionResult, self).save(**kwargs)

def __unicode__(self):
return '{}, {}'.format(self.intervention.number,
self.result)
return '{}, {}'.format(self.intervention.number, self.result)


class GovernmentInterventionResultActivity(models.Model):
Expand Down Expand Up @@ -2305,7 +2297,8 @@ def total_budget(self):

if self.budget_log.exists():
return sum([b['unicef_cash'] + b['in_kind_amount'] + b['partner_contribution'] for b in
self.budget_log.values('created', 'year', 'unicef_cash', 'in_kind_amount', 'partner_contribution').
self.budget_log.values('created', 'year', 'unicef_cash',
'in_kind_amount', 'partner_contribution').
order_by('year', '-created').distinct('year').all()])
return 0

Expand Down Expand Up @@ -2334,7 +2327,8 @@ def total_budget_local(self):

if self.budget_log.exists():
return sum([b['unicef_cash_local'] + b['in_kind_amount_local'] + b['partner_contribution_local'] for b in
self.budget_log.values('created', 'year', 'unicef_cash_local', 'in_kind_amount_local', 'partner_contribution_local').
self.budget_log.values('created', 'year', 'unicef_cash_local',
'in_kind_amount_local', 'partner_contribution_local').
order_by('year', '-created').distinct('year').all()])
return 0

Expand Down
1 change: 0 additions & 1 deletion EquiTrack/requirements/base.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ django-logentry-admin==1.0.2
djrill==2.1.0
django-autocomplete-light==3.2.1
django-smart-selects==1.3.1
django-hstore==1.4.2
django-redis-cache==1.7.1
django-datetime-widget==0.9.3
django-leaflet==0.19.0
Expand Down

0 comments on commit 932ab34

Please sign in to comment.