Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
Poppins
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Patricio Kumagae
Poppins
Commits
376c9b57
Commit
376c9b57
authored
6 years ago
by
Patricio Kumagae
Browse files
Options
Downloads
Patches
Plain Diff
Actualización desde gitlab.bora.local
parent
7e2ec9d2
No related branches found
No related tags found
No related merge requests found
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
Dockerfile
+1
-1
1 addition, 1 deletion
Dockerfile
Poppins/settings.py
+17
-3
17 additions, 3 deletions
Poppins/settings.py
frontend/views.py
+38
-29
38 additions, 29 deletions
frontend/views.py
with
56 additions
and
33 deletions
Dockerfile
+
1
−
1
View file @
376c9b57
FROM
python:3.5
FROM
python:3.5
.2
RUN
apt-get update
&&
apt-get
install
-y
--no-install-recommends
apt-utils
RUN
apt-get update
&&
apt-get
-y
upgrade
&&
apt-get
install
-y
apt-transport-https software-properties-common libsasl2-dev python-dev libldap2-dev libssl-dev unixodbc unixodbc-dev freetds-dev freetds-bin tdsodbc memcached
RUN
apt-get
install
-y
gettext
...
...
This diff is collapsed.
Click to expand it.
Poppins/settings.py
+
17
−
3
View file @
376c9b57
# -*- coding: utf-8 -*-
"""
Copyright 2019 de la Dirección General de Sistemas Informáticos – Secretaría Legal y Técnica - Nación.
...
...
@@ -7,6 +8,8 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/
"""
import
sys
"""
Django settings for Poppins project.
...
...
@@ -148,7 +151,7 @@ STATIC_URL = '/static/'
ACCOUNT_ACTIVATION_DAYS
=
7
# One-week activation window
ACCOUNT_DEFAULT_LIMIT
=
1
00000
# in wei
ACCOUNT_DEFAULT_LIMIT
=
20000
00000
# in wei
LOGIN_REDIRECT_URL
=
'
/accounts/list/
'
LOGOUT_REDIRECT_URL
=
'
/accounts/login/
'
...
...
@@ -182,16 +185,22 @@ LOGGING = {
}
},
'
handlers
'
:
{
'
stdout
'
:
{
'
level
'
:
'
DEBUG
'
,
'
class
'
:
'
logging.StreamHandler
'
,
'
stream
'
:
sys
.
stdout
,
'
formatter
'
:
'
history
'
},
'
info_file
'
:
{
'
level
'
:
'
INFO
'
,
'
class
'
:
'
logging.FileHandler
'
,
'
filename
'
:
LOG_ROOT
+
'
server.
info.log
'
,
'
filename
'
:
LOG_ROOT
+
'
info.log
'
,
'
formatter
'
:
'
history
'
,
},
'
error_file
'
:
{
'
level
'
:
'
ERROR
'
,
'
class
'
:
'
logging.FileHandler
'
,
'
filename
'
:
LOG_ROOT
+
'
server.
error.log
'
,
'
filename
'
:
LOG_ROOT
+
'
error.log
'
,
'
formatter
'
:
'
detailed
'
,
},
'
sentry
'
:
{
...
...
@@ -215,5 +224,10 @@ LOGGING = {
'
level
'
:
'
DEBUG
'
,
'
propagate
'
:
True
,
},
'
cmd-logger
'
:
{
'
handlers
'
:
[
'
stdout
'
,
'
info_file
'
,
'
error_file
'
,
'
sentry
'
],
'
level
'
:
'
DEBUG
'
,
'
propagate
'
:
True
}
},
}
This diff is collapsed.
Click to expand it.
frontend/views.py
+
38
−
29
View file @
376c9b57
...
...
@@ -36,15 +36,14 @@ from Poppins import settings
from
api.models
import
CustomUser
,
Institution
,
Service
,
Section
from
api.managers
import
RegistrationManager
,
ServiceManager
from
dapp.models
import
Account
from
dapp.services
import
AsociacionCuenta
,
PetitorioEtherCuenta
,
NotValidAddressException
from
dapp.services
import
AsociacionCuenta
,
PetitorioEtherCuenta
,
NotValidAddressException
,
DesvinculacionCuenta
from
logica_cuentas.models
import
RelacionUsuarioAccount
as
CustomUserAccount
,
RelacionUsuarioAccountStatus
from
logica_cuentas.services
import
AltaCuentaEthereum
from
logica_cuentas.services
import
AltaCuentaEthereum
,
CreacionRelacionCuentaUsuario
logger
=
logging
.
getLogger
(
'
logger
'
)
class
RegistrationView
(
RegistrationView
):
email_body_template
=
'
django_registration/activation_email_body.html
'
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
...
...
@@ -86,7 +85,7 @@ class RegistrationView(RegistrationView):
user
=
super
().
register
(
form
)
CustomUser
.
objects
.
create
(
user_id
=
user
.
id
,
user_id
=
user
.
id
)
RegistrationManager
.
send_email_to_admin
(
form
)
...
...
@@ -139,7 +138,10 @@ class AccountListView(LoginRequiredMixin, ListView):
context
=
super
().
get_context_data
(
**
kwargs
)
context
[
'
institutions
'
]
=
CustomUser
.
objects
.
get
(
user_id
=
self
.
request
.
user
.
id
).
enabled_institutions
.
all
()
context
[
'
services
'
]
=
Service
.
objects
.
filter
(
id__in
=
list
(
Account
.
objects
.
filter
(
institution_id__in
=
list
(
CustomUser
.
objects
.
get
(
user_id
=
self
.
request
.
user
.
id
).
enabled_institutions
.
values_list
(
'
id
'
,
flat
=
True
))).
values_list
(
'
service_id
'
,
flat
=
True
)))
context
[
'
services
'
]
=
Service
.
objects
.
filter
(
id__in
=
list
(
Account
.
objects
.
filter
(
institution_id__in
=
list
(
CustomUser
.
objects
.
get
(
user_id
=
self
.
request
.
user
.
id
).
enabled_institutions
.
values_list
(
'
id
'
,
flat
=
True
))).
values_list
(
'
service_id
'
,
flat
=
True
)))
context
[
'
distillery_address
'
]
=
settings
.
DISTILLERY_ADDRESS
return
context
...
...
@@ -167,22 +169,30 @@ class AccountCreateView(LoginRequiredMixin, CreateView):
service
=
ServiceManager
.
create_service
(
request
.
POST
[
'
service_name
'
])
account
,
clave
=
self
.
alta_cuenta
.
alta_cuenta_ethereum
(
request
.
POST
[
'
address
'
],
Institution
.
objects
.
filter
(
id
=
request
.
POST
[
'
institution
'
]).
first
(),
Institution
.
objects
.
filter
(
id
=
request
.
POST
[
'
institution
'
]).
first
(),
service
,
custom_user
,
settings
.
ACCOUNT_DEFAULT_LIMIT
)
messages
.
success
(
request
,
(
_
(
'
account_added
'
)
%
(
request
.
POST
[
'
address
'
])
+
'
<input type=
"
hidden
"
id=
"
hidden-clave
"
value=
"'
+
clave
+
'"
/> <input type=
"
hidden
"
id=
"
hidden-address
"
value=
"'
+
request
.
POST
[
'
address
'
]
+
'"
/> <input type=
"
hidden
"
id=
"
hidden-contract-address
"
value=
"'
+
settings
.
DISTILLERY_ADDRESS
+
'"
/>
'
))
messages
.
success
(
request
,
(
_
(
'
account_added
'
)
%
(
request
.
POST
[
'
address
'
])
+
'
<input type=
"
hidden
"
id=
"
hidden-clave
"
value=
"'
+
clave
+
'"
/> <input type=
"
hidden
"
id=
"
hidden-address
"
value=
"'
+
request
.
POST
[
'
address
'
]
+
'"
/> <input type=
"
hidden
"
id=
"
hidden-contract-address
"
value=
"'
+
settings
.
DISTILLERY_ADDRESS
+
'"
/>
'
))
else
:
messages
.
error
(
request
,
_
(
'
existing_account
'
)
%
request
.
POST
[
'
address
'
],
extra_tags
=
'
danger
'
)
except
NotValidAddressException
:
messages
.
error
(
request
,
_
(
'
address_not_valid
'
)
%
request
.
POST
[
'
address
'
],
extra_tags
=
'
danger
'
)
except
IntegrityError
as
e
:
if
'
service_name_key
'
in
str
(
e
):
messages
.
error
(
request
,
_
(
'
error_create_view
'
)
+
'
:
'
+
_
(
'
existing_service
'
)
%
request
.
POST
[
'
service_name
'
],
extra_tags
=
'
danger
'
)
messages
.
error
(
request
,
_
(
'
error_create_view
'
)
+
'
:
'
+
_
(
'
existing_service
'
)
%
request
.
POST
[
'
service_name
'
],
extra_tags
=
'
danger
'
)
else
:
messages
.
error
(
request
,
_
(
'
error_create_view
'
),
extra_tags
=
'
danger
'
)
client
.
captureException
()
logger
.
error
(
str
(
e
))
except
Exception
as
e
:
client
.
captureException
()
messages
.
error
(
request
,
_
(
'
error_create_view
'
),
extra_tags
=
'
danger
'
)
...
...
@@ -192,25 +202,23 @@ class AccountCreateView(LoginRequiredMixin, CreateView):
class
CustomUserAccountCreateView
(
LoginRequiredMixin
,
CreateView
):
model
=
CustomUserAccount
success_url
=
'
/accounts/list/
'
creacion_vinculo
=
CreacionRelacionCuentaUsuario
()
manager
=
CustomUserAccount
.
objects
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
with
transaction
.
atomic
():
sin_verificar
=
RelacionUsuarioAccountStatus
.
objects
.
get_sin_verificar_relacion
()
account
=
Account
.
objects
.
filter
(
service__id
=
request
.
POST
[
'
service
'
]).
first
()
custom_user
=
CustomUser
.
objects
.
filter
(
user_id
=
request
.
user
.
id
).
first
()
custom_user_account
=
CustomUserAccount
.
objects
.
create
(
user
=
custom_user
,
account
=
account
,
status
=
sin_verificar
)
custom_user_account
=
self
.
creacion_vinculo
.
vincular
(
custom_user
,
account
)
account_us
er
s
=
U
se
r
.
objects
.
filter
(
id__in
=
list
(
CustomUserAccount
.
objects
.
filter
(
account
=
account
.
id
).
values_list
(
'
user_id
'
,
flat
=
True
))
)
own
er
=
se
lf
.
manager
.
owner
(
account
)
scheme
=
'
https
'
if
self
.
request
.
is_secure
()
else
'
http
'
site
=
get_current_site
(
self
.
request
)
...
...
@@ -227,7 +235,7 @@ class CustomUserAccountCreateView(LoginRequiredMixin, CreateView):
render_to_string
(
'
django_registration/approve_account_subject.txt
'
),
render_to_string
(
'
django_registration/approve_account_body.html
'
,
body_context
),
settings
.
DEFAULT_FROM_EMAIL
,
list
(
account_users
.
values_list
(
'
email
'
,
flat
=
True
))
,
[
owner
.
email
]
,
fail_silently
=
False
,
html_message
=
render_to_string
(
'
django_registration/approve_account_body.html
'
,
body_context
)
)
...
...
@@ -238,6 +246,8 @@ class CustomUserAccountCreateView(LoginRequiredMixin, CreateView):
messages
.
error
(
request
,
_
(
'
user_already_has_account
'
)
%
(
account
.
address
),
extra_tags
=
'
danger
'
)
else
:
messages
.
error
(
request
,
_
(
'
error_create_view
'
),
extra_tags
=
'
danger
'
)
client
.
captureException
()
logger
.
error
(
str
(
e
))
except
Exception
as
e
:
client
.
captureException
()
messages
.
error
(
request
,
_
(
'
error_create_view
'
),
extra_tags
=
'
danger
'
)
...
...
@@ -249,16 +259,16 @@ class CustomUserAccountCreateView(LoginRequiredMixin, CreateView):
class
AccountDeleteView
(
LoginRequiredMixin
,
DeleteView
):
model
=
CustomUserAccount
success_url
=
'
/accounts/list/
'
desvinculacion_account
=
DesvinculacionCuenta
()
def
post
(
self
,
request
,
*
args
,
**
kwargs
):
try
:
# TODO: pasar todo esto a clase en services
with
transaction
.
atomic
():
customuser_account
=
self
.
get_object
()
custom_user
=
CustomUser
.
objects
.
get
(
user_id
=
request
.
user
.
id
)
if
customuser_account
.
account
.
owner
==
custom_us
er
:
if
customuser_account
.
is_own
er
:
accounts
=
CustomUserAccount
.
objects
.
filter
(
account_id
=
customuser_account
.
account_id
)
...
...
@@ -279,9 +289,7 @@ class AccountDeleteView(LoginRequiredMixin, DeleteView):
account_address
=
customuser_account
.
account
.
address
customuser_account
.
delete
()
account
.
delete
()
service
=
Service
.
objects
.
get
(
pk
=
account
.
service_id
)
service
.
delete
()
self
.
desvinculacion_account
.
desvincular_cuenta
(
account
)
messages
.
success
(
request
,
_
(
'
cuenta_borrada
'
)
%
account_address
)
...
...
@@ -293,7 +301,6 @@ class AccountDeleteView(LoginRequiredMixin, DeleteView):
messages
.
error
(
request
,
_
(
'
error_borrar_cuenta
'
),
extra_tags
=
'
danger
'
)
logger
.
error
(
str
(
e
))
return
HttpResponseRedirect
(
self
.
success_url
)
...
...
@@ -347,31 +354,31 @@ class CaptchaLoginView(LoginView):
else
:
return
self
.
form_invalid
(
form
)
@csrf_exempt
def
get_service_address
(
request
):
if
not
request
.
POST
[
'
service
'
]:
return
JsonResponse
({
'
status
'
:
'
success
'
,
'
address
'
:
''
})
account
=
Account
.
objects
.
filter
(
service
=
Service
.
objects
.
get
(
pk
=
request
.
POST
[
'
service
'
]))
return
JsonResponse
({
'
status
'
:
'
success
'
,
'
address
'
:
account
.
values
().
first
()[
'
address
'
]})
return
JsonResponse
({
'
status
'
:
'
success
'
,
'
address
'
:
account
.
values
().
first
()[
'
address
'
]})
def
approve_account
(
request
,
pk
):
def
approve_account
(
request
,
pk
):
custom_user_account
=
CustomUserAccount
.
objects
.
filter
(
id
=
pk
).
first
()
custom_user_account
.
status
=
RelacionUsuarioAccountStatus
.
objects
.
get_relacion_verificada
()
custom_user_account
.
save
()
return
HttpResponseRedirect
(
'
/accounts/approved/
'
)
def
account_approved
(
request
):
return
render
(
request
,
'
django_registration/account_approved.html
'
)
@login_required
(
login_url
=
'
/accounts/login/
'
)
def
update_user
(
request
):
custom_user
=
CustomUser
.
objects
.
get
(
user_id
=
request
.
user
.
id
)
user
=
request
.
user
...
...
@@ -401,14 +408,16 @@ def update_user(request):
custom_user
.
save
()
messages
.
success
(
request
,
_
(
'
user_updated
'
))
except
Exception
:
except
Exception
as
e
:
messages
.
error
(
request
,
_
(
'
user_update_error
'
),
extra_tags
=
'
danger
'
)
client
.
captureException
()
logger
.
error
(
str
(
e
))
return
HttpResponseRedirect
(
'
/mis_datos/
'
)
@login_required
(
login_url
=
'
/accounts/login/
'
)
def
change_password
(
request
):
if
request
.
method
==
'
GET
'
:
return
render
(
request
,
'
registration/change_password.html
'
,
{})
else
:
...
...
@@ -418,4 +427,4 @@ def change_password(request):
messages
.
success
(
request
,
_
(
'
password_changed
'
))
return
HttpResponseRedirect
(
'
/mis_datos/
'
)
\ No newline at end of file
return
HttpResponseRedirect
(
'
/mis_datos/
'
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment