Skip to content

Commit

Permalink
add finance module
Browse files Browse the repository at this point in the history
  • Loading branch information
rithviknishad committed Dec 1, 2024
1 parent 69dd85f commit ea65dd1
Show file tree
Hide file tree
Showing 16 changed files with 131 additions and 3 deletions.
2 changes: 1 addition & 1 deletion config/api_router.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.conf import settings
from django.urls import include, path
from rest_framework.routers import DefaultRouter, SimpleRouter
from ilgi.energy_journal.api.viewsets.energy_log import EnergyLogViewSet
from ilgi.energy_journal.viewsets import EnergyLogViewSet

router = DefaultRouter() if settings.DEBUG else SimpleRouter()

Expand Down
1 change: 1 addition & 0 deletions config/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"openapi.apps.OpenAPIConfig",
"ilgi.users.apps.UsersConfig",
"ilgi.energy_journal.apps.EnergyJournalConfig",
"ilgi.finance.apps.FinanceConfig",
]

INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS
Expand Down
File renamed without changes.
1 change: 0 additions & 1 deletion ilgi/energy_journal/models/__init__.py

This file was deleted.

File renamed without changes.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from rest_framework.viewsets import ModelViewSet
from rest_framework.permissions import IsAuthenticated

from ilgi.energy_journal.api.serializers.energy_log import EnergyLogSerializer
from ilgi.energy_journal.serializers import EnergyLogSerializer
from ilgi.energy_journal.models import EnergyLog


Expand Down
File renamed without changes.
5 changes: 5 additions & 0 deletions ilgi/finance/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from django.apps import AppConfig


class FinanceConfig(AppConfig):
name = "ilgi.finance"
57 changes: 57 additions & 0 deletions ilgi/finance/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# Generated by Django 5.1.2 on 2024-11-30 12:37

import django.core.validators
import uuid
from django.db import migrations, models


class Migration(migrations.Migration):

initial = True

dependencies = []

operations = [
migrations.CreateModel(
name="EnergyLog",
fields=[
(
"id",
models.BigAutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
(
"external_id",
models.UUIDField(db_index=True, default=uuid.uuid4, unique=True),
),
(
"created_at",
models.DateTimeField(auto_now_add=True, db_index=True, null=True),
),
(
"updated_at",
models.DateTimeField(auto_now=True, db_index=True, null=True),
),
("deleted", models.BooleanField(db_index=True, default=False)),
("title", models.CharField(max_length=255)),
("story", models.TextField()),
("date", models.DateField()),
(
"energy_delta",
models.SmallIntegerField(
validators=[
django.core.validators.MinValueValidator(-5),
django.core.validators.MaxValueValidator(5),
]
),
),
],
options={
"abstract": False,
},
),
]
27 changes: 27 additions & 0 deletions ilgi/finance/migrations/0002_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 5.1.2 on 2024-11-30 12:37

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


class Migration(migrations.Migration):

initial = True

dependencies = [
("energy_journal", "0001_initial"),
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]

operations = [
migrations.AddField(
model_name="energylog",
name="created_by",
field=models.ForeignKey(
on_delete=django.db.models.deletion.PROTECT,
related_name="+",
to=settings.AUTH_USER_MODEL,
),
),
]
File renamed without changes.
29 changes: 29 additions & 0 deletions ilgi/finance/models.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
from django.db import models

from utils.models import BaseModel


class Account(BaseModel):
name = models.CharField(max_length=255)
balance = models.DecimalField(max_digits=10, decimal_places=2)
owner = models.ForeignKey("users.User", on_delete=models.PROTECT)
active = models.BooleanField(default=True)


class Transaction(BaseModel):
name = models.CharField(max_length=255)
description = models.TextField()
performed_on = models.DateField()
created_by = models.ForeignKey("users.User", on_delete=models.PROTECT)


class TransactionEntry(BaseModel):
transaction = models.ForeignKey("finance.Transaction", on_delete=models.PROTECT, related_name="entries")
account = models.ForeignKey(
"finance.Account", on_delete=models.PROTECT, null=True, blank=True, related_name="transaction_entries"
)
amount = models.DecimalField(max_digits=10, decimal_places=2)
name = models.CharField(max_length=255)

class Meta:
unique_together = ("transaction", "account")
10 changes: 10 additions & 0 deletions ilgi/finance/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
from rest_framework import serializers

from ilgi.finance.models import Account

class AccountSerializer(serializers.ModelSerializer):
id = serializers.UUIDField(source="external_id")

class Meta:
model = Account
fields = "__all__"
Empty file added ilgi/finance/tasks/__init__.py
Empty file.
Empty file added ilgi/finance/tests/__init__.py
Empty file.
Empty file added ilgi/finance/viewsets.py
Empty file.

0 comments on commit ea65dd1

Please sign in to comment.