<commit_before>import datetime
import re
from pprint import pprint, pformat

from django.core.management.base import BaseCommand, CommandError
from django.db import connections

import produto.queries

import estoque.queries
from estoque.functions import ajuste_por_inventario


class Command(BaseCommand):
    help = 'Ajuste por inventário no Systêxtil'

    def my_println(self, text='', v=1):
        self.my_print(text, ending='\n', v=v)

    def my_print(self, text='', ending='', v=1):
        if v <= self.verbosity:
            self.stdout.write(text, ending=ending)
            self.stdout.flush()

    def add_arguments(self, parser):
        parser.add_argument('dep', help='101, 102 ou 231')
        parser.add_argument(
            'refmod',
            help='5 caracteres de referência ou menos que 5 para modelo')
        parser.add_argument('cor', help='6 caracteres', nargs='?')
        parser.add_argument('tam', help='1 a 3 caracteres', nargs='?')
        parser.add_argument('qtd', type=int, help='quantidade inventariada')
        parser.add_argument('data', help='data do inventário (AAAA-MM-DD)')
        parser.add_argument('hora', help='hora do inventário (HHhMM)')
        parser.add_argument(
            '-f', '--force',
            action="store_true",
            help='força ajuste do dia, mesmo se já houver')
        parser.add_argument(
            '-c', '--check',
            action="store_true",
            help='checa se o inventário confirma o estoque')
        parser.add_argument(
            '-j', '--jump',
            type=open,
            help='arquivo com ref cor tam que não devem ser afetados')
        parser.add_argument(
            '-d', '--delete',
            action="store_true",
            help='apaga inventários desse item nessa data/hora')

    def print_cmd_line(self, *cmd_line, v=1):
        msg = ' '.join(['{}']*len(cmd_line))
        self.my_println(msg.format(*cmd_line), v=v)

    def handle(self, *args, **options):
        self.verbosity = options['verbosity']

        self.my_println('---', v=2)
        self.my_println('{}'.format(datetime.datetime.now()), v=2)

        dep = options['dep']
        refmod = options['refmod']
        cor = options['cor']
        tam = options['tam']
        qtd = options['qtd']
        data = options['data']
        hora = options['hora']
        force = options['force']
        check = options['check']
        jump = options['jump']
        delete = options['delete']

        if jump:
            jump_itens = []
            with jump as fp:
                for line in fp:
                    res = re.findall(r'\w+', line)
                    jump_itens.append(res[:3])

        itens = []

        cursor = connections['so'].cursor()

        if len(refmod) != 5:
            modelo = refmod
            itens_list = estoque.queries.estoque_deposito_ref_modelo(
                cursor, dep, modelo=modelo)
            for row in itens_list:
                itens.append({
                    'ref': row['ref'],
                    'cor': row['cor'],
                    'tam': row['tam'],
                })
        else:
            ref = refmod
<commit_msg>db_cursor_so<commit_after>import datetime
import re
from pprint import pformat, pprint

from django.core.management.base import BaseCommand, CommandError

from fo2.connections import db_cursor_so

import produto.queries

import estoque.queries
from estoque.functions import ajuste_por_inventario


class Command(BaseCommand):
    help = 'Ajuste por inventário no Systêxtil'

    def my_println(self, text='', v=1):
        self.my_print(text, ending='\n', v=v)

    def my_print(self, text='', ending='', v=1):
        if v <= self.verbosity:
            self.stdout.write(text, ending=ending)
            self.stdout.flush()

    def add_arguments(self, parser):
        parser.add_argument('dep', help='101, 102 ou 231')
        parser.add_argument(
            'refmod',
            help='5 caracteres de referência ou menos que 5 para modelo')
        parser.add_argument('cor', help='6 caracteres', nargs='?')
        parser.add_argument('tam', help='1 a 3 caracteres', nargs='?')
        parser.add_argument('qtd', type=int, help='quantidade inventariada')
        parser.add_argument('data', help='data do inventário (AAAA-MM-DD)')
        parser.add_argument('hora', help='hora do inventário (HHhMM)')
        parser.add_argument(
            '-f', '--force',
            action="store_true",
            help='força ajuste do dia, mesmo se já houver')
        parser.add_argument(
            '-c', '--check',
            action="store_true",
            help='checa se o inventário confirma o estoque')
        parser.add_argument(
            '-j', '--jump',
            type=open,
            help='arquivo com ref cor tam que não devem ser afetados')
        parser.add_argument(
            '-d', '--delete',
            action="store_true",
            help='apaga inventários desse item nessa data/hora')

    def print_cmd_line(self, *cmd_line, v=1):
        msg = ' '.join(['{}']*len(cmd_line))
        self.my_println(msg.format(*cmd_line), v=v)

    def handle(self, *args, **options):
        self.verbosity = options['verbosity']

        self.my_println('---', v=2)
        self.my_println('{}'.format(datetime.datetime.now()), v=2)

        dep = options['dep']
        refmod = options['refmod']
        cor = options['cor']
        tam = options['tam']
        qtd = options['qtd']
        data = options['data']
        hora = options['hora']
        force = options['force']
        check = options['check']
        jump = options['jump']
        delete = options['delete']

        if jump:
            jump_itens = []
            with jump as fp:
                for line in fp:
                    res = re.findall(r'\w+', line)
                    jump_itens.append(res[:3])

        itens = []

        cursor = db_cursor_so()

        if len(refmod) != 5:
            modelo = refmod
            itens_list = estoque.queries.estoque_deposito_ref_modelo(
                cursor, dep, modelo=modelo)
            for row in itens_list:
                itens.append({
                    'ref': row['ref'],
                    'cor': row['cor'],
                    'tam': row['tam'],
                })
        else:
            ref = refmod

{'fraction_non_alphanumeric': 0.134624468587624, 'fraction_numerical': 0.0067705873090851834, 'mean_word_length': 2.0204469805040417, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4150461', 'n_tokens_mistral': 1962, 'n_tokens_neox': 1890, 'n_words': 450}