Foros del Web » Programando para Internet » Python »

Una app para varios usuarios

Estas en el tema de Una app para varios usuarios en el foro de Python en Foros del Web. Buenas, tengo el siguiente incoveniente y es que actualmente desarrolle un proyecto con una app que me permite generar la contabilidad de un edificio (que ...
  #1 (permalink)  
Antiguo 23/03/2012, 08:45
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Una app para varios usuarios

Buenas, tengo el siguiente incoveniente y es que actualmente desarrolle un proyecto con una app que me permite generar la contabilidad de un edificio (que tiene x cantidad de apartamentos, la ingresos y egresos, etc).

Resulta que quiero añadir un sistema de usuarios, que es algo que sé hacer. Pero el incoveniente es que no se como hacer que cuando un cliente desee crear una contabilidad me use la app que cree con todos los modelos y demás cosas que ésta tiene.

Básicamente esa es mi duda, cómo hacer que un usuario pueda hacer uso de mi app una cantidad indeterminada de veces, porque si el desea tener la contabilidad de un cojunto residencial, necesitaria tener varias contabilidades para ese mismo usuario.

Espero me haya podido explicar bien y me puedan colaborar.

Gracias.
  #2 (permalink)  
Antiguo 23/03/2012, 14:16
zz_sioux
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una app para varios usuarios

No se entendió mucho, podes detallarlo mejor, también si usas algún framework, si es una aplicación web.

Lo que me imagino es que dentro de la misma aplicación el usuario pueda cambiar de edificio a complejo residencial y cada una tenga un modelo distinto?
  #3 (permalink)  
Antiguo 23/03/2012, 20:11
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Una app para varios usuarios

Disculpa si no me hice entender soy algo nuevo para esto.

Hice un proyecto en Django y cree una aplicación llamada Contabilidad con sus models, views, templates y demás cosas, pero resulta que solo funcionaria para una persona que la quiera usar.

Lo que yo quiero es poner el sistema de usuarios (como ya dije lo sé usar) y que cada usuario pueda crear su propia contabilidad, es decir, que cada usuario pueda hacer uso de toda la app. Eso sería lo básico, saber cómo permitir que cada usuario logueado pueda hacer uso de la app completa y pueda tener acceso a esa Contabilidad solamente él.

Y lo último, es que deseo poder que cada usuario pueda crear varias contabilidades si es un conjunto residencial por ejempo, es decir, una contabilidad por cada edificio del conjunto, y que únicamente las administre ese usuario.

Esa son mis dos dudas. Espero haber sido un poco más claro.

Gracias por la ayuda que me puedan brindar.
  #4 (permalink)  
Antiguo 26/03/2012, 08:52
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una app para varios usuarios

Si lo querés hacer así, vas a tener que cambiar un poco la arquitectura de tu sistema. Por ejemplo, que cada "contabilidad" tenga definida en el modelo un usuario dueño o administrador (o un grupo de usuarios) y que a ese usuario o grupo solamente se le ofrezcan los objetos que le pertenecen o que pueda administrar.

Esto lo podés lograr usando la funcionalidad de administración de usuarios y permisos que viene incorporada en Django.


Saludos.
  #5 (permalink)  
Antiguo 26/03/2012, 18:48
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Información Respuesta: Una app para varios usuarios

Gracias por responderme.

Lo que te entendí de lo que me escribiste es que implemente el sistema de administración de usuarios y agregue un nuevo campo para el usuario en mi model de la app "contabilidad" (supongo que en cada class que definí en el model, pondría el campo usuario con un valor por defecto que sería el usuario que se encuentra logueado) y así, poder almacenar los datos con el usuario logueado y después pueda mediante querys recuperar los datos solamente del usuario que se encuentra logueado.
Así entendí lo que me trataste de decir, no sé si esté equivocado.

No se si ya me haya dado a entender bien, pero acá doy un ejemplo específico de lo que quiero.

Digamos que ya tengo mi app en un hosting y funcionando, y tengo dos usuarios que lo quieren usar porque son los que manejan la contabilidad del edificio donde viven. Ambos usuarios viven en diferentes ciudades y por consiguiente, cada uno vive en un edificio distinto del otro, no tienen ninguna relación.
Entonces la idea sería que si un usuario se loguea solo puede ver la historia de contabilidad de su edificio, los propietarios de su edificio, sus ingresos y egresos, etc, pero solo la que le competen a su edificio.
Y lo mismo aplicaría para el otro usuario, solo puede visualizar los datos de su edificio y ya.

Entonces ahí viene mi duda si es posible hacer como una aplicación web, o tendría que instalar localmente la aplicación web con herramientas como wamp, apache, etc, en cada pc, o tendría que convertir mi aplicación web a una aplicación de escritorio.

Aunque en últimas no la quiero como aplicación de escritorio porque la idea a futuro es permitir que los usuarios puedan hacer registros en la contabilidad para su edificio desde cualquier parte del mundo y después cualquier dispositivo como un dispositivo móvil.

Espero hacerme entender ahora si mucho mejor y perdonen por molestar tanto.
  #6 (permalink)  
Antiguo 26/03/2012, 20:00
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una app para varios usuarios

La idea la había entendido, creo que yo mismo no me hice entender.

En realidad primero tengo que hacerte una pregunta: ¿tu interfaz de administración es el admin de Django? Si es así, quizás puedas usar algo como esto: http://www.b-list.org/weblog/2008/dec/24/admin/
En caso de que tengas tu propia interfaz de administración, claramente lo que tenés que hacer es vincular la Contabilidad con el Usuario, para mayor flexibilidad quizás quieras usar un ManyToMany. Una vez que agregues esta relación, basta con que a la hora de desplegar la lista de Contabilidad, devuelvas solamente aquellas que pertenezcan al usuario conectado.


Saludos.
  #7 (permalink)  
Antiguo 26/03/2012, 20:17
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Una app para varios usuarios

Ah muchas gracias. La verdad entonces si te entendí.

No uso el admin de Django porque creo que es más fácil de entender para la gente una interfaz sencilla hecha por uno mismo, pero ahora que me planteas eso creo que reconsiderare la idea de usar el admin de Django.

Gracias por tu ayuda. Creo que tendré que reeplantear algunas cosas de mi interfaz.

Me recomendarías usar el admin de Django para este tipo de proyecto?

Gracias de nuevo.
  #8 (permalink)  
Antiguo 27/03/2012, 07:13
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una app para varios usuarios

Si ya tenés una interfaz de administración, no creo que debas usar la de Django unicamente por este motivo, basta filtrar lo que es visible usando la relación que te sugerí.

Con más tiempo y esfuerzo quizás valga la pena usar el admin de Django en el futuro, pero eso es algo que te podrás plantear en el futuro, si tu interfaz de administración se vuelve muy compleja.


Saludos.
  #9 (permalink)  
Antiguo 27/03/2012, 10:34
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Una app para varios usuarios

Vale muchas gracias por tu colaboración. Ahora si a terminar!!!
  #10 (permalink)  
Antiguo 29/03/2012, 20:48
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Una app para varios usuarios

Gracias por toda tu ayuda. Todo me funcionó. Pero ahora tengo un nuevo problema o mejor dicho dos XD.
El primero es que el formulario me carga el campo ManyToMany con todos los usuarios y pues lo que yo quiero es que me pre-cargue el usuario que se encuentra logueado en ese momento y nada más.
Y el segundo problema que tengo es que necesito que el usuario pueda crear los apartamentos, es decir, que pueda poner el nombre del apartamento y estos se vayan agregando a un campo model tipo "select" que contendría todos los nombre de los apartamentos.

Espero me podas ayudar. Gracias.
  #11 (permalink)  
Antiguo 29/03/2012, 21:05
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una app para varios usuarios

Ahí ya es imposible ayudarte sin saber cómo es tu código :)
  #12 (permalink)  
Antiguo 30/03/2012, 10:17
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Una app para varios usuarios

Que pena aquí está.

El código de mi primera pregunta es este:

models.py

Código Python:
Ver original
  1. class Propietario(models.Model):
  2.     user = models.ManyToManyField(User)
  3.     apto = models.CharField(max_length=3, choices=aptos, unique=True, verbose_name='Apartamento')
  4.     name = models.CharField(max_length=50, verbose_name='Nombre Completo')
  5.     cedula = models.CharField(max_length=20, blank=True, null=True, verbose_name='Cédula')
  6.     address = models.CharField(max_length=50, blank=True, null=True, verbose_name='Dirección')
  7.     tel = models.CharField(max_length=20, blank=True, null=True, verbose_name='Telefono - Celular')
  8.     email = models.EmailField(max_length=30, blank=True, null=True, verbose_name='Correo Electrónico')
  9.  
  10.     def __str__(self):
  11.         return name

El forms:

Código Python:
Ver original
  1. class PropietarioForm(forms.ModelForm):
  2.     class Meta:
  3.         model = Propietario

Y mi view son estos dos métodos principales:

Código Python:
Ver original
  1. @login_required
  2. def create_owner(request):
  3.     if request.method == 'POST':
  4.         form = PropietarioForm(request.POST)
  5.         if form.is_valid():
  6.             form.save()
  7.             return HttpResponseRedirect('/list_owner/')
  8.     else:
  9.         form = PropietarioForm()
  10.     c = RequestContext(request, {'form':form})
  11.     return render_to_response('add_owner.html', c)
  12.  
  13. @login_required
  14. def list_owner(request):
  15.     owners = Propietario.objects.filter(user = request.user.id).order_by('apto')
  16.     return render_to_response('owners.html', {'owners': owners})

Lo que yo quiero es que me pre-cague el valor de ese campo ManyToMany con el usuario que se encuentra logueado y pues ocultar el campo. Mi sistema de usuarios es django-registration.


Y mi otra pregunta se resume básicamente en este cógido que se pre-carga en el campo "apto" de la clase "Propietario":

Código Python:
Ver original
  1. aptos = (
  2.         ('', ''),
  3.         ('101', '101'),('102', '102'),('103', '103'),
  4.         ('104', '104'),('105', '105'),('106', '106'),
  5.  
  6.         ('201', '201'),('202', '202'),('203', '203'),
  7.         ('204', '204'),('205', '205'),('206', '206'),
  8.  
  9.         ('301', '301'),('302', '302'),('303', '303'),
  10.         ('304', '304'),('305', '305'),('306', '306'),
  11.        
  12.         ('401', '401'),('402', '402'),('403', '403'),
  13.         ('404', '404'),('405', '405'),('406', '406'),
  14.     )

La idea sería que cada usuario pueda crear el número de apartamentos que desee.


Espero que con éste código me puedas ayudar y de nuevo gracias!
  #13 (permalink)  
Antiguo 30/03/2012, 11:40
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Una app para varios usuarios

Ocultar el campo es algo que se hace desde HTML, así que no es necesario modificar el código Python. Para el valor predeterminado, acá tenés una respuesta a la pregunta: http://stackoverflow.com/questions/6...lt-form-values (en resumen: usa el parámetro "initial" del constructor del form)

En la segunda pregunta, pues supongo que la mejor forma es crear una tabla en la BBDD y obtener la lista de allí. Eso te permitirá pensar en cómo hacer para que sea modificable de mejor forma.


Saludos.
  #14 (permalink)  
Antiguo 30/03/2012, 20:10
Avatar de mag0220  
Fecha de Ingreso: octubre-2011
Ubicación: Manizales
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Una app para varios usuarios

Oye no se si me podrías dar un poco más de explicación con base en lo de obtener el usuario por favor. La verdad he intentado varios tipos de códigos y no he podido conseguir que me funcione.

Sólo quiero que el campo ManyToMany cargue pero con el usuario ya seleccionado logueado, para poder esconder el campo y se guarde con el usuario logueado.

Espero me podas ayudar y gracias!

Etiquetas: django, apps
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:47.