# ~*~ coding: utf-8 ~*~

from .base import CommandBase
from audits.models import CommandLog


class CommandStore(CommandBase):
    model = CommandLog
    queryset = []

    def save(self, proxy_log_id, user, asset, system_user,
             command_no, command, output, timestamp):
        self.model.objects.create(
            proxy_log_id=proxy_log_id, user=user, asset=asset,
            system_user=system_user, command_no=command_no,
            command=command, output=output, timestamp=timestamp
        )

    def filter(self, date_from_ts=None, date_to_ts=None, user='',
               asset='', system_user='', command='', proxy_log_id=''):
        filter_kwargs = {}

        if date_from_ts:
            filter_kwargs['timestamp__gte'] = date_from_ts
        if date_to_ts:
            filter_kwargs['timestamp__lte'] = date_to_ts
        if user:
            filter_kwargs['user'] = user
        if asset:
            filter_kwargs['asset'] = asset
        if system_user:
            filter_kwargs['system_user'] = system_user
        if command:
            filter_kwargs['command__icontains'] = command
        if proxy_log_id:
            filter_kwargs['proxy_log_id'] = proxy_log_id

        if filter_kwargs:
            self.queryset = self.model.objects.filter(**filter_kwargs)
        return self.queryset

    def all(self):
        """返回所有数据"""
        return self.model.objects.iterator()

