Added new fields: usernamefield and fix in passwordfield

This commit is contained in:
Antonio de la Rosa 2019-07-15 00:23:43 +02:00
parent 9cb9978a86
commit 87bc64a673
3 changed files with 38 additions and 3 deletions

View file

@ -254,6 +254,7 @@ class AjaxList(SimpleList):
self.str_query_params=str_query[1] self.str_query_params=str_query[1]
self.initial_num_pages=20 self.initial_num_pages=20
self.db=db self.db=db
self.func_fields={}
def show(self): def show(self):
@ -293,7 +294,10 @@ class AjaxList(SimpleList):
with self.db.query(self.count_query, self.count_query_params) as cursor: with self.db.query(self.count_query, self.count_query_params) as cursor:
total_elements=cursor.fetchone()['num_elements'] total_elements=cursor.fetchone()['num_elements']
str_query=self.str_query+' '+order_sql+' limit %s, %s' str_query=self.str_query+' '+order_sql
if self.limit>0:
str_query+=' limit %s, %s'
params=self.str_query_params params=self.str_query_params
params.append(begin_page) params.append(begin_page)
@ -301,7 +305,20 @@ class AjaxList(SimpleList):
with self.db.query(str_query, params) as cursor: with self.db.query(str_query, params) as cursor:
for row in cursor: for row in cursor:
"""
c=len(self.arr_order_fields)
for x in range(c, len(row)):
key_field=list(row.keys())[x]
#print(key_field)
pass
"""
for func_field in self.func_fields:
if func_field in row:
row[func_field]=self.func_fields[func_field](row[func_field])
rows.append(row) rows.append(row)
#{k:d[k] for in set(d).intersection(l)}
pages=Pages() pages=Pages()

View file

@ -11,6 +11,7 @@ class PasswordField(PhangoField):
self.protected=True self.protected=True
self.name_form=PasswordForm self.name_form=PasswordForm
self.default_value='' self.default_value=''
self.encrypt_password=True
def check(self, value): def check(self, value):
@ -41,7 +42,8 @@ class PasswordField(PhangoField):
#if crypt.METHOD_SHA512 in crypt.methods: #if crypt.METHOD_SHA512 in crypt.methods:
#salt=crypt.mksalt(crypt.METHOD_SHA512) #salt=crypt.mksalt(crypt.METHOD_SHA512)
value=crypt.crypt(value) if self.encrypt_password:
value=crypt.crypt(value)
""" """
else: else:

View file

@ -0,0 +1,16 @@
from paramecio.cromosoma.corefields import PhangoField
from paramecio.cromosoma.coreforms import PasswordForm
from hmac import compare_digest as compare_hash
import crypt
import re
class UserNameField(PhangoField):
def check(self, value):
if not re.match("^[A-Za-z0-9_-]+$", value):
self.txt_error='Error: use only letters, numbers, underscores and dashes for this field'
self.error=1
value=''
return value