Skip to content

Commit

Permalink
Merge branch 'dev' into add_update_to_commit_response
Browse files Browse the repository at this point in the history
  • Loading branch information
wlorenzetti authored Dec 23, 2024
2 parents 371e4a0 + 4af4f36 commit 8c9a61d
Show file tree
Hide file tree
Showing 12 changed files with 225 additions and 56 deletions.
40 changes: 27 additions & 13 deletions g3w-admin/base/settings/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.gis',
#'django.contrib.sites',
'django.contrib.sites',
]

THIRD_PARTY_APPS = [
Expand All @@ -75,7 +75,13 @@
'about',
'django_bleach',
'django_registration',
'captcha'
'captcha',
"allauth",
"allauth.account",
"allauth.socialaccount",
"allauth.socialaccount.providers.microsoft",
"allauth.socialaccount.providers.google",
"allauth.usersessions"
]

G3WADMIN_APPS = [
Expand Down Expand Up @@ -104,6 +110,10 @@
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.contrib.sites.middleware.CurrentSiteMiddleware',
'qdjango.process_events_middleware.process_events_middleware',

# Allauth middleware
'allauth.account.middleware.AccountMiddleware',
'allauth.usersessions.middleware.UserSessionsMiddleware'
]


Expand All @@ -127,10 +137,6 @@
'loaders': [
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader'
#('django.template.loaders.cached.Loader', [
# 'django.template.loaders.filesystem.Loader',
# 'django.template.loaders.app_directories.Loader'
#]),
],
},
},
Expand All @@ -142,7 +148,6 @@
ATOMIC_REQUESTS = True

# Password validation
# https://docs.djangoproject.com/en/1.9/ref/settings/#auth-password-validators

AUTH_PASSWORD_VALIDATORS = [
{
Expand All @@ -162,6 +167,7 @@
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'guardian.backends.ObjectPermissionBackend',
'allauth.account.auth_backends.AuthenticationBackend'
)

GUARDIAN_RAISE_403 = True
Expand Down Expand Up @@ -241,8 +247,6 @@


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.9/howto/static-files/

STATIC_URL = '/static/'

SITE_TITLE = 'g3w-admin'
Expand All @@ -252,7 +256,7 @@
QDJANGO_PRJ_CACHE = True
QDJANGO_PRJ_CACHE_KEY = 'qdjango_prj_'

# data for proxy server
# Data for proxy server
PROXY_SERVER = False

# LOGGING_CONFIG = None
Expand Down Expand Up @@ -303,7 +307,6 @@

SITE_ID = 1


INTERNAL_IPS = [
'127.0.0.1',
]
Expand Down Expand Up @@ -344,7 +347,6 @@

# QPLOTLY DEFAULT SETTINGS
# ------------------------

LOAD_QPLOTLY_FROM_PROJECT = False

# VENDOR KEYS SETTINGS
Expand Down Expand Up @@ -387,4 +389,16 @@
# Settings for ReCaptcha v2. Default checkbox
RECAPTCHA_VERSION2_TYPE = 'checkbox' # or 'invisible'

SILENCED_SYSTEM_CHECKS = ['captcha.recaptcha_test_key_error']
SILENCED_SYSTEM_CHECKS = ['captcha.recaptcha_test_key_error']

# SOCIAL ACCOUNT LOGIN SETTINGS
# -----------------------------
SOCIALACCOUNT_LOGIN_ON_GET = True
SOCIALACCOUNT_ADAPTER = 'usersmanage.vendors.allauth.adapter.G3WSocialAccountAdapter'

# Activate/deactivate user login session tracking
USERSESSIONS_TRACK_ACTIVITY = False

SOCIALACCOUNT_ONLY = True
SOCIALACCOUNT_USER_ROLE = 'Viewer Level 1'
ACCOUNT_EMAIL_VERIFICATION = 'none'
4 changes: 4 additions & 0 deletions g3w-admin/base/settings/local_settings_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,3 +163,7 @@
'worker_type': 'process',
},
}

# For social login
# Activate/deactivate user login session tracking
USERSESSIONS_TRACK_ACTIVITY = False
3 changes: 3 additions & 0 deletions g3w-admin/base/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -168,8 +168,11 @@
),
name="django_registration_disallowed",
),
path('allauthg/', include('allauth.urls')),
]



#############################################################
# PASSWORD RESET (user password reset by email)
# USERNAME RECOVERY (username recovery by email)
Expand Down
25 changes: 20 additions & 5 deletions g3w-admin/core/utils/vector.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,15 @@ def get_domain(self):
else:
return '{}://{}'.format(schema, self.request.get_host())

def _new_path(self, file_name):
""" Build new path to save media file """

return reverse('user-media', kwargs={
'project_type': self.type,
'layer_id': self.layer.pk,
'file_name': file_name
})

def new_value(self, change=False):
""" Build and save media value from client """

Expand Down Expand Up @@ -162,11 +171,17 @@ def new_value(self, change=False):
# build new value

self.feature_properties[field] = '{}{}'.format(self.get_domain(),
reverse('user-media', kwargs={
'project_type': self.type,
'layer_id': self.layer.pk,
'file_name': file_name
}))
self._new_path(file_name))
else:
if is_media_view:

value = current_field_value
# Try to fix old record saved with temp_uploads path
if os.path.exists(path_file_to_save):
value = self._new_path(file_name)

# Restore to current_feature value
self.feature_properties[field] = value

if delete_old:
to_delete = '{}/{}'.format(path_to_save, current_file_name)
Expand Down
28 changes: 25 additions & 3 deletions g3w-admin/qplotly/utils/qplotly_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@
GeoConstraintsFilter,
)

from qgis.PyQt.QtCore import (
QDate,
QDateTime,
QTime
)


class QplotlyFactoring(PlotFactory):

Expand Down Expand Up @@ -92,6 +98,22 @@ def build_layout(self):

self.layout = self._build_layout()

def _pyqt2py(self, value):
"""
Check if the value is a PyQT object and translate it in native python object
"""

tp = type(value)
if tp in (QDate, QDateTime, QTime):
if tp == QDate:
value = value.toPyDate()
if tp == QDateTime:
value = value.toPyDateTime()
if tp == QTime:
value = value.toPyTime()

return value

def fetch_values_from_layer(self):
"""
(Re)fetches plot values from the source layer.
Expand Down Expand Up @@ -238,7 +260,7 @@ def add_source_field_or_expression(field_or_expression):
if x == NULL or x is None:
continue
elif self.settings.properties['x_name']:
x = f[self.settings.properties['x_name']]
x = self._pyqt2py(f[self.settings.properties['x_name']])
if x == NULL or x is None:
continue

Expand All @@ -248,7 +270,7 @@ def add_source_field_or_expression(field_or_expression):
if y == NULL or y is None:
continue
elif self.settings.properties['y_name']:
y = f[self.settings.properties['y_name']]
y = self._pyqt2py(f[self.settings.properties['y_name']])
if y == NULL or y is None:
continue

Expand All @@ -258,7 +280,7 @@ def add_source_field_or_expression(field_or_expression):
if z == NULL or z is None:
continue
elif self.settings.properties['z_name']:
z = f[self.settings.properties['z_name']]
z = self._pyqt2py(f[self.settings.properties['z_name']])
if z == NULL or z is None:
continue

Expand Down
72 changes: 39 additions & 33 deletions g3w-admin/templates/login.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{% extends "base_login.html" %}
{% load socialaccount %}
{% load static %}
{% load i18n %}

Expand All @@ -22,42 +23,47 @@ <h4><i class="icon fa fa-ban"></i> {% trans 'LOGIN ERROR' %}!</h4>
{% trans 'Username and/or password uncorrect' %}
</div>
{% endif %}
<form method="post">
{% csrf_token %}
<div class="form-group has-feedback">
<input type="text" class="form-control" name="username" placeholder="Username">
<span class="glyphicon glyphicon-user form-control-feedback"></span>
</div>
<div class="form-group has-feedback">
<input type="password" class="form-control" name="password" placeholder="Password">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
<div class="form-group recaptcha">{{ form.captcha }}</div>
<div class="row margin-bottom" >
<div class="col-xs-12">
<button type="submit" class="btn btn-primary btn-block btn-flat">{% trans 'Sign In' %}</button>
</div><!-- /.col -->
</div>
{% if SETTINGS.RESET_USER_PASSWORD %}
<div class="row">
<div class="col-xs-12">
<a href="{% url 'password_reset' %}">{% trans 'Forgot your password?' %}</a>
<form method="post">
{% csrf_token %}
<div class="form-group has-feedback">
<input type="text" class="form-control" name="username" placeholder="Username">
<span class="glyphicon glyphicon-user form-control-feedback"></span>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<a href="{% url 'username_recovery' %}">{% trans 'Forgot your username?' %}</a>
<div class="form-group has-feedback">
<input type="password" class="form-control" name="password" placeholder="Password">
<span class="glyphicon glyphicon-lock form-control-feedback"></span>
</div>
</div>
{% endif %}
{% if SETTINGS.REGISTRATION_OPEN %}
<div class="row">
<div class="col-xs-12">
<a href="{% url 'django_registration_register' %}">{% trans 'Sign up' %}</a>
<div class="form-group recaptcha">{{ form.captcha }}</div>
<div class="row margin-bottom" >
<div class="col-xs-12">
<button type="submit" class="btn btn-primary btn-block btn-flat">{% trans 'Sign In' %}</button>
</div><!-- /.col -->
</div>
</div>
{% endif %}
</form>

<div class="row">
{% include "socialaccount/provider_list.html" with process="login" %}
</div>

{% if SETTINGS.RESET_USER_PASSWORD %}
<div class="row">
<div class="col-xs-12">
<a class="btn btn-info btn-block btn-flat" href="{% url 'password_reset' %}">{% trans 'Forgot your password?' %}</a>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<a class="btn btn-info btn-block btn-flat margin-bottom-small" href="{% url 'username_recovery' %}">{% trans 'Forgot your username?' %}</a>
</div>
</div>
{% endif %}
{% if SETTINGS.REGISTRATION_OPEN %}
<div class="row">
<div class="col-xs-12">
<a class="btn btn-info btn-block btn-flat margin-bottom-small" href="{% url 'django_registration_register' %}">{% trans 'Sign up' %}</a>
</div>
</div>
{% endif %}
</form>
</div><!-- /.login-box-body -->
{% include 'include/login_page_version.html' %}
</div><!-- /.login-box -->
Expand Down
2 changes: 2 additions & 0 deletions g3w-admin/usersmanage/receivers.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,5 @@ def send_email_to_user(sender, **kwargs):
)

user.email_user(subject, message, settings.DEFAULT_FROM_EMAIL, fail_silently=True)


22 changes: 22 additions & 0 deletions g3w-admin/usersmanage/templates/socialaccount/provider_list.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{% load allauth socialaccount %}
{% load i18n %}
{% get_providers as socialaccount_providers %}
{% if socialaccount_providers %}
<div class="col-xs-12" style="text-align: center;">
<p>- {% trans 'OR' %} -</p>
</div>
{% for provider in socialaccount_providers %}
{% if provider.id == "openid" %}
{% for brand in provider.get_brands %}
{% provider_login_url provider openid=brand.openid_url process=process as href %}
{% element provider name=brand.name provider_id=provider.id href=href %}
{% endelement %}
{% endfor %}
{% endif %}
{% provider_login_url provider process=process scope=scope auth_params=auth_params as href %}
<div class="col-xs-12">
<a class="btn btn-default btn-block btn-flat" href="{{ href }}">{{ provider.name }}</a>
</div>
{% endfor %}
<div class="col-xs-12" style="margin-bottom: 20px;"></div>
{% endif %}
Empty file.
Empty file.
Loading

0 comments on commit 8c9a61d

Please sign in to comment.