diff --git a/.idea/.name b/.idea/.name old mode 100644 new mode 100755 diff --git a/.idea/encodings.xml b/.idea/encodings.xml old mode 100644 new mode 100755 diff --git a/.idea/gdt_project.iml b/.idea/gdt_project.iml old mode 100644 new mode 100755 index d1660dd..5442d7f --- a/.idea/gdt_project.iml +++ b/.idea/gdt_project.iml @@ -12,15 +12,10 @@ - + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml old mode 100644 new mode 100755 diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml old mode 100644 new mode 100755 diff --git a/.idea/misc.xml b/.idea/misc.xml old mode 100644 new mode 100755 diff --git a/.idea/modules.xml b/.idea/modules.xml old mode 100644 new mode 100755 diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml old mode 100644 new mode 100755 diff --git a/.idea/vcs.xml b/.idea/vcs.xml old mode 100644 new mode 100755 diff --git a/Proyecto/__init__.py b/Proyecto/__init__.py old mode 100644 new mode 100755 diff --git a/Proyecto/tests.py b/Proyecto/tests.py old mode 100644 new mode 100755 diff --git a/Proyecto/urls.py b/Proyecto/urls.py old mode 100644 new mode 100755 index c020779..6d8cb8b --- a/Proyecto/urls.py +++ b/Proyecto/urls.py @@ -15,14 +15,22 @@ url(r'^proyectos/crear/$', crear_proyecto), url(r'^proyectos/mod&id=(?P\d+)/$', mod_proyecto), url(r'^proyectos/del&id=(?P\d+)/$', del_proyecto), - url(r'^proyectos/flujos&id=(?P\d+)/$', admin_flujos), - + url(r'^flujos&id=(?P\d+)/$', admin_flujos), + url(r'^flujos&id=(?P\d+)/crear/$', crear_flujos), + url(r'^flujos&id=(?P\d+)/crear_actividades/$', crear_actividades), + url(r'^flujos&id=(?P\d+)/add_actividades&id=(?P\d+)$', add_actividades), + url(r'^flujos&id=(?P\d+)/ver_actividades&id=(?P\d+)$', ver_actividades), url(r'^proyectos/admin&id=(?P\d+)/$', administrar_proyecto), url(r'^proyectos/miembros&id=(?P\d+)/$', admin_usuarios_proyecto), url(r'^proyectos/miembros&id=(?P\d+)/nuevo/$', add_usuario_proyecto), url(r'^proyectos/miembros&id=(?P\d+)/cambiar&id=(?P\d+)/$', cambiar_rol_usuario_proyecto), url(r'^proyectos/miembros&id=(?P\d+)/del&id=(?P\d+)/$', eliminar_miembro_proyecto), + #USER STORIES + url(r'^userstories&id=(?P\d+)/$', admin_us), + url(r'^userstories&id=(?P\d+)/crear/$', crear_user_story), + #HISTORIAL + url(r'^userstories&id=(?P\d+)/historial&id=(?P\d+)/$',ver_historial), ) diff --git a/Proyecto/views.py b/Proyecto/views.py old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/app/forms.py b/app/forms.py index 895926c..33fda0c 100755 --- a/app/forms.py +++ b/app/forms.py @@ -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'] @@ -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): @@ -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) diff --git a/app/helper.py b/app/helper.py index bd63dbd..65b61be 100755 --- a/app/helper.py +++ b/app/helper.py @@ -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 = [] diff --git a/app/models.py b/app/models.py index 3e981d0..6f5a113 100755 --- a/app/models.py +++ b/app/models.py @@ -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): @@ -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): @@ -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): @@ -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) + + diff --git a/app/views.py b/app/views.py index a0fd71f..4886b65 100755 --- a/app/views.py +++ b/app/views.py @@ -26,11 +26,7 @@ @login_required @csrf_protect def principal(request): - """ -Muestra la pagina principal del sistema -:param request: -:return: -""" + """Muestra la pagina principal del sistema""" user = User.objects.get(username=request.user.username) #Validacion de permisos--------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -70,11 +66,7 @@ def principal(request): @login_required def add_user(request): - """ -Agrega un nuevo usuario en el sistema -:param request: -:return: -""" + """Agrega un nuevo usuario en el sistema.""" user = User.objects.get(username=request.user.username) #Validacion de permisos---------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -112,12 +104,7 @@ def add_user(request): @login_required def mod_user(request, usuario_id): - """ -Modifica los datos de un usuario y los actualiza en el sistema -:param request: -:param usuario_id: -:return: -""" + """Modifica los datos de un usuario y los actualiza en el sistema""" user = User.objects.get(username=request.user.username) #Validacion de permisos---------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -147,11 +134,7 @@ def mod_user(request, usuario_id): @login_required def cambiar_password(request): - """ -Cambia la contrasena del usuario logueado y lo direge a la pagina principal -:param request: -:return: -""" + """Cambia la contrasena del usuario logueado y lo direge a la pagina principal""" user = User.objects.get(username=request.user.username) if request.method == 'POST': form = CambiarPasswordForm(request.POST) @@ -165,12 +148,7 @@ def cambiar_password(request): @login_required def asignar_roles_sistema(request, usuario_id): - """ -Asigna roles de sistema a un usuario -:param request: -:param usuario_id: -:return: -""" + """Asigna roles de sistema a un usuario""" user = User.objects.get(username=request.user.username) permisos = get_permisos_sistema(user) usuario = get_object_or_404(User, id=usuario_id) @@ -215,13 +193,7 @@ def asignar_roles_sistema(request, usuario_id): @login_required def borrar_usuario(request, usuario_id): - """ -Borra un usuario, comprobando las dependencias primero -:param request: -:param usuario_id: -:return: -""" - + """Borra un usuario, comprobando las dependencias primero""" user = User.objects.get(username=request.user.username) #Validacion de permisos---------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -250,11 +222,7 @@ def borrar_usuario(request, usuario_id): @login_required def admin_usuarios(request): - """ -Administracion general de usuarios -:param request: -:return: -""" + """Administracion general de usuarios""" '''Ya esta la validacion de permisos en este''' user = User.objects.get(username=request.user.username) permisos = get_permisos_sistema(user) @@ -311,11 +279,7 @@ def admin_usuarios(request): @login_required def admin_roles(request): - """ -Administracion general de roles -:param request: -:return: -""" + """Administracion general de roles""" user = User.objects.get(username=request.user.username) permisos = get_permisos_sistema(user) return render_to_response('admin/roles/roles.html',{'user':user, @@ -325,12 +289,7 @@ def admin_roles(request): 'eliminar_rol': 'Eliminar rol' in permisos},context_instance=RequestContext(request)) @login_required def admin_roles_sist(request): - """ -Administracion general de roles -:param request: -:return: -""" - + """Administracion general de roles""" user = User.objects.get(username=request.user.username) permisos = get_permisos_sistema(user) lista = Rol.objects.filter(categoria=1).order_by('id') @@ -379,11 +338,7 @@ def admin_roles_sist(request): @login_required def admin_roles_proy(request): - """ -Administracion general de roles -:param request: -:return: -""" + """Administracion general de roles""" user = User.objects.get(username=request.user.username) permisos = get_permisos_sistema(user) lista = Rol.objects.filter(categoria=2).order_by('id') @@ -434,11 +389,7 @@ def admin_roles_proy(request): @login_required def crear_rol(request): - """ -Agrega un nuevo rol -:param request: -:return: -""" + """Agrega un nuevo rol""" user = User.objects.get(username=request.user.username) #Validacion de permisos--------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -471,12 +422,7 @@ def crear_rol(request): @login_required def admin_permisos(request, rol_id): - """ -Administración de permisos -:param request: -:param rol_id: -:return: -""" + """Administración de permisos""" user = User.objects.get(username=request.user.username) #Validacion de permisos--------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -556,12 +502,7 @@ def admin_permisos(request, rol_id): def mod_rol(request, rol_id): - """ -Modificar roles -:param request: -:param rol_id: -:return: -""" + """Modificar roles""" user = User.objects.get(username=request.user.username) #Validacion de permisos--------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -596,12 +537,7 @@ def mod_rol(request, rol_id): @login_required def borrar_rol(request, rol_id): - """ -Borra un rol con las comprobaciones de consistencia -:param request: -:param rol_id: -:return: -""" + """Borra un rol con las comprobaciones de consistencia""" user = User.objects.get(username=request.user.username) #Validacion de permisos--------------------------------------------- roles = UsuarioRolSistema.objects.filter(usuario = user).only('rol') @@ -664,4 +600,4 @@ def logout_pagina(request): def index_view(request): - return render_to_response('index.html', context_instance=RequestContext(request)) + return render_to_response('index.html', context_instance=RequestContext(request)) \ No newline at end of file diff --git a/gdt_project/settings.py b/gdt_project/settings.py index b1fc139..1daf9bc 100755 --- a/gdt_project/settings.py +++ b/gdt_project/settings.py @@ -4,12 +4,16 @@ BASE_DIR = os.path.dirname(os.path.dirname(__file__)) DEBUG = True TEMPLATE_DEBUG = DEBUG +from unipath import Path + +RUTA_PROYECTO= Path(__file__).ancestor(2) -ADMINS = ( - # ('Your Name', 'your_email@domain.com'), -) +PATH=RUTA_PROYECTO + +ALLOWED_HOSTS = [] + +WSGI_APPLICATION = 'gdt_project.wsgi.application' -MANAGERS = ADMINS DATABASES = { 'default': { @@ -21,7 +25,7 @@ 'PORT': '5432', } } - +STATIC_URL = '/static/' # Local time zone for this installation. Choices can be found here: # http://en.wikipedia.org/wiki/List_of_tz_zones_by_name # although not all choices may be available on all operating systems. @@ -41,12 +45,12 @@ # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" -MEDIA_ROOT = os.path.abspath('site_media') +MEDIA_ROOT = RUTA_PROYECTO.child('site_media'), # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash if there is a path component (optional in other cases). # Examples: "http://media.lawrence.com", "http://example.com/media/" -MEDIA_URL = '' +MEDIA_URL = '/site_media/' # URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a # trailing slash. @@ -56,14 +60,6 @@ # Make this unique, and don't share it with anybody. SECRET_KEY = 'n#cb07^_%crknkp&+1=z1(wrn^r_@o329cqe^end+a-)0(h4k=' -# List of callables that know how to import templates from various sources. -TEMPLATE_LOADERS = ( - - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - -) - MIDDLEWARE_CLASSES = ( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', @@ -73,27 +69,16 @@ 'django.middleware.clickjacking.XFrameOptionsMiddleware', ) -STATIC_URL = '/static/' -STATICFILES_DIRS = ( - # Put strings here, like "/home/html/static" or "C:/www/django/static". - # Always use forward slashes, even on Windows. - # Don't forget to use absolute paths, not relative paths. - os.path.join(BASE_DIR,'static'), -) -STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - ) + + ROOT_URLCONF = 'gdt_project.urls' -TEMPLATE_DIRS = ( - os.path.abspath('templates'), - # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". - # Always use forward slashes, even on Windows. - # Don't forget to use absolute paths, not relative paths. +TEMPLATE_DIRS= ( + RUTA_PROYECTO.child('templates'), ) + INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', diff --git a/gdt_project/wsgi.py b/gdt_project/wsgi.py index b023436..4f28a0b 100755 --- a/gdt_project/wsgi.py +++ b/gdt_project/wsgi.py @@ -1,27 +1,21 @@ """ -WSGI config for saip project. - +WSGI config for gdt_project. + It exposes the WSGI callable as a module-level variable named ``application``. - + For more information on this file, see https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/ """ - -#import os -#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "gdt_project.settings") - -#from django.core.wsgi import get_wsgi_application -#application = get_wsgi_application() - -# -.- coding: utf-8 -.- -import os, sys -from app import settings +import os# -.- coding: utf-8 -.- +import os, sys +from gdt_project import settings path = settings.PATH if path not in sys.path: sys.path.append(path) -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings") +os.environ.setdefault("DJANGO_SETTINGS_MODULE", "gdt_project.settings") from django.core.wsgi import get_wsgi_application -_application = get_wsgi_application() +application = get_wsgi_application() +# -.- coding: utf-8 -.- diff --git a/site_media/images/construccion.png b/site_media/images/construccion.png new file mode 100755 index 0000000..a6022bc Binary files /dev/null and b/site_media/images/construccion.png differ diff --git a/site_media/images/image.png b/site_media/images/image.png new file mode 100755 index 0000000..544d9c8 Binary files /dev/null and b/site_media/images/image.png differ diff --git a/site_media/images/imagen.png b/site_media/images/imagen.png deleted file mode 100755 index be61142..0000000 Binary files a/site_media/images/imagen.png and /dev/null differ diff --git a/site_media/images/principal.jpg b/site_media/images/principal.jpg new file mode 100755 index 0000000..4b00dc0 Binary files /dev/null and b/site_media/images/principal.jpg differ diff --git a/templates/admin/proyectos/abm_proyecto.html b/templates/admin/proyectos/abm_proyecto.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/add_miembro.html b/templates/admin/proyectos/add_miembro.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/admin_miembros.html b/templates/admin/proyectos/admin_miembros.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/asignar_roles.html b/templates/admin/proyectos/asignar_roles.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/cambiar_usuario_rol.html b/templates/admin/proyectos/cambiar_usuario_rol.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/crear_proyecto.html b/templates/admin/proyectos/crear_proyecto.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/eliminar_miembro.html b/templates/admin/proyectos/eliminar_miembro.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/mod_proyecto.html b/templates/admin/proyectos/mod_proyecto.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/proyecto_confirm_delete.html b/templates/admin/proyectos/proyecto_confirm_delete.html old mode 100644 new mode 100755 diff --git a/templates/admin/proyectos/proyectos.html b/templates/admin/proyectos/proyectos.html old mode 100644 new mode 100755 index ff815d9..bcaa99b --- a/templates/admin/proyectos/proyectos.html +++ b/templates/admin/proyectos/proyectos.html @@ -35,7 +35,7 @@ padding-top: 15px; padding-bottom: 15px; /* padding-left: 40px; */ - display: block; + display: block; padding: 8px 15px; font-size: 18px; font-weight: bold; @@ -104,7 +104,8 @@ NOMBRE SCRUM MASTER - DESCRIPCIÓN + PRODUCT OWNER + DESCRIPCIÓN FECHA DE INICIO @@ -117,12 +118,14 @@ {{i.nombre}} {% endif %} {{i.usuario_scrum}} + {{i.product_owner}} {{i.descripcion}} {{i.fecha_inicio}} {% if eliminar_proyecto %} - ELIMINAR + ELIMINAR {% endif %} @@ -144,4 +147,4 @@ {% endif %}

-{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/templates/main_page.html b/templates/main_page.html index a15ef96..51c6acd 100755 --- a/templates/main_page.html +++ b/templates/main_page.html @@ -3,43 +3,115 @@ {% block content %} {% if user.username %} -

SISTEMA GDT

+ + + + + +

PROYECTO GDT

Bienvenido, {{ user.username }}

ADMINISTRACIÓN DEL SISTEMA

-



+ {% if roles or user or proyectos or tipo_item %} -
-

    - {% if user %} - +
    +
    +

    + +
+
+
+ +
+ + {% endif %} {% else %}

Bienvenido, visitante

Puedes iniciar sesion AQUI

{% endif %} -{% endblock %} - +{% endblock %} \ No newline at end of file