def producto_index(request, field="descripcion", value="None", order="-id"): """ Página principal para trabajar con productos """ try: headquar = get_object_or_404(Headquar, id=DataAccessToken.get_headquar_id(request.session)) except: Message.error(request, ("Sede no seleccionado o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") field = (field if not request.REQUEST.get("field") else request.REQUEST.get("field")).strip() value = (value if not request.REQUEST.get("value") else request.REQUEST.get("value")).strip() order = (order if not request.REQUEST.get("order") else request.REQUEST.get("order")).strip() producto_page = None try: value_f = "" if value == "None" else value column_contains = u"%s__%s" % (field, "contains") producto_list = Producto.objects.filter(headquar=headquar).filter(**{ column_contains: value_f }).order_by(order) paginator = Paginator(producto_list, 20) try: producto_page = paginator.page(request.GET.get("page")) except PageNotAnInteger: producto_page = paginator.page(1) except EmptyPage: producto_page = paginator.page(paginator.num_pages) except Exception, e: Message.error(request, e)
def decorator(view_func): @wraps(view_func, assigned=available_attrs(view_func)) def _wrapped_view(request, *args, **kwargs): if not request.user.id: Message.warning(request, ("Tu no estás autenticado")) raise PermissionDenied #403.html #return render_to_response("403.html", {'': ''}, context_instance=RequestContext(request)) permiso = "" recurso = "/" response = HttpResponse() response.write('<script type="text/javascript">') response.write('alert("Hola")') response.write('</script>') try: path = request.path.strip( "/" ) # request.get_full_path().strip("/") #"/apps/controller/action/" to "apps/controller/action" except Exception, e: raise Exception( "%s. Asigne adecuadamente el parámetro template_denied_name " % e) path_list = path.split('/') permiso = "%s." % (path_list[0]) recurso = "/%s/" % (path_list[0]) if not isinstance(permiso, (list, tuple)): perms = (permiso, ) else: perms = permiso if not request.user.has_perms(perms) and len(path_list) > 1: permiso = "%s.%s" % (path_list[0], path_list[1]) recurso = "/%s/%s/" % (path_list[0], path_list[1]) if not isinstance(permiso, (list, tuple)): perms = (permiso, ) else: perms = permiso if not request.user.has_perms(perms) and len(path_list) > 2: permiso = "%s.%s_%s" % (path_list[0], path_list[1], path_list[2]) recurso = "/%s/%s/%s/" % (path_list[0], path_list[1], path_list[2]) if not isinstance(permiso, (list, tuple)): perms = (permiso, ) else: perms = permiso if request.user.has_perms(perms): return view_func(request, *args, **kwargs) else: Message.warning( request, ("Tu no posees permisos para acceder a <b>%(route)s</b>") % {'route': recurso}) #raise PermissionDenied return render_to_response( template_denied_name, {'': ''}, context_instance=RequestContext(request))
def headquar_add(request): """ Agrega sede """ d = Headquar() d.phone = "" d.address = "" if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.phone = request.POST.get("phone") d.address = request.POST.get("address") d.is_main = False d.locality_name = request.POST.get("locality_name") if request.POST.get("locality_name"): d.locality, is_locality_created = Locality.objects.get_or_create( name=request.POST.get("locality_name"), # name__iexact ) d.association_id = DataAccessToken.get_association_id(request.session) d.enterprise_id = DataAccessToken.get_enterprise_id(request.session) if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Headquar.objects.values("name").exclude(id=d.id).filter(enterprise_id=d.enterprise_id) ): raise Exception("La sede <b>%s</b> ya existe " % (d.name)) d.save() if d.id: Message.info(request, ("Sede <b>%(name)s</b> ha sido registrado correctamente.") % {"name":d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def enterprise_index(request): """ Página principal para trabajar con empresas """ try: d = get_object_or_404(Association, id=DataAccessToken.get_association_id( request.session)) except: Message.error(request, ( "Asociación no seleccionada o no se encuentra en la base de datos." )) return Redirect.to(request, "/home/choice_headquar/") enterprise_list = None try: subq = "SELECT COUNT(*) as count_sedes FROM space_headquar WHERE space_headquar.enterprise_id = space_enterprise.id" # mejor usar {{ d.headquar_set.all.count }} y listo, trate de no usar {{ d.num_sedes_all }} # enterprise_list = Enterprise.objects.filter(headquar__association_id=DataAccessToken.get_association_id(request.session)).annotate(num_sedes=Count("headquar")).order_by("-id").distinct().extra(select={"num_sedes_all": subq}) enterprise_list = Enterprise.objects.filter( headquar__association_id=DataAccessToken.get_association_id( request.session)).annotate( num_sedes=Count("headquar")).order_by("-id").distinct() # enterprise_list2= Enterprise.objects.filter(headquar__enterprise_id=DataAccessToken.get_enterprise_id(request.session)).annotate(num_sedes_all=Count("headquar")).distinct() # enterprise_list =enterprise_list1.add(num_sedes_all="e") # enterprise_list = chain(enterprise_list1, enterprise_list2) # enterprise_list= [s.id for s in sets.Set(enterprise_list1).intersection(sets.Set(enterprise_list2))] # enterprise_list=enterprise_list.distinct() except Exception, e: Message.error(request, e)
def locality_add(request): d = Locality() d.msnm = 0 d.date_create ="" if request.method == "POST": try: # Aquí asignar los datos d.name = request.POST.get("name") d.msnm = request.POST.get("msnm") d.date_create = None if request.POST.get("date_create"): d.date_create = request.POST.get("date_create") if request.POST.get("locality_type_id"): d.locality_type = LocalityType.objects.get(id=request.POST.get("locality_type_id")) if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Locality.objects.values("name").exclude(id=d.id) # puede .filter() ): raise Exception(_("Locality <b>%(name)s</b> name's already in use.") % {"name":d.name}) # El nombre x para localidad ya existe. # salvar registro d.save() if d.id: Message.info(request, ("Localidad <b>%(name)s</b> ha sido registrado correctamente.") % {"name":d.name}, True) # return Redirect.to(request, "/params/locality/index/")#usar to(...) cuando la acción está implementada en otra app, ver sad.views.user_index return Redirect.to_action(request, "index") # usar to_action(...) cuando la acción está implementada en este archivo except Exception, e: Message.error(request, e)
def producto_add(request): """ Agrega Producto """ d = Producto() d.descripcion = "" d.fecha_venc = "" if request.method == "POST": try: sid = transaction.savepoint() d.codigo = request.POST.get("codigox") d.descripcion = request.POST.get("descripcion") d.precio_venta = request.POST.get("precio_venta") d.headquar_id = DataAccessToken.get_headquar_id(request.session) if request.POST.get("fecha_venc"): d.fecha_venc = request.POST.get("fecha_venc") if request.POST.get("categoria_nombre"): d.categoria, is_created = Categoria.objects.get_or_create( nombre=request.POST.get("categoria_nombre"), ) if Producto.objects.filter(codigo=d.codigo).exclude( id=d.id, headquar_id=d.headquar_id).count() > 0: raise Exception("El producto <b>%s</b> ya existe " % d.codigo) d.save() if d.id: Message.info(request, ( "Producto <b>%(name)s</b> ha sido registrado correctamente." ) % {"name": d.codigo}, True) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def producto_add(request): """ Agrega Producto """ d = Producto() d.descripcion = "" d.fecha_venc="" if request.method == "POST": try: sid = transaction.savepoint() d.codigo = request.POST.get("codigox") d.descripcion = request.POST.get("descripcion") d.precio_venta = request.POST.get("precio_venta") d.headquar_id = DataAccessToken.get_headquar_id(request.session) if request.POST.get("fecha_venc"): d.fecha_venc = request.POST.get("fecha_venc") if request.POST.get("categoria_nombre"): d.categoria, is_created = Categoria.objects.get_or_create( nombre=request.POST.get("categoria_nombre"), ) if Producto.objects.filter(codigo=d.codigo).exclude(id=d.id, headquar_id=d.headquar_id).count() > 0: raise Exception("El producto <b>%s</b> ya existe " % d.codigo) d.save() if d.id: Message.info(request, ("Producto <b>%(name)s</b> ha sido registrado correctamente.") % {"name":d.codigo}, True) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def solution_index(request): """ Página principal para trabajar con soluciones """ try: solution_list = Solution.objects.all().order_by("-id") except Exception, e: Message.error(request, e)
def enterprise_add(request): """ Agrega empresa dentro de una asociación, para ello deberá agregarse con una sede Principal """ d = Enterprise() d.sede = "Principal" if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.tax_id = request.POST.get("tax_id") d.type_e = request.POST.get("type_e") d.solution_id = request.POST.get("solution_id") # solution=Solution.objects.get(id=d.solution_id) #no es necesario if normalize("NFKD", u"%s" % d.name).encode( "ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode( "ascii", "ignore").lower() for col in Enterprise.objects.values("name").exclude( id=d.id)): raise Exception( ("Empresa <b>%(name)s</b> ya existe.") % {"name": d.name}) if Enterprise.objects.exclude(id=d.id).filter( tax_id=d.tax_id).count() > 0: raise Exception("La empresa con RUC <b>%s</b> ya existe " % (d.tax_id)) d.save() headquar = Headquar() headquar.name = request.POST.get("sede") headquar.association_id = DataAccessToken.get_association_id( request.session) headquar.enterprise = d if normalize("NFKD", u"%s" % headquar.name).encode( "ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode( "ascii", "ignore").lower() for col in Headquar.objects.values("name").exclude( id=headquar.id).filter( enterprise_id=headquar.enterprise_id)): raise Exception("La sede <b>%s</b> ya existe " % (headquar.name)) headquar.save() if d.id: Message.info(request, ( "Empresa <b>%(name)s</b> ha sido registrado correctamente." ) % {"name": d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def enterprise_upload(request): """ Sube logo """ data = {} try: filename = Upload.save_file(request.FILES["logo"], "empresas/") data ["name"] = "%s" % filename except Exception, e: Message.error(request, e)
def association_upload(request): """ Sube logo """ data = {} try: filename = Upload.save_file(request.FILES["logo"], "asociaciones/") data ["name"] = "%s" % filename except Exception, e: Message.error(request, e)
def enterprise_upload(request): """ Sube logo """ data = {} try: filename = Upload.save_file(request.FILES["logo"], "empresas/") data["name"] = "%s" % filename except Exception, e: Message.error(request, e)
def locality_report(request, field="name", value="None", order="-id"): field = (field if not request.REQUEST.get("field") else request.REQUEST.get("field")).strip() value = (value if not request.REQUEST.get("value") else request.REQUEST.get("value")).strip() order = (order if not request.REQUEST.get("order") else request.REQUEST.get("order")).strip() try: value = "" if value == "None" else value column_contains = u"%s__%s" % (field, "contains") locality_list = Locality.objects.filter(**{ column_contains: value }).order_by(order) except Exception, e: Message.error(request, e)
def headquar_index(request): """ Página principal para trabajar con sedes """ try: enterprise = get_object_or_404(Enterprise, id=DataAccessToken.get_enterprise_id(request.session)) except: Message.error(request, ("Empresa no seleccionada o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") try: headquar_list = Headquar.objects.filter(enterprise_id=DataAccessToken.get_enterprise_id(request.session)).order_by("-id") except Exception, e: Message.error(request, e)
def decorator(view_func): @wraps(view_func, assigned=available_attrs(view_func)) def _wrapped_view(request, *args, **kwargs) : if not request.user.id: Message.warning(request, ("Tu no estás autenticado")) raise PermissionDenied #403.html #return render_to_response("403.html", {'': ''}, context_instance=RequestContext(request)) permiso = "" recurso = "/" response = HttpResponse() response.write('<script type="text/javascript">') response.write('alert("Hola")') response.write('</script>') try: path = request.path.strip("/") # request.get_full_path().strip("/") #"/apps/controller/action/" to "apps/controller/action" except Exception, e: raise Exception("%s. Asigne adecuadamente el parámetro template_denied_name " % e) path_list = path.split('/') permiso = "%s." % (path_list[0]) recurso = "/%s/" % (path_list[0]) if not isinstance(permiso, (list, tuple)): perms = (permiso,) else: perms = permiso if not request.user.has_perms(perms) and len(path_list) > 1: permiso = "%s.%s" % (path_list[0], path_list[1]) recurso = "/%s/%s/" % (path_list[0], path_list[1]) if not isinstance(permiso, (list, tuple)): perms = (permiso,) else: perms = permiso if not request.user.has_perms(perms) and len(path_list) > 2: permiso = "%s.%s_%s" % (path_list[0], path_list[1], path_list[2]) recurso = "/%s/%s/%s/" % (path_list[0], path_list[1], path_list[2]) if not isinstance(permiso, (list, tuple)): perms = (permiso,) else: perms = permiso if request.user.has_perms(perms): return view_func(request, *args, **kwargs) else: Message.warning(request, ("Tu no posees permisos para acceder a <b>%(route)s</b>") % {'route':recurso}) #raise PermissionDenied return render_to_response(template_denied_name, {'': ''}, context_instance=RequestContext(request))
def _wrapped_view(request, *args, **kwargs) : if not request.user.id: Message.warning(request, ("Tu no estás autenticado")) raise PermissionDenied #403.html #return render_to_response("403.html", {'': ''}, context_instance=RequestContext(request)) permiso = "" recurso = "/" response = HttpResponse() response.write('<script type="text/javascript">') response.write('alert("Hola")') response.write('</script>') try: path = request.path.strip("/") # request.get_full_path().strip("/") #"/apps/controller/action/" to "apps/controller/action" except Exception, e: raise Exception("%s. Asigne adecuadamente el parámetro template_denied_name " % e)
def solution_add(request): """ Agrega solución """ d = Solution() d.description = "" if request.method == "POST": try: d.name = request.POST.get("name") d.description = request.POST.get("description") if Solution.objects.exclude(id=d.id).filter(name=d.name).count() > 0: raise Exception(("Solución <b>%(name)s</b> ya existe.") % {"name":d.name}) d.save() if d.id: Message.info(request, ("Solución <b>%(name)s</b> ha sido registrado correctamente.") % {"name":d.name}) return Redirect.to_action(request, "index") except Exception, e: Message.error(request, e)
def locality_index(request, field="name", value="None", order="-id"): """ Lista paginada de locality """ #admin.site.add_action(locality_index) #Message.error(request, "eeeú3") #logger.warning("mgeésaaa ") #Logger.warning(request, "Mi error oculto") field = (field if not request.REQUEST.get("field") else request.REQUEST.get("field")).strip() value = (value if not request.REQUEST.get("value") else request.REQUEST.get("value")).strip() order = (order if not request.REQUEST.get("order") else request.REQUEST.get("order")).strip() print datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") print time.time() print locale.getlocale() #('Spanish_Peru', '1252') print locale.getdefaultlocale()#('es_PE', 'cp1252') print translation.get_language()# es-pe print translation.to_locale(translation.get_language())#es_PE print datetime.datetime.now().strftime("%a, %d %b %y")#mié, 16 abr 14 locality_page = None try: value_f = "" if value == "None" else value # (true or false) ? value1:value2 column_contains = u"%s__%s" % (field, "contains") # SEL-- WHERE name LIKE %an% if field == "is_active": value_f = "0" if value.lower() == "no" else value column_contains = u"%s" % (field) #.filter(is_active=True) locality_list = Locality.objects.filter(**{ column_contains: value_f }).order_by(order) paginator = Paginator(locality_list, 25) # Show num_rows=25 contacts per page try: locality_page = paginator.page(request.GET.get("page")) except PageNotAnInteger: locality_page = paginator.page(1) except EmptyPage: locality_page = paginator.page(paginator.num_pages) except Exception, e: Message.error(request, e)
def headquar_index(request): """ Página principal para trabajar con sedes """ try: enterprise = get_object_or_404(Enterprise, id=DataAccessToken.get_enterprise_id( request.session)) except: Message.error( request, ("Empresa no seleccionada o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") try: headquar_list = Headquar.objects.filter( enterprise_id=DataAccessToken.get_enterprise_id( request.session)).order_by("-id") except Exception, e: Message.error(request, e)
def enterprise_add(request): """ Agrega empresa dentro de una asociación, para ello deberá agregarse con una sede Principal """ d = Enterprise() d.sede = "Principal" if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.tax_id = request.POST.get("tax_id") d.type_e = request.POST.get("type_e") d.solution_id = request.POST.get("solution_id") # solution=Solution.objects.get(id=d.solution_id) #no es necesario if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Enterprise.objects.values("name").exclude(id=d.id) ): raise Exception(("Empresa <b>%(name)s</b> ya existe.") % {"name":d.name}) if Enterprise.objects.exclude(id=d.id).filter(tax_id=d.tax_id).count() > 0: raise Exception("La empresa con RUC <b>%s</b> ya existe " % (d.tax_id)) d.save() headquar = Headquar() headquar.name = request.POST.get("sede") headquar.association_id = DataAccessToken.get_association_id(request.session) headquar.enterprise = d if normalize("NFKD", u"%s" % headquar.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Headquar.objects.values("name").exclude(id=headquar.id).filter(enterprise_id=headquar.enterprise_id) ): raise Exception("La sede <b>%s</b> ya existe " % (headquar.name)) headquar.save() if d.id: Message.info(request, ("Empresa <b>%(name)s</b> ha sido registrado correctamente.") % {"name":d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def user_profile_edit(request): """ Actualiza perfil del usuario """ d = None try: d = request.user try: profile = Profile.objects.get(user_id=d.id) if profile.id: d.first_name = d.profile.person.first_name d.last_name = d.profile.person.last_name d.photo = d.profile.person.photo d.identity_type = d.profile.person.identity_type d.identity_num = d.profile.person.identity_num except: pass except Exception, e: Message.error(request, ("Usuario no se encuentra en la base de datos. %s" % e))
def _wrapped_view(request, *args, **kwargs): if not request.user.id: Message.warning(request, ("Tu no estás autenticado")) raise PermissionDenied #403.html #return render_to_response("403.html", {'': ''}, context_instance=RequestContext(request)) permiso = "" recurso = "/" response = HttpResponse() response.write('<script type="text/javascript">') response.write('alert("Hola")') response.write('</script>') try: path = request.path.strip( "/" ) # request.get_full_path().strip("/") #"/apps/controller/action/" to "apps/controller/action" except Exception, e: raise Exception( "%s. Asigne adecuadamente el parámetro template_denied_name " % e)
def headquar_add(request): """ Agrega sede """ d = Headquar() d.phone = "" d.address = "" if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.phone = request.POST.get("phone") d.address = request.POST.get("address") d.is_main = False d.locality_name = request.POST.get("locality_name") if request.POST.get("locality_name"): d.locality, is_locality_created = Locality.objects.get_or_create( name=request.POST.get("locality_name"), # name__iexact ) d.association_id = DataAccessToken.get_association_id( request.session) d.enterprise_id = DataAccessToken.get_enterprise_id( request.session) if normalize("NFKD", u"%s" % d.name).encode( "ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode( "ascii", "ignore").lower() for col in Headquar.objects.values("name").exclude( id=d.id).filter(enterprise_id=d.enterprise_id)): raise Exception("La sede <b>%s</b> ya existe " % (d.name)) d.save() if d.id: Message.info( request, ("Sede <b>%(name)s</b> ha sido registrado correctamente.") % {"name": d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def producto_edit(request, key): """ Actualiza Producto """ id = SecurityKey.is_valid_key(request, key, "producto_upd") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Producto, id=id) try: categoria = Categoria.objects.get(id=d.categoria.id) if categoria.id: d.categoria_nombre = d.categoria.nombre except: pass except Exception, e: Message.error(request, ("Usuario no se encuentra en la base de datos. %s" % e)) return Redirect.to_action(request, "index")
def enterprise_index(request): """ Página principal para trabajar con empresas """ try: d = get_object_or_404(Association, id=DataAccessToken.get_association_id(request.session)) except: Message.error(request, ("Asociación no seleccionada o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") enterprise_list = None try: subq = "SELECT COUNT(*) as count_sedes FROM space_headquar WHERE space_headquar.enterprise_id = space_enterprise.id" # mejor usar {{ d.headquar_set.all.count }} y listo, trate de no usar {{ d.num_sedes_all }} # enterprise_list = Enterprise.objects.filter(headquar__association_id=DataAccessToken.get_association_id(request.session)).annotate(num_sedes=Count("headquar")).order_by("-id").distinct().extra(select={"num_sedes_all": subq}) enterprise_list = Enterprise.objects.filter(headquar__association_id=DataAccessToken.get_association_id(request.session)).annotate(num_sedes=Count("headquar")).order_by("-id").distinct() # enterprise_list2= Enterprise.objects.filter(headquar__enterprise_id=DataAccessToken.get_enterprise_id(request.session)).annotate(num_sedes_all=Count("headquar")).distinct() # enterprise_list =enterprise_list1.add(num_sedes_all="e") # enterprise_list = chain(enterprise_list1, enterprise_list2) # enterprise_list= [s.id for s in sets.Set(enterprise_list1).intersection(sets.Set(enterprise_list2))] # enterprise_list=enterprise_list.distinct() except Exception, e: Message.error(request, e)
def solution_delete(request, key): """ Elimina solución """ id = SecurityKey.is_valid_key(request, key, "solution_del") if not id: return Redirect.to_action(request, "index") try: d = get_object_or_404(Solution, id=id) except: Message.error(request, ("Solución no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") try: # rastreando dependencias if d.module_set.count() > 0: raise Exception(("Solución <b>%(name)s</b> tiene módulos asignados.") % {"name":d.name}) if d.association_set.count() > 0: raise Exception(("Solución <b>%(name)s</b> está asignado en asociaciones.") % {"name":d.name}) if d.enterprise_set.count() > 0: raise Exception(("Solución <b>%(name)s</b> está asignado en empresas.") % {"name":d.name}) d.delete() if not d.id: Message.info(request, ("Solución <b>%(name)s</b> ha sido eliminado correctamente.") % {"name":d.name}, True) return Redirect.to_action(request, "index") except Exception, e: Message.error(request, e) return Redirect.to_action(request, "index") # endregion solution
def solution_edit(request, key): """ Actualiza solución """ id = SecurityKey.is_valid_key(request, key, "solution_upd") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Solution, id=id) except: Message.error(request, ("Solución no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") if request.method == "POST": try: d.name = request.POST.get("name") d.description = request.POST.get("description") if Solution.objects.exclude(id=d.id).filter(name=d.name).count() > 0: raise Exception(("Solución <b>%(name)s</b> ya existe.") % {"name":d.name}) # salvar registro d.save() if d.id: Message.info(request, ("Solución <b>%(name)s</b> ha sido actualizado correctamente.") % {"name":d.name}) return Redirect.to_action(request, "index") except Exception, e: Message.error(request, e)
def association_edit_current(request): """ Actualiza datos de la asociación a la que ingresó el usuario """ d = Association() try: d = get_object_or_404(Association, id=DataAccessToken.get_association_id(request.session)) except: Message.error(request, ("Asociación no seleccionada o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.type_a = request.POST.get("type_a") d.solution_id = request.POST.get("solution_id") # solution=Solution.objects.get(id=d.solution_id) #no es necesario d.logo = request.POST.get("asociacion_logo") if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Association.objects.values("name").exclude(id=d.id) ): raise Exception(("Asociación <b>%(name)s</b> ya existe.") % {"name":d.name}) # salvar registro d.save() raise Exception(("Asociación <b>%(name)s</b> ya existe.") % {"name":d.name}) if d.id: Message.info(request, ("Asociación <b>%(name)s</b> ha sido actualizado correctamente.") % {"name":d.name}) except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def headquar_delete(request, key): """ Elimina sede """ id = SecurityKey.is_valid_key(request, key, "headquar_del") if not id: return Redirect.to_action(request, "index") try: d = get_object_or_404(Headquar, id=id) except: Message.error(request, ("Sede no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") try: if d.enterprise.headquar_set.count() == 1: raise Exception(("Empresa <b>%(name)s</b> no puede quedar sin ninguna sede.") % {"name":d.enterprise.name}) if d.userprofileheadquar_set.count() > 0: raise Exception(("Sede <b>%(name)s de %(empresa)s</b> tiene usuarios y grupos asignados.") % {"name":d.name, "empresa":d.enterprise.name}) # agregue aquí sus otras relgas de negocio d.delete() if not d.id: Message.info(request, ("Sede <b>%(name)s de %(empresa)s</b> ha sido eliminado correctamente.") % {"name":d.name, "empresa":d.enterprise.name}, True) return Redirect.to_action(request, "index") except Exception, e: Message.error(request, e) return Redirect.to_action(request, "index")
def enterprise_delete(request, key): """ Elimina empresa con todas sus sedes """ id = SecurityKey.is_valid_key(request, key, "enterprise_del") if not id: return Redirect.to_action(request, "index") try: d = get_object_or_404(Enterprise, id=id) except: Message.error(request, ("Empresa no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") try: sid = transaction.savepoint() association = Association.objects.get(id=DataAccessToken.get_association_id(request.session)) if Enterprise.objects.filter(headquar__association_id=DataAccessToken.get_association_id(request.session)).count() == 1: raise Exception(("Asociación <b>%(name)s</b> no puede quedar sin ninguna sede asociada.") % {"name":association.name}) if d.userprofileenterprise_set.count() > 0: raise Exception(("Empresa <b>%(name)s</b> tiene usuarios y grupos asignados.") % {"name":d.name}) # agregue aquí sus otras relgas de negocio d.delete() if not d.id: Message.info(request, ("Empresa <b>%(name)s</b> ha sido eliminado correctamente.") % {"name":d.name}, True) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e) return Redirect.to_action(request, "index")
def producto_delete(request, key): """ Elimina producto """ id = SecurityKey.is_valid_key(request, key, "producto_del") if not id: return Redirect.to_action(request, "index") try: d = get_object_or_404(Producto, id=id) except: Message.error(request, ("Producto no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") try: # sid = transaction.savepoint() d.delete() if not d.id: Message.info( request, ("Producto <b>%(codigo)s</b> ha sido eliminado correctamente.") % {"codigo": d.codigo}, True) return Redirect.to_action(request, "index") except Exception, e: # transaction.savepoint_rollback(sid) Message.error(request, e) return Redirect.to_action(request, "index")
def headquar_change_association(request, key): """ Cambia de asociación a la sede """ id = SecurityKey.is_valid_key(request, key, "headquar_cha") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Headquar, id=id) if d.association: d.association_name = d.association.name except: Message.error(request, ("Sede no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") if request.method == "POST": try: # d.association_id = DataAccessToken.get_association_id(request.session) d.association_name = request.POST.get("association_name") try: d.association = Association.objects.get(name=d.association_name) except: raise Exception("La asociación <b>%s</b> no existe, vuelva a intentar " % (request.POST.get("association_name"))) # salvar registro d.save() if d.id: Message.info(request, ("Sede <b>%(name)s</b> ha sido cambiado de asociación correctamente.") % {"name":d.name}) return Redirect.to_action(request, "index") except Exception, e: Message.error(request, e)
def producto_index(request, field="descripcion", value="None", order="-id"): """ Página principal para trabajar con productos """ try: headquar = get_object_or_404(Headquar, id=DataAccessToken.get_headquar_id( request.session)) except: Message.error( request, ("Sede no seleccionado o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") field = (field if not request.REQUEST.get("field") else request.REQUEST.get("field")).strip() value = (value if not request.REQUEST.get("value") else request.REQUEST.get("value")).strip() order = (order if not request.REQUEST.get("order") else request.REQUEST.get("order")).strip() producto_page = None try: value_f = "" if value == "None" else value column_contains = u"%s__%s" % (field, "contains") producto_list = Producto.objects.filter(headquar=headquar).filter( **{ column_contains: value_f }).order_by(order) paginator = Paginator(producto_list, 20) try: producto_page = paginator.page(request.GET.get("page")) except PageNotAnInteger: producto_page = paginator.page(1) except EmptyPage: producto_page = paginator.page(paginator.num_pages) except Exception, e: Message.error(request, e)
def is_valid_key(request, key_value, action_name): """ Genera una llave de seguridad válida durante todo el día %Y-%m-%d Entrada:: key_value=1.dfad09debee34f8e85fccc5adaa2dadb action_name="user_upd" Salida:: 1 """ key = key_value.split('.') _id = key[0] valid_key = SecurityKey.get_key(_id, action_name) valid = (True if valid_key == key_value else False) if not valid: # raise Exception(("Acceso denegado. La llave de seguridad es incorrecta.")) Message.error(request, ('Acceso denegado. La llave de seguridad es incorrecta.')) return False # print 'key_value(%s) = valid_key(%s)' % (key_value, valid_key) # Message.info(request,('key_value(%s) = valid_key(%s)' % (key_value, valid_key))) return _id
def enterprise_edit(request, key): """ Actualiza empresa """ id = SecurityKey.is_valid_key(request, key, "enterprise_upd") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Enterprise, id=id) except: Message.error(request, ("Empresa no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.tax_id = request.POST.get("tax_id") d.type_e = request.POST.get("type_e") d.solution_id = request.POST.get("solution_id") # solution=Solution.objects.get(id=d.solution_id) #no es necesario if normalize("NFKD", u"%s" % d.name).encode( "ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode( "ascii", "ignore").lower() for col in Enterprise.objects.values("name").exclude( id=d.id)): raise Exception( ("Empresa <b>%(name)s</b> ya existe.") % {"name": d.name}) if Enterprise.objects.exclude(id=d.id).filter( tax_id=d.tax_id).count() > 0: raise Exception("La empresa con RUC <b>%s</b> ya existe " % (d.tax_id)) # salvar registro d.save() if d.id: Message.info(request, ( "Empresa <b>%(name)s</b> ha sido actualizado correctamente." ) % {"name": d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def enterprise_edit_current(request): """ Actualiza datos de la empresa a la que ingresó el usuario """ d = Enterprise() try: d = get_object_or_404(Enterprise, id=DataAccessToken.get_enterprise_id( request.session)) except: Message.error( request, ("Empresa no seleccionada o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.tax_id = request.POST.get("tax_id") d.type_e = request.POST.get("type_e") d.solution_id = request.POST.get("solution_id") d.logo = request.POST.get("empresa_logo") # solution=Solution.objects.get(id=d.solution_id) #no es necesario if normalize("NFKD", u"%s" % d.name).encode( "ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode( "ascii", "ignore").lower() for col in Enterprise.objects.values("name").exclude( id=d.id)): raise Exception( ("Empresa <b>%(name)s</b> ya existe.") % {"name": d.name}) if Enterprise.objects.exclude(id=d.id).filter( tax_id=d.tax_id).count() > 0: raise Exception("La empresa con RUC <b>%s</b> ya existe " % (d.tax_id)) # salvar registro d.save() if d.id: Message.info(request, ( "Empresa <b>%(name)s</b> ha sido actualizado correctamente." ) % {"name": d.name}) except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def headquar_edit(request, key): """ Actualiza sede """ id = SecurityKey.is_valid_key(request, key, "headquar_upd") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Headquar, id=id) if d.locality: d.locality_name = d.locality.name except: Message.error(request, ("Sede no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.phone = request.POST.get("phone") d.address = request.POST.get("address") d.locality_name = request.POST.get("locality_name").strip() if request.POST.get("locality_name").strip(): d.locality, is_locality_created = Locality.objects.get_or_create( name=request.POST.get( "locality_name").strip(), # name__iexact ) if normalize("NFKD", u"%s" % d.name).encode( "ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode( "ascii", "ignore").lower() for col in Headquar.objects.values("name").exclude( id=d.id).filter(enterprise_id=d.enterprise_id)): raise Exception("La sede <b>%s</b> ya existe " % (d.name)) # salvar registro d.save() if d.id: Message.info( request, ("Sede <b>%(name)s</b> ha sido actualizado correctamente.") % {"name": d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def locality_edit(request, key): id = SecurityKey.is_valid_key(request, key, "locality_upd") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Locality, id=id) # Locality.objects.get(id=id) except: # Locality.DoesNotExist Message.error(request, _("Locality not found in the database.")) return Redirect.to_action(request, "index") if request.method == "POST": try: sid = transaction.savepoint() # begin transaction, no amerita el decorador @transaction.atomic pero dejadlo para las nuevas version # Aquí asignar los datos d.name = request.POST.get("name") d.msnm = request.POST.get("msnm") if request.POST.get("date_create"): d.date_create = request.POST.get("date_create") d.is_active = True # para probar transaction # locality_type=LocalityType() # locality_type.name="Rural5" # if LocalityType.objects.filter(name = locality_type.name).count() > 0: # raise Exception(_("LocalityType <b>%(name)s</b> name's already in use.") % {"name":locality_type.name}) #trhow new Exception("msg") # locality_type.save() # d.locality_type=locality_type if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Locality.objects.values("name").exclude(id=d.id) # puede .filter() ): raise Exception(_("Locality <b>%(name)s</b> name's already in use.") % {"name":d.name}) # trhow new Exception("msg") # salvar registro d.save() # para probar transaction # raise Exception("Error para no salvar. Si funciona") if d.id: # transaction.savepoint_commit(sid) se colocaría solo al final, pero no amerita pk ya está decorado con @transaction.atomic Message.info(request, ("Localidad <b>%(name)s</b> ha sido actualizado correctamente.") % {"name":d.name}, True) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) # para reversar en caso de error en alguna de las tablas Message.error(request, e)
def enterprise_edit(request, key): """ Actualiza empresa """ id = SecurityKey.is_valid_key(request, key, "enterprise_upd") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Enterprise, id=id) except: Message.error(request, ("Empresa no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.tax_id = request.POST.get("tax_id") d.type_e = request.POST.get("type_e") d.solution_id = request.POST.get("solution_id") # solution=Solution.objects.get(id=d.solution_id) #no es necesario if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Enterprise.objects.values("name").exclude(id=d.id) ): raise Exception(("Empresa <b>%(name)s</b> ya existe.") % {"name":d.name}) if Enterprise.objects.exclude(id=d.id).filter(tax_id=d.tax_id).count() > 0: raise Exception("La empresa con RUC <b>%s</b> ya existe " % (d.tax_id)) # salvar registro d.save() if d.id: Message.info(request, ("Empresa <b>%(name)s</b> ha sido actualizado correctamente.") % {"name":d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def headquar_edit(request, key): """ Actualiza sede """ id = SecurityKey.is_valid_key(request, key, "headquar_upd") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Headquar, id=id) if d.locality: d.locality_name = d.locality.name except: Message.error(request, ("Sede no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.phone = request.POST.get("phone") d.address = request.POST.get("address") d.locality_name = request.POST.get("locality_name").strip() if request.POST.get("locality_name").strip(): d.locality, is_locality_created = Locality.objects.get_or_create( name=request.POST.get("locality_name").strip(), # name__iexact ) if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Headquar.objects.values("name").exclude(id=d.id).filter(enterprise_id=d.enterprise_id) ): raise Exception("La sede <b>%s</b> ya existe " % (d.name)) # salvar registro d.save() if d.id: Message.info(request, ("Sede <b>%(name)s</b> ha sido actualizado correctamente.") % {"name":d.name}) return Redirect.to_action(request, "index") except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)
def locality_delete(request, key): id = SecurityKey.is_valid_key(request, key, "locality_del") if not id: return Redirect.to_action(request, "index") try: d = get_object_or_404(Locality, id=id) # Locality.objects.get(id=id) except: # Locality.DoesNotExist Message.error(request, _("Locality not found in the database.")) return Redirect.to_action(request, "index") try: # rastreando dependencias if d.headquart_set.count() > 0: raise Exception(("Localidad <b>%(name)s</b> está asignado en headquart.") % {"name":d.name}) d.delete() if not d.id: Message.info(request, ("Localidad <b>%(name)s</b> ha sido eliminado correctamente.") % {"name":d.name}, True) return Redirect.to_action(request, "index") except Exception, e: Message.error(request, e) return Redirect.to_action(request, "index")
def headquar_change_association(request, key): """ Cambia de asociación a la sede """ id = SecurityKey.is_valid_key(request, key, "headquar_cha") if not id: return Redirect.to_action(request, "index") d = None try: d = get_object_or_404(Headquar, id=id) if d.association: d.association_name = d.association.name except: Message.error(request, ("Sede no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") if request.method == "POST": try: # d.association_id = DataAccessToken.get_association_id(request.session) d.association_name = request.POST.get("association_name") try: d.association = Association.objects.get( name=d.association_name) except: raise Exception( "La asociación <b>%s</b> no existe, vuelva a intentar " % (request.POST.get("association_name"))) # salvar registro d.save() if d.id: Message.info(request, ( "Sede <b>%(name)s</b> ha sido cambiado de asociación correctamente." ) % {"name": d.name}) return Redirect.to_action(request, "index") except Exception, e: Message.error(request, e)
def producto_delete(request, key): """ Elimina producto """ id = SecurityKey.is_valid_key(request, key, "producto_del") if not id: return Redirect.to_action(request, "index") try: d = get_object_or_404(Producto, id=id) except: Message.error(request, ("Producto no se encuentra en la base de datos.")) return Redirect.to_action(request, "index") try: # sid = transaction.savepoint() d.delete() if not d.id: Message.info(request, ("Producto <b>%(codigo)s</b> ha sido eliminado correctamente.") % {"codigo":d.codigo}, True) return Redirect.to_action(request, "index") except Exception, e: # transaction.savepoint_rollback(sid) Message.error(request, e) return Redirect.to_action(request, "index")
def enterprise_edit_current(request): """ Actualiza datos de la empresa a la que ingresó el usuario """ d = Enterprise() try: d = get_object_or_404(Enterprise, id=DataAccessToken.get_enterprise_id(request.session)) except: Message.error(request, ("Empresa no seleccionada o no se encuentra en la base de datos.")) return Redirect.to(request, "/home/choice_headquar/") if request.method == "POST": try: sid = transaction.savepoint() d.name = request.POST.get("name") d.tax_id = request.POST.get("tax_id") d.type_e = request.POST.get("type_e") d.solution_id = request.POST.get("solution_id") d.logo = request.POST.get("empresa_logo") # solution=Solution.objects.get(id=d.solution_id) #no es necesario if normalize("NFKD", u"%s" % d.name).encode("ascii", "ignore").lower() in list( normalize("NFKD", u"%s" % col["name"]).encode("ascii", "ignore").lower() for col in Enterprise.objects.values("name").exclude(id=d.id) ): raise Exception(("Empresa <b>%(name)s</b> ya existe.") % {"name":d.name}) if Enterprise.objects.exclude(id=d.id).filter(tax_id=d.tax_id).count() > 0: raise Exception("La empresa con RUC <b>%s</b> ya existe " % (d.tax_id)) # salvar registro d.save() if d.id: Message.info(request, ("Empresa <b>%(name)s</b> ha sido actualizado correctamente.") % {"name":d.name}) except Exception, e: transaction.savepoint_rollback(sid) Message.error(request, e)