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 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 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 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 get_grupos(request, url): """ Genera el menú de Grupos para imprimirlo en header.html Usage:: {% get_grupos request get_url %} Examples:: {% url 'mod_ventas_dashboard' as get_url %} {% get_grupos request get_url %} """ sede = None if DataAccessToken.get_headquar_id(request.session): try: sede = Headquar.objects.get( id=DataAccessToken.get_headquar_id(request.session)) except: Message.error(request, ("Sede no se encuentra en la base de datos.")) value = '' w = "" d = DataAccessToken.get_grupo_id_list(request.session) if sede: w = ( u' <a href="#" class="dropdown-toggle" data-toggle="dropdown" title ="%s">%s > %s %s<b class="caret"></b></a>' % (sede.association.name, sede.enterprise.name, sede.name, value)) o = '' if d: for i in d: print i o = o + (u'<li><a href="%s?grupo=%s">%s/%s</a></li>' % (url, i, sede.name, "")) if sede: o = o + (u'<li><a href="%s?">%s/Todas las areas</a></li>' % (url, sede.name)) a = (u'<ul class="nav">' u' <li class="dropdown">' u' %s' u' <ul class="dropdown-menu">' % (w)) c = (u' </ul>' u' </li>' u'</ul>') return "%s%s%s" % (a, o, c)
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 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 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 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 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 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 load(request, menu_module): """ Carga el menú del usuario Entrada:: menu_module=BACKEND Salida:: menu_item_list[menu] """ Menus.menu_list = [] Menus.menu_item_list = {} Menus.menu_module = menu_module user = request.user print "\n\n\n" # print 'Permisos del User a travez de sus Groups' # print user.get_group_permissions() # no sirve pk tambien debemos comparar con la sede # if not DataAccessToken.get_headquar_id(request.session): # return HttpResponse("Sede no seleccionada, seleccione en la Página de inicio para cargar el menú") # los Grupos del User según su espacio actual permission_list = [] if not request.user.is_superuser: try: headquar = Headquar.objects.get(id=DataAccessToken.get_headquar_id(request.session)) group_id_list_by_user_and_headquar = list(col["id"] for col in Group.objects.values("id").filter(userprofileheadquar__headquar__id=headquar.id, userprofileheadquar__user__id=user.id).distinct()) group_id_list_by_user_and_enterprise = list(col["id"] for col in Group.objects.values("id").filter(userprofileenterprise__enterprise__id=headquar.enterprise.id, userprofileenterprise__user__id=user.id).distinct()) group_id_list_by_user_and_association = list(col["id"] for col in Group.objects.values("id").filter(userprofileassociation__association__id=headquar.association.id, userprofileassociation__user__id=user.id).distinct()) group_id_list_by_user_and_hea = list(set(group_id_list_by_user_and_headquar + group_id_list_by_user_and_enterprise + group_id_list_by_user_and_association)) # print 'Groups del User a travez de su espacio actual' # print group_id_list_by_user_and_hea # print 'Permisos del User a travez de su espacio actual' permission_list = Permission.objects.filter(group__in=group_id_list_by_user_and_hea).distinct() # compara con los Group del user except: print "Sede no seleccionado" #headquar=Headquar.objects.filter(userprofileheadquar__user__id=request.user.id).distinct().first() pass if request.user.is_superuser: permission_list = [] # si es uperuser mostrarme todo los menús menu = Menu() #permission_list = [] # obtengo los hijos y luego saco sus padres, esto es para no mostrar un menu sin items menu_item_list_t = Menu.objects.filter(Q(permission__in=permission_list) | Q(id__isnull=True if permission_list else False), module=menu_module, is_active=True).order_by("pos") Menus.menu_list = Menu.objects.filter(menu__in=menu_item_list_t, module=menu_module, is_active=True).order_by("pos").distinct() # print Menus.menu_list if Menus.menu_list: for menu in Menus.menu_list: Menus.menu_item_list[menu.title] = Menu.objects.filter(Q(permission__in=permission_list) | Q(id__isnull=True if permission_list else False), parent_id=menu.id, module=menu_module, is_active=True).order_by("pos") # .lower().replace(" ","_") # print Menus.menu_item_list return ""
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 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 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 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 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 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 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 load_access(request, headquar_id, module_id): if request.is_ajax(): return HttpResponse( "ESTA OPERACION NO DEBE SER CARGADO CON AJAX, Presione F5") else: try: try: headquar = Headquar.objects.get(id=headquar_id) except: Message.error(request, ( "Sede no seleccionado o no se encuentra en la base de datos." )) return Redirect.to(request, "/accounts/choice_headquar/") try: module = Module.objects.get(id=module_id) except: Message.error(request, ( "Módulo no seleccionado o no se encuentra en la base de datos." )) return Redirect.to(request, "/accounts/choice_headquar/") if not request.user.is_superuser: # vovler a verificar si tiene permisos # obteniendo las sedes a la cual tiene acceso headquar_list = Headquar.objects.filter( userprofileheadquar__user__id=request.user.id).distinct() if headquar not in headquar_list: raise Exception(( "Acceso denegado. No tiene privilegio para ingresar a esta sede: %s %s." % (headquar.enterprise.name, headquar.name))) # obteniendo los módulos a la cual tiene acceso group_list = Group.objects.filter( userprofileheadquar__headquar__id=headquar.id, userprofileheadquar__user__id=request.user.id).distinct() module_list = Module.objects.filter( groups__in=group_list).distinct() if module not in module_list: raise Exception(( "Acceso denegado. No tiene privilegio para ingresar a este módulo: %s de %s %s." % (module.name, headquar.enterprise.name, headquar.name))) # cargando permisos de datos para el usuario DataAccessToken.set_association_id(request, headquar.association.id) DataAccessToken.set_enterprise_id(request, headquar.enterprise.id) DataAccessToken.set_headquar_id(request, headquar.id) try: profile = Profile.objects.get(user_id=request.user.id) if profile.id: profile.last_headquar_id = headquar_id profile.last_module_id = module_id profile.save() except: person = Person(first_name=request.user.first_name, last_name=request.user.last_name) person.save() profile = Profile(user=request.user, last_headquar_id=headquar_id, last_module_id=module_id) profile.person = person profile.save() pass # Message.info(request, ("La sede %(name)s ha sido cargado correctamente.") % {"name":headquar_id} ) if module.BACKEND == module.module: return Redirect.to(request, "/mod_backend/dashboard/") if module.VENTAS == module.module: return Redirect.to(request, "/mod_ventas/dashboard/") if module.PRO == module.module: return Redirect.to(request, "/mod_pro/dashboard/") # TODO agregue aqui su nuevo modulo else: Message.error(request, "Módulo no definido") return HttpResponseRedirect("/accounts/choice_headquar/") except Exception, e: Message.error(request, e) return HttpResponseRedirect("/accounts/choice_headquar/")
def load_access(request, headquar_id, module_id): if request.is_ajax(): return HttpResponse("ESTA OPERACION NO DEBE SER CARGADO CON AJAX, Presione F5") else: try: try: headquar = Headquar.objects.get(id=headquar_id) except: Message.error(request, ("Sede no seleccionado o no se encuentra en la base de datos.")) return Redirect.to(request, "/accounts/choice_headquar/") try: module = Module.objects.get(id=module_id) except: Message.error(request, ("Módulo no seleccionado o no se encuentra en la base de datos.")) return Redirect.to(request, "/accounts/choice_headquar/") if not request.user.is_superuser: # vovler a verificar si tiene permisos # obteniendo las sedes a la cual tiene acceso headquar_list = Headquar.objects.filter(userprofileheadquar__user__id=request.user.id).distinct() if headquar not in headquar_list: raise Exception(("Acceso denegado. No tiene privilegio para ingresar a esta sede: %s %s." % (headquar.enterprise.name, headquar.name))) # obteniendo los módulos a la cual tiene acceso group_list = Group.objects.filter(userprofileheadquar__headquar__id=headquar.id, userprofileheadquar__user__id=request.user.id).distinct() module_list = Module.objects.filter(groups__in=group_list).distinct() if module not in module_list: raise Exception(("Acceso denegado. No tiene privilegio para ingresar a este módulo: %s de %s %s." % (module.name, headquar.enterprise.name, headquar.name))) # cargando permisos de datos para el usuario DataAccessToken.set_association_id(request, headquar.association.id) DataAccessToken.set_enterprise_id(request, headquar.enterprise.id) DataAccessToken.set_headquar_id(request, headquar.id) try: profile = Profile.objects.get(user_id=request.user.id) if profile.id: profile.last_headquar_id = headquar_id profile.last_module_id = module_id profile.save() except: person = Person(first_name=request.user.first_name, last_name=request.user.last_name) person.save() profile = Profile(user=request.user, last_headquar_id=headquar_id, last_module_id=module_id) profile.person = person profile.save() pass # Message.info(request, ("La sede %(name)s ha sido cargado correctamente.") % {"name":headquar_id} ) if module.BACKEND == module.module: return Redirect.to(request, "/mod_backend/dashboard/") if module.VENTAS == module.module: return Redirect.to(request, "/mod_ventas/dashboard/") if module.PRO == module.module: return Redirect.to(request, "/mod_pro/dashboard/") # TODO agregue aqui su nuevo modulo else: Message.error(request, "Módulo no definido") return HttpResponseRedirect("/accounts/choice_headquar/") except Exception, e: Message.error(request, e) return HttpResponseRedirect("/accounts/choice_headquar/")
def load(request, menu_module): """ Carga el menú del usuario Entrada:: menu_module=BACKEND Salida:: menu_item_list[menu] """ Menus.menu_list = [] Menus.menu_item_list = {} Menus.menu_module = menu_module user = request.user print "\n\n\n" # print 'Permisos del User a travez de sus Groups' # print user.get_group_permissions() # no sirve pk tambien debemos comparar con la sede # if not DataAccessToken.get_headquar_id(request.session): # return HttpResponse("Sede no seleccionada, seleccione en la Página de inicio para cargar el menú") # los Grupos del User según su espacio actual permission_list = [] if not request.user.is_superuser: try: headquar = Headquar.objects.get( id=DataAccessToken.get_headquar_id(request.session)) group_id_list_by_user_and_headquar = list( col["id"] for col in Group.objects.values("id").filter( userprofileheadquar__headquar__id=headquar.id, userprofileheadquar__user__id=user.id).distinct()) group_id_list_by_user_and_enterprise = list( col["id"] for col in Group.objects.values("id").filter( userprofileenterprise__enterprise__id=headquar. enterprise.id, userprofileenterprise__user__id=user.id).distinct()) group_id_list_by_user_and_association = list( col["id"] for col in Group.objects.values("id").filter( userprofileassociation__association__id=headquar. association.id, userprofileassociation__user__id=user.id).distinct()) group_id_list_by_user_and_hea = list( set(group_id_list_by_user_and_headquar + group_id_list_by_user_and_enterprise + group_id_list_by_user_and_association)) # print 'Groups del User a travez de su espacio actual' # print group_id_list_by_user_and_hea # print 'Permisos del User a travez de su espacio actual' permission_list = Permission.objects.filter( group__in=group_id_list_by_user_and_hea).distinct( ) # compara con los Group del user except: print "Sede no seleccionado" #headquar=Headquar.objects.filter(userprofileheadquar__user__id=request.user.id).distinct().first() pass if request.user.is_superuser: permission_list = [] # si es uperuser mostrarme todo los menús menu = Menu() #permission_list = [] # obtengo los hijos y luego saco sus padres, esto es para no mostrar un menu sin items menu_item_list_t = Menu.objects.filter( Q(permission__in=permission_list) | Q(id__isnull=True if permission_list else False), module=menu_module, is_active=True).order_by("pos") Menus.menu_list = Menu.objects.filter( menu__in=menu_item_list_t, module=menu_module, is_active=True).order_by("pos").distinct() # print Menus.menu_list if Menus.menu_list: for menu in Menus.menu_list: Menus.menu_item_list[menu.title] = Menu.objects.filter( Q(permission__in=permission_list) | Q(id__isnull=True if permission_list else False), parent_id=menu.id, module=menu_module, is_active=True).order_by( "pos") # .lower().replace(" ","_") # print Menus.menu_item_list return ""