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 %} +
+ +
+ +
+ +
+ + {% csrf_token %} + + {% if form.errors %} + {% for field in form %} + {% for error in field.errors %} +
+ {{ field.name|title }} {{ error|escape }} +
+ {% endfor %} + {% endfor %} + {% for error in form.non_field_errors %} +
+ {{ error|escape }} +
+ {% endfor %} + {% endif %} + + +
+ + +
+
+
+ + + +
+
+
+ +
+
+ + +
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+ + +
+ +
+ +
+ + + + + +
+
+ +{% 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')