-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Redid refunds models to add link to transaction table, added serializ…
…ers, added view folders, other small updates
- Loading branch information
Showing
14 changed files
with
526 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
"""Admin for the refunds app.""" | ||
|
||
from django.contrib import admin | ||
|
||
from refunds.models import Request, RequestRecipient | ||
|
||
|
||
class RequestRecipientAdmin(admin.ModelAdmin): | ||
"""Admin for RequestRecipient.""" | ||
|
||
list_display = ("email", "system") | ||
search_fields = ("email", "system") | ||
list_filter = ("system",) | ||
|
||
|
||
class RequestAdmin(admin.ModelAdmin): | ||
"""Admin for Request.""" | ||
|
||
list_display = ("requester_email", "order", "processed_date", "processed_by_email") | ||
|
||
@admin.display(description="Requester") | ||
def requester_email(self, obj): | ||
"""Return the requester's email.""" | ||
return obj.requester.email | ||
|
||
@admin.display(description="Processed by") | ||
def processed_by_email(self, obj): | ||
"""Return the processed by user's email.""" | ||
return obj.processed_by.email | ||
|
||
|
||
admin.site.register(RequestRecipient, RequestRecipientAdmin) | ||
admin.site.register(Request, RequestAdmin) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
"""API functions for refunds.""" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
"""App config for refunds.""" | ||
|
||
from django.apps import AppConfig | ||
|
||
|
||
class RefundsConfig(AppConfig): | ||
default_auto_field = "django.db.models.BigAutoField" | ||
name = "refunds" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,256 @@ | ||
# Generated by Django 4.2.17 on 2025-01-31 20:14 | ||
|
||
import uuid | ||
from decimal import Decimal | ||
|
||
import django.db.models.deletion | ||
from django.conf import settings | ||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
initial = True | ||
|
||
dependencies = [ | ||
("system_meta", "0009_product_details_url"), | ||
("payments", "0014_alter_discount_payment_type"), | ||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name="Request", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("created_on", models.DateTimeField(auto_now_add=True)), | ||
("updated_on", models.DateTimeField(auto_now=True)), | ||
("processed_date", models.DateTimeField(blank=True, null=True)), | ||
( | ||
"total_refunded", | ||
models.DecimalField( | ||
blank=True, | ||
decimal_places=5, | ||
default=Decimal("0"), | ||
max_digits=20, | ||
null=True, | ||
), | ||
), | ||
( | ||
"status", | ||
models.CharField( | ||
blank=True, | ||
choices=[ | ||
("pending", "pending"), | ||
("created", "created"), | ||
("denied", "denied"), | ||
("approved", "approved"), | ||
("failed", "failed"), | ||
], | ||
default="created", | ||
max_length=20, | ||
), | ||
), | ||
( | ||
"zendesk_ticket", | ||
models.CharField(blank=True, default="", max_length=255), | ||
), | ||
( | ||
"order", | ||
models.ForeignKey( | ||
on_delete=django.db.models.deletion.PROTECT, | ||
related_name="refund_requests", | ||
to="payments.order", | ||
), | ||
), | ||
( | ||
"processed_by", | ||
models.ForeignKey( | ||
blank=True, | ||
null=True, | ||
on_delete=django.db.models.deletion.PROTECT, | ||
related_name="processed_refund_requests", | ||
to=settings.AUTH_USER_MODEL, | ||
), | ||
), | ||
( | ||
"requester", | ||
models.ForeignKey( | ||
on_delete=django.db.models.deletion.PROTECT, | ||
related_name="refund_requests", | ||
to=settings.AUTH_USER_MODEL, | ||
), | ||
), | ||
], | ||
options={ | ||
"abstract": False, | ||
}, | ||
), | ||
migrations.CreateModel( | ||
name="RequestRecipient", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("created_on", models.DateTimeField(auto_now_add=True)), | ||
("updated_on", models.DateTimeField(auto_now=True)), | ||
( | ||
"email", | ||
models.EmailField( | ||
help_text="The email address to send refund requests to.", | ||
max_length=254, | ||
unique=True, | ||
), | ||
), | ||
( | ||
"system", | ||
models.ForeignKey( | ||
on_delete=django.db.models.deletion.CASCADE, | ||
to="system_meta.integratedsystem", | ||
), | ||
), | ||
], | ||
options={ | ||
"abstract": False, | ||
}, | ||
), | ||
migrations.CreateModel( | ||
name="RequestProcessingCode", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("created_on", models.DateTimeField(auto_now_add=True)), | ||
("updated_on", models.DateTimeField(auto_now=True)), | ||
( | ||
"email", | ||
models.EmailField( | ||
help_text="The email address the code was sent to.", | ||
max_length=254, | ||
), | ||
), | ||
( | ||
"code_batch", | ||
models.UUIDField( | ||
blank=True, | ||
help_text="Batch ID, generated when the codes are generated.", | ||
null=True, | ||
), | ||
), | ||
("approve_code", models.UUIDField(default=uuid.uuid4, editable=False)), | ||
("deny_code", models.UUIDField(default=uuid.uuid4, editable=False)), | ||
("code_active", models.BooleanField(default=True)), | ||
( | ||
"code_used", | ||
models.CharField( | ||
blank=True, | ||
choices=[("approve", "approve"), ("deny", "deny")], | ||
default="", | ||
max_length=20, | ||
), | ||
), | ||
("code_used_on", models.DateTimeField(blank=True, null=True)), | ||
( | ||
"refund_request", | ||
models.ForeignKey( | ||
on_delete=django.db.models.deletion.CASCADE, | ||
related_name="process_code", | ||
to="refunds.request", | ||
), | ||
), | ||
], | ||
options={ | ||
"abstract": False, | ||
}, | ||
), | ||
migrations.CreateModel( | ||
name="RequestLine", | ||
fields=[ | ||
( | ||
"id", | ||
models.BigAutoField( | ||
auto_created=True, | ||
primary_key=True, | ||
serialize=False, | ||
verbose_name="ID", | ||
), | ||
), | ||
("created_on", models.DateTimeField(auto_now_add=True)), | ||
("updated_on", models.DateTimeField(auto_now=True)), | ||
( | ||
"status", | ||
models.CharField( | ||
blank=True, | ||
choices=[ | ||
("pending", "pending"), | ||
("created", "created"), | ||
("denied", "denied"), | ||
("approved", "approved"), | ||
("failed", "failed"), | ||
], | ||
default="created", | ||
help_text="The status of this line item.", | ||
max_length=20, | ||
), | ||
), | ||
( | ||
"refunded_amount", | ||
models.DecimalField( | ||
blank=True, | ||
decimal_places=5, | ||
default=Decimal("0"), | ||
help_text="The amount refunded for this line item (may not be the full amount charged).", | ||
max_digits=20, | ||
null=True, | ||
), | ||
), | ||
( | ||
"line", | ||
models.ForeignKey( | ||
help_text="The individual line item to refund.", | ||
on_delete=django.db.models.deletion.PROTECT, | ||
related_name="+", | ||
to="payments.line", | ||
), | ||
), | ||
( | ||
"refund_request", | ||
models.ForeignKey( | ||
on_delete=django.db.models.deletion.CASCADE, | ||
related_name="lines", | ||
to="refunds.request", | ||
), | ||
), | ||
( | ||
"transactions", | ||
models.ManyToManyField( | ||
blank=True, | ||
related_name="refund_request_lines", | ||
to="payments.transaction", | ||
), | ||
), | ||
], | ||
options={ | ||
"abstract": False, | ||
}, | ||
), | ||
] |
Empty file.
Oops, something went wrong.