[virtualcommons-svn] commit/vcweb: alllee: setting up initial carbon footprint level properly
Status: Beta
Brought to you by:
alllee
From: Bitbucket <com...@bi...> - 2011-08-08 23:28:45
|
1 new changeset in vcweb: http://bitbucket.org/virtualcommons/vcweb/changeset/22309ab99f29/ changeset: 22309ab99f29 user: alllee date: 2011-08-09 01:28:36 summary: setting up initial carbon footprint level properly affected #: 3 files (762 bytes) --- a/vcweb/core/models.py Mon Aug 08 13:40:08 2011 -0700 +++ b/vcweb/core/models.py Mon Aug 08 16:28:36 2011 -0700 @@ -437,10 +437,11 @@ for parameter in group_parameters: group_data_value, created = current_round_data.group_data_value_set.get_or_create(group=group, parameter=parameter) logger.debug("%s (%s)", group_data_value, created) - for pgr in group.participant_group_relationship_set.all(): - for parameter in participant_parameters: - participant_data_value, created = current_round_data.participant_data_value_set.get_or_create(participant_group_relationship=pgr, parameter=parameter) - logger.debug("%s (%s)", participant_data_value, created) + if participant_parameters: + for pgr in group.participant_group_relationship_set.all(): + for parameter in participant_parameters: + participant_data_value, created = current_round_data.participant_data_value_set.get_or_create(participant_group_relationship=pgr, parameter=parameter) + logger.debug("%s (%s)", participant_data_value, created) def log(self, log_message): if log_message: --- a/vcweb/lighterprints/models.py Mon Aug 08 13:40:08 2011 -0700 +++ b/vcweb/lighterprints/models.py Mon Aug 08 16:28:36 2011 -0700 @@ -1,5 +1,5 @@ from django.db import models -from django.db.models import Sum, Q +from django.db.models import Q from vcweb.core import signals, simplecache from vcweb.core.models import (Experiment, ExperimentMetadata, Experimenter, GroupRoundDataValue, ParticipantRoundDataValue, Parameter) @@ -119,11 +119,11 @@ for experiment in get_active_experiments(): # calculate total carbon savings and decide if they move on to the next level for group in experiment.group_set.all(): - grdv = GroupRoundDataValue.objects.get(group=group, parameter__name='carbon_footprint_level') - if should_advance_level(group, grdv.value): + carbon_footprint_level_grdv = get_carbon_footprint_level(group) + if should_advance_level(group, carbon_footprint_level_grdv.value): # advance group level - grdv.value = min(grdv.value + 1, 3) - grdv.save() + carbon_footprint_level_grdv.value = min(carbon_footprint_level_grdv.value + 1, 3) + carbon_footprint_level_grdv.save() @receiver(signals.round_started) def round_started_handler(sender, experiment=None, **kwargs): @@ -132,10 +132,14 @@ return # FIXME: See if we can push this logic up to core.. logger.debug("initializing lighter prints") - experiment.initialize_parameters( - group_parameters = [get_carbon_footprint_level_parameter()], - participant_parameters = [get_activity_performed_parameter()] - ) + current_round_data = experiment.current_round_data + carbon_footprint_level_parameter = get_carbon_footprint_level_parameter() + for group in experiment.group_set.all(): + carbon_footprint_level_grdv = current_round_data.group_data_value_set.create(group=group, parameter=carbon_footprint_level_parameter) + carbon_footprint_level_grdv.value = 1 + carbon_footprint_level_grdv.save() + + def get_daily_carbon_savings(group): # grab all of yesterday's participant data values @@ -143,17 +147,21 @@ yesterday = today - datetime.timedelta(1) total_savings = Decimal(0.0) for activity_performed_dv in group.get_participant_data_values(parameter_name='activity_performed').filter(date_created__gte=yesterday): - logger.debug("%s", activity_performed_dv) activity = Activity.objects.get(pk=activity_performed_dv.value) total_savings += activity.savings #total = participant_data_values.aggregate(total=Sum('int_value'))['total'] logger.debug("total carbon savings: %s", total_savings) return total_savings +def get_carbon_footprint_level(group): + return GroupRoundDataValue.objects.get(group=group, parameter=get_carbon_footprint_level_parameter()) + def should_advance_level(group, level): if level < 3: daily_carbon_savings = get_daily_carbon_savings(group) + logger.debug("daily carbon savings were %s, but were they greater than level * 10? %s", daily_carbon_savings, + level * 10) return daily_carbon_savings > level * 10 return False --- a/vcweb/lighterprints/tests.py Mon Aug 08 13:40:08 2011 -0700 +++ b/vcweb/lighterprints/tests.py Mon Aug 08 16:28:36 2011 -0700 @@ -33,13 +33,16 @@ activity_performed_parameter = create_activity_performed_parameter() # initialize participant carbon savings for participant_group_relationship in ParticipantGroupRelationship.objects.filter(group__experiment=e): - for activity in Activity.objects.all(): - activity_performed = participant_group_relationship.participant_data_value_set.get(round_data=current_round_data, parameter=activity_performed_parameter, experiment=e) + for activity in available_activities(): + activity_performed = participant_group_relationship.participant_data_value_set.create(round_data=current_round_data, parameter=activity_performed_parameter, experiment=e) activity_performed.value = activity.id activity_performed.save() logger.debug("all activities performed: %s", participant_group_relationship.participant_data_value_set.all()) update_active_experiments(self) + for group in e.group_set.all(): + self.assertEqual(get_carbon_footprint_level(group).value, 2) + self.assertEqual(get_daily_carbon_savings(group), Decimal('19.15')) class DoActivityTest(BaseTest): Repository URL: https://bitbucket.org/virtualcommons/vcweb/ -- This is a commit notification from bitbucket.org. You are receiving this because you have the service enabled, addressing the recipient of this email. |