Index: consulta_publica/settings.py
===================================================================
--- consulta_publica/settings.py	(revision be8d9179875eb0e2a87f6f6fbcc22e521eee281e)
+++ consulta_publica/settings.py	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -173,2 +173,4 @@
 ## Ruta de los archivos del pre-procesamiento
 PROCESAMIENTO_PATH = os.path.join(BASE_DIR, 'static/procesamiento_files')
+
+EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Index: users/forms.py
===================================================================
--- users/forms.py	(revision be8d9179875eb0e2a87f6f6fbcc22e521eee281e)
+++ users/forms.py	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -23,5 +23,5 @@
     PasswordInput, CheckboxInput
 )
-
+from django.contrib.auth.forms import PasswordResetForm, SetPasswordForm
 from base.fields import CedulaField
 from base.functions import (
@@ -274,2 +274,47 @@
         model = Perfil
         exclude = ['user','parroquia']
+        
+        
+class PasswordResetForm(PasswordResetForm):
+    """!
+    Clase del formulario de resetear contraseÃ±a
+
+    @author Ing. Leonel P. Hernandez M. (lhernandez at cenditel.gob.ve)
+    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versiÃ³n 2 (GPLv2)</a>
+    @date 02-05-2017
+    @version 1.0.0
+    """
+
+    def __init__(self, *args, **kwargs):
+        super(PasswordResetForm, self).__init__(*args, **kwargs)
+        self.fields['email'].widget.attrs.update({'class': 'form-control',
+                                                  'placeholder': 'Correo'})
+
+    def clean(self):
+        cleaned_data = super(PasswordResetForm, self).clean()
+        email = cleaned_data.get("email")
+
+        if email:
+            msg = "Error no existe el email"
+            try:
+                User.objects.get(email=email)
+            except:
+                self.add_error('email', msg)
+                
+                
+
+class PasswordConfirmForm(SetPasswordForm):
+    """!
+    Formulario para confirmar la constraseÃ±a
+
+    @author Rodrigo Boet (rboet at cenditel.gob.ve)
+    @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versiÃ³n 2 (GPLv2)</a>
+    @date 15-05-2017
+    @version 1.0.0
+    """
+    def __init__(self, *args, **kwargs):
+        super(PasswordConfirmForm, self).__init__(*args, **kwargs)
+        self.fields['new_password1'].widget.attrs.update({'class': 'form-control',
+                                                  'placeholder': 'ContraseÃ±a Nueva'})
+        self.fields['new_password2'].widget.attrs.update({'class': 'form-control',
+                                                  'placeholder': 'Repita su ContraseÃ±a'})
Index: users/templates/user.login.html
===================================================================
--- users/templates/user.login.html	(revision bf6bc0bcaa9356a07e6d3842a68e4deda2da874d)
+++ users/templates/user.login.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -24,5 +24,5 @@
           </div>
           <div class="row text-center">
-            <a href="#">Â¿Olvido su contraseÃ±a?</a>
+            <a href="{% url 'reset' %}">Â¿Olvido su contraseÃ±a?</a>
           </div>
           <div class="row">
Index: users/templates/user.passwordreset.confirm.html
===================================================================
--- users/templates/user.passwordreset.confirm.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
+++ users/templates/user.passwordreset.confirm.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -0,0 +1,46 @@
+{% extends 'consulta.base.html' %}
+{% load staticfiles %}
+{% block title %}Recuperar ContraseÃ±a{% endblock %}
+{% block contenido %}
+    <div class="row text-center">
+        <h1>Confirme su contraseÃ±a</h1><hr>
+        <form action="" method="post">
+            {% csrf_token %}
+            <ul>
+                <li class="text-left">Su contraseÃ±a no puede asemejarse tanto a su otra informaciÃ³n personal.</li>
+                <li class="text-left">Su contraseÃ±a debe contener por lo menos 8 caracteres.</li>
+                <li class="text-left">La contraseÃ±a no puede ser una contraseÃ±a de uso comÃºn.</li>
+                <li class="text-left">Su contraseÃ±a no puede ser completamente numÃ©rica.</li>
+            </ul><br>
+
+            <div class="col-md-12 col-sm-12 col-xs-12">
+                <div class="form-group {% if form.new_password1.errors %}has-error{% endif %}">
+                    <label class="col-md-3 col-xs-3 col-sm-3 control-label" for="{{ form.new_password1.auto_id }}">
+                        {{ form.new_password1.label }}
+                    </label>
+                    <div class="col-md-4 col-xs-4 col-sm-4">
+                        {{ form.new_password1 }}
+                        {% include 'base.forms.errors.html' with form_errors=form.new_password1.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %}
+                    </div>
+                    <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>
+                </div>
+            </div><br><br><br>
+          
+            <div class="col-md-12 col-sm-12 col-xs-12">
+                <div class="form-group {% if form.new_password2.errors %}has-error{% endif %}">
+                    <label class="col-md-3 col-xs-3 col-sm-3 control-label" for="{{ form.new_password2.auto_id }}">
+                        {{ form.new_password2.label }}
+                    </label>
+                    <div class="col-md-4 col-xs-4 col-sm-4">
+                        {{ form.new_password2 }}
+                        {% include 'base.forms.errors.html' with form_errors=form.new_password2.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %}
+                    </div>
+                    <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>
+                </div>
+            </div><br><br><br>
+            <div class="col-md-12 col-sm-12 col-xs-12">
+                <button type="submit" class="btn btn-success pull-center">Confirmar</button>
+            </div>
+        </form>
+    </div>
+{% endblock %}
Index: users/templates/user.passwordreset.done.html
===================================================================
--- users/templates/user.passwordreset.done.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
+++ users/templates/user.passwordreset.done.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -0,0 +1,12 @@
+{% extends 'consulta.base.html' %}
+{% load staticfiles %}
+{% block title %}Recuperar ContraseÃ±a{% endblock %}
+{% block contenido %}
+    <div class="row text-center">
+        <h1>InformaciÃ³n</h1><hr>
+        <p>
+            La informaciÃ³n para recuperar la <b>constraseÃ±a</b> fue enviada al <b>correo</b> suministrado.
+        </p>
+    </div>
+    <a type="button" class="btn btn-success" href="{% url 'inicio'%}">Regresar</a>
+{% endblock %}
Index: users/templates/user.passwordreset.end.html
===================================================================
--- users/templates/user.passwordreset.end.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
+++ users/templates/user.passwordreset.end.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -0,0 +1,12 @@
+{% extends 'consulta.base.html' %}
+{% load staticfiles %}
+{% block title %}Recuperar ContraseÃ±a{% endblock %}
+{% block contenido %}
+    <div class="row text-center">
+        <h1>Ãxito</h1><hr>
+        <p>
+            Su contraseÃ±a fue cambiada con Ã©xito
+        </p><br>
+    </div>
+    <a type="button" class="btn btn-success" href="{% url 'inicio'%}">Regresar</a>
+{% endblock %}
Index: users/templates/user.reset.html
===================================================================
--- users/templates/user.reset.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
+++ users/templates/user.reset.html	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -0,0 +1,27 @@
+{% extends 'consulta.base.html' %}
+{% load staticfiles %}
+{% block title %}Recuperar ContraseÃ±a{% endblock %}
+{% block contenido %}
+    <div class="row text-center">
+        <h1>Recuperar ContraseÃ±a</h1><hr>
+        <form action="{% url 'reset' %}" method="post">
+            {% csrf_token %}
+            <div class="col-md-12 col-sm-12 col-xs-12">
+                <div class="form-group {% if form.email.errors %}has-error{% endif %}">
+                    <label class="col-md-3 col-xs-3 col-sm-3 control-label" for="{{ form.email.auto_id }}">
+                        {{ form.email.label }}
+                    </label>
+                    <div class="col-md-4 col-xs-4 col-sm-4">
+                        {{ form.email }}
+                        {% include 'base.forms.errors.html' with form_errors=form.email.errors col_title_error='col-sm-2' col_msg_error='col-sm-10' %}
+                    </div>
+                    <div class="col-sm-1"><i class="ion ion-ios-medical item-requerido"></i></div>
+                </div>
+            </div><br><br><br>
+            <div class="col-md-12 col-sm-12 col-xs-12">
+                <button type="submit" class="btn btn-success pull-center">Enviar</button>
+            </div>
+        </form>
+    </div>
+
+{% endblock %}
Index: users/urls.py
===================================================================
--- users/urls.py	(revision be8d9179875eb0e2a87f6f6fbcc22e521eee281e)
+++ users/urls.py	(revision 5d13782fab8299bdee4d8413d8386f00d0721736)
@@ -14,4 +14,6 @@
 # @version 1.0
 from django.conf.urls import url
+from django.contrib.auth.views import *
+from .forms import PasswordResetForm, PasswordConfirmForm
 from .views import *
 
@@ -21,3 +23,17 @@
     url(r'^register$', RegisterView.as_view(), name = "register"),
     url(r'^update/(?P<pk>\d+)$', PerfilUpdate.as_view(), name = "update"),
+    url(r'^password/reset/$', password_reset,
+        {'post_reset_redirect': '/password/done/',
+         'template_name': 'user.reset.html', 'password_reset_form':PasswordResetForm}, name="reset"),
+    url(r'^password/done/$', password_reset_done,
+        {'template_name': 'user.passwordreset.done.html'},
+        name='reset_done'),
+    url(r'^password/reset/(?P<uidb64>[0-9A-Za-z]+)-(?P<token>.+)/$',
+        password_reset_confirm,
+        {'template_name': 'user.passwordreset.confirm.html', 'set_password_form':PasswordConfirmForm,
+         'post_reset_redirect': '/password/end/'},
+        name='password_reset_confirm'),
+    url(r'^password/end/$', password_reset_done,
+        {'template_name': 'user.passwordreset.end.html'},
+        name='reset_end'),
 ]
