mirror of
https://github.com/janeczku/calibre-web
synced 2024-11-25 02:57:22 +00:00
#396 implemented
This commit is contained in:
parent
f1fac28203
commit
aee5ca0e06
@ -88,6 +88,7 @@
|
|||||||
<option value="40" {% if content.config_log_level == 40 %}selected{% endif %}>ERROR</option>
|
<option value="40" {% if content.config_log_level == 40 %}selected{% endif %}>ERROR</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="col-sm-6">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="checkbox" id="config_uploading" name="config_uploading" {% if content.config_uploading %}checked{% endif %}>
|
<input type="checkbox" id="config_uploading" name="config_uploading" {% if content.config_uploading %}checked{% endif %}>
|
||||||
<label for="config_uploading">{{_('Enable uploading')}}</label>
|
<label for="config_uploading">{{_('Enable uploading')}}</label>
|
||||||
@ -121,7 +122,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<h2>{{_('Default Settings for new users')}}</h2>
|
<h2>{{_('Default Settings for new users')}}</h2>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<input type="checkbox" name="admin_role" id="admin_role" {% if content.role_admin() %}checked{% endif %}>
|
<input type="checkbox" name="admin_role" id="admin_role" {% if content.role_admin() %}checked{% endif %}>
|
||||||
@ -151,6 +151,57 @@
|
|||||||
<input type="checkbox" name="edit_shelf_role" id="edit_shelf_role" {% if content.role_edit_shelfs() %}checked{% endif %}>
|
<input type="checkbox" name="edit_shelf_role" id="edit_shelf_role" {% if content.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>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<h3>{{_('Default visiblities for new users')}}</h3>
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_random" id="show_random" {% if content.show_random_books() %}checked{% endif %}>
|
||||||
|
<label for="show_random">{{_('Show random books')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_recent" id="show_recent" {% if content.show_recent() %}checked{% endif %}>
|
||||||
|
<label for="show_recent">{{_('Show recent books')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_sorted" id="show_sorted" {% if content.show_sorted() %}checked{% endif %}>
|
||||||
|
<label for="show_sorted">{{_('Show sorted books')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_hot" id="show_hot" {% if content.show_hot_books() %}checked{% endif %}>
|
||||||
|
<label for="show_hot">{{_('Show hot books')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_best_rated" id="show_best_rated" {% if content.show_best_rated_books() %}checked{% endif %}>
|
||||||
|
<label for="show_best_rated">{{_('Show best rated books')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_language" id="show_language" {% if content.show_language() %}checked{% endif %}>
|
||||||
|
<label for="show_language">{{_('Show language selection')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_series" id="show_series" {% if content.show_series() %}checked{% endif %}>
|
||||||
|
<label for="show_series">{{_('Show series selection')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_category" id="show_category" {% if content.show_category() %}checked{% endif %}>
|
||||||
|
<label for="show_category">{{_('Show category selection')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_author" id="show_author" {% if content.show_author() %}checked{% endif %}>
|
||||||
|
<label for="show_author">{{_('Show author selection')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_read_and_unread" id="show_read_and_unread" {% if content.show_read_and_unread() %}checked{% endif %}>
|
||||||
|
<label for="show_read_and_unread">{{_('Show read and unread')}}</label>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<input type="checkbox" name="show_detail_random" id="show_detail_random" {% if content.show_detail_random() %}checked{% endif %}>
|
||||||
|
<label for="show_detail_random">{{_('Show random books in detail view')}}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12">
|
||||||
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
|
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
|
||||||
{% if not origin %}
|
{% if not origin %}
|
||||||
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
|
||||||
@ -158,6 +209,7 @@
|
|||||||
{% if success %}
|
{% if success %}
|
||||||
<a href="{{ url_for('login') }}" class="btn btn-default">{{_('Login')}}</a>
|
<a href="{{ url_for('login') }}" class="btn btn-default">{{_('Login')}}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -1284,7 +1284,7 @@ msgstr "Zeige Zufällige Bücher"
|
|||||||
|
|
||||||
#: cps/templates/user_edit.html:50
|
#: cps/templates/user_edit.html:50
|
||||||
msgid "Show recent books"
|
msgid "Show recent books"
|
||||||
msgstr " kürzlich hinzugefügte Bücher"
|
msgstr "Zeige kürzlich hinzugefügte Bücher"
|
||||||
|
|
||||||
#: cps/templates/user_edit.html:54
|
#: cps/templates/user_edit.html:54
|
||||||
msgid "Show sorted books"
|
msgid "Show sorted books"
|
||||||
|
54
cps/ub.py
54
cps/ub.py
@ -281,6 +281,7 @@ class Settings(Base):
|
|||||||
config_anonbrowse = Column(SmallInteger, default=0)
|
config_anonbrowse = Column(SmallInteger, default=0)
|
||||||
config_public_reg = Column(SmallInteger, default=0)
|
config_public_reg = Column(SmallInteger, default=0)
|
||||||
config_default_role = Column(SmallInteger, default=0)
|
config_default_role = Column(SmallInteger, default=0)
|
||||||
|
config_default_show = Column(SmallInteger, default=2047)
|
||||||
config_columns_to_ignore = Column(String)
|
config_columns_to_ignore = Column(String)
|
||||||
config_use_google_drive = Column(Boolean)
|
config_use_google_drive = Column(Boolean)
|
||||||
config_google_drive_client_id = Column(String)
|
config_google_drive_client_id = Column(String)
|
||||||
@ -288,7 +289,6 @@ class Settings(Base):
|
|||||||
config_google_drive_folder = Column(String)
|
config_google_drive_folder = Column(String)
|
||||||
config_google_drive_calibre_url_base = Column(String)
|
config_google_drive_calibre_url_base = Column(String)
|
||||||
config_google_drive_watch_changes_response = Column(String)
|
config_google_drive_watch_changes_response = Column(String)
|
||||||
#config_columns_to_ignore = Column(String)
|
|
||||||
config_remote_login = Column(Boolean)
|
config_remote_login = Column(Boolean)
|
||||||
config_use_goodreads = Column(Boolean)
|
config_use_goodreads = Column(Boolean)
|
||||||
config_goodreads_api_key = Column(String)
|
config_goodreads_api_key = Column(String)
|
||||||
@ -337,6 +337,7 @@ class Config:
|
|||||||
self.config_anonbrowse = data.config_anonbrowse
|
self.config_anonbrowse = data.config_anonbrowse
|
||||||
self.config_public_reg = data.config_public_reg
|
self.config_public_reg = data.config_public_reg
|
||||||
self.config_default_role = data.config_default_role
|
self.config_default_role = data.config_default_role
|
||||||
|
self.config_default_show = data.config_default_show
|
||||||
self.config_columns_to_ignore = data.config_columns_to_ignore
|
self.config_columns_to_ignore = data.config_columns_to_ignore
|
||||||
self.config_use_google_drive = data.config_use_google_drive
|
self.config_use_google_drive = data.config_use_google_drive
|
||||||
self.config_google_drive_client_id = data.config_google_drive_client_id
|
self.config_google_drive_client_id = data.config_google_drive_client_id
|
||||||
@ -400,6 +401,50 @@ class Config:
|
|||||||
return bool((self.config_default_role is not None) and
|
return bool((self.config_default_role is not None) and
|
||||||
(self.config_default_role & ROLE_DELETE_BOOKS == ROLE_DELETE_BOOKS))
|
(self.config_default_role & ROLE_DELETE_BOOKS == ROLE_DELETE_BOOKS))
|
||||||
|
|
||||||
|
def show_detail_random(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & DETAIL_RANDOM == DETAIL_RANDOM))
|
||||||
|
|
||||||
|
def show_language(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_LANGUAGE == SIDEBAR_LANGUAGE))
|
||||||
|
|
||||||
|
def show_series(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_SERIES == SIDEBAR_SERIES))
|
||||||
|
|
||||||
|
def show_category(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_CATEGORY == SIDEBAR_CATEGORY))
|
||||||
|
|
||||||
|
def show_hot_books(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_HOT == SIDEBAR_HOT))
|
||||||
|
|
||||||
|
def show_random_books(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_RANDOM == SIDEBAR_RANDOM))
|
||||||
|
|
||||||
|
def show_author(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_AUTHOR == SIDEBAR_AUTHOR))
|
||||||
|
|
||||||
|
def show_best_rated_books(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_BEST_RATED == SIDEBAR_BEST_RATED))
|
||||||
|
|
||||||
|
def show_read_and_unread(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_READ_AND_UNREAD == SIDEBAR_READ_AND_UNREAD))
|
||||||
|
|
||||||
|
def show_recent(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_RECENT == SIDEBAR_RECENT))
|
||||||
|
|
||||||
|
def show_sorted(self):
|
||||||
|
return bool((self.config_default_show is not None) and
|
||||||
|
(self.config_default_show & SIDEBAR_SORTED == SIDEBAR_SORTED))
|
||||||
|
|
||||||
def mature_content_tags(self):
|
def mature_content_tags(self):
|
||||||
if sys.version_info > (3, 0): # Python3 str, Python2 unicode
|
if sys.version_info > (3, 0): # Python3 str, Python2 unicode
|
||||||
lstrip = str.lstrip
|
lstrip = str.lstrip
|
||||||
@ -532,6 +577,13 @@ def migrate_Database():
|
|||||||
except exc.OperationalError:
|
except exc.OperationalError:
|
||||||
conn = engine.connect()
|
conn = engine.connect()
|
||||||
conn.execute("ALTER TABLE Settings ADD column `config_mature_content_tags` String DEFAULT ''")
|
conn.execute("ALTER TABLE Settings ADD column `config_mature_content_tags` String DEFAULT ''")
|
||||||
|
try:
|
||||||
|
session.query(exists().where(Settings.config_default_show)).scalar()
|
||||||
|
session.commit()
|
||||||
|
except exc.OperationalError: # Database is not compatible, some rows are missing
|
||||||
|
conn = engine.connect()
|
||||||
|
conn.execute("ALTER TABLE Settings ADD column `config_default_show` SmallInteger DEFAULT 2047")
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
|
||||||
def clean_database():
|
def clean_database():
|
||||||
|
27
cps/web.py
27
cps/web.py
@ -1933,6 +1933,7 @@ def register():
|
|||||||
content.nickname = to_save["nickname"]
|
content.nickname = to_save["nickname"]
|
||||||
content.email = to_save["email"]
|
content.email = to_save["email"]
|
||||||
content.role = config.config_default_role
|
content.role = config.config_default_role
|
||||||
|
content.sidebar_view = config.config_default_show
|
||||||
try:
|
try:
|
||||||
ub.session.add(content)
|
ub.session.add(content)
|
||||||
ub.session.commit()
|
ub.session.commit()
|
||||||
@ -2484,6 +2485,7 @@ def configuration_helper(origin):
|
|||||||
if "config_mature_content_tags" in to_save:
|
if "config_mature_content_tags" in to_save:
|
||||||
content.config_mature_content_tags = to_save["config_mature_content_tags"].strip()
|
content.config_mature_content_tags = to_save["config_mature_content_tags"].strip()
|
||||||
|
|
||||||
|
# Default user configuration
|
||||||
content.config_default_role = 0
|
content.config_default_role = 0
|
||||||
if "admin_role" in to_save:
|
if "admin_role" in to_save:
|
||||||
content.config_default_role = content.config_default_role + ub.ROLE_ADMIN
|
content.config_default_role = content.config_default_role + ub.ROLE_ADMIN
|
||||||
@ -2499,6 +2501,30 @@ def configuration_helper(origin):
|
|||||||
content.config_default_role = content.config_default_role + ub.ROLE_PASSWD
|
content.config_default_role = content.config_default_role + ub.ROLE_PASSWD
|
||||||
if "passwd_role" in to_save:
|
if "passwd_role" in to_save:
|
||||||
content.config_default_role = content.config_default_role + ub.ROLE_EDIT_SHELFS
|
content.config_default_role = content.config_default_role + ub.ROLE_EDIT_SHELFS
|
||||||
|
content.config_default_show = 0
|
||||||
|
if "show_detail_random" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.DETAIL_RANDOM
|
||||||
|
if "show_language" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_LANGUAGE
|
||||||
|
if "show_series" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_SERIES
|
||||||
|
if "show_category" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_CATEGORY
|
||||||
|
if "show_hot" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_HOT
|
||||||
|
if "show_random" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_RANDOM
|
||||||
|
if "show_author" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_AUTHOR
|
||||||
|
if "show_best_rated" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_BEST_RATED
|
||||||
|
if "show_read_and_unread" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_READ_AND_UNREAD
|
||||||
|
if "show_recent" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_RECENT
|
||||||
|
if "show_sorted" in to_save:
|
||||||
|
content.config_default_show = content.config_default_show + ub.SIDEBAR_SORTED
|
||||||
|
|
||||||
try:
|
try:
|
||||||
if content.config_use_google_drive and is_gdrive_ready() and not os.path.exists(config.config_calibre_dir + "/metadata.db"):
|
if content.config_use_google_drive and is_gdrive_ready() and not os.path.exists(config.config_calibre_dir + "/metadata.db"):
|
||||||
gdriveutils.downloadFile(Gdrive.Instance().drive, None, "metadata.db", config.config_calibre_dir + "/metadata.db")
|
gdriveutils.downloadFile(Gdrive.Instance().drive, None, "metadata.db", config.config_calibre_dir + "/metadata.db")
|
||||||
@ -2607,6 +2633,7 @@ def new_user():
|
|||||||
flash(_(u"Found an existing account for this email address or nickname."), category="error")
|
flash(_(u"Found an existing account for this email address or nickname."), category="error")
|
||||||
else:
|
else:
|
||||||
content.role = config.config_default_role
|
content.role = config.config_default_role
|
||||||
|
content.sidebar_view = config.config_default_show
|
||||||
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"))
|
languages=languages, title=_(u"Add new user"))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user