Exemplo n.º 1
0
    def get_all_values(self, obj):
        gasoline_rows = CreditCalculationService.get_all(
            model_name="CarbonIntensityLimit",
            fuel_class__fuel_class="Gasoline",
            compliance_period_id=obj.id,
        )

        diesel_rows = CreditCalculationService.get_all(
            model_name="CarbonIntensityLimit",
            fuel_class__fuel_class="Diesel",
            compliance_period_id=obj.id,
        )

        rows = list(gasoline_rows) + list(diesel_rows)

        serialized = []

        for row in rows:
            serialized.append({
                "fuel_class": row.fuel_class.fuel_class,
                "density": row.density,
                "effective_date": row.effective_date,
                "expiration_date": row.effective_date,
                "create_timestamp": row.create_timestamp
            })

        return serialized
Exemplo n.º 2
0
    def get_revised_limits(self, obj):
        """
        Gets the future Carbon Intensity Limits for the compliance period,
        if applicable
        """
        diesel_limit = CreditCalculationService.get_later(
            compliance_period_id=obj.id,
            effective_date=date.today(),
            fuel_class__fuel_class="Diesel",
            model_name="CarbonIntensityLimit")

        gasoline_limit = CreditCalculationService.get_later(
            compliance_period_id=obj.id,
            effective_date=date.today(),
            fuel_class__fuel_class="Gasoline",
            model_name="CarbonIntensityLimit")

        return {
            "diesel": {
                "fuel": "Diesel Class",
                "density": diesel_limit.density,
                "effective_date": diesel_limit.effective_date,
                "expiration_date": diesel_limit.expiration_date
            } if diesel_limit else None,
            "gasoline": {
                "fuel": "Gasoline Class",
                "density": gasoline_limit.density,
                "effective_date": gasoline_limit.effective_date,
                "expiration_date": gasoline_limit.expiration_date
            } if gasoline_limit else None
        }
Exemplo n.º 3
0
    def get_all_values(self, obj):
        gasoline_rows = CreditCalculationService.get_all(
            model_name="EnergyEffectivenessRatio",
            fuel_class__fuel_class="Gasoline",
            category_id=obj.id
        )

        diesel_rows = CreditCalculationService.get_all(
            model_name="EnergyEffectivenessRatio",
            fuel_class__fuel_class="Diesel",
            category_id=obj.id
        )

        rows = list(gasoline_rows) + list(diesel_rows)

        serialized = []

        for row in rows:
            serialized.append({
                "ratio": row.ratio,
                "fuel_class": row.fuel_class.fuel_class,
                "effective_date": row.effective_date,
                "expiration_date": row.expiration_date,
                "create_timestamp": row.create_timestamp
            })

        return serialized
Exemplo n.º 4
0
    def update(self, instance, validated_data):
        request = self.context.get('request')

        if 'diesel_carbon_intensity' in validated_data:
            fuel_class_id = FuelClass.objects.get(fuel_class="Diesel").id

            CreditCalculationService.update(
                compliance_period_id=instance.id,
                density=validated_data['diesel_carbon_intensity'],
                effective_date=validated_data['diesel_effective_date'],
                fuel_class_id=fuel_class_id,
                model_name="CarbonIntensityLimit",
                update_user=request.user)

        if 'gasoline_carbon_intensity' in validated_data:
            fuel_class_id = FuelClass.objects.get(fuel_class="Gasoline").id

            CreditCalculationService.update(
                compliance_period_id=instance.id,
                density=validated_data['gasoline_carbon_intensity'],
                effective_date=validated_data['gasoline_effective_date'],
                fuel_class_id=fuel_class_id,
                model_name="CarbonIntensityLimit",
                update_user=request.user)

        return validated_data
Exemplo n.º 5
0
    def effective_carbon_intensity(self):
        if self.provision_of_the_act is None:
            return None

        t = self.provision_of_the_act.determination_type.the_type

        if t == 'Alternative':
            return self.intensity
        if t == 'GHGenius':
            i = self.schedule_d_sheet_index
            sheets = self.schedule.compliance_report.schedule_d.sheets.all()
            return sheets[i].carbon_intensity
        if t == 'Fuel Code':
            if self.fuel_code is None:
                return None
            return self.fuel_code.carbon_intensity
        if t == 'Carbon Intensity' or t == 'Default Carbon Intensity':
            period = self.schedule.compliance_report.compliance_period
            if self.fuel_type.credit_calculation_only:
                obj = CreditCalculationService.get(
                    category__name=self.fuel_type.name,
                    effective_date=period.effective_date,
                    model_name="PetroleumCarbonIntensity"
                )
                return obj.density
            else:
                obj = CreditCalculationService.get(
                    category__name=self.fuel_type.default_carbon_intensity_category.name,
                    effective_date=period.effective_date,
                    model_name="DefaultCarbonIntensity"
                )
                return obj.density

        return None
Exemplo n.º 6
0
    def update(self, instance, validated_data):
        request = self.context.get('request')

        if 'diesel_ratio' in validated_data:
            fuel_class_id = FuelClass.objects.get(fuel_class="Diesel").id

            CreditCalculationService.update(
                category_id=instance.id,
                effective_date=validated_data['diesel_effective_date'],
                fuel_class_id=fuel_class_id,
                model_name="EnergyEffectivenessRatio",
                ratio=validated_data['diesel_ratio'],
                update_user=request.user
            )

        if 'gasoline_ratio' in validated_data:
            fuel_class_id = FuelClass.objects.get(fuel_class="Gasoline").id

            CreditCalculationService.update(
                category_id=instance.id,
                effective_date=validated_data['gasoline_effective_date'],
                fuel_class_id=fuel_class_id,
                model_name="EnergyEffectivenessRatio",
                ratio=validated_data['gasoline_ratio'],
                update_user=request.user
            )

        return validated_data
Exemplo n.º 7
0
    def update(self, instance, validated_data):
        request = self.context.get('request')

        CreditCalculationService.update(
            category_id=instance.id,
            effective_date=validated_data['effective_date'],
            model_name="EnergyDensity",
            density=validated_data['density'],
            update_user=request.user)

        return validated_data
Exemplo n.º 8
0
    def get_default_carbon_intensity(self, obj):
        """
        Gets the Default Carbon Intensity
        """
        if obj.credit_calculation_only:
            row = CreditCalculationService.get(
                category__name=obj.name,
                effective_date=self.effective_date,
                model_name="PetroleumCarbonIntensity")
        else:
            row = CreditCalculationService.get(
                category_id=obj.default_carbon_intensity_category_id,
                effective_date=self.effective_date,
                model_name="DefaultCarbonIntensity")

        return row.density if row else None
Exemplo n.º 9
0
    def get_density(self, obj):
        """
        Gets the Carbon Intensity
        """
        row = CreditCalculationService.get(model_name="DefaultCarbonIntensity",
                                           category_id=obj.id,
                                           effective_date=date.today())

        return row.density if row else None
Exemplo n.º 10
0
 def eer(self):
     period = self.schedule.compliance_report.compliance_period
     obj = CreditCalculationService.get(
         category_id=self.fuel_type.energy_effectiveness_ratio_category_id,
         effective_date=period.effective_date,
         fuel_class__fuel_class=self.fuel_class.fuel_class,
         model_name="EnergyEffectivenessRatio"
     )
     return obj.ratio
Exemplo n.º 11
0
    def energy_density(self):
        period = self.schedule.compliance_report.compliance_period
        obj = CreditCalculationService.get(
            category_id=self.fuel_type.energy_density_category_id,
            effective_date=period.effective_date,
            model_name="EnergyDensity"
        )

        return obj.density
Exemplo n.º 12
0
    def get_density(self, obj):
        """
        Gets the Energy Density
        """
        density = CreditCalculationService.get(model_name="EnergyDensity",
                                               category_id=obj.id,
                                               effective_date=date.today())

        return density.density if density else None
Exemplo n.º 13
0
 def ci_limit(self):
     period = self.schedule.compliance_report.compliance_period
     obj = CreditCalculationService.get(
         compliance_period=period,
         effective_date=period.effective_date,
         fuel_class__fuel_class=self.fuel_class.fuel_class,
         model_name="CarbonIntensityLimit"
     )
     return obj.density
Exemplo n.º 14
0
    def get_energy_density(self, obj):
        """
        Gets the Energy Density
        """
        row = CreditCalculationService.get(
            category_id=obj.energy_density_category_id,
            effective_date=self.effective_date,
            model_name="EnergyDensity")

        return row.density if row else None
Exemplo n.º 15
0
    def get_carbon_intensity_limit(self, _obj):
        """
        Gets the Carbon Intensity Limit
        """
        diesel_row = CreditCalculationService.get(
            compliance_period_id=self.compliance_period_id,
            effective_date=self.effective_date,
            fuel_class__fuel_class="Diesel",
            model_name="CarbonIntensityLimit")

        gasoline_row = CreditCalculationService.get(
            compliance_period_id=self.compliance_period_id,
            effective_date=self.effective_date,
            fuel_class__fuel_class="Gasoline",
            model_name="CarbonIntensityLimit")

        return {
            "diesel": diesel_row.density if diesel_row else None,
            "gasoline": gasoline_row.density if gasoline_row else None
        }
Exemplo n.º 16
0
    def get_energy_effectiveness_ratio(self, obj):
        """
        Gets the Energy Effectiveness Ratio
        """
        diesel_row = CreditCalculationService.get(
            category_id=obj.energy_effectiveness_ratio_category_id,
            effective_date=self.effective_date,
            fuel_class__fuel_class="Diesel",
            model_name="EnergyEffectivenessRatio")

        gasoline_row = CreditCalculationService.get(
            category_id=obj.energy_effectiveness_ratio_category_id,
            effective_date=self.effective_date,
            fuel_class__fuel_class="Gasoline",
            model_name="EnergyEffectivenessRatio")

        return {
            "diesel": diesel_row.ratio if diesel_row else None,
            "gasoline": gasoline_row.ratio if gasoline_row else None
        }
Exemplo n.º 17
0
    def get_diesel_ratio(self, obj):
        """
        Gets the Energy Effectiveness Ratio for Diesel Class
        """
        diesel_ratio = CreditCalculationService.get(
            model_name="EnergyEffectivenessRatio",
            category_id=obj.id,
            effective_date=date.today(),
            fuel_class__fuel_class="Diesel"
        )

        return diesel_ratio.ratio if diesel_ratio else None
Exemplo n.º 18
0
    def get_gasoline_ratio(self, obj):
        """
        Gets the Energy Effectiveness Ratio for Gasoline Class
        """
        gasoline_ratio = CreditCalculationService.get(
            model_name="EnergyEffectivenessRatio",
            category_id=obj.id,
            effective_date=date.today(),
            fuel_class__fuel_class="Gasoline"
        )

        return gasoline_ratio.ratio if gasoline_ratio else None
Exemplo n.º 19
0
    def get_ratios(self, obj):
        """
        Gets the Energy Effectiveness Ratio for Diesel and Gasoline Class
        """
        diesel_ratio = CreditCalculationService.get(
            category_id=obj.id,
            effective_date=date.today(),
            fuel_class__fuel_class="Diesel",
            model_name="EnergyEffectivenessRatio"
        )

        gasoline_ratio = CreditCalculationService.get(
            category_id=obj.id,
            effective_date=date.today(),
            fuel_class__fuel_class="Gasoline",
            model_name="EnergyEffectivenessRatio"
        )

        return {
            "diesel": {
                "fuel": "Diesel Class",
                "ratio": diesel_ratio.ratio if diesel_ratio else None,
                "effective_date":
                    diesel_ratio.effective_date if diesel_ratio else None,
                "expiration_date":
                    diesel_ratio.expiration_date if diesel_ratio else None
            },
            "gasoline": {
                "fuel": "Gasoline Class",
                "ratio": gasoline_ratio.ratio if gasoline_ratio else None,
                "effective_date":
                    gasoline_ratio.effective_date if gasoline_ratio else None,
                "expiration_date":
                    gasoline_ratio.expiration_date if gasoline_ratio else None
            }
        }
Exemplo n.º 20
0
    def get_all_values(self, obj):
        rows = CreditCalculationService.get_all(model_name="EnergyDensity",
                                                category_id=obj.id)

        serialized = []

        for row in rows:
            serialized.append({
                "density": row.density,
                "effective_date": row.effective_date,
                "expiration_date": row.expiration_date,
                "create_timestamp": row.create_timestamp
            })

        return serialized
Exemplo n.º 21
0
    def get_density(self, obj):
        """
        Gets the Energy Density
        """
        row = CreditCalculationService.get(model_name="EnergyDensity",
                                           category_id=obj.id,
                                           effective_date=date.today())

        if not row:
            return None

        return {
            "density": row.density,
            "effective_date": row.effective_date,
            "expiration_date": row.expiration_date
        }
Exemplo n.º 22
0
    def get_revised_density(self, obj):
        """
        Gets the future density value, if applicable
        """
        density = CreditCalculationService.get_later(
            model_name="EnergyDensity",
            category_id=obj.id,
            effective_date=date.today())

        if not density:
            return None

        return {
            "density": density.density,
            "effective_date": density.effective_date
        }
Exemplo n.º 23
0
    def get_revised_gasoline_ratio(self, obj):
        """
        Gets the future gasoline ratio, if applicable
        """
        ratio = CreditCalculationService.get_later(
            model_name="EnergyEffectivenessRatio",
            category_id=obj.id,
            effective_date=date.today(),
            fuel_class__fuel_class="Gasoline"
        )

        if not ratio:
            return None

        return {
            "ratio": ratio.ratio,
            "effective_date": ratio.effective_date
        }