Added texts for allowed denied tags in configuration
Removed domain only restriction (now it's also possible to allow/deny name parts of users email) Fix no. of displayed books in unread books section, with applied restrictions
This commit is contained in:
parent
42435ab34a
commit
8143c16c14
16
cps/admin.py
16
cps/admin.py
|
@ -435,15 +435,15 @@ def delete_restriction(type):
|
||||||
@admin_required
|
@admin_required
|
||||||
def list_restriction(type):
|
def list_restriction(type):
|
||||||
if type == 0: # Tags as template
|
if type == 0: # Tags as template
|
||||||
restrict = [{'Element': x, 'type':'1', 'id': 'd'+str(i) }
|
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
|
||||||
for i,x in enumerate(config.list_restricted_tags()) if x != '' ]
|
for i,x in enumerate(config.list_restricted_tags()) if x != '' ]
|
||||||
allow = [{'Element': x, 'type':'1', 'id': 'a'+str(i) }
|
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
|
||||||
for i,x in enumerate(config.list_allowed_tags()) if x != '']
|
for i,x in enumerate(config.list_allowed_tags()) if x != '']
|
||||||
json_dumps = restrict + allow
|
json_dumps = restrict + allow
|
||||||
elif type == 1: # CustomC as template
|
elif type == 1: # CustomC as template
|
||||||
restrict = [{'Element': x, 'type':'1', 'id': 'd'+str(i) }
|
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
|
||||||
for i,x in enumerate(config.list_restricted_column_values()) if x != '' ]
|
for i,x in enumerate(config.list_restricted_column_values()) if x != '' ]
|
||||||
allow = [{'Element': x, 'type':'1', 'id': 'a'+str(i) }
|
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
|
||||||
for i,x in enumerate(config.list_allowed_column_values()) if x != '']
|
for i,x in enumerate(config.list_allowed_column_values()) if x != '']
|
||||||
json_dumps = restrict + allow
|
json_dumps = restrict + allow
|
||||||
elif type == 2: # Tags per user
|
elif type == 2: # Tags per user
|
||||||
|
@ -452,9 +452,9 @@ def list_restriction(type):
|
||||||
usr = ub.session.query(ub.User).filter(ub.User.id == usr_id).first()
|
usr = ub.session.query(ub.User).filter(ub.User.id == usr_id).first()
|
||||||
else:
|
else:
|
||||||
usr = current_user
|
usr = current_user
|
||||||
restrict = [{'Element': x, 'type':'2', 'id': 'd'+str(i) }
|
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
|
||||||
for i,x in enumerate(usr.list_restricted_tags()) if x != '' ]
|
for i,x in enumerate(usr.list_restricted_tags()) if x != '' ]
|
||||||
allow = [{'Element': x, 'type':'2', 'id': 'a'+str(i) }
|
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
|
||||||
for i,x in enumerate(usr.list_allowed_tags()) if x != '']
|
for i,x in enumerate(usr.list_allowed_tags()) if x != '']
|
||||||
json_dumps = restrict + allow
|
json_dumps = restrict + allow
|
||||||
elif type == 3: # CustomC per user
|
elif type == 3: # CustomC per user
|
||||||
|
@ -463,9 +463,9 @@ def list_restriction(type):
|
||||||
usr = ub.session.query(ub.User).filter(ub.User.id==usr_id).first()
|
usr = ub.session.query(ub.User).filter(ub.User.id==usr_id).first()
|
||||||
else:
|
else:
|
||||||
usr = current_user
|
usr = current_user
|
||||||
restrict = [{'Element': x, 'type':'2', 'id': 'd'+str(i) }
|
restrict = [{'Element': x, 'type':_('deny'), 'id': 'd'+str(i) }
|
||||||
for i,x in enumerate(usr.list_restricted_column_values()) if x != '' ]
|
for i,x in enumerate(usr.list_restricted_column_values()) if x != '' ]
|
||||||
allow = [{'Element': x, 'type':'2', 'id': 'a'+str(i) }
|
allow = [{'Element': x, 'type':_('allow'), 'id': 'a'+str(i) }
|
||||||
for i,x in enumerate(usr.list_allowed_column_values()) if x != '']
|
for i,x in enumerate(usr.list_allowed_column_values()) if x != '']
|
||||||
json_dumps = restrict + allow
|
json_dumps = restrict + allow
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -43,7 +43,7 @@ parser.add_argument('-k', metavar='path',
|
||||||
help='path and name to SSL keyfile, e.g. /opt/test.key, works only in combination with certfile')
|
help='path and name to SSL keyfile, e.g. /opt/test.key, works only in combination with certfile')
|
||||||
parser.add_argument('-v', '--version', action='version', help='Shows version number and exits Calibre-web',
|
parser.add_argument('-v', '--version', action='version', help='Shows version number and exits Calibre-web',
|
||||||
version=version_info())
|
version=version_info())
|
||||||
parser.add_argument('-i', metavar='ip-adress', help='Server IP-Adress to listen')
|
parser.add_argument('-i', metavar='ip-address', help='Server IP-Address to listen')
|
||||||
parser.add_argument('-s', metavar='user:pass', help='Sets specific username to new password')
|
parser.add_argument('-s', metavar='user:pass', help='Sets specific username to new password')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
|
|
@ -736,7 +736,7 @@ def speaking_language(languages=None):
|
||||||
# example SELECT * FROM @TABLE WHERE 'abcdefg' LIKE Name;
|
# example SELECT * FROM @TABLE WHERE 'abcdefg' LIKE Name;
|
||||||
# from https://code.luasoftware.com/tutorials/flask/execute-raw-sql-in-flask-sqlalchemy/
|
# from https://code.luasoftware.com/tutorials/flask/execute-raw-sql-in-flask-sqlalchemy/
|
||||||
def check_valid_domain(domain_text):
|
def check_valid_domain(domain_text):
|
||||||
domain_text = domain_text.split('@', 1)[-1].lower()
|
# domain_text = domain_text.split('@', 1)[-1].lower()
|
||||||
sql = "SELECT * FROM registration WHERE (:domain LIKE domain and allow = 1);"
|
sql = "SELECT * FROM registration WHERE (:domain LIKE domain and allow = 1);"
|
||||||
result = ub.session.query(ub.Registration).from_statement(text(sql)).params(domain=domain_text).all()
|
result = ub.session.query(ub.Registration).from_statement(text(sql)).params(domain=domain_text).all()
|
||||||
if not len(result):
|
if not len(result):
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th data-field="Element" id="Element" data-editable-type="text" data-editable="true" data-editable-title="{{_('Enter Tag')}}"></th>
|
<th data-field="Element" id="Element" data-editable-type="text" data-editable="true" data-editable-title="{{_('Enter Tag')}}"></th>
|
||||||
<th data-field="type" id="type" data-visible="false"></th>
|
<th data-field="type" id="type" data-visible="true"></th>
|
||||||
<th data-field="id" id="id" data-visible="false"></th>
|
<th data-field="id" id="id" data-visible="false"></th>
|
||||||
<th data-align="right" data-formatter="RestrictionActions"></th>
|
<th data-align="right" data-formatter="RestrictionActions"></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -1010,7 +1010,7 @@ def render_read_books(page, are_read, as_xml=False, order=None, *args, **kwargs)
|
||||||
name = _(u'Read Books') + ' (' + str(len(readBookIds)) + ')'
|
name = _(u'Read Books') + ' (' + str(len(readBookIds)) + ')'
|
||||||
pagename = "read"
|
pagename = "read"
|
||||||
else:
|
else:
|
||||||
total_books = db.session.query(func.count(db.Books.id)).scalar()
|
total_books = db.session.query(func.count(db.Books.id)).filter(common_filters()).scalar()
|
||||||
name = _(u'Unread Books') + ' (' + str(total_books - len(readBookIds)) + ')'
|
name = _(u'Unread Books') + ' (' + str(total_books - len(readBookIds)) + ')'
|
||||||
pagename = "unread"
|
pagename = "unread"
|
||||||
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
return render_title_template('index.html', random=random, entries=entries, pagination=pagination,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user