Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions api/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@
path("auth/registration/", include("dj_rest_auth.registration.urls")),
path("users/", include("users.urls")),
path("", include(router.urls)),
path("storage/", include("storage.urls")),
]
1 change: 1 addition & 0 deletions drfx/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,7 @@
"users",
"www",
"emails",
"storage",
# so that we don't have to write
# hundreds of lines of css
"bootstrap4",
Expand Down
1 change: 1 addition & 0 deletions drfx/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
path("docs/", include_docs_urls(title="mulysa docs")),
path("www/", include("www.urls")),
path("email/", include("emails.urls")),
path("storage/", include("storage.urls")),
path(
"o/",
include(
Expand Down
64 changes: 64 additions & 0 deletions storage/admin.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
from django.contrib import admin

from .models import StorageReservation, StoragePayment, StorageService, StorageUnit


class StorageServiceAdmin(admin.ModelAdmin):
list_display = ["name", "description", "pending_payment_days", "created_at"]
readonly_fields = ["created_at", "updated_at"]


class StorageUnitAdmin(admin.ModelAdmin):
list_display = [
"service",
"name",
"price_per_month",
"max_rental_months",
"is_disabled",
"status_display",
"get_current_renter_admin",
]

readonly_fields = ["created_at", "updated_at"]

def status_display(self, obj):
return obj.status

status_display.short_description = "Status"


class StorageReservationAdmin(admin.ModelAdmin):
list_display = [
"user",
"unit",
"status",
"start_date",
"end_date",
"total_paid_months",
"reference_number",
"pending_until",
"paid_at",
]

readonly_fields = [
"created_at",
]


class StoragePaymentAdmin(admin.ModelAdmin):
list_display = [
"reservation",
"reference_number",
"amount",
"months",
"paid_at",
"created_at",
]

readonly_fields = ["created_at", "paid_at"]


admin.site.register(StorageService, StorageServiceAdmin)
admin.site.register(StorageUnit, StorageUnitAdmin)
admin.site.register(StorageReservation, StorageReservationAdmin)
admin.site.register(StoragePayment, StoragePaymentAdmin)
11 changes: 11 additions & 0 deletions storage/jobs/daily_expire_reservations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
from django_extensions.management.jobs import DailyJob
from storage.utils.expire_pending_reservations import expire_pending_reservations
from storage.utils.complete_reservations import complete_finished_reservations


class Job(DailyJob):
help = "Expire unpaid reservations and complete finished reservations"

def execute(self):
expire_pending_reservations()
complete_finished_reservations()
Loading