Skip to content

Commit

Permalink
Merge pull request #240 from bcgov/release-v0.1.0
Browse files Browse the repository at this point in the history
Release v0.1.0.2
  • Loading branch information
kuanfandevops committed Apr 26, 2018
2 parents 3b058c1 + 89078a3 commit 20fc269
Show file tree
Hide file tree
Showing 24 changed files with 465 additions and 27 deletions.
102 changes: 102 additions & 0 deletions backend/api/fixtures/compliance_periods.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
[
{
"fields": {
"description": "2010",
"display_order": "1",
"effective_date": "2010-01-01",
"expiration_date": "2010-12-31"
},
"model": "api.complianceperiod",
"pk": "1"
},
{
"fields": {
"description": "2011",
"display_order": "2",
"effective_date": "2011-01-01",
"expiration_date": "2011-12-31"
},
"model": "api.complianceperiod",
"pk": "2"
},
{
"fields": {
"description": "2012-13",
"display_order": "3",
"effective_date": "2012-01-01",
"expiration_date": "2013-06-30"
},
"model": "api.complianceperiod",
"pk": "3"
},
{
"fields": {
"description": "2013-14",
"display_order": "4",
"effective_date": "2013-07-01",
"expiration_date": "2014-12-31"
},
"model": "api.complianceperiod",
"pk": "4"
},
{
"fields": {
"description": "2015",
"display_order": "5",
"effective_date": "2015-01-01",
"expiration_date": "2015-12-31"
},
"model": "api.complianceperiod",
"pk": "5"
},
{
"fields": {
"description": "2016",
"display_order": "6",
"effective_date": "2016-01-01",
"expiration_date": "2016-12-31"
},
"model": "api.complianceperiod",
"pk": "6"
},
{
"fields": {
"description": "2017",
"display_order": "7",
"effective_date": "2017-01-01",
"expiration_date": "2017-12-31"
},
"model": "api.complianceperiod",
"pk": "7"
},
{
"fields": {
"description": "2018",
"display_order": "8",
"effective_date": "2018-01-01",
"expiration_date": "2018-12-31"
},
"model": "api.complianceperiod",
"pk": "8"
},
{
"fields": {
"description": "2019",
"display_order": "9",
"effective_date": "2019-01-01",
"expiration_date": "2019-12-31"
},
"model": "api.complianceperiod",
"pk": "9"
},
{
"fields": {
"description": "2020",
"display_order": "10",
"effective_date": "2020-01-01",
"expiration_date": "2020-12-31"
},
"model": "api.complianceperiod",
"pk": "10"
}
]
21 changes: 21 additions & 0 deletions backend/api/migrations/0005_auto_20180424_1445.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-24 14:45
from __future__ import unicode_literals

import django.contrib.auth.validators
from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0004_auto_20180209_2207'),
]

operations = [
migrations.AlterField(
model_name='user',
name='username',
field=models.CharField(error_messages={'unique': 'A user with that username already exists.'}, help_text='Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[django.contrib.auth.validators.ASCIIUsernameValidator()], verbose_name='username'),
),
]
39 changes: 39 additions & 0 deletions backend/api/migrations/0006_auto_20180424_1527.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-24 15:27
from __future__ import unicode_literals

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0005_auto_20180424_1445'),
]

operations = [
migrations.CreateModel(
name='CompliancePeriod',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('create_timestamp', models.DateTimeField(auto_now_add=True, null=True)),
('update_timestamp', models.DateTimeField(auto_now=True, null=True)),
('description', models.CharField(blank=True, max_length=1000, null=True)),
('display_order', models.IntegerField()),
('effective_date', models.DateField(blank=True, null=True)),
('expiration_date', models.DateField(blank=True, null=True)),
('create_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='api_complianceperiod_CREATE_USER', to=settings.AUTH_USER_MODEL)),
('update_user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='api_complianceperiod_UPDATE_USER', to=settings.AUTH_USER_MODEL)),
],
options={
'db_table': 'compliance_period',
},
),
migrations.AddField(
model_name='credittrade',
name='compliance_period',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='credit_trades', to='api.CompliancePeriod'),
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11 on 2018-04-24 18:49
from __future__ import unicode_literals

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('api', '0006_auto_20180424_1527'),
]

operations = [
migrations.AddField(
model_name='credittradehistory',
name='compliance_period',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='credit_trade_histories', to='api.CompliancePeriod'),
),
]
36 changes: 36 additions & 0 deletions backend/api/models/CompliancePeriod.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
"""
REST API Documentation for the NRS TFRS Credit Trading Application
The Transportation Fuels Reporting System is being designed to streamline
compliance reporting for transportation fuel suppliers in accordance with
the Renewable & Low Carbon Fuel Requirements Regulation.
OpenAPI spec version: v1
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""

from django.db import models

from auditable.models import Auditable


class CompliancePeriod(Auditable):
description = models.CharField(max_length=1000, blank=True, null=True)
display_order = models.IntegerField()
effective_date = models.DateField(blank=True, null=True)
expiration_date = models.DateField(blank=True, null=True)

class Meta:
db_table = 'compliance_period'
9 changes: 8 additions & 1 deletion backend/api/models/CreditTrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
the Renewable & Low Carbon Fuel Requirements Regulation.
OpenAPI spec version: v1
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand All @@ -22,6 +22,7 @@
"""
from decimal import Decimal
from django.db import models
from .CompliancePeriod import CompliancePeriod
from .CreditTradeStatus import CreditTradeStatus

from auditable.models import Auditable
Expand Down Expand Up @@ -59,6 +60,12 @@ class CreditTrade(Auditable):
on_delete=models.PROTECT)
trade_effective_date = models.DateField(blank=True, null=True)
note = models.CharField(max_length=4000, blank=True, null=True)
compliance_period = models.ForeignKey(
'CompliancePeriod',
related_name='credit_trades',
blank=True, null=True,
on_delete=models.PROTECT
)

@property
def credits_from(self):
Expand Down
12 changes: 10 additions & 2 deletions backend/api/models/CreditTradeHistory.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
"""
REST API Documentation for the NRS TFRS Credit Trading Application
The Transportation Fuels Reporting System is being designed to streamline compliance reporting for transportation fuel suppliers in accordance with the Renewable & Low Carbon Fuel Requirements Regulation.
The Transportation Fuels Reporting System is being designed to streamline
compliance reporting for transportation fuel suppliers in accordance with
the Renewable & Low Carbon Fuel Requirements Regulation.
OpenAPI spec version: v1
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -59,6 +61,12 @@ class CreditTradeHistory(Auditable):
trade_effective_date = models.DateField(blank=True, null=True)
note = models.CharField(max_length=4000, blank=True, null=True)
is_internal_history_record = models.BooleanField()
compliance_period = models.ForeignKey(
'CompliancePeriod',
related_name='credit_trade_histories',
blank=True, null=True,
on_delete=models.PROTECT
)

class Meta:
db_table = 'credit_trade_history'
Expand Down
16 changes: 13 additions & 3 deletions backend/api/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@

from rest_framework import serializers

from .models.CompliancePeriod import CompliancePeriod
from .models.CreditTrade import CreditTrade
from .models.CreditTradeHistory import CreditTradeHistory
from .models.CreditTradeStatus import CreditTradeStatus
Expand All @@ -48,13 +49,20 @@
from .models.UserViewModel import UserViewModel


class CompliancePeriodSerializer(serializers.ModelSerializer):
class Meta:
model = CompliancePeriod
fields = ('id', 'description', 'effective_date', 'expiration_date',
'display_order')


class CreditTradeSerializer(serializers.ModelSerializer):
class Meta:
model = CreditTrade
fields = ('id', 'status', 'initiator', 'respondent',
'type', 'number_of_credits',
'fair_market_value_per_credit', 'zero_reason',
'trade_effective_date')
'trade_effective_date', 'compliance_period')


class CreditTradeHistorySerializer(serializers.ModelSerializer):
Expand All @@ -64,7 +72,7 @@ class Meta:
'respondent', 'status', 'type',
'number_of_credits', 'fair_market_value_per_credit',
'zero_reason', 'trade_effective_date',
'note', 'is_internal_history_record')
'note', 'is_internal_history_record', 'compliance_period')


class CreditTradeStatusSerializer(serializers.ModelSerializer):
Expand Down Expand Up @@ -319,6 +327,7 @@ class CreditTrade2Serializer(serializers.ModelSerializer):
credits_from = OrganizationSerializer(read_only=True)
credits_to = OrganizationSerializer(read_only=True)
actions = CreditTradeStatusMinSerializer(many=True, read_only=True)
compliance_period = CompliancePeriodSerializer(read_only=True)

class Meta:
model = CreditTrade
Expand All @@ -328,7 +337,8 @@ class Meta:
'fair_market_value_per_credit', 'total_value',
'zero_reason',
'trade_effective_date', 'credits_from', 'credits_to',
'update_timestamp', 'actions', 'note')
'update_timestamp', 'actions', 'note',
'compliance_period')


class CreditTradeHistory2Serializer(serializers.ModelSerializer):
Expand Down
7 changes: 5 additions & 2 deletions backend/api/services/CreditTradeService.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,12 @@ def create_history(credit_trade, is_new=False):
status_id=credit_trade.status.id,
type_id=credit_trade.type.id,
number_of_credits=credit_trade.number_of_credits,
fair_market_value_per_credit=credit_trade.fair_market_value_per_credit,
fair_market_value_per_credit=credit_trade.
fair_market_value_per_credit,
zero_reason_id=zero_reason,
trade_effective_date=credit_trade.trade_effective_date,
note=credit_trade.note,
compliance_period_id=credit_trade.compliance_period_id,
is_internal_history_record=is_internal_history_record,
credit_trade_update_time=credit_trade_update_time,
create_user=user,
Expand All @@ -105,7 +107,8 @@ def create_history(credit_trade, is_new=False):
try:
history.full_clean()
except ValidationError as e:
# TODO: Do something based on the errors contained in e.message_dict
# TODO: Do something based on the errors contained in
# e.message_dict
# Display them to a user, or handle them programmatically.
raise ValidationError(e)

Expand Down
2 changes: 2 additions & 0 deletions backend/api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
from . import views
# custom views
from . import views_custom
from .viewsets.CompliancePeriod import CompliancePeriodViewSet
from .viewsets.CreditTrade import CreditTradeViewSet
from .viewsets.Organization import OrganizationViewSet
from .viewsets.User import UserViewSet
Expand All @@ -39,6 +40,7 @@

# Create a router and register our views with it.
router = DefaultRouter(trailing_slash=False)
router.register(r'compliance_periods', CompliancePeriodViewSet)
router.register(r'credit_trades', CreditTradeViewSet)
router.register(r'organizations', OrganizationViewSet)
router.register(r'users', UserViewSet)
Expand Down
Loading

0 comments on commit 20fc269

Please sign in to comment.