Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
Conflicts:
	app/views.py
  • Loading branch information
didita91 committed Apr 25, 2015
2 parents 8fae7ed + a1cc669 commit 6a8eeac
Show file tree
Hide file tree
Showing 35 changed files with 303 additions and 173 deletions.
Empty file modified .idea/.name
100644 → 100755
Empty file.
Empty file modified .idea/encodings.xml
100644 → 100755
Empty file.
7 changes: 1 addition & 6 deletions .idea/gdt_project.iml
100644 → 100755

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Empty file modified .idea/inspectionProfiles/Project_Default.xml
100644 → 100755
Empty file.
Empty file modified .idea/inspectionProfiles/profiles_settings.xml
100644 → 100755
Empty file.
Empty file modified .idea/misc.xml
100644 → 100755
Empty file.
Empty file modified .idea/modules.xml
100644 → 100755
Empty file.
Empty file modified .idea/scopes/scope_settings.xml
100644 → 100755
Empty file.
Empty file modified .idea/vcs.xml
100644 → 100755
Empty file.
Empty file modified Proyecto/__init__.py
100644 → 100755
Empty file.
Empty file modified Proyecto/tests.py
100644 → 100755
Empty file.
12 changes: 10 additions & 2 deletions Proyecto/urls.py
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,22 @@
url(r'^proyectos/crear/$', crear_proyecto),
url(r'^proyectos/mod&id=(?P<proyecto_id>\d+)/$', mod_proyecto),
url(r'^proyectos/del&id=(?P<proyecto_id>\d+)/$', del_proyecto),
url(r'^proyectos/flujos&id=(?P<proyecto_id>\d+)/$', admin_flujos),

url(r'^flujos&id=(?P<proyecto_id>\d+)/$', admin_flujos),
url(r'^flujos&id=(?P<proyecto_id>\d+)/crear/$', crear_flujos),
url(r'^flujos&id=(?P<proyecto_id>\d+)/crear_actividades/$', crear_actividades),
url(r'^flujos&id=(?P<proyecto_id>\d+)/add_actividades&id=(?P<flujo_id>\d+)$', add_actividades),
url(r'^flujos&id=(?P<proyecto_id>\d+)/ver_actividades&id=(?P<flujo_id>\d+)$', ver_actividades),
url(r'^proyectos/admin&id=(?P<proyecto_id>\d+)/$', administrar_proyecto),
url(r'^proyectos/miembros&id=(?P<proyecto_id>\d+)/$', admin_usuarios_proyecto),
url(r'^proyectos/miembros&id=(?P<proyecto_id>\d+)/nuevo/$', add_usuario_proyecto),
url(r'^proyectos/miembros&id=(?P<proyecto_id>\d+)/cambiar&id=(?P<user_id>\d+)/$', cambiar_rol_usuario_proyecto),
url(r'^proyectos/miembros&id=(?P<proyecto_id>\d+)/del&id=(?P<user_id>\d+)/$', eliminar_miembro_proyecto),
#USER STORIES
url(r'^userstories&id=(?P<proyecto_id>\d+)/$', admin_us),
url(r'^userstories&id=(?P<proyecto_id>\d+)/crear/$', crear_user_story),

#HISTORIAL
url(r'^userstories&id=(?P<proyecto_id>\d+)/historial&id=(?P<us_id>\d+)/$',ver_historial),

)

Empty file modified Proyecto/views.py
100644 → 100755
Empty file.
Empty file modified README.md
100644 → 100755
Empty file.
71 changes: 63 additions & 8 deletions app/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,17 +116,15 @@ class FilterForm2(forms.Form):
class ProyectosForm(forms.Form):
"""Formulario para la creacion de proyectos."""
nombre = forms.CharField(max_length=50, label='NOMBRE')
usuario_scrum = forms.ModelChoiceField(queryset=None, label='SCRUM')
usuario_scrum = forms.ModelChoiceField(queryset=None, label='SCRUM MASTER')
product_owner = forms.ModelChoiceField(queryset=None, label='PRODUCT OWNER')
descripcion = forms.CharField(widget=forms.Textarea(), required=False, label='DESCRIPCIÓN')
fecha_inicio = forms.DateField(required=False, label='FECHA DE INICIO')
#fecha_fin = forms.DateField(required=False, label='FECHA DE FINAIZACIÓN')
#cronograma = forms.FileField(required=False, label='CRONOGRAMA')
#cantidad = forms.IntegerField(required=False, label='CANTIDAD')
#cant_actual = forms.IntegerField(required=False, label='Actual')
def __init__(self, *args, **kwargs):
sprint = forms.IntegerField(max_length=2)
def __init__(self,*args, **kwargs):
super(ProyectosForm, self).__init__(*args, **kwargs)
self.fields['usuario_scrum'].queryset = RolUsuario.objects.filter()

self.fields['product_owner'].queryset = ProductOwner.objects.filter()
def clean_nombre(self):
if 'nombre' in self.cleaned_data:
nuevo = self.cleaned_data['nombre']
Expand All @@ -145,7 +143,7 @@ class UsuarioProyectoForm(forms.Form):

def __init__(self, proyecto, *args, **kwargs):
super(UsuarioProyectoForm, self).__init__(*args, **kwargs)
self.fields['usuario'].queryset = User.objects.filter(~Q(id = proyecto.usuario_scrum.id))
self.fields['usuario'].queryset = User.objects.filter(~Q(id = proyecto.usuario_scrum.usuario.id))


def clean_usuario(self):
Expand Down Expand Up @@ -177,3 +175,60 @@ def clean_nombre(self):
if proyecto.nombre == nuevo:
raise forms.ValidationError('Ya existe ese nombre. Elija otro')
return nuevo

class FlujosForm(forms.Form):
"""Formulario para la creacion de proyectos."""
nombre = forms.CharField(max_length=50, label='NOMBRE')


def clean_nombre(self):
if 'nombre' in self.cleaned_data:
nuevo = self.cleaned_data['nombre']
flujos = Flujo.objects.all()
nuevo = self.cleaned_data['nombre']
for flujo in flujos:
if flujo.nombre == nuevo:
raise forms.ValidationError('Ya existe ese nombre. Elija otro')
return nuevo

class ActividadesForm(forms.Form):
"""Formulario para la creacion de proyectos."""
nombre = forms.CharField(max_length=50, label='NOMBRE')


def clean_nombre(self):
if 'nombre' in self.cleaned_data:
nuevo = self.cleaned_data['nombre']
acti = Actividades.objects.all()
nuevo = self.cleaned_data['nombre']
for activ in acti:
if activ.nombre == nuevo:
raise forms.ValidationError('Ya existe ese nombre. Elija otro')
return nuevo

class AddActividadesForm(forms.Form):
#Asignar roles
actividades = forms.ModelMultipleChoiceField(queryset = None, label = 'ACTIVIDADES DISPONIBLES', required=False)
def __init__(self, proyecto, *args, **kwargs):
super(AddActividadesForm, self).__init__(*args, **kwargs)
self.fields['actividades'].queryset = Actividades.objects.filter(proyecto=proyecto)
#**********************USER STORY
class UserStoryForm(forms.Form):
nombre = forms.CharField(max_length=50)
usuario = forms.ModelChoiceField(queryset=None, label='Asignar a ')
prioridad = forms.IntegerField()
#valor_negocio=models.IntegerField(max_length=2) #del 1 al 10 donde 10 es de mas valor que 1
#valor_tecnico=models.IntegerField(max_length=2) #del 1 al 10 donde 10 es de mas valor que 1
duracion= forms.IntegerField() #Duracion estimativa en dias de la historia de usuario
descripcion= forms.CharField(widget=forms.Textarea(), required=False, label='Descripcion')
#adjuntos = forms
def __init__(self,proyecto,*args, **kwargs):
super(UserStoryForm, self).__init__(*args, **kwargs)
self.fields['usuario'].queryset = UsuarioRolProyecto.objects.filter(Q(proyecto=proyecto))

# self.fields['usuario'].queryset = UsuarioRolProyecto.objects.filter(Q(proyecto=proyecto))


#************
class AdjuntoForm(forms.Form):
archivo = forms.FileField(required = False)
2 changes: 1 addition & 1 deletion app/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def get_permisos_sistema(user):
def get_permisos_proyecto(user, proyecto):
roles = UsuarioRolProyecto.objects.filter(usuario = user, proyecto = proyecto)
permisos_obj = []
print roles
# print roles
#for i in roles:
# permisos_obj.extend(i.rol.permisos.all())
permisos = []
Expand Down
84 changes: 83 additions & 1 deletion app/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,20 @@
('2', 'Rol de Proyecto'),

)
""" Estados de Actividades """
status_activity = (
('1', 'To Do'),
('2', 'Doing'),
('', 'Done'),
)

"""Estados de los UserStories"""
STATUS_CHOICES = (
('1', 'Pendiente'),
('2', 'Modificado'),
('3', 'Aprobado'),
('4', 'Inactivo')
)

class Permiso(models.Model):

Expand Down Expand Up @@ -73,7 +86,10 @@ class RolUsuario(models.Model):
usuario =models.ForeignKey(User)
def __unicode__(self):
return self.usuario.username

class ProductOwner(models.Model):
usuario =models.ForeignKey(User)
def __unicode__(self):
return self.usuario.username


class Proyecto(models.Model):
Expand All @@ -82,8 +98,10 @@ class Proyecto(models.Model):
"""
nombre = models.CharField(unique=True, max_length=50)
usuario_scrum = models.ForeignKey(RolUsuario)
product_owner = models.ForeignKey(ProductOwner)
descripcion = models.TextField(null=True, blank= True)
fecha_inicio = models.DateField(auto_now=False, auto_now_add=False, null=True, blank=True)
sprint = models.IntegerField(max_length=2)
def __unicode__(self):
return self.nombre
class UsuarioRolProyecto(models.Model):
Expand All @@ -96,3 +114,67 @@ class UsuarioRolProyecto(models.Model):

class Meta:
unique_together = [("usuario", "rol", "proyecto")]
def __unicode__(self):
return self.usuario

class Flujo(models.Model):

nombre = models.CharField(unique=True, max_length=50)
proyecto = models.ForeignKey(Proyecto)
def __unicode__(self):
return self.nombre

class Actividades(models.Model):

nombre = models.CharField(unique=True, max_length=50)
estado = models.IntegerField(max_length=1, default=1)
proyecto = models.ForeignKey(Proyecto)
def __unicode__(self):
return self.nombre

class ActividadesFlujo(models.Model):
actividades = models.ForeignKey(Actividades, null=True)
flujo = models.ForeignKey(Flujo)
proyecto = models.ForeignKey(Proyecto)
class Meta:
unique_together = [("actividades", "flujo","proyecto")]

#***************************************USER STORY**********************************************
class UserStory(models.Model):
nombre = models.CharField( max_length=50)
usuario = models.ForeignKey(User)
estado = models.IntegerField(max_length=1, choices=STATUS_CHOICES, default=1)
version = models.PositiveIntegerField()
prioridad = models.IntegerField(max_length=3) #del 1 al 100 donde 1 es mas prioritario
habilitado = models.BooleanField(default=True)
#valor_negocio=models.IntegerField(max_length=2) #del 1 al 10 donde 10 es de mas valor que 1
#valor_tecnico=models.IntegerField(max_length=2) #del 1 al 10 donde 10 es de mas valor que 1
duracion=models.IntegerField(max_length=2) #Duracion estimativa en dias de la historia de usuario
descripcion = models.TextField(null=True, blank= True)
#adjuntos = models.TextField(null=True,blank=True)
#acumulador_horas= models.IntegerField(max_length=50)
#claves foraneas
proyecto = models.ForeignKey(Proyecto) #Proyecto al cual pertenece
#flujo = models.ForeignKey(Flujo)#flujo asigando
#Sprint = models.ForeignKey(Sprint)#nro de sprint en el que se encuentra la historia
def __unicode__(self):
return self.nombre
#***********************
class Historial(models.Model):
"""Clase que representa el historial de los user stories"""
usuario = models.ForeignKey(User)
fecha_creacion = models.DateField(auto_now =False, auto_now_add=True, editable=False)
#claves foraneas
user_story = models.OneToOneField(UserStory, parent_link=False)

class RegistroHistorial(models.Model):
"""Clase que representa el Registro de versiones de los user stories"""
version = models.PositiveIntegerField()
prioridad = models.IntegerField()
descripcion = models.TextField(null=True, blank=True)
habilitado = models.BooleanField()
fecha_modificacion = models.DateTimeField(auto_now=True, auto_now_add=False, editable=False)
#claves foraneas
historial = models.ForeignKey(Historial)


Loading

0 comments on commit 6a8eeac

Please sign in to comment.