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
88d2c60e
Commit
88d2c60e
authored
5 years ago
by
Ozzieisaacs
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Catch some errors related to non writable settings db
parent
a0b8cc21
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
141 additions
and
80 deletions
+141
-80
admin.py
cps/admin.py
+78
-62
simpleldap.py
cps/services/simpleldap.py
+0
-1
shelf.py
cps/shelf.py
+55
-14
ub.py
cps/ub.py
+8
-3
No files found.
cps/admin.py
View file @
88d2c60e
...
...
@@ -34,7 +34,7 @@ from flask import Blueprint, flash, redirect, url_for, abort, request, make_resp
from
flask_login
import
login_required
,
current_user
,
logout_user
from
flask_babel
import
gettext
as
_
from
sqlalchemy
import
and_
from
sqlalchemy.exc
import
IntegrityError
from
sqlalchemy.exc
import
IntegrityError
,
OperationalError
,
InvalidRequestError
from
sqlalchemy.sql.expression
import
func
from
.
import
constants
,
logger
,
helper
,
services
...
...
@@ -615,6 +615,7 @@ def _configuration_update_helper():
to_save
=
request
.
form
.
to_dict
()
to_save
[
'config_calibre_dir'
]
=
re
.
sub
(
'[
\\
/]metadata
\
.db$'
,
''
,
to_save
[
'config_calibre_dir'
],
flags
=
re
.
IGNORECASE
)
try
:
db_change
|=
_config_string
(
to_save
,
"config_calibre_dir"
)
# Google drive setup
...
...
@@ -654,6 +655,7 @@ def _configuration_update_helper():
reboot_required
|=
reboot
# Remote login configuration
_config_checkbox
(
to_save
,
"config_remote_login"
)
if
not
config
.
config_remote_login
:
ub
.
session
.
query
(
ub
.
RemoteAuthToken
)
.
filter
(
ub
.
RemoteAuthToken
.
token_type
==
0
)
.
delete
()
...
...
@@ -687,6 +689,9 @@ def _configuration_update_helper():
unrar_status
=
helper
.
check_unrar
(
config
.
config_rarfile_location
)
if
unrar_status
:
return
_configuration_result
(
unrar_status
,
gdriveError
)
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
_configuration_result
(
_
(
u"Settings DB is not Writeable"
),
gdriveError
)
try
:
metadata_db
=
os
.
path
.
join
(
config
.
config_calibre_dir
,
"metadata.db"
)
...
...
@@ -783,6 +788,9 @@ def _handle_new_user(to_save, content,languages, translations, kobo_support):
except
IntegrityError
:
ub
.
session
.
rollback
()
flash
(
_
(
u"Found an existing account for this e-mail address or nickname."
),
category
=
"error"
)
except
OperationalError
:
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
def
_handle_edit_user
(
to_save
,
content
,
languages
,
translations
,
kobo_support
,
downloads
):
...
...
@@ -872,6 +880,9 @@ def _handle_edit_user(to_save, content,languages, translations, kobo_support, do
except
IntegrityError
:
ub
.
session
.
rollback
()
flash
(
_
(
u"An unknown error occured."
),
category
=
"error"
)
except
OperationalError
:
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
@
admi
.
route
(
"/admin/user/new"
,
methods
=
[
"GET"
,
"POST"
])
...
...
@@ -916,7 +927,12 @@ def update_mailsettings():
_config_string
(
to_save
,
"mail_password"
)
_config_string
(
to_save
,
"mail_from"
)
_config_int
(
to_save
,
"mail_size"
,
lambda
y
:
int
(
y
)
*
1024
*
1024
)
try
:
config
.
save
()
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
return
edit_mailsettings
()
if
to_save
.
get
(
"test"
):
if
current_user
.
email
:
...
...
This diff is collapsed.
Click to expand it.
cps/services/simpleldap.py
View file @
88d2c60e
...
...
@@ -64,7 +64,6 @@ def init_app(app, config):
app
.
config
[
'LDAP_OPENLDAP'
]
=
bool
(
config
.
config_ldap_openldap
)
app
.
config
[
'LDAP_GROUP_OBJECT_FILTER'
]
=
config
.
config_ldap_group_object_filter
app
.
config
[
'LDAP_GROUP_MEMBERS_FIELD'
]
=
config
.
config_ldap_group_members_field
# app.config['LDAP_CUSTOM_OPTIONS'] = {'OPT_NETWORK_TIMEOUT': 10}
_ldap
.
init_app
(
app
)
...
...
This diff is collapsed.
Click to expand it.
cps/shelf.py
View file @
88d2c60e
...
...
@@ -27,8 +27,9 @@ from flask import Blueprint, request, flash, redirect, url_for
from
flask_babel
import
gettext
as
_
from
flask_login
import
login_required
,
current_user
from
sqlalchemy.sql.expression
import
func
from
sqlalchemy.exc
import
OperationalError
,
InvalidRequestError
from
.
import
logger
,
ub
,
searched_ids
,
db
,
calibre_db
from
.
import
logger
,
ub
,
searched_ids
,
calibre_db
from
.web
import
render_title_template
...
...
@@ -91,8 +92,16 @@ def add_to_shelf(shelf_id, book_id):
shelf
.
books
.
append
(
ub
.
BookShelf
(
shelf
=
shelf
.
id
,
book_id
=
book_id
,
order
=
maxOrder
+
1
))
shelf
.
last_modified
=
datetime
.
utcnow
()
try
:
ub
.
session
.
merge
(
shelf
)
ub
.
session
.
commit
()
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
if
"HTTP_REFERER"
in
request
.
environ
:
return
redirect
(
request
.
environ
[
"HTTP_REFERER"
])
else
:
return
redirect
(
url_for
(
'web.index'
))
if
not
xhr
:
flash
(
_
(
u"Book has been added to shelf:
%(sname)
s"
,
sname
=
shelf
.
name
),
category
=
"success"
)
if
"HTTP_REFERER"
in
request
.
environ
:
...
...
@@ -143,9 +152,13 @@ def search_to_shelf(shelf_id):
maxOrder
=
maxOrder
+
1
shelf
.
books
.
append
(
ub
.
BookShelf
(
shelf
=
shelf
.
id
,
book_id
=
book
,
order
=
maxOrder
))
shelf
.
last_modified
=
datetime
.
utcnow
()
try
:
ub
.
session
.
merge
(
shelf
)
ub
.
session
.
commit
()
flash
(
_
(
u"Books have been added to shelf:
%(sname)
s"
,
sname
=
shelf
.
name
),
category
=
"success"
)
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
else
:
flash
(
_
(
u"Could not add books to shelf:
%(sname)
s"
,
sname
=
shelf
.
name
),
category
=
"error"
)
return
redirect
(
url_for
(
'web.index'
))
...
...
@@ -180,10 +193,17 @@ def remove_from_shelf(shelf_id, book_id):
return
redirect
(
url_for
(
'web.index'
))
return
"Book already removed from shelf"
,
410
try
:
ub
.
session
.
delete
(
book_shelf
)
shelf
.
last_modified
=
datetime
.
utcnow
()
ub
.
session
.
commit
()
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
if
"HTTP_REFERER"
in
request
.
environ
:
return
redirect
(
request
.
environ
[
"HTTP_REFERER"
])
else
:
return
redirect
(
url_for
(
'web.index'
))
if
not
xhr
:
flash
(
_
(
u"Book has been removed from shelf:
%(sname)
s"
,
sname
=
shelf
.
name
),
category
=
"success"
)
if
"HTTP_REFERER"
in
request
.
environ
:
...
...
@@ -235,7 +255,11 @@ def create_shelf():
ub
.
session
.
commit
()
flash
(
_
(
u"Shelf
%(title)
s created"
,
title
=
to_save
[
"title"
]),
category
=
"success"
)
return
redirect
(
url_for
(
'shelf.show_shelf'
,
shelf_id
=
shelf
.
id
))
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
except
Exception
:
ub
.
session
.
rollback
()
flash
(
_
(
u"There was an error"
),
category
=
"error"
)
return
render_title_template
(
'shelf_edit.html'
,
shelf
=
shelf
,
title
=
_
(
u"Create a Shelf"
),
page
=
"shelfcreate"
)
else
:
...
...
@@ -280,7 +304,11 @@ def edit_shelf(shelf_id):
try
:
ub
.
session
.
commit
()
flash
(
_
(
u"Shelf
%(title)
s changed"
,
title
=
to_save
[
"title"
]),
category
=
"success"
)
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
except
Exception
:
ub
.
session
.
rollback
()
flash
(
_
(
u"There was an error"
),
category
=
"error"
)
return
render_title_template
(
'shelf_edit.html'
,
shelf
=
shelf
,
title
=
_
(
u"Edit a shelf"
),
page
=
"shelfedit"
)
else
:
...
...
@@ -298,11 +326,16 @@ def delete_shelf_helper(cur_shelf):
log
.
info
(
"successfully deleted
%
s"
,
cur_shelf
)
@
shelf
.
route
(
"/shelf/delete/<int:shelf_id>"
)
@
login_required
def
delete_shelf
(
shelf_id
):
cur_shelf
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
ub
.
Shelf
.
id
==
shelf_id
)
.
first
()
try
:
delete_shelf_helper
(
cur_shelf
)
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
return
redirect
(
url_for
(
'web.index'
))
...
...
@@ -327,8 +360,12 @@ def show_shelf(shelf_type, shelf_id):
cur_book
=
calibre_db
.
get_book
(
book
.
book_id
)
if
not
cur_book
:
log
.
info
(
'Not existing book
%
s in
%
s deleted'
,
book
.
book_id
,
shelf
)
try
:
ub
.
session
.
query
(
ub
.
BookShelf
)
.
filter
(
ub
.
BookShelf
.
book_id
==
book
.
book_id
)
.
delete
()
ub
.
session
.
commit
()
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
return
render_title_template
(
page
,
entries
=
result
,
title
=
_
(
u"Shelf: '
%(name)
s'"
,
name
=
shelf
.
name
),
shelf
=
shelf
,
page
=
"shelf"
)
else
:
...
...
@@ -348,7 +385,11 @@ def order_shelf(shelf_id):
setattr
(
book
,
'order'
,
to_save
[
str
(
book
.
book_id
)])
counter
+=
1
# if order diffrent from before -> shelf.last_modified = datetime.utcnow()
try
:
ub
.
session
.
commit
()
except
(
OperationalError
,
InvalidRequestError
):
ub
.
session
.
rollback
()
flash
(
_
(
u"Settings DB is not Writeable"
),
category
=
"error"
)
shelf
=
ub
.
session
.
query
(
ub
.
Shelf
)
.
filter
(
ub
.
Shelf
.
id
==
shelf_id
)
.
first
()
result
=
list
()
...
...
This diff is collapsed.
Click to expand it.
cps/ub.py
View file @
88d2c60e
...
...
@@ -19,6 +19,7 @@
from
__future__
import
division
,
print_function
,
unicode_literals
import
os
import
sys
import
datetime
import
itertools
import
uuid
...
...
@@ -603,9 +604,13 @@ def migrate_Database(session):
session
.
commit
()
# Remove login capability of user Guest
try
:
conn
=
engine
.
connect
()
conn
.
execute
(
"UPDATE user SET password='' where nickname = 'Guest' and password !=''"
)
session
.
commit
()
except
exc
.
OperationalError
:
print
(
'Settings database is not writeable. Exiting...'
)
sys
.
exit
(
1
)
def
clean_database
(
session
):
...
...
This diff is collapsed.
Click to expand it.
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