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
2a63c357
Commit
2a63c357
authored
Dec 27, 2020
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Activate serverside filepicker with parameter in unconfigured state
parent
27dcbcd7
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
38 additions
and
19 deletions
+38
-19
admin.py
cps/admin.py
+26
-18
cli.py
cps/cli.py
+4
-0
config_edit.html
cps/templates/config_edit.html
+8
-1
No files found.
cps/admin.py
View file @
2a63c357
...
@@ -39,6 +39,7 @@ from sqlalchemy.exc import IntegrityError, OperationalError, InvalidRequestError
...
@@ -39,6 +39,7 @@ from sqlalchemy.exc import IntegrityError, OperationalError, InvalidRequestError
from
sqlalchemy.sql.expression
import
func
,
or_
from
sqlalchemy.sql.expression
import
func
,
or_
from
.
import
constants
,
logger
,
helper
,
services
from
.
import
constants
,
logger
,
helper
,
services
from
.cli
import
filepicker
from
.
import
db
,
calibre_db
,
ub
,
web_server
,
get_locale
,
config
,
updater_thread
,
babel
,
gdriveutils
from
.
import
db
,
calibre_db
,
ub
,
web_server
,
get_locale
,
config
,
updater_thread
,
babel
,
gdriveutils
from
.helper
import
check_valid_domain
,
send_test_mail
,
reset_password
,
generate_password_hash
from
.helper
import
check_valid_domain
,
send_test_mail
,
reset_password
,
generate_password_hash
from
.gdriveutils
import
is_gdrive_ready
,
gdrive_support
from
.gdriveutils
import
is_gdrive_ready
,
gdrive_support
...
@@ -118,7 +119,7 @@ def before_request():
...
@@ -118,7 +119,7 @@ def before_request():
g
.
shelves_access
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
g
.
shelves_access
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
or_
(
ub
.
Shelf
.
is_public
==
1
,
ub
.
Shelf
.
user_id
==
current_user
.
id
))
.
order_by
(
ub
.
Shelf
.
name
)
.
all
()
or_
(
ub
.
Shelf
.
is_public
==
1
,
ub
.
Shelf
.
user_id
==
current_user
.
id
))
.
order_by
(
ub
.
Shelf
.
name
)
.
all
()
if
not
config
.
db_configured
and
request
.
endpoint
not
in
(
if
not
config
.
db_configured
and
request
.
endpoint
not
in
(
'admin.basic_configuration'
,
'login'
)
and
'/static/'
not
in
request
.
path
:
'admin.basic_configuration'
,
'login'
,
'admin.config_pathchooser'
)
and
'/static/'
not
in
request
.
path
:
return
redirect
(
url_for
(
'admin.basic_configuration'
))
return
redirect
(
url_for
(
'admin.basic_configuration'
))
...
@@ -192,7 +193,7 @@ def admin():
...
@@ -192,7 +193,7 @@ def admin():
@
admin_required
@
admin_required
def
configuration
():
def
configuration
():
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
return
_configuration_update_helper
()
return
_configuration_update_helper
(
True
)
return
_configuration_result
()
return
_configuration_result
()
...
@@ -587,10 +588,11 @@ def list_restriction(res_type):
...
@@ -587,10 +588,11 @@ def list_restriction(res_type):
return
response
return
response
@
admi
.
route
(
"/basicconfig/pathchooser/"
)
@
admi
.
route
(
"/basicconfig/pathchooser/"
)
# @unconfigured
@
unconfigured
@
login_required
def
config_pathchooser
():
def
config_pathchooser
():
return
pathchooser
()
if
filepicker
:
return
pathchooser
()
abort
(
403
)
@
admi
.
route
(
"/ajax/pathchooser/"
)
@
admi
.
route
(
"/ajax/pathchooser/"
)
@
login_required
@
login_required
...
@@ -599,7 +601,7 @@ def ajax_pathchooser():
...
@@ -599,7 +601,7 @@ def ajax_pathchooser():
return
pathchooser
()
return
pathchooser
()
def
pathchooser
():
def
pathchooser
():
browse_for
=
"folder"
# if request.endpoint == "admin.pathchooser" else "file"
browse_for
=
"folder"
folder_only
=
request
.
args
.
get
(
'folder'
,
False
)
==
"true"
folder_only
=
request
.
args
.
get
(
'folder'
,
False
)
==
"true"
file_filter
=
request
.
args
.
get
(
'filter'
,
""
)
file_filter
=
request
.
args
.
get
(
'filter'
,
""
)
path
=
os
.
path
.
normpath
(
request
.
args
.
get
(
'path'
,
""
))
path
=
os
.
path
.
normpath
(
request
.
args
.
get
(
'path'
,
""
))
...
@@ -685,8 +687,8 @@ def pathchooser():
...
@@ -685,8 +687,8 @@ def pathchooser():
def
basic_configuration
():
def
basic_configuration
():
logout_user
()
logout_user
()
if
request
.
method
==
"POST"
:
if
request
.
method
==
"POST"
:
return
_configuration_update_helper
()
return
_configuration_update_helper
(
configured
=
filepicker
)
return
_configuration_result
()
return
_configuration_result
(
configured
=
filepicker
)
def
_config_int
(
to_save
,
x
,
func
=
int
):
def
_config_int
(
to_save
,
x
,
func
=
int
):
...
@@ -841,7 +843,7 @@ def _configuration_ldap_helper(to_save, gdriveError):
...
@@ -841,7 +843,7 @@ def _configuration_ldap_helper(to_save, gdriveError):
return
reboot_required
,
None
return
reboot_required
,
None
def
_configuration_update_helper
():
def
_configuration_update_helper
(
configured
):
reboot_required
=
False
reboot_required
=
False
db_change
=
False
db_change
=
False
to_save
=
request
.
form
.
to_dict
()
to_save
=
request
.
form
.
to_dict
()
...
@@ -861,11 +863,15 @@ def _configuration_update_helper():
...
@@ -861,11 +863,15 @@ def _configuration_update_helper():
reboot_required
|=
_config_string
(
to_save
,
"config_keyfile"
)
reboot_required
|=
_config_string
(
to_save
,
"config_keyfile"
)
if
config
.
config_keyfile
and
not
os
.
path
.
isfile
(
config
.
config_keyfile
):
if
config
.
config_keyfile
and
not
os
.
path
.
isfile
(
config
.
config_keyfile
):
return
_configuration_result
(
_
(
'Keyfile Location is not Valid, Please Enter Correct Path'
),
gdriveError
)
return
_configuration_result
(
_
(
'Keyfile Location is not Valid, Please Enter Correct Path'
),
gdriveError
,
configured
)
reboot_required
|=
_config_string
(
to_save
,
"config_certfile"
)
reboot_required
|=
_config_string
(
to_save
,
"config_certfile"
)
if
config
.
config_certfile
and
not
os
.
path
.
isfile
(
config
.
config_certfile
):
if
config
.
config_certfile
and
not
os
.
path
.
isfile
(
config
.
config_certfile
):
return
_configuration_result
(
_
(
'Certfile Location is not Valid, Please Enter Correct Path'
),
gdriveError
)
return
_configuration_result
(
_
(
'Certfile Location is not Valid, Please Enter Correct Path'
),
gdriveError
,
configured
)
_config_checkbox_int
(
to_save
,
"config_uploading"
)
_config_checkbox_int
(
to_save
,
"config_uploading"
)
# Reboot on config_anonbrowse with enabled ldap, as decoraters are changed in this case
# Reboot on config_anonbrowse with enabled ldap, as decoraters are changed in this case
...
@@ -930,10 +936,10 @@ def _configuration_update_helper():
...
@@ -930,10 +936,10 @@ def _configuration_update_helper():
if
"config_rarfile_location"
in
to_save
:
if
"config_rarfile_location"
in
to_save
:
unrar_status
=
helper
.
check_unrar
(
config
.
config_rarfile_location
)
unrar_status
=
helper
.
check_unrar
(
config
.
config_rarfile_location
)
if
unrar_status
:
if
unrar_status
:
return
_configuration_result
(
unrar_status
,
gdriveError
)
return
_configuration_result
(
unrar_status
,
gdriveError
,
configured
)
except
(
OperationalError
,
InvalidRequestError
):
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
ub
.
session
.
rollback
()
_configuration_result
(
_
(
u"Settings DB is not Writeable"
),
gdriveError
)
_configuration_result
(
_
(
u"Settings DB is not Writeable"
),
gdriveError
,
configured
)
try
:
try
:
metadata_db
=
os
.
path
.
join
(
config
.
config_calibre_dir
,
"metadata.db"
)
metadata_db
=
os
.
path
.
join
(
config
.
config_calibre_dir
,
"metadata.db"
)
...
@@ -941,11 +947,13 @@ def _configuration_update_helper():
...
@@ -941,11 +947,13 @@ def _configuration_update_helper():
gdriveutils
.
downloadFile
(
None
,
"metadata.db"
,
metadata_db
)
gdriveutils
.
downloadFile
(
None
,
"metadata.db"
,
metadata_db
)
db_change
=
True
db_change
=
True
except
Exception
as
e
:
except
Exception
as
e
:
return
_configuration_result
(
'
%
s'
%
e
,
gdriveError
)
return
_configuration_result
(
'
%
s'
%
e
,
gdriveError
,
configured
)
if
db_change
:
if
db_change
:
if
not
calibre_db
.
setup_db
(
config
,
ub
.
app_DB_path
):
if
not
calibre_db
.
setup_db
(
config
,
ub
.
app_DB_path
):
return
_configuration_result
(
_
(
'DB Location is not Valid, Please Enter Correct Path'
),
gdriveError
)
return
_configuration_result
(
_
(
'DB Location is not Valid, Please Enter Correct Path'
),
gdriveError
,
configured
)
if
not
os
.
access
(
os
.
path
.
join
(
config
.
config_calibre_dir
,
"metadata.db"
),
os
.
W_OK
):
if
not
os
.
access
(
os
.
path
.
join
(
config
.
config_calibre_dir
,
"metadata.db"
),
os
.
W_OK
):
flash
(
_
(
u"DB is not Writeable"
),
category
=
"warning"
)
flash
(
_
(
u"DB is not Writeable"
),
category
=
"warning"
)
...
@@ -954,10 +962,10 @@ def _configuration_update_helper():
...
@@ -954,10 +962,10 @@ def _configuration_update_helper():
if
reboot_required
:
if
reboot_required
:
web_server
.
stop
(
True
)
web_server
.
stop
(
True
)
return
_configuration_result
(
None
,
gdriveError
)
return
_configuration_result
(
None
,
gdriveError
,
configured
)
def
_configuration_result
(
error_flash
=
None
,
gdriveError
=
None
):
def
_configuration_result
(
error_flash
=
None
,
gdriveError
=
None
,
configured
=
True
):
gdrive_authenticate
=
not
is_gdrive_ready
()
gdrive_authenticate
=
not
is_gdrive_ready
()
gdrivefolders
=
[]
gdrivefolders
=
[]
if
gdriveError
is
None
:
if
gdriveError
is
None
:
...
@@ -978,7 +986,7 @@ def _configuration_result(error_flash=None, gdriveError=None):
...
@@ -978,7 +986,7 @@ def _configuration_result(error_flash=None, gdriveError=None):
return
render_title_template
(
"config_edit.html"
,
config
=
config
,
provider
=
oauthblueprints
,
return
render_title_template
(
"config_edit.html"
,
config
=
config
,
provider
=
oauthblueprints
,
show_back_button
=
show_back_button
,
show_login_button
=
show_login_button
,
show_back_button
=
show_back_button
,
show_login_button
=
show_login_button
,
show_authenticate_google_drive
=
gdrive_authenticate
,
show_authenticate_google_drive
=
gdrive_authenticate
,
filepicker
=
configured
,
gdriveError
=
gdriveError
,
gdrivefolders
=
gdrivefolders
,
feature_support
=
feature_support
,
gdriveError
=
gdriveError
,
gdrivefolders
=
gdrivefolders
,
feature_support
=
feature_support
,
title
=
_
(
u"Basic Configuration"
),
page
=
"config"
)
title
=
_
(
u"Basic Configuration"
),
page
=
"config"
)
...
...
cps/cli.py
View file @
2a63c357
...
@@ -45,6 +45,7 @@ parser.add_argument('-v', '--version', action='version', help='Shows version num
...
@@ -45,6 +45,7 @@ parser.add_argument('-v', '--version', action='version', help='Shows version num
version
=
version_info
())
version
=
version_info
())
parser
.
add_argument
(
'-i'
,
metavar
=
'ip-address'
,
help
=
'Server IP-Address 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'
)
parser
.
add_argument
(
'-f'
,
action
=
'store_true'
,
help
=
'Enables filepicker in unconfigured mode'
)
args
=
parser
.
parse_args
()
args
=
parser
.
parse_args
()
if
sys
.
version_info
<
(
3
,
0
):
if
sys
.
version_info
<
(
3
,
0
):
...
@@ -110,3 +111,6 @@ if ipadress:
...
@@ -110,3 +111,6 @@ if ipadress:
# handle and check user password argument
# handle and check user password argument
user_password
=
args
.
s
or
None
user_password
=
args
.
s
or
None
# Handles enableing of filepicker
filepicker
=
args
.
f
or
None
cps/templates/config_edit.html
View file @
2a63c357
...
@@ -16,12 +16,19 @@
...
@@ -16,12 +16,19 @@
<div
id=
"collapseOne"
class=
"panel-collapse collapse in"
>
<div
id=
"collapseOne"
class=
"panel-collapse collapse in"
>
<div
class=
"panel-body"
>
<div
class=
"panel-body"
>
<label
for=
"config_calibre_dir"
>
{{_('Location of Calibre Database')}}
</label>
<label
for=
"config_calibre_dir"
>
{{_('Location of Calibre Database')}}
</label>
<div
class=
"form-group required
input-group
"
>
<div
class=
"form-group required
{% if filepicker %} input-group{% endif %}
"
>
<input
type=
"text"
class=
"form-control"
id=
"config_calibre_dir"
name=
"config_calibre_dir"
value=
"{% if config.config_calibre_dir != None %}{{ config.config_calibre_dir }}{% endif %}"
autocomplete=
"off"
>
<input
type=
"text"
class=
"form-control"
id=
"config_calibre_dir"
name=
"config_calibre_dir"
value=
"{% if config.config_calibre_dir != None %}{{ config.config_calibre_dir }}{% endif %}"
autocomplete=
"off"
>
{% if filepicker %}
<span
class=
"input-group-btn"
>
<span
class=
"input-group-btn"
>
<button
type=
"button"
data-toggle=
"modal"
id=
"converter_modal_path"
data-link=
"config_calibre_dir"
data-filefilter=
"metadata.db"
data-target=
"#fileModal"
id=
"library_path"
class=
"btn btn-default"
><span
class=
"glyphicon glyphicon-folder-open"
></span></button>
<button
type=
"button"
data-toggle=
"modal"
id=
"converter_modal_path"
data-link=
"config_calibre_dir"
data-filefilter=
"metadata.db"
data-target=
"#fileModal"
id=
"library_path"
class=
"btn btn-default"
><span
class=
"glyphicon glyphicon-folder-open"
></span></button>
</span>
</span>
{% endif %}
</div>
</div>
{% if not filepicker %}
<div
class=
"form-group"
>
<label
id=
"filepicker-hint"
>
{{_('To activate serverside filepicker start Calibre-Web with -f optionn')}}
</label>
</div>
{% endif %}
{% if feature_support['gdrive'] %}
{% if feature_support['gdrive'] %}
<div
class=
"form-group required"
>
<div
class=
"form-group required"
>
<input
type=
"checkbox"
id=
"config_use_google_drive"
name=
"config_use_google_drive"
data-control=
"gdrive_settings"
{%
if
config
.
config_use_google_drive
%}
checked
{%
endif
%}
>
<input
type=
"checkbox"
id=
"config_use_google_drive"
name=
"config_use_google_drive"
data-control=
"gdrive_settings"
{%
if
config
.
config_use_google_drive
%}
checked
{%
endif
%}
>
...
...
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