#encoding:utf-8 # Create your views here. from django.http import * from django.shortcuts import render_to_response from django.template.response import * from django.contrib.auth.decorators import * from django.contrib.auth import * from almacenes.models import * from django.shortcuts import * from django.contrib.auth.models import User from almacenes.forms import * from django.db.models import * from datetime import * from django.contrib import messages from django.utils import formats from django.views.generic import ListView from django.core.context_processors import csrf from django.views.decorators.csrf import csrf_exempt from django.db.models import Q from django.db.models import Count import json from django.core import serializers from django.contrib.auth.forms import UserCreationForm from django.template.response import TemplateResponse from django.utils.html import format_html, format_html_join from datetime import datetime import datetime from datetime import datetime, timedelta #importacion necesaria import csv import os import re from django.db import connection, transaction from django.contrib.auth.decorators import login_required from django.views.decorators.clickjacking import xframe_options_exempt def importar(request): #si se envia alguna informacion if request.method == 'POST': #ocupamos un form que contenga al menos un filefield con eso es suficiente archivoforms = ImportarForm(request.POST, request.FILES) if archivoforms.is_valid(): archivo = csv.reader(archivoforms.cleaned_data["archivo"]) # en cleaned_data["archivo"] es el nombre que le daremos al archivo.csv listaerror = [] contador = 0 #empezamos a recorrer linea por linea el csv for fila in archivo: #omitimos la fila 1 (por que solo contiene los encabezados) if contador == 0: contador=contador+1 else: instanciaarchivo = archivoforms.cleaned_data['archivo'] #expresion regular para validar los datos obtenidos #regexentero = re.compile("^[a-zA-ZáéíóúAÉÍÓÚÑñ0-9]$") #regexentero = re.compile("^[0-9]{1,3}$") #regexentero1 = re.compile("^[a-zA-ZñÑ\s\W]$") #guardamos cada columna de la fila que estamos recorriendo enuna variable columna1 = fila[0] columna2 = fila[1] #si al comparar el texto de la columna con la expresion regular no hay errores pasamos a la siguiente linea en limpio #if regexentero.match(str(columna1)) is not None: # contador=contador+1 #de lo contrario añadimos un error a la lista de errores (la usaremos mas tarde) especificando que es el error y en que linea esta #else: # listaerror.append(' error en la linea: '+str(contador)+' entero no es :'+ str(columna1)) # contador=contador+1 #si no hay errores if listaerror: for errores in listaerror: messages.error(request, ''+str(errores)) #recorremos el archivo else: archivo = csv.reader(archivoforms.cleaned_data["archivo"]) contador=0 for fila in archivo: #de nuevo omitimos la primera linea if contador == 0: contador=contador+1 else: instanciaarchivo = archivoforms.cleaned_data['archivo'] #volvemos a guardar cada columna en una variable columna1 = fila[0] columna2 = fila[1] faltas = cat_direcciones(noDireccion=columna1, nombre=columna2.decode('latin-1').encode("utf-8")) faltas.save() #enviamos un mensaje de que se guardo exitosamente los registros messages.success(request, 'Se guardo exitosamente el registro') #retornamos a una vista return HttpResponseRedirect('/index/') #si el formulario es invalido regresamos a la vista else: messages.error(request, 'corrija los siguientes errores') #si es la primera vez que se entra a la vista else: archivoforms = ImportarForm() #se redirige a la vista return render_to_response('archivo.html',{'archivoforms':archivoforms}, context_instance=RequestContext(request)) def registra_direcciones(request): if request.method=='POST': form = direccionesForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Direccion Ingresado') return HttpResponseRedirect('/registroAlmacenes') else: form = direccionesForm() menuactivo2 = 'active' return render_to_response('direcciones.html',{'form':direccionesForm, 'menuactivo2':menuactivo2},context_instance=RequestContext(request)) @csrf_exempt def consultarAlmacen(request): if request.is_ajax(): if request.method=='GET': respuest="este se envio via get" elif request.method=='POST': noAlmacen=request.POST['noAlmacen'] partidas=serializers.serialize("json",cat_almacen.objects.all().filter(Direccion=noAlmacen),fields=('nombre')) return HttpResponse(partidas,mimetype="application/javascript") def registra_almacen(request): if request.method=='POST': form = almacenForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Almacen Ingresado') return HttpResponseRedirect('/registroAlmacenes') else: form = almacenForm() menuactivo2 = 'active' return render_to_response('almacenes.html',{'form':almacenForm, 'menuactivo2':menuactivo2},context_instance=RequestContext(request)) def registra_articulo(request): if request.method=='POST': form = articuloForm(request.POST) if form.is_valid(): form.save() messages.success(request, 'Articulo Ingresado') return HttpResponseRedirect('/registroArticulos') else: form = articuloForm() menuactivo2 = 'active' return render_to_response('articulos.html',{'form':articuloForm, 'menuactivo2':menuactivo2},context_instance=RequestContext(request))