diff --git a/.env_sample b/.env_sample
deleted file mode 100644
index 80e84b6..0000000
--- a/.env_sample
+++ /dev/null
@@ -1,11 +0,0 @@
-# Docker
-COMPOSE_PROJECT_NAME=dvs
-
-# SERVER CONFIG
-ALLOWED_HOSTS=['*']
-
-# DATABASE CONFIG
-DATABASE_NAME=postgres
-DATABASE_HOST=172.22.0.2
-DATABASE_USER=postgres
-DATABASE_PORT=5432
diff --git a/dashboard/templates/change_password.html b/dashboard/templates/change_password.html
new file mode 100644
index 0000000..72b9132
--- /dev/null
+++ b/dashboard/templates/change_password.html
@@ -0,0 +1,90 @@
+
+{% extends 'base.html' %}
+{% load static %}
+{% block content %}
+
+
+
+
+
+
+
+{% endblock %}
+
diff --git a/dashboard/templates/user_list.html b/dashboard/templates/user_list.html
index ade79e9..5de36b0 100644
--- a/dashboard/templates/user_list.html
+++ b/dashboard/templates/user_list.html
@@ -28,6 +28,7 @@
Id |
Name |
Email |
+ Change Password |
User Status |
role |
Partner |
@@ -52,6 +53,7 @@ {{user.name}}
{{ user.email }} |
+ |
diff --git a/dashboard/urls.py b/dashboard/urls.py
index 64b6cbb..2d0f034 100644
--- a/dashboard/urls.py
+++ b/dashboard/urls.py
@@ -81,6 +81,7 @@
path('palika-list/', views.PalikaList.as_view(), name='palika-list'),
path('palika-add/', views.PalilkaCreate.as_view(), name='palika-add'),
path('palika-delete/', views.PalikaDelete.as_view(), name='palika-delete'),
+ path('palika-edit/', views.PalikaUpdate.as_view(), name='palika-update'),
path('user-list/', views.UserList.as_view(), name='user-list'),
path('activate/', views.activate_user, name='activate'),
@@ -129,4 +130,8 @@
path('gis_style_layer_add/', views.StyleCreate.as_view(), name='style-create'),
path('gis_style_layer_edit/', views.StyleUpdate.as_view(), name='style-update'),
+ path('changepassword', views.change_password, name='change_password'),
+
+
+
]
diff --git a/dashboard/views.py b/dashboard/views.py
index c8d2261..e4a912d 100755
--- a/dashboard/views.py
+++ b/dashboard/views.py
@@ -1,6 +1,8 @@
from django.shortcuts import render, redirect
import pandas as pd
from django.http import HttpResponse, HttpResponseRedirect
+from django.contrib.auth import update_session_auth_hash
+from django.contrib.auth.forms import PasswordChangeForm
import requests
from django.template.loader import render_to_string
from django.core.mail import EmailMessage
@@ -1357,6 +1359,32 @@ def form_valid(self, form):
log = Log.objects.create(user=user_data, message=message, type="create")
return HttpResponseRedirect(self.get_success_url())
+class PalikaUpdate(SuccessMessageMixin, LoginRequiredMixin, UpdateView):
+ model = GapaNapa
+ template_name = 'palika_edit.html'
+ form_class = PalikaCreateForm
+ success_message = 'Palika successfully Updated'
+
+ def get_context_data(self, **kwargs):
+ data = super(PalikaUpdate, self).get_context_data(**kwargs)
+ user = self.request.user
+ user_data = UserProfile.objects.get(user=user)
+ data['user'] = user_data
+ data['province'] = Province.objects.values('id', 'name').order_by('id')
+ data['district'] = District.objects.values('id', 'name').order_by('id')
+ data['active'] = 'location'
+ return data
+
+ def get_success_url(self):
+ return reverse_lazy('palika-list')
+
+ def form_valid(self, form):
+ user_data = UserProfile.objects.get(user=self.request.user)
+ self.object = form.save()
+ message = "Municipality " + self.object.name + " has been updated by " + self.request.user.username
+ log = Log.objects.create(user=user_data, message=message, type="create")
+ return HttpResponseRedirect(self.get_success_url())
+
class MarkerValueCreate(SuccessMessageMixin, LoginRequiredMixin, CreateView):
model = MarkerValues
@@ -2464,3 +2492,22 @@ def get_context_data(self, **kwargs):
def get_success_url(self):
id_gis = GisStyle.objects.get(id=self.kwargs['pk'])
return "/dashboard/gis_style_layer_list/" + str(id_gis.layer.id)
+
+
+
+def change_password(request):
+ if request.method == 'POST':
+ form = PasswordChangeForm(request.user, request.POST)
+ if form.is_valid():
+ user = form.save()
+ update_session_auth_hash(request, user) # Important!
+ messages.success(request, 'Your password was successfully updated!')
+ return redirect('user-list')
+ else:
+ messages.error(request, 'Please correct the error below.')
+ else:
+ password = request.user.password
+ form = PasswordChangeForm(request.user)
+ return render(request, 'change_password.html', {
+ 'form': form
+ })
diff --git a/dvs/local_setting_sample.py b/dvs/local_setting_sample.py
deleted file mode 100644
index 314cf12..0000000
--- a/dvs/local_setting_sample.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# Sample For Local Setting chane it as your system requirement
-# DATABASES = {
-# 'default': {
-# 'ENGINE': 'django.contrib.gis.db.backends.postgis',
-# 'NAME': 'postgres',
-# 'USER': 'postgres',
-# "PASSWORD":'',
-# 'HOST': '172.22.0.2',
-# 'PORT': '5432'
-# }
-# }
diff --git a/dvs/settings.py b/dvs/settings.py
index 1b2da82..0a5fffa 100755
--- a/dvs/settings.py
+++ b/dvs/settings.py
@@ -14,6 +14,8 @@
import sentry_sdk
from sentry_sdk.integrations.django import DjangoIntegration
+from .settings import *
+#import socket
sentry_sdk.init(
dsn="https://08fc1960dbf14408a4fbff958a86494e@sentry.io/1524106",
@@ -92,17 +94,20 @@
# Database
# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
+
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'NAME': 'postgres',
'USER': 'postgres',
"PASSWORD": '',
- 'HOST': 'localhost',
+ 'HOST': 'db',
'PORT': '5432'
}
}
+DEBUG = True
+
# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
@@ -165,6 +170,36 @@
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.2/howto/static-files/
+
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
+EMAIL_USE_TLS = True
+EMAIL_HOST = 'smtp.gmail.com'
+EMAIL_HOST_USER = 'noreply.dfid@gmail.com'
+EMAIL_HOST_PASSWORD = 'UW9boQYFZiiM3NsKIuKD'
+EMAIL_PORT = 587
+
+LOGIN_URL = '/dashboard/login/'
+LOGIN_REDIRECT_URL = '/dashboard/main/'
+LOGOUT_REDIRECT_URL = '/dashboard/login/'
+SITE_URL = 'http://localhost:8000/'
+
+# MIDDLEWARE += [
+# 'debug_toolbar.middleware.DebugToolbarMiddleware',
+# ]
+#
+# INSTALLED_APPS += [
+# 'debug_toolbar',
+#
+# ]
+
+CORS_ORIGIN_ALLOW_ALL = True
+# CORS_ORIGIN_WHITELIST = [
+# "http://localhost:8001",
+# ]
+
+# hostname, _, ips = socket.gethostbyname_ex(socket.gethostname())
+# INTERNAL_IPS = [ip[:-1] + '1' for ip in ips] + ['127.0.0.1', '10.0.2.2']
+
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|