forked from elmau/empresa-libre
84 lines
1.5 KiB
Python
84 lines
1.5 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
import datetime
|
||
|
import getpass
|
||
|
import json
|
||
|
import mimetypes
|
||
|
import os
|
||
|
import uuid
|
||
|
|
||
|
import bcrypt
|
||
|
|
||
|
from settings import template_lookup, PATH_CP
|
||
|
|
||
|
|
||
|
def _get_hash(password):
|
||
|
return bcrypt.hashpw(password.encode(), bcrypt.gensalt()).decode()
|
||
|
|
||
|
|
||
|
def validate_password(hashed, password):
|
||
|
return bcrypt.hashpw(password.encode(), hashed.encode()) == hashed.encode()
|
||
|
|
||
|
|
||
|
def get_pass():
|
||
|
password = getpass.getpass('Introduce la contraseña: ')
|
||
|
pass2 = getpass.getpass('Confirma la contraseña: ')
|
||
|
|
||
|
if password != pass2:
|
||
|
msg = 'Las contraseñas son diferentes'
|
||
|
return False, msg
|
||
|
password = password.strip()
|
||
|
if not password:
|
||
|
msg = 'La contraseña es necesaria'
|
||
|
return False, msg
|
||
|
|
||
|
return True, _get_hash(password)
|
||
|
|
||
|
|
||
|
def now():
|
||
|
return datetime.datetime.now()
|
||
|
|
||
|
|
||
|
def get_token():
|
||
|
return _get_hash(uuid.uuid4().hex)
|
||
|
|
||
|
|
||
|
def get_mimetype(path):
|
||
|
mt = mimetypes.guess_type(path)[0]
|
||
|
return mt or 'application/octet-stream'
|
||
|
|
||
|
|
||
|
def is_file(path):
|
||
|
return os.path.isfile(path)
|
||
|
|
||
|
|
||
|
def get_stream(path):
|
||
|
return get_file(path), get_size(path)
|
||
|
|
||
|
|
||
|
def get_file(path):
|
||
|
return open(path, 'rb')
|
||
|
|
||
|
|
||
|
def get_size(path):
|
||
|
return os.path.getsize(path)
|
||
|
|
||
|
|
||
|
def get_template(name, data={}):
|
||
|
#~ print ('NAME', name, data)
|
||
|
template = template_lookup.get_template(name)
|
||
|
return template.render(**data)
|
||
|
|
||
|
|
||
|
def dumps(data):
|
||
|
return json.dumps(data, default=str)
|
||
|
|
||
|
|
||
|
def clean(values):
|
||
|
for k, v in values.items():
|
||
|
if isinstance(v, str):
|
||
|
values[k] = v.strip()
|
||
|
return values
|
||
|
|
||
|
|