# coding:utf-8
import datetime
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext
from django.shortcuts import render_to_response
from django.http import HttpResponseRedirect
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

from models import IDC, Asset, Group
from connect import PyCrypt, KEY


def index(request):
    return render_to_response('jasset/jasset.html', )


def jadd(request):
    global j_passwd
    groups = []
    cryptor = PyCrypt(KEY)
    eidc = IDC.objects.all()
    egroup = Group.objects.all()
    is_actived = {'active': 1, 'no_active': 0}
    login_typed = {'LDAP': 'L', 'SSH_KEY': 'S', 'PASSWORD': 'P', 'MAP': 'M'}

    if request.method == 'POST':
        j_ip = request.POST.get('j_ip')
        j_idc = request.POST.get('j_idc')
        j_port = request.POST.get('j_port')
        j_type = request.POST.get('j_type')
        j_group = request.POST.getlist('j_group')
        j_active = request.POST.get('j_active')
        j_comment = request.POST.get('j_comment')
        if j_type == 'MAP':
            j_user = request.POST.get('j_user')
            j_password = cryptor.encrypt(request.POST.get('j_password'))
            j_root = request.POST.get('j_root')
            j_passwd = cryptor.encrypt(request.POST.get('j_passwd'))

        j_idc = IDC.objects.get(name=j_idc)
        for group in j_group:
            c = Group.objects.get(name=group)
            groups.append(c)

        if Asset.objects.filter(ip=str(j_ip)):
            emg = u'该IP已存在!'
            return render_to_response('jasset/jadd.html', {'emg': emg, 'j_ip': j_ip})

        elif j_type == 'MAP':
            a = Asset(ip=j_ip,
                      port=j_port,
                      login_type=login_typed[j_type],
                      idc=j_idc,
                      is_active=int(is_actived[j_active]),
                      comment=j_comment,
                      username_common=j_user,
                      password_common=j_password,
                      username_super=j_root,
                      password_super=j_passwd,)
        else:
            a = Asset(ip=j_ip,
                      port=j_port,
                      login_type=login_typed[j_type],
                      idc=j_idc,
                      is_active=int(is_actived[j_active]),
                      comment=j_comment)
        a.save()
        a.group = groups
        a.save()

    return render_to_response('jasset/jadd.html',
                              {'header_title': u'添加主机 | Add Host',
                               'path1': '资产管理',
                               'path2': '添加主机',
                               'eidc': eidc,
                               'egroup': egroup, }
                              )


def jlist(request):
    posts = contact_list = Asset.objects.all().order_by('ip')
    print posts
    paginator = Paginator(contact_list, 5)
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1

    try:
        contacts = paginator.page(page)
    except (EmptyPage, InvalidPage):
        contacts = paginator.page(paginator.num_pages)

    return render_to_response('jasset/jlist.html',
                              {"contacts": contacts,
                               'p': paginator,
                               'posts': posts,
                               'header_title': u'查看主机 | List Host',
                               'path1': '资产管理',
                               'path2': '查看主机', },
                              context_instance=RequestContext(request))


def jadd_idc(request):
    pass


def jlist_idc(request):
    pass