

import sys
import django.utils.timezone
from django.db import transaction

from account.models import UserProfile
from customer.models import Journal

JOURNAL_OPERATION_DEBUG = '0'
JOURNAL_OPERATION_FATAL = '1'
JOURNAL_OPERATION_EMERGENCY = '2'
JOURNAL_OPERATION_CRITICAL = '3'
JOURNAL_OPERATION_ERROR = '4'
JOURNAL_OPERATION_WARNING = '5'
JOURNAL_OPERATION_OK = '6'
JOURNAL_OPERATION_INFO = '7'

"""
This function log a new event, that a new ro in the journal table
"""
@transaction.atomic
def addRow(journal_app, journal_path, journal_text, journal_oplevel, request):
    print('in add row', request, request.user, type(request.user))
    try:
        client_token = None
        client_country = None
        client_region = None

        if request.user.is_authenticated:
            user_id = request.user.id
            user_name = '[' + request.user.username + ']'
            if request.user is not None:
                user_name = user_name + ' ' + request.user.last_name
            if request.user.first_name is not None:
                user_name = user_name + ' ' + request.user.first_name
            
            try:
                userprofile = UserProfile.objects.get(user=request.user)
                customer = userprofile.customer
            except UserProfile.DoesNotExist:
                customer = None
        else:
            user_name = None
            user_id = None
            customer = None
        client_ip = str(request.META.get("REMOTE_ADDR"))
        client_referer = request.META.get('HTTP_REFERER')

        if request.user_agent.is_mobile:
            device = 'Mobile'
        elif request.user_agent.is_tablet:
            device = 'Tablet'
        elif request.user_agent.is_touch_capable:
            device = 'Touch Capable'
        elif request.user_agent.is_pc:
            device = 'PC'
        elif request.user_agent.is_bot:
            device = 'Bot'
        else:
            device = 'Unknow device'

        client_media = device + ' ' + request.user_agent.browser.family + '--' + request.user_agent.browser.version_string \
            + ' ' +request.user_agent.os.family + '--' + request.user_agent.os.version_string\
                 + ' ' + request.user_agent.device.family

        current_time = django.utils.timezone.now()

        a_journal = Journal(
            createdBy=user_id, editedBy=user_id, journal_app=journal_app, customer=customer,
            journal_path=journal_path, journal_user=user_name, journal_time=current_time,
            journal_ip=client_ip, journal_country=client_country, journal_region=client_region,
            journal_referer=client_referer, journal_media=client_media, journal_token=client_token,
            journal_oplevel=journal_oplevel, journal_text=journal_text
        )
        a_journal.save()

    except Exception as error:
        print("ERROR ---> CANNOT INSERT IN THE JOURNAL" + str(sys.exc_info()))
        return (None, str(sys.exc_info()))
"""
    journal_app = models.CharField(max_length=255)
    journal_path = models.CharField(max_length=255)
    journal_time = models.DateTimeField()
    journal_text = models.TextField()

"""