robosats/api/admin.py

152 lines
4.0 KiB
Python
Raw Normal View History

2022-01-01 22:13:27 +00:00
from django.contrib import admin
2022-01-05 11:20:08 +00:00
from django_admin_relation_links import AdminChangeLinksMixin
2022-01-04 15:58:10 +00:00
from django.contrib.auth.models import Group, User
from django.contrib.auth.admin import UserAdmin
2022-03-10 21:35:16 +00:00
from api.models import Order, LNPayment, Profile, MarketTick, Currency
2022-01-01 22:13:27 +00:00
2022-01-04 15:58:10 +00:00
admin.site.unregister(Group)
admin.site.unregister(User)
2022-02-17 19:50:10 +00:00
2022-01-04 15:58:10 +00:00
class ProfileInline(admin.StackedInline):
model = Profile
2022-02-17 19:50:10 +00:00
can_delete = False
fields = ("avatar_tag", )
readonly_fields = ["avatar_tag"]
2022-03-18 21:21:13 +00:00
show_change_link = True
2022-02-17 19:50:10 +00:00
2022-01-04 15:58:10 +00:00
# extended users with avatars
@admin.register(User)
2022-03-18 21:21:13 +00:00
class EUserAdmin(AdminChangeLinksMixin, UserAdmin):
2022-01-04 15:58:10 +00:00
inlines = [ProfileInline]
2022-02-17 19:50:10 +00:00
list_display = (
"avatar_tag",
"id",
2022-03-18 21:21:13 +00:00
"profile_link",
2022-02-17 19:50:10 +00:00
"username",
"last_login",
"date_joined",
"is_staff",
)
list_display_links = ("id", "username")
2022-03-18 21:21:13 +00:00
change_links = (
"profile",
)
2022-02-17 19:50:10 +00:00
ordering = ("-id", )
2022-01-04 15:58:10 +00:00
def avatar_tag(self, obj):
return obj.profile.avatar_tag()
@admin.register(Order)
2022-01-05 11:20:08 +00:00
class OrderAdmin(AdminChangeLinksMixin, admin.ModelAdmin):
2022-02-17 19:50:10 +00:00
list_display = (
"id",
"type",
"maker_link",
"taker_link",
"status",
"amt",
2022-02-17 19:50:10 +00:00
"currency_link",
"t0_satoshis",
"is_disputed",
"is_fiat_sent",
"created_at",
"expires_at",
"payout_link",
"maker_bond_link",
"taker_bond_link",
"trade_escrow_link",
)
list_display_links = ("id", "type")
change_links = (
"maker",
"taker",
"currency",
"payout",
"maker_bond",
"taker_bond",
"trade_escrow",
)
list_filter = ("is_disputed", "is_fiat_sent", "type", "currency", "status")
search_fields = ["id","amount","min_amount","max_amount"]
def amt(self, obj):
if obj.has_range and obj.amount == None:
return str(float(obj.min_amount))+"-"+ str(float(obj.max_amount))
else:
return float(obj.amount)
@admin.register(LNPayment)
2022-01-05 11:20:08 +00:00
class LNPaymentAdmin(AdminChangeLinksMixin, admin.ModelAdmin):
2022-02-17 19:50:10 +00:00
list_display = (
"hash",
"concept",
"status",
"num_satoshis",
"fee",
2022-02-17 19:50:10 +00:00
"type",
"expires_at",
"expiry_height",
"sender_link",
"receiver_link",
"order_made_link",
"order_taken_link",
"order_escrow_link",
"order_paid_link",
)
list_display_links = ("hash", "concept")
change_links = (
"sender",
"receiver",
"order_made",
"order_taken",
"order_escrow",
"order_paid",
)
list_filter = ("type", "concept", "status")
ordering = ("-expires_at", )
2022-03-18 21:21:13 +00:00
search_fields = ["payment_hash","num_satoshis","sender__username","receiver__username","description"]
2022-02-17 19:50:10 +00:00
@admin.register(Profile)
2022-01-05 11:20:08 +00:00
class UserProfileAdmin(AdminChangeLinksMixin, admin.ModelAdmin):
2022-02-17 19:50:10 +00:00
list_display = (
"avatar_tag",
"id",
"user_link",
"is_referred",
"telegram_enabled",
2022-02-17 19:50:10 +00:00
"total_contracts",
"pending_rewards",
"earned_rewards",
"claimed_rewards",
2022-02-17 19:50:10 +00:00
"platform_rating",
"total_ratings",
"avg_rating",
"num_disputes",
"lost_disputes",
)
2022-03-21 12:13:57 +00:00
list_editable = ["pending_rewards", "earned_rewards"]
2022-02-17 19:50:10 +00:00
list_display_links = ("avatar_tag", "id")
change_links = ["user"]
readonly_fields = ["avatar_tag"]
2022-03-18 21:21:13 +00:00
search_fields = ["user__username","id"]
2022-02-17 19:50:10 +00:00
@admin.register(Currency)
class CurrencieAdmin(admin.ModelAdmin):
2022-02-17 19:50:10 +00:00
list_display = ("id", "currency", "exchange_rate", "timestamp")
list_display_links = ("id", "currency")
readonly_fields = ("currency", "exchange_rate", "timestamp")
ordering = ("id", )
@admin.register(MarketTick)
class MarketTickAdmin(admin.ModelAdmin):
2022-02-17 19:50:10 +00:00
list_display = ("timestamp", "price", "volume", "premium", "currency",
"fee")
readonly_fields = ("timestamp", "price", "volume", "premium", "currency",
"fee")
list_filter = ["currency"]
ordering = ("-timestamp", )