1
0
Fork 0
satnogs-db/db/base/admin.py

89 lines
3.0 KiB
Python
Raw Normal View History

import logging
2015-04-22 05:05:30 -06:00
from django.contrib import admin
from django.core.urlresolvers import reverse
from django.template.loader import render_to_string
from django.conf import settings
from django.contrib.sites.shortcuts import get_current_site
2015-04-22 05:05:30 -06:00
2015-07-23 06:48:58 -06:00
from db.base.models import Satellite, Transmitter, Suggestion
2015-04-22 05:05:30 -06:00
logger = logging.getLogger('db')
2015-07-17 11:59:23 -06:00
2015-04-25 10:47:22 -06:00
@admin.register(Satellite)
2015-04-22 05:05:30 -06:00
class SatelliteAdmin(admin.ModelAdmin):
list_display = ('name', 'norad_cat_id')
2015-07-23 06:48:58 -06:00
@admin.register(Transmitter)
class TransmitterAdmin(admin.ModelAdmin):
2015-05-09 02:38:39 -06:00
list_display = ('uuid', 'description', 'satellite', 'uplink_low',
'uplink_high', 'downlink_low', 'downlink_high',)
search_fields = ('satellite', 'uuid',)
2015-04-25 10:47:22 -06:00
list_filter = ('mode', 'invert')
2015-05-09 02:38:39 -06:00
readonly_fields = ('uuid', 'satellite', 'approved',)
2015-04-22 05:05:30 -06:00
2015-04-25 10:47:22 -06:00
@admin.register(Suggestion)
class SuggestionAdmin(admin.ModelAdmin):
2015-07-23 06:48:58 -06:00
list_display = ('uuid', 'description', 'transmitter_uuid', 'user', 'satellite', 'uplink_low',
2015-05-09 02:38:39 -06:00
'uplink_high', 'downlink_low', 'downlink_high',)
search_fields = ('satellite', 'uuid',)
2015-04-25 10:47:22 -06:00
list_filter = ('mode', 'invert')
2015-07-23 06:48:58 -06:00
readonly_fields = ('uuid', 'satellite', 'transmitter', 'approved', 'user',
'citation', 'transmitter_data')
2015-07-07 06:09:34 -06:00
actions = ['approve_suggestion']
def approve_suggestion(self, request, queryset):
for obj in queryset:
2015-07-23 06:48:58 -06:00
if obj.transmitter:
obj.uuid = obj.transmitter.uuid
obj.transmitter.delete()
2015-07-07 06:09:34 -06:00
obj.approved = True
obj.save()
# Notify user
current_site = get_current_site(request)
subject = '[{0}] Your suggestion was approved'.format(current_site.name)
template = 'emails/suggestion_approved.txt'
data = {
'satname': obj.satellite.name,
'site_name': current_site.name
}
message = render_to_string(template, {'data': data})
try:
obj.user.email_user(subject, message, from_email=settings.DEFAULT_FROM_EMAIL)
except:
logger.error(
'Could not send email to user',
exc_info=True
)
2015-07-07 06:09:34 -06:00
rows_updated = queryset.count()
# Print a message
if rows_updated == 1:
message_bit = '1 suggestion was'
else:
message_bit = '{0} suggestions were'.format(rows_updated)
self.message_user(request, '{0} successfully approved.'.format(message_bit))
approve_suggestion.short_description = 'Approve selected suggestions'
2015-05-09 02:38:39 -06:00
2015-07-23 06:48:58 -06:00
def transmitter_uuid(self, obj):
2015-05-09 02:38:39 -06:00
try:
2015-07-23 06:48:58 -06:00
return obj.transmitter.uuid
2015-05-09 02:38:39 -06:00
except:
return '-'
2015-07-23 06:48:58 -06:00
def transmitter_data(self, obj):
if obj.transmitter:
redirect_url = reverse('admin:base_transmitter_changelist')
extra = '{0}'.format(obj.transmitter.pk)
return '<a href="{0}">Transmitter Initial Data</a>'.format(
redirect_url + extra)
else:
return '-'
2015-07-23 06:48:58 -06:00
transmitter_data.allow_tags = True