Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
D
douban-api-proxy
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
captainwong
douban-api-proxy
Commits
1c18a788
Commit
1c18a788
authored
Dec 30, 2019
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'tags_restrict/master' into Develop
parents
bbe91f43
8e848649
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
142 additions
and
56 deletions
+142
-56
.gitignore
.gitignore
+3
-5
admin.py
cps/admin.py
+22
-6
config_sql.py
cps/config_sql.py
+9
-6
helper.py
cps/helper.py
+28
-6
config_edit.html
cps/templates/config_edit.html
+4
-1
config_view_edit.html
cps/templates/config_view_edit.html
+17
-11
user_edit.html
cps/templates/user_edit.html
+13
-9
ub.py
cps/ub.py
+42
-7
web.py
cps/web.py
+4
-5
No files found.
.gitignore
View file @
1c18a788
...
@@ -7,9 +7,11 @@ __pycache__/
...
@@ -7,9 +7,11 @@ __pycache__/
# Distribution / packaging
# Distribution / packaging
.Python
.Python
env/
env/
venv/
eggs/
eggs/
dist/
dist/
build/
build/
vendor/
.eggs/
.eggs/
*.egg-info/
*.egg-info/
.installed.cfg
.installed.cfg
...
@@ -19,16 +21,12 @@ build/
...
@@ -19,16 +21,12 @@ build/
# calibre-web
# calibre-web
*.db
*.db
*.log
*.log
config.ini
cps/static/[0-9]*
.idea/
.idea/
*.bak
*.bak
*.log.*
*.log.*
tags
settings.yaml
settings.yaml
gdrive_credentials
gdrive_credentials
vendor
client_secrets.json
client_secrets.json
cps/admin.py
View file @
1c18a788
...
@@ -144,7 +144,10 @@ def configuration():
...
@@ -144,7 +144,10 @@ def configuration():
def
view_configuration
():
def
view_configuration
():
readColumn
=
db
.
session
.
query
(
db
.
Custom_Columns
)
\
readColumn
=
db
.
session
.
query
(
db
.
Custom_Columns
)
\
.
filter
(
and_
(
db
.
Custom_Columns
.
datatype
==
'bool'
,
db
.
Custom_Columns
.
mark_for_delete
==
0
))
.
all
()
.
filter
(
and_
(
db
.
Custom_Columns
.
datatype
==
'bool'
,
db
.
Custom_Columns
.
mark_for_delete
==
0
))
.
all
()
restrictColumns
=
db
.
session
.
query
(
db
.
Custom_Columns
)
\
.
filter
(
and_
(
db
.
Custom_Columns
.
datatype
==
'text'
,
db
.
Custom_Columns
.
mark_for_delete
==
0
))
.
all
()
return
render_title_template
(
"config_view_edit.html"
,
conf
=
config
,
readColumns
=
readColumn
,
return
render_title_template
(
"config_view_edit.html"
,
conf
=
config
,
readColumns
=
readColumn
,
restrictColumns
=
restrictColumns
,
title
=
_
(
u"UI Configuration"
),
page
=
"uiconfig"
)
title
=
_
(
u"UI Configuration"
),
page
=
"uiconfig"
)
...
@@ -160,7 +163,7 @@ def update_view_configuration():
...
@@ -160,7 +163,7 @@ def update_view_configuration():
_config_string
(
"config_calibre_web_title"
)
_config_string
(
"config_calibre_web_title"
)
_config_string
(
"config_columns_to_ignore"
)
_config_string
(
"config_columns_to_ignore"
)
_config_string
(
"config_mature_content_tags"
)
#
_config_string("config_mature_content_tags")
reboot_required
|=
_config_string
(
"config_title_regex"
)
reboot_required
|=
_config_string
(
"config_title_regex"
)
_config_int
(
"config_read_column"
)
_config_int
(
"config_read_column"
)
...
@@ -169,6 +172,10 @@ def update_view_configuration():
...
@@ -169,6 +172,10 @@ def update_view_configuration():
_config_int
(
"config_books_per_page"
)
_config_int
(
"config_books_per_page"
)
_config_int
(
"config_authors_max"
)
_config_int
(
"config_authors_max"
)
_config_string
(
"config_restricted_tags"
)
_config_int
(
"config_restricted_column"
)
_config_string
(
"config_restricted_column_value"
)
if
config
.
config_google_drive_watch_changes_response
:
if
config
.
config_google_drive_watch_changes_response
:
config
.
config_google_drive_watch_changes_response
=
json
.
dumps
(
config
.
config_google_drive_watch_changes_response
)
config
.
config_google_drive_watch_changes_response
=
json
.
dumps
(
config
.
config_google_drive_watch_changes_response
)
...
@@ -176,8 +183,8 @@ def update_view_configuration():
...
@@ -176,8 +183,8 @@ def update_view_configuration():
config
.
config_default_role
&=
~
constants
.
ROLE_ANONYMOUS
config
.
config_default_role
&=
~
constants
.
ROLE_ANONYMOUS
config
.
config_default_show
=
sum
(
int
(
k
[
5
:])
for
k
in
to_save
if
k
.
startswith
(
'show_'
))
config
.
config_default_show
=
sum
(
int
(
k
[
5
:])
for
k
in
to_save
if
k
.
startswith
(
'show_'
))
if
"Show_mature_content"
in
to_save
:
'''
if "Show_mature_content" in to_save:
config
.
config_default_show
|=
constants
.
MATURE_CONTENT
config.config_default_show |= constants.MATURE_CONTENT
'''
config
.
save
()
config
.
save
()
flash
(
_
(
u"Calibre-Web configuration updated"
),
category
=
"success"
)
flash
(
_
(
u"Calibre-Web configuration updated"
),
category
=
"success"
)
...
@@ -448,7 +455,7 @@ def new_user():
...
@@ -448,7 +455,7 @@ def new_user():
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
to_save
=
request
.
form
.
to_dict
()
to_save
=
request
.
form
.
to_dict
()
content
.
default_language
=
to_save
[
"default_language"
]
content
.
default_language
=
to_save
[
"default_language"
]
content
.
mature_content
=
"Show_mature_content"
in
to_save
#
content.mature_content = "Show_mature_content" in to_save
content
.
locale
=
to_save
.
get
(
"locale"
,
content
.
locale
)
content
.
locale
=
to_save
.
get
(
"locale"
,
content
.
locale
)
content
.
sidebar_view
=
sum
(
int
(
key
[
5
:])
for
key
in
to_save
if
key
.
startswith
(
'show_'
))
content
.
sidebar_view
=
sum
(
int
(
key
[
5
:])
for
key
in
to_save
if
key
.
startswith
(
'show_'
))
...
@@ -490,7 +497,10 @@ def new_user():
...
@@ -490,7 +497,10 @@ def new_user():
else
:
else
:
content
.
role
=
config
.
config_default_role
content
.
role
=
config
.
config_default_role
content
.
sidebar_view
=
config
.
config_default_show
content
.
sidebar_view
=
config
.
config_default_show
content
.
mature_content
=
bool
(
config
.
config_default_show
&
constants
.
MATURE_CONTENT
)
content
.
restricted_tags
=
config
.
config_restricted_tags
content
.
restricted_column
=
config
.
config_restricted_column
content
.
restricted_column_value
=
config
.
config_restricted_column_value
# content.mature_content = bool(config.config_default_show & constants.MATURE_CONTENT)
return
render_title_template
(
"user_edit.html"
,
new_user
=
1
,
content
=
content
,
translations
=
translations
,
return
render_title_template
(
"user_edit.html"
,
new_user
=
1
,
content
=
content
,
translations
=
translations
,
languages
=
languages
,
title
=
_
(
u"Add new user"
),
page
=
"newuser"
,
languages
=
languages
,
title
=
_
(
u"Add new user"
),
page
=
"newuser"
,
registered_oauth
=
oauth_check
)
registered_oauth
=
oauth_check
)
...
@@ -593,7 +603,13 @@ def edit_user(user_id):
...
@@ -593,7 +603,13 @@ def edit_user(user_id):
else
:
else
:
content
.
sidebar_view
&=
~
constants
.
DETAIL_RANDOM
content
.
sidebar_view
&=
~
constants
.
DETAIL_RANDOM
content
.
mature_content
=
"Show_mature_content"
in
to_save
# content.mature_content = "Show_mature_content" in to_save
if
"restricted_tags"
in
to_save
:
content
.
restricted_tags
=
to_save
[
"restricted_tags"
]
if
"config_restricted_column"
in
to_save
:
content
.
restricted_tags
=
to_save
[
"config_restricted_column"
]
if
"config_restricted_column_value"
in
to_save
:
content
.
restricted_tags
=
to_save
[
"config_restricted_column_value"
]
if
"default_language"
in
to_save
:
if
"default_language"
in
to_save
:
content
.
default_language
=
to_save
[
"default_language"
]
content
.
default_language
=
to_save
[
"default_language"
]
...
...
cps/config_sql.py
View file @
1c18a788
...
@@ -57,7 +57,7 @@ class _Settings(_Base):
...
@@ -57,7 +57,7 @@ class _Settings(_Base):
config_authors_max
=
Column
(
Integer
,
default
=
0
)
config_authors_max
=
Column
(
Integer
,
default
=
0
)
config_read_column
=
Column
(
Integer
,
default
=
0
)
config_read_column
=
Column
(
Integer
,
default
=
0
)
config_title_regex
=
Column
(
String
,
default
=
u'^(A|The|An|Der|Die|Das|Den|Ein|Eine|Einen|Dem|Des|Einem|Eines)
\
s+'
)
config_title_regex
=
Column
(
String
,
default
=
u'^(A|The|An|Der|Die|Das|Den|Ein|Eine|Einen|Dem|Des|Einem|Eines)
\
s+'
)
config_mature_content_tags
=
Column
(
String
,
default
=
''
)
#
config_mature_content_tags = Column(String, default='')
config_theme
=
Column
(
Integer
,
default
=
0
)
config_theme
=
Column
(
Integer
,
default
=
0
)
config_log_level
=
Column
(
SmallInteger
,
default
=
logger
.
DEFAULT_LOG_LEVEL
)
config_log_level
=
Column
(
SmallInteger
,
default
=
logger
.
DEFAULT_LOG_LEVEL
)
...
@@ -70,10 +70,13 @@ class _Settings(_Base):
...
@@ -70,10 +70,13 @@ class _Settings(_Base):
config_public_reg
=
Column
(
SmallInteger
,
default
=
0
)
config_public_reg
=
Column
(
SmallInteger
,
default
=
0
)
config_remote_login
=
Column
(
Boolean
,
default
=
False
)
config_remote_login
=
Column
(
Boolean
,
default
=
False
)
config_default_role
=
Column
(
SmallInteger
,
default
=
0
)
config_default_role
=
Column
(
SmallInteger
,
default
=
0
)
config_default_show
=
Column
(
SmallInteger
,
default
=
6143
)
config_default_show
=
Column
(
SmallInteger
,
default
=
6143
)
config_columns_to_ignore
=
Column
(
String
)
config_columns_to_ignore
=
Column
(
String
)
config_restricted_tags
=
Column
(
String
)
config_restricted_column
=
Column
(
SmallInteger
,
default
=
0
)
config_restricted_column_value
=
Column
(
String
)
config_allowed_column_value
=
Column
(
String
)
config_use_google_drive
=
Column
(
Boolean
,
default
=
False
)
config_use_google_drive
=
Column
(
Boolean
,
default
=
False
)
config_google_drive_folder
=
Column
(
String
)
config_google_drive_folder
=
Column
(
String
)
...
@@ -177,12 +180,12 @@ class _ConfigSQL(object):
...
@@ -177,12 +180,12 @@ class _ConfigSQL(object):
def
show_detail_random
(
self
):
def
show_detail_random
(
self
):
return
self
.
show_element_new_user
(
constants
.
DETAIL_RANDOM
)
return
self
.
show_element_new_user
(
constants
.
DETAIL_RANDOM
)
def
show_mature_content
(
self
):
'''
def show_mature_content(self):
return
self
.
show_element_new_user
(
constants
.
MATURE_CONTENT
)
return self.show_element_new_user(constants.MATURE_CONTENT)
'''
def
mature_content_tags
(
self
):
'''
def mature_content_tags(self):
mct = self.config_mature_content_tags.split(",")
mct = self.config_mature_content_tags.split(",")
return
[
t
.
strip
()
for
t
in
mct
]
return [t.strip() for t in mct]
'''
def
get_log_level
(
self
):
def
get_log_level
(
self
):
return
logger
.
get_level_name
(
self
.
config_log_level
)
return
logger
.
get_level_name
(
self
.
config_log_level
)
...
...
cps/helper.py
View file @
1c18a788
...
@@ -686,14 +686,36 @@ def common_filters():
...
@@ -686,14 +686,36 @@ def common_filters():
lang_filter
=
db
.
Books
.
languages
.
any
(
db
.
Languages
.
lang_code
==
current_user
.
filter_language
())
lang_filter
=
db
.
Books
.
languages
.
any
(
db
.
Languages
.
lang_code
==
current_user
.
filter_language
())
else
:
else
:
lang_filter
=
true
()
lang_filter
=
true
()
content_rating_filter
=
false
()
if
current_user
.
mature_content
else
\
negtags_list
=
current_user
.
list_restricted_tags
()
db
.
Books
.
tags
.
any
(
db
.
Tags
.
name
.
in_
(
config
.
mature_content_tags
()))
postags_list
=
current_user
.
list_allowed_tags
()
return
and_
(
lang_filter
,
~
content_rating_filter
)
neg_content_tags_filter
=
false
()
if
negtags_list
==
[
''
]
else
db
.
Books
.
tags
.
any
(
db
.
Tags
.
name
.
in_
(
negtags_list
))
pos_content_tags_filter
=
true
()
if
postags_list
==
[
''
]
else
db
.
Books
.
tags
.
any
(
db
.
Tags
.
name
.
in_
(
postags_list
))
# db.session.query(db.Books).filter(db.Books.custom_column_5.any(db.cc_classes[5].value == 'nikto')).first()
# db.session.query(db.Books).filter(
# getattr(db.Books, 'custom_column_' + str(5)).any(db.cc_classes[5].value == 'nikto').first())
if
config
.
config_restricted_column
:
pos_cc_list
=
current_user
.
allowed_column_value
.
split
(
','
)
pos_content_cc_filter
=
true
()
if
pos_cc_list
==
[
''
]
else
\
getattr
(
db
.
Books
,
'custom_column_'
+
str
(
config
.
config_restricted_column
))
.
\
any
(
db
.
cc_classes
[
config
.
config_restricted_column
]
.
value
.
in_
(
pos_cc_list
))
neg_cc_list
=
current_user
.
restricted_column_value
.
split
(
','
)
neg_content_cc_filter
=
true
()
if
neg_cc_list
==
[
''
]
else
\
getattr
(
db
.
Books
,
'custom_column_'
+
str
(
config
.
config_restricted_column
))
.
\
any
(
db
.
cc_classes
[
config
.
config_restricted_column
]
.
value
.
in_
(
neg_cc_list
))
else
:
pos_content_cc_filter
=
true
()
neg_content_cc_filter
=
false
()
return
and_
(
lang_filter
,
pos_content_tags_filter
,
~
neg_content_tags_filter
,
pos_content_cc_filter
,
~
neg_content_cc_filter
)
def
tags_filters
():
def
tags_filters
():
return
~
(
false
()
if
current_user
.
mature_content
else
\
negtags_list
=
current_user
.
list_restricted_tags
()
db
.
Tags
.
name
.
in_
(
config
.
mature_content_tags
()))
postags_list
=
current_user
.
list_allowed_tags
()
# return db.session.query(db.Tags).filter(~content_rating_filter).order_by(db.Tags.name).all()
neg_content_tags_filter
=
false
()
if
negtags_list
==
[
''
]
else
db
.
Tags
.
name
.
in_
(
negtags_list
)
pos_content_tags_filter
=
true
()
if
postags_list
==
[
''
]
else
db
.
Tags
.
name
.
in_
(
postags_list
)
return
and_
(
pos_content_tags_filter
,
~
neg_content_tags_filter
)
# return ~(false()) if postags_list == [''] else db.Tags.in_(postags_list)
# Creates for all stored languages a translated speaking name in the array for the UI
# Creates for all stored languages a translated speaking name in the array for the UI
...
...
cps/templates/config_edit.html
View file @
1c18a788
...
@@ -71,7 +71,7 @@
...
@@ -71,7 +71,7 @@
</div>
</div>
</div>
</div>
</div>
</div>
{% if show_back_button %}
<div
class=
"panel panel-default"
>
<div
class=
"panel panel-default"
>
<div
class=
"panel-heading"
>
<div
class=
"panel-heading"
>
<h4
class=
"panel-title"
>
<h4
class=
"panel-title"
>
...
@@ -316,11 +316,14 @@
...
@@ -316,11 +316,14 @@
</div>
</div>
</div>
</div>
</div>
</div>
{% endif %}
</div>
</div>
<div
class=
"col-sm-12"
>
<div
class=
"col-sm-12"
>
{% if not show_login_button %}
<button
type=
"submit"
name=
"submit"
class=
"btn btn-default"
>
{{_('Submit')}}
</button>
<button
type=
"submit"
name=
"submit"
class=
"btn btn-default"
>
{{_('Submit')}}
</button>
{% endif %}
{% if show_back_button %}
{% if show_back_button %}
<a
href=
"{{ url_for('admin.admin') }}"
class=
"btn btn-default"
>
{{_('Back')}}
</a>
<a
href=
"{{ url_for('admin.admin') }}"
class=
"btn btn-default"
>
{{_('Back')}}
</a>
{% endif %}
{% endif %}
...
...
cps/templates/config_view_edit.html
View file @
1c18a788
...
@@ -51,16 +51,19 @@
...
@@ -51,16 +51,19 @@
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"config_restricted_column"
>
{{_('View restriction based on Calibre column')}}
</label>
<select
name=
"config_restricted_column"
id=
"config_restricted_column"
class=
"form-control"
>
<option
value=
"0"
{%
if
conf
.
config_restricted_column =
=
0
%}
selected
{%
endif
%}
>
{{ _('None') }}
</option>
{% for restrictColumn in restrictColumns %}
<option
value=
"{{ restrictColumn.id }}"
{%
if
restrictColumn
.
id =
=
conf
.
config_restricted_column
%}
selected
{%
endif
%}
>
{{ restrictColumn.name }}
</option>
{% endfor %}
</select>
</div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"config_title_regex"
>
{{_('Regular expression for title sorting')}}
</label>
<label
for=
"config_title_regex"
>
{{_('Regular expression for title sorting')}}
</label>
<input
type=
"text"
class=
"form-control"
name=
"config_title_regex"
id=
"config_title_regex"
value=
"{% if conf.config_title_regex != None %}{{ conf.config_title_regex }}{% endif %}"
autocomplete=
"off"
>
<input
type=
"text"
class=
"form-control"
name=
"config_title_regex"
id=
"config_title_regex"
value=
"{% if conf.config_title_regex != None %}{{ conf.config_title_regex }}{% endif %}"
autocomplete=
"off"
>
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"config_mature_content_tags"
>
{{_('Tags for Mature Content')}}
</label>
<input
type=
"text"
class=
"form-control"
name=
"config_mature_content_tags"
id=
"config_mature_content_tags"
value=
"{% if conf.config_mature_content_tags != None%}{{ conf.config_mature_content_tags }}{% endif %}"
autocomplete=
"off"
>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -108,6 +111,14 @@
...
@@ -108,6 +111,14 @@
<input
type=
"checkbox"
name=
"edit_shelf_role"
id=
"edit_shelf_role"
{%
if
conf
.
role_edit_shelfs
()
%}
checked
{%
endif
%}
>
<input
type=
"checkbox"
name=
"edit_shelf_role"
id=
"edit_shelf_role"
{%
if
conf
.
role_edit_shelfs
()
%}
checked
{%
endif
%}
>
<label
for=
"edit_shelf_role"
>
{{_('Allow Editing Public Shelfs')}}
</label>
<label
for=
"edit_shelf_role"
>
{{_('Allow Editing Public Shelfs')}}
</label>
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"config_restricted_tags"
>
{{_('Restrict Tags')}}
</label>
<input
type=
"text"
class=
"form-control"
name=
"config_restricted_tags"
id=
"config_restricted_tags"
value=
"{{ conf.config_restricted_tags if conf.config_restricted_tags != None }}"
autocomplete=
"off"
>
</div>
<div
class=
"form-group"
>
<label
for=
"config_restricted_column_value"
>
{{_('Restricted Column Content')}}
</label>
<input
type=
"text"
class=
"form-control"
name=
"config_restricted_column_value"
id=
"config_restricted_column_value"
value=
"{{ conf.config_restricted_column_value if conf.config_restricted_column_value != None }}"
autocomplete=
"off"
>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -134,14 +145,9 @@
...
@@ -134,14 +145,9 @@
<input
type=
"checkbox"
name=
"Show_detail_random"
id=
"Show_detail_random"
{%
if
conf
.
show_detail_random
()
%}
checked
{%
endif
%}
>
<input
type=
"checkbox"
name=
"Show_detail_random"
id=
"Show_detail_random"
{%
if
conf
.
show_detail_random
()
%}
checked
{%
endif
%}
>
<label
for=
"Show_detail_random"
>
{{_('Show random books in detail view')}}
</label>
<label
for=
"Show_detail_random"
>
{{_('Show random books in detail view')}}
</label>
</div>
</div>
<div
class=
"form-group"
>
<input
type=
"checkbox"
name=
"Show_mature_content"
id=
"Show_mature_content"
{%
if
conf
.
show_mature_content
()
%}
checked
{%
endif
%}
>
<label
for=
"Show_mature_content"
>
{{_('Show mature content')}}
</label>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"col-sm-12"
>
<div
class=
"col-sm-12"
>
<button
type=
"submit"
name=
"submit"
class=
"btn btn-default"
>
{{_('Submit')}}
</button>
<button
type=
"submit"
name=
"submit"
class=
"btn btn-default"
>
{{_('Submit')}}
</button>
<a
href=
"{{ url_for('admin.admin') }}"
class=
"btn btn-default"
>
{{_('Back')}}
</a>
<a
href=
"{{ url_for('admin.admin') }}"
class=
"btn btn-default"
>
{{_('Back')}}
</a>
...
...
cps/templates/user_edit.html
View file @
1c18a788
...
@@ -14,9 +14,9 @@
...
@@ -14,9 +14,9 @@
<input
type=
"email"
class=
"form-control"
name=
"email"
id=
"email"
value=
"{{ content.email if content.email != None }}"
autocomplete=
"off"
>
<input
type=
"email"
class=
"form-control"
name=
"email"
id=
"email"
value=
"{{ content.email if content.email != None }}"
autocomplete=
"off"
>
</div>
</div>
{% if ( g.user and g.user.role_passwd() or g.user.role_admin() ) and not content.role_anonymous() %}
{% if ( g.user and g.user.role_passwd() or g.user.role_admin() ) and not content.role_anonymous() %}
{% if g.user and g.user.role_admin() and
g.allow_registration and not new_user and not profile
%}
{% if g.user and g.user.role_admin() and
not new_user and not profile and ( mail_configured and content.email if content.email != None )
%}
<div
class=
"btn btn-default"
id=
"resend_password"
><a
href=
"{{url_for('admin.reset_password', user_id = content.id) }}"
>
{{_('Reset user Password')}}
</a></div>
<div
class=
"btn btn-default"
id=
"resend_password"
><a
href=
"{{url_for('admin.reset_
user_
password', user_id = content.id) }}"
>
{{_('Reset user Password')}}
</a></div>
{% e
lse
%}
{% e
ndif
%}
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"password"
>
{{_('Password')}}
</label>
<label
for=
"password"
>
{{_('Password')}}
</label>
<input
type=
"password"
class=
"form-control"
name=
"password"
id=
"password"
value=
""
autocomplete=
"off"
>
<input
type=
"password"
class=
"form-control"
name=
"password"
id=
"password"
value=
""
autocomplete=
"off"
>
...
@@ -39,7 +39,14 @@
...
@@ -39,7 +39,14 @@
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
<div
class=
"form-group"
>
<label
for=
"restricted_tags"
>
{{_('Restricted Tags')}}
</label>
<input
type=
"text"
class=
"form-control"
name=
"restricted_tags"
id=
"restricted_tags"
value=
"{{ content.restricted_tags if content.restricted_tags != None }}"
autocomplete=
"off"
>
</div>
<div
class=
"form-group"
>
<label
for=
"restricted_column_value"
>
{{_('Restricted Column Content')}}
</label>
<input
type=
"text"
class=
"form-control"
name=
"restricted_column_value"
id=
"restricted_column_value"
value=
"{{ content.restricted_column_value if content.restricted_column_value != None }}"
autocomplete=
"off"
>
</div>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<label
for=
"default_language"
>
{{_('Show books with language')}}
</label>
<label
for=
"default_language"
>
{{_('Show books with language')}}
</label>
<select
name=
"default_language"
id=
"default_language"
class=
"form-control"
>
<select
name=
"default_language"
id=
"default_language"
class=
"form-control"
>
...
@@ -49,7 +56,6 @@
...
@@ -49,7 +56,6 @@
{% endfor %}
{% endfor %}
</select>
</select>
</div>
</div>
{% if registered_oauth.keys()| length > 0 %}
{% if registered_oauth.keys()| length > 0 %}
{% for id, name in registered_oauth.items() %}
{% for id, name in registered_oauth.items() %}
<div
class=
"form-group"
>
<div
class=
"form-group"
>
...
@@ -61,9 +67,7 @@
...
@@ -61,9 +67,7 @@
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
</div>
</div>
{% endif %}
{% endif %}
<div
class=
"col-sm-6"
>
<div
class=
"col-sm-6"
>
{% for element in sidebar %}
{% for element in sidebar %}
{% if element['config_show'] %}
{% if element['config_show'] %}
...
@@ -87,10 +91,10 @@
...
@@ -87,10 +91,10 @@
<label
for=
"admin_role"
>
{{_('Admin user')}}
</label>
<label
for=
"admin_role"
>
{{_('Admin user')}}
</label>
</div>
</div>
{% endif %}
{% endif %}
<div
class=
"form-group"
>
<
!--
div class="form-group">
<input type="checkbox" name="Show_mature_content" id="Show_mature_content" {% if content.mature_content %}checked{% endif %}>
<input type="checkbox" name="Show_mature_content" id="Show_mature_content" {% if content.mature_content %}checked{% endif %}>
<label for="Show_mature_content">{{_('Show mature content')}}</label>
<label for="Show_mature_content">{{_('Show mature content')}}</label>
</div>
</div
--
>
<div
class=
"form-group"
>
<div
class=
"form-group"
>
<input
type=
"checkbox"
name=
"download_role"
id=
"download_role"
{%
if
content
.
role_download
()
%}
checked
{%
endif
%}
>
<input
type=
"checkbox"
name=
"download_role"
id=
"download_role"
{%
if
content
.
role_download
()
%}
checked
{%
endif
%}
>
<label
for=
"download_role"
>
{{_('Allow Downloads')}}
</label>
<label
for=
"download_role"
>
{{_('Allow Downloads')}}
</label>
...
...
cps/ub.py
View file @
1c18a788
...
@@ -157,6 +157,27 @@ class UserBase:
...
@@ -157,6 +157,27 @@ class UserBase:
def
show_detail_random
(
self
):
def
show_detail_random
(
self
):
return
self
.
check_visibility
(
constants
.
DETAIL_RANDOM
)
return
self
.
check_visibility
(
constants
.
DETAIL_RANDOM
)
def
list_restricted_tags
(
self
):
# return [line in (line.strip("," ) for line in self.restricted_tags.split(",") if not line.startswith('~'))]
# return [line in (line.strip(",") for line in self.restricted_tags.split(",") if not line.startswith('~'))]
#return [p.strip(",") for p in self.restricted_tags.split(",") if not(p.startswith(starter))]
'''for line in self.restricted_tags.split(","):
if not line.startswith('~'):
continue'''
mct
=
self
.
restricted_tags
.
split
(
","
)
return
[
t
.
strip
()
for
t
in
mct
]
def
list_allowed_tags
(
self
):
# return [line in (line.strip("," ) for line in self.restricted_tags.split(",") if not line.startswith('~'))]
# return [line in (line.strip(",") for line in self.restricted_tags.split(",") if not line.startswith('~'))]
#return [p.strip(",") for p in self.restricted_tags.split(",") if not(p.startswith(starter))]
'''for line in self.restricted_tags.split(","):
if not line.startswith('~'):
continue'''
mct
=
self
.
allowed_tags
.
split
(
","
)
return
[
t
.
strip
()
for
t
in
mct
]
def
__repr__
(
self
):
def
__repr__
(
self
):
return
'<User
%
r>'
%
self
.
nickname
return
'<User
%
r>'
%
self
.
nickname
...
@@ -178,7 +199,11 @@ class User(UserBase, Base):
...
@@ -178,7 +199,11 @@ class User(UserBase, Base):
locale
=
Column
(
String
(
2
),
default
=
"en"
)
locale
=
Column
(
String
(
2
),
default
=
"en"
)
sidebar_view
=
Column
(
Integer
,
default
=
1
)
sidebar_view
=
Column
(
Integer
,
default
=
1
)
default_language
=
Column
(
String
(
3
),
default
=
"all"
)
default_language
=
Column
(
String
(
3
),
default
=
"all"
)
mature_content
=
Column
(
Boolean
,
default
=
True
)
# mature_content = Column(Boolean, default=True)
restricted_tags
=
Column
(
String
,
default
=
""
)
allowed_tags
=
Column
(
String
,
default
=
""
)
restricted_column_value
=
Column
(
String
,
default
=
""
)
allowed_column_value
=
Column
(
String
,
default
=
""
)
if
oauth_support
:
if
oauth_support
:
...
@@ -212,11 +237,13 @@ class Anonymous(AnonymousUserMixin, UserBase):
...
@@ -212,11 +237,13 @@ class Anonymous(AnonymousUserMixin, UserBase):
self
.
sidebar_view
=
data
.
sidebar_view
self
.
sidebar_view
=
data
.
sidebar_view
self
.
default_language
=
data
.
default_language
self
.
default_language
=
data
.
default_language
self
.
locale
=
data
.
locale
self
.
locale
=
data
.
locale
self
.
mature_content
=
data
.
mature_content
#
self.mature_content = data.mature_content
self
.
kindle_mail
=
data
.
kindle_mail
self
.
kindle_mail
=
data
.
kindle_mail
self
.
restricted_tags
=
data
.
restricted_tags
# settings = session.query(config).first()
self
.
allowed_tags
=
data
.
allowed_tags
# self.anon_browse = settings.config_anonbrowse
# self.restricted_column = data.restricted_column
self
.
restricted_column_value
=
data
.
restricted_column_value
self
.
allowed_column_value
=
data
.
allowed_column_value
def
role_admin
(
self
):
def
role_admin
(
self
):
return
False
return
False
...
@@ -370,11 +397,19 @@ def migrate_Database(session):
...
@@ -370,11 +397,19 @@ def migrate_Database(session):
'side_autor'
:
constants
.
SIDEBAR_AUTHOR
,
'side_autor'
:
constants
.
SIDEBAR_AUTHOR
,
'detail_random'
:
constants
.
DETAIL_RANDOM
})
'detail_random'
:
constants
.
DETAIL_RANDOM
})
session
.
commit
()
session
.
commit
()
try
:
'''
try:
session.query(exists().where(User.mature_content)).scalar()
session.query(exists().where(User.mature_content)).scalar()
except exc.OperationalError:
except exc.OperationalError:
conn = engine.connect()
conn = engine.connect()
conn
.
execute
(
"ALTER TABLE user ADD column `mature_content` INTEGER DEFAULT 1"
)
conn.execute("ALTER TABLE user ADD column `mature_content` INTEGER DEFAULT 1")'''
try
:
session
.
query
(
exists
()
.
where
(
User
.
restricted_tags
))
.
scalar
()
except
exc
.
OperationalError
:
# Database is not compatible, some columns are missing
conn
=
engine
.
connect
()
conn
.
execute
(
"ALTER TABLE user ADD column `restricted_tags` String DEFAULT ''"
)
conn
.
execute
(
"ALTER TABLE user ADD column `allowed_tags` String DEFAULT ''"
)
conn
.
execute
(
"ALTER TABLE user ADD column `restricted_column_value` DEFAULT ''"
)
conn
.
execute
(
"ALTER TABLE user ADD column `allowed_column_value` DEFAULT ''"
)
if
session
.
query
(
User
)
.
filter
(
User
.
role
.
op
(
'&'
)(
constants
.
ROLE_ANONYMOUS
)
==
constants
.
ROLE_ANONYMOUS
)
.
first
()
is
None
:
if
session
.
query
(
User
)
.
filter
(
User
.
role
.
op
(
'&'
)(
constants
.
ROLE_ANONYMOUS
)
==
constants
.
ROLE_ANONYMOUS
)
.
first
()
is
None
:
create_anonymous_user
(
session
)
create_anonymous_user
(
session
)
try
:
try
:
...
...
cps/web.py
View file @
1c18a788
...
@@ -229,7 +229,6 @@ def edit_required(f):
...
@@ -229,7 +229,6 @@ def edit_required(f):
return
inner
return
inner
# ################################### Helper functions ################################################################
# ################################### Helper functions ################################################################
...
@@ -1089,7 +1088,7 @@ def register():
...
@@ -1089,7 +1088,7 @@ def register():
content
.
password
=
generate_password_hash
(
password
)
content
.
password
=
generate_password_hash
(
password
)
content
.
role
=
config
.
config_default_role
content
.
role
=
config
.
config_default_role
content
.
sidebar_view
=
config
.
config_default_show
content
.
sidebar_view
=
config
.
config_default_show
content
.
mature_content
=
bool
(
config
.
config_default_show
&
constants
.
MATURE_CONTENT
)
#
content.mature_content = bool(config.config_default_show & constants.MATURE_CONTENT)
try
:
try
:
ub
.
session
.
add
(
content
)
ub
.
session
.
add
(
content
)
ub
.
session
.
commit
()
ub
.
session
.
commit
()
...
@@ -1290,8 +1289,8 @@ def profile():
...
@@ -1290,8 +1289,8 @@ def profile():
current_user
.
password
=
generate_password_hash
(
to_save
[
"password"
])
current_user
.
password
=
generate_password_hash
(
to_save
[
"password"
])
if
"kindle_mail"
in
to_save
and
to_save
[
"kindle_mail"
]
!=
current_user
.
kindle_mail
:
if
"kindle_mail"
in
to_save
and
to_save
[
"kindle_mail"
]
!=
current_user
.
kindle_mail
:
current_user
.
kindle_mail
=
to_save
[
"kindle_mail"
]
current_user
.
kindle_mail
=
to_save
[
"kindle_mail"
]
if
"
kobo_user_key"
in
to_save
and
to_save
[
"kobo_user_key"
]
:
if
"
allowed_tags"
in
to_save
and
to_save
[
"allowed_tags"
]
!=
current_user
.
allowed_tags
:
current_user
.
kobo_user_key_hash
=
generate_password_hash
(
to_save
[
"kobo_user_key"
]
)
current_user
.
allowed_tags
=
to_save
[
"allowed_tags"
]
.
strip
(
)
if
to_save
[
"email"
]
and
to_save
[
"email"
]
!=
current_user
.
email
:
if
to_save
[
"email"
]
and
to_save
[
"email"
]
!=
current_user
.
email
:
if
config
.
config_public_reg
and
not
check_valid_domain
(
to_save
[
"email"
]):
if
config
.
config_public_reg
and
not
check_valid_domain
(
to_save
[
"email"
]):
flash
(
_
(
u"E-mail is not from valid domain"
),
category
=
"error"
)
flash
(
_
(
u"E-mail is not from valid domain"
),
category
=
"error"
)
...
@@ -1329,7 +1328,7 @@ def profile():
...
@@ -1329,7 +1328,7 @@ def profile():
if
"Show_detail_random"
in
to_save
:
if
"Show_detail_random"
in
to_save
:
current_user
.
sidebar_view
+=
constants
.
DETAIL_RANDOM
current_user
.
sidebar_view
+=
constants
.
DETAIL_RANDOM
current_user
.
mature_content
=
"Show_mature_content"
in
to_save
#
current_user.mature_content = "Show_mature_content" in to_save
try
:
try
:
ub
.
session
.
commit
()
ub
.
session
.
commit
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment