# Python imports
import json

# Django imports
from django.shortcuts import render_to_response, render, redirect
from django.template import RequestContext
from django.http import HttpResponse
from django.core.urlresolvers import reverse

# LeakLess Monitor imports
from Applications.Devices.Information.forms import DeviceInformationForm_PDLAG, DeviceInformationForm_MAG8000
from Applications.Users.views import user_get_language
from Applications.Measure.Plot.Annotations.views import annotations_get_icon_list
from Applications.Devices.models import Lldevicelist



def information_return_form(request):
    if request.method == 'POST':
        # Ovdje je upis u bazu

        device_id = request.POST.get('device_id')

        if device_id is None:
            return  HttpResponse('Error')

        # TODO: Vidjeti jel ima permission user ako se zlouporabi device ID

        try:
            device_information = Lldevicelist.objects.get(id=device_id)
        except Exception as e:
            return HttpResponse('Error')

        device_type = device_information.loc_type

        if device_type == 'PDL-AG':
            form = DeviceInformationForm_PDLAG(request.POST)
            if form.is_valid():
                device_information.rem_identifier           =form.cleaned_data['device_identifier']
                device_information.info_devicenote          =form.cleaned_data['device_note']
                device_information.info_deviceicon          =form.cleaned_data['device_icon']
                device_information.info_locationheight      =form.cleaned_data['location_height']
                device_information.info_locationinformation =form.cleaned_data['location_information']
                device_information.info_locationtype        =form.cleaned_data['location_type']
                device_information.info_simcardid           =form.cleaned_data['sim_card_id']
                device_information.info_simcardinfo         =form.cleaned_data['sim_card_info']
                device_information.info_simcardnumber       =form.cleaned_data['sim_card_number']
                device_information.info_simcardoperator     =form.cleaned_data['sim_card_operator']
                device_information.info_simcardtype         =form.cleaned_data['sim_card_type']
                device_information.info_ch1pressurename     =form.cleaned_data['ch1_pressure_name']
                device_information.info_ch2pressurename     =form.cleaned_data['ch2_pressure_name']
                device_information.info_ch1flowname         =form.cleaned_data['ch1_flow_name']
                device_information.info_ch2flowname         =form.cleaned_data['ch2_flow_name']
                device_information.info_ch1digitalname      =form.cleaned_data['ch1_digital_name']
                device_information.info_ch2digitalname      =form.cleaned_data['ch2_digital_name']
                device_information.save()

                return HttpResponse('Ok')
            else:
                return HttpResponse('Error')
        elif device_type == 'MAG8000':
            form = DeviceInformationForm_MAG8000(request.POST)
            if form.is_valid():
                device_information.rem_identifier               =form.cleaned_data['device_identifier']
                device_information.info_devicenote              =form.cleaned_data['device_note']
                device_information.info_deviceicon              =form.cleaned_data['device_icon']
                device_information.info_locationheight          =form.cleaned_data['location_height']
                device_information.info_locationinformation     =form.cleaned_data['location_information']
                device_information.info_locationtype            =form.cleaned_data['location_type']
                device_information.info_simcardid               =form.cleaned_data['sim_card_id']
                device_information.info_simcardinfo             =form.cleaned_data['sim_card_info']
                device_information.info_simcardnumber           =form.cleaned_data['sim_card_number']
                device_information.info_simcardoperator         =form.cleaned_data['sim_card_operator']
                device_information.info_simcardtype             =form.cleaned_data['sim_card_type']
                device_information.info_ch1pressurename         =form.cleaned_data['ch1_pressure_name']
                device_information.info_ch2pressurename         =form.cleaned_data['ch2_pressure_name']
                device_information.info_ch1flowname             =form.cleaned_data['ch1_flow_name']
                device_information.info_ch2flowname             =form.cleaned_data['ch2_flow_name']
                device_information.info_ch1digitalname          =form.cleaned_data['ch1_digital_name']
                device_information.info_ch2digitalname          =form.cleaned_data['ch2_digital_name']
                device_information.loc_recalculateequation1     =form.cleaned_data['loc_recalculateequation1']
                device_information.loc_recalculateequation2     =form.cleaned_data['loc_recalculateequation2']
                device_information.loc_pressurerecalculateunit  =form.cleaned_data['loc_analogcurrentunit']
                device_information.loc_flowrecalculateunit      =form.cleaned_data['loc_analogvoltageunit']
                device_information.save()

                return HttpResponse('Ok')
            else:
                return HttpResponse('Error')
    else:
        # Ovdje je dohvat iz baze
        device_id = request.GET.get('device_id')
        device_identifier = request.GET.get('device_identifier')

        try:
            device_information = Lldevicelist.objects.get(id=device_id)
        except Exception as e:
            return HttpResponse('Error')

        device_type=device_information.loc_type

        initial = {'device_identifier'          : device_information.rem_identifier,
                   'device_note'                : device_information.info_devicenote,
                   'device_icon'                : device_information.info_deviceicon,
                   'location_height'            : device_information.info_locationheight,
                   'location_information'       : device_information.info_locationinformation,
                   'location_type'              : device_information.info_locationtype,
                   'sim_card_id'                : device_information.info_simcardid,
                   'sim_card_info'              : device_information.info_simcardinfo,
                   'sim_card_number'            : device_information.info_simcardnumber,
                   'sim_card_operator'          : device_information.info_simcardoperator,
                   'ch1_pressure_name'          : device_information.info_ch1pressurename,
                   'ch2_pressure_name'          : device_information.info_ch2pressurename,
                   'ch1_flow_name'              : device_information.info_ch1flowname,
                   'ch2_flow_name'              : device_information.info_ch2flowname,
                   'ch1_digital_name'           : device_information.info_ch1digitalname,
                   'ch2_digital_name'           : device_information.info_ch2digitalname,
                   'loc_recalculateequation1'   : device_information.loc_recalculateequation1,
                   'loc_recalculateequation2'   : device_information.loc_recalculateequation2,
                   'loc_analogcurrentunit'      : device_information.loc_pressurerecalculateunit,
                   'loc_analogvoltageunit'      : device_information.loc_flowrecalculateunit}

        if device_type == 'PDL-AG':
            form = DeviceInformationForm_PDLAG(initial=initial)

            if user_get_language(request) == 'hr':
                form.fields['ch1_pressure_name'].label      = "CH1 Tlak"
                form.fields['ch2_pressure_name'].label      = "CH2 Tlak"
                form.fields['ch1_flow_name'].label          = "CH1 Protok"
                form.fields['ch2_flow_name'].label          = "CH2 Protok"
                form.fields['ch1_digital_name'].label       = "CH1 Signal"
                form.fields['ch2_digital_name'].label       = "CH2 Signal"
            else:
                form.fields['ch1_pressure_name'].label      = "CH1 Pressure"
                form.fields['ch2_pressure_name'].label      = "CH2 Pressure"
                form.fields['ch1_flow_name'].label          = "CH1 Flow"
                form.fields['ch2_flow_name'].label          = "CH2 Flow"
                form.fields['ch1_digital_name'].label       = "CH1 Digital"
                form.fields['ch2_digital_name'].label       = "CH2 Digital"

            fields = list(form)
            form_general    = fields[0:3]
            form_sim_card   = fields[3:8]
            form_location   = fields[8:11]
            form_channels   = fields[11:17]
            form_other      = None

        elif device_type == 'MAG8000':
            form = DeviceInformationForm_MAG8000(initial=initial)
            if user_get_language(request) == 'hr':
                form.fields['ch1_pressure_name'].label          = "Analogna struja"
                form.fields['ch2_pressure_name'].label          = "Analogni napon"
                form.fields['ch1_flow_name'].label              = "Protok"
                form.fields['ch2_flow_name'].label              = "CH1 Uk. protok"
                form.fields['ch1_digital_name'].label           = "CH2 Uk. protok"
                form.fields['ch2_digital_name'].label           = "CH3 Uk. protok"
                form.fields['loc_recalculateequation1'].label   = "f(x) analogna struja"
                form.fields['loc_recalculateequation2'].label   = "f(x) analogni napon"
                form.fields['loc_analogcurrentunit'].label      = "Jedinica analogna struja"
                form.fields['loc_analogvoltageunit'].label      = "Jedinica analogni napon"
            else:
                form.fields['ch1_pressure_name'].label          = "Analog current"
                form.fields['ch2_pressure_name'].label          = "Analog voltage"
                form.fields['ch1_flow_name'].label              = "Flow"
                form.fields['ch2_flow_name'].label              = "CH1 Total"
                form.fields['ch1_digital_name'].label           = "CH2 Total"
                form.fields['ch2_digital_name'].label           = "CH3 Total"
                form.fields['loc_recalculateequation1'].label   = "f(x) analog current"
                form.fields['loc_recalculateequation2'].label   = "f(x) analog voltage"
                form.fields['loc_analogcurrentunit'].label      = "Unit analog current"
                form.fields['loc_analogvoltageunit'].label      = "Unit analog voltage"


            fields = list(form)
            form_general    = fields[0:3]
            form_sim_card   = fields[3:8]
            form_location   = fields[8:11]
            form_channels   = fields[11:17]
            form_other      = fields[17:21]
        else:
            return HttpResponse('Error')


        if user_get_language(request) == 'hr':
            form.fields['device_identifier'].label      = "Identifikator"
            form.fields['device_note'].label            = "Napomena"
            form.fields['device_icon'].label            = "Izgled markera"
            form.fields['location_height'].label        = "Visina lokacije"
            form.fields['location_information'].label   = "Informacije o lokaciji"
            form.fields['location_type'].label          = "Tip lokacije"
            form.fields['sim_card_id'].label            = "ID SIM-a"
            form.fields['sim_card_info'].label          = "Informacije o SIM-u"
            form.fields['sim_card_number'].label        = "Broj mobitel SIM-a"
            form.fields['sim_card_operator'].label      = "Operator"
            form.fields['sim_card_type'].label          = "Tip kartice"
        else:
            form.fields['device_identifier'].label      = "Device identifier"
            form.fields['device_note'].label            = "Device note"
            form.fields['device_icon'].label            = "Marker"
            form.fields['location_height'].label        = "Location height"
            form.fields['location_information'].label   = "Location information"
            form.fields['location_type'].label          = "Location type"
            form.fields['sim_card_id'].label            = "SIM card ID"
            form.fields['sim_card_info'].label          = "SIM card info"
            form.fields['sim_card_number'].label        = "SIM card number"
            form.fields['sim_card_operator'].label      = "SIM card operator"
            form.fields['sim_card_type'].label          = "SIM card type"
        # Render list page with the documents and the form

        return render_to_response(
            'deviceInformationForm.html',{  'form_general'      : form_general,
                                            'form_sim_card'     : form_sim_card,
                                            'form_location'     : form_location,
                                            'form_channels'     : form_channels,
                                            'form_other'        : form_other,
                                            'device_id'         : device_id,
                                            'device_identifier' : device_identifier,
                                            'device_type'       : device_type,
                                            'lang'              : user_get_language(request)},
            context_instance=RequestContext(request)
        )
