text: # -*- coding: utf-8 -*- {{{
  # vim: set fenc=utf-8 ft=python sw=4 ts=4 sts=4 et:
  
  # Copyright (c) 2017, Battelle Memorial Institute
  # All rights reserved.
  #
  # Redistribution and use in source and binary forms, with or without
  # modification, are permitted provided that the following conditions
  # are met:
  #
  # 1. Redistributions of source code must retain the above copyright
  #    notice, this list of conditions and the following disclaimer.
  # 2. Redistributions in binary form must reproduce the above copyright
  #    notice, this list of conditions and the following disclaimer in
  #    the documentation and/or other materials provided with the
  #    distribution.
  #
  # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
  # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  #
  # The views and conclusions contained in the software and documentation
  # are those of the authors and should not be interpreted as representing
  # official policies, either expressed or implied, of the FreeBSD
  # Project.
  #
  # This material was prepared as an account of work sponsored by an
  # agency of the United States Government.  Neither the United States
  # Government nor the United States Department of Energy, nor Battelle,
  # nor any of their employees, nor any jurisdiction or organization that
  # has cooperated in the development of these materials, makes any
  # warranty, express or implied, or assumes any legal liability or
  # responsibility for the accuracy, completeness, or usefulness or any
  # information, apparatus, product, software, or process disclosed, or
  # represents that its use would not infringe privately owned rights.
  #
  # Reference herein to any specific commercial product, process, or
  # service by trade name, trademark, manufacturer, or otherwise does not
  # necessarily constitute or imply its endorsement, recommendation, or
  # favoring by the United States Government or any agency thereof, or
  # Battelle Memorial Institute. The views and opinions of authors
  # expressed herein do not necessarily state or reflect those of the
  # United States Government or any agency thereof.
  #
  # PACIFIC NORTHWEST NATIONAL LABORATORY
  # operated by BATTELLE for the UNITED STATES DEPARTMENT OF ENERGY
  # under Contract DE-AC05-76RL01830
  # }}}
  
  # -*- coding: utf-8 -*-
  from __future__ import unicode_literals
  from .models import *
  from .forms import *
  
  from django.contrib import admin
  
  
  @admin.register(Customer)
  class CustomerAdmin(admin.ModelAdmin):
      list_display = ('name', 'utility_id')
      list_per_page = 10
  
  
  @admin.register(Site)
  class SiteAdmin(admin.ModelAdmin):
      list_display = ('customer', 'site_name', 'site_id', 'site_location_code',
                      'ip_address', 'site_address1', 'site_address2', 'city','state','zip',
                      'contact_name', 'phone_number', 'online', 'ven_id', 'ven_name')
  
      fields = ('customer', 'site_name', 'site_id', 'site_location_code',
                'ip_address', 'site_address1', 'site_address2', 'city', 'state', 'zip',
                'contact_name', 'phone_number', 'online', 'ven_id', 'ven_name')
  
      list_per_page = 10
  
      def get_readonly_fields(self, request, obj=None):
          return ['ven_id', 'online', 'last_status_time', ]
  
      def save_model(self, request, obj, form, change):
          all_sites = [int(s.ven_id) for s in Site.objects.all()]
          all_sites.sort()
          ven_id = str(all_sites[-1] + 1) if len(all_sites) > 0 else '0'
          obj.ven_id = ven_id
          return super(SiteAdmin, self).save_model(request, obj, form, change)
  
  
  @admin.register(DRProgram)
  class DRProgramAdmin(admin.ModelAdmin):
      list_per_page = 10
      list_display = ('name',)
      filter_horizontal = ('sites',)
  