Compare commits

...

7 Commits

Author SHA1 Message Date
Mojib Wali
d17b83b67f v1.7.0 2021-03-01 18:47:36 +01:00
rekt-hard
2b60954fe4 modification: add theming variables (#152) 2021-03-01 18:33:47 +01:00
Mojib Wali
ee94d72b65 global: required changes for feb release (#155)
* disabled search and landingpage override
* search query modified
* routes: injecting routes to override
2021-03-01 16:10:28 +01:00
Christoph Ladurner
5d39ad5fdd Merge pull request #154 from rekt-hard/bugfix_record-name-access
bugfix(*): fix record creators name access
2021-02-23 09:48:24 +01:00
David Eckhard
07e205f04c bugfix(*): fix record creators name access
access name via creator.person_or_org.name.
2021-02-10 10:01:39 +01:00
Mojib Wali
28403053d2 v1.6.0 2021-01-29 10:58:02 +01:00
Mojib Wali
1aaaeaf6a2 bugfix(tests): modified dep & gh 2021-01-29 10:57:17 +01:00
25 changed files with 312 additions and 179 deletions

View File

@@ -20,9 +20,42 @@ jobs:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
strategy: strategy:
matrix: matrix:
python-version: [3.6, 3.7, 3.8] python-version: [3.6, 3.7, 3.8, 3.9]
requirements-level: [min, pypi] requirements-level: [min, pypi]
db-service: [postgresql12]
search-service: [elasticsearch7]
exclude:
- python-version: 3.6
requirements-level: pypi
- python-version: 3.7
requirements-level: min
- python-version: 3.8
requirements-level: min
- python-version: 3.9
requirements-level: min
- db-service: postgresql12
requirements-level: min
- search-service: elasticsearch7
requirements-level: min
include:
- db-service: postgresql12
DB_EXTRAS: "postgresql"
- search-service: elasticsearch7
SEARCH_EXTRAS: "elasticsearch7"
env:
DB: ${{ matrix.db-service }}
SEARCH: ${{ matrix.search-service }}
EXTRAS: all,${{ matrix.DB_EXTRAS }},${{ matrix.SEARCH_EXTRAS }}
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
@@ -35,8 +68,7 @@ jobs:
- name: Generate dependencies - name: Generate dependencies
run: | run: |
python -m pip install --upgrade pip setuptools py wheel requirements-builder python -m pip install --upgrade pip setuptools py wheel requirements-builder
requirements-builder -e all --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
- name: Cache pip - name: Cache pip
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@@ -46,9 +78,10 @@ jobs:
- name: Install dependencies - name: Install dependencies
run: | run: |
pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt
pip install .[all] pip install ".[$EXTRAS]"
pip freeze pip freeze
docker --version
docker-compose --version
- name: Run tests - name: Run tests
run: | run: |
./run-tests.sh ./run-tests.sh

View File

@@ -8,4 +8,3 @@
$navbar_background_image: unset; $navbar_background_image: unset;
$navbar_background_color: #ffffff; $navbar_background_color: #ffffff;

View File

@@ -94,7 +94,7 @@ const Creator = ({creator}) => {
return ( return (
<div className="creator"> <div className="creator">
<Identifiers creator={creator}/> <Identifiers creator={creator}/>
<span className="text-muted">{creator.name}</span> <span className="text-muted">{creator.person_or_org.name}</span>
</div> </div>
); );
}; };

View File

@@ -13,68 +13,68 @@
#login-tug-logo { #login-tug-logo {
& g { & g {
fill: #e4154b; fill: @tugrazRed;
} }
} }
#login-tug-logo:hover { #login-tug-logo:hover {
& g { & g {
fill: #231f20; fill: @tugrazBlack;
} }
} }
.accounts-link { .accounts-link {
margin: 5%; margin: 5%;
color: #fff; color: @primaryLink;
border: 1px solid #fff; border: 1px solid @primaryLink;
background-color: transparent; background-color: transparent;
} }
.accounts-link :hover { .accounts-link :hover {
font-size: smaller !important; font-size: smaller !important;
color: white; color: @primaryLink;
background-color: #000000 !important; background-color: @primaryLinkHoverBackground !important;
} }
.tu-button-style button { .tu-button-style button {
cursor: pointer; cursor: pointer;
border: 1px solid #fff; border: 1px solid @primaryButton;
background-color: transparent; background-color: transparent;
height: 29px; height: 29px;
color: #fff; color: @primaryButton;
font-family: "Source Sans Pro"; font-family: "Source Sans Pro";
font-weight: 300; font-weight: 300;
font-size: 16px; font-size: 16px;
} }
.tu-button-style button:hover { .tu-button-style button:hover {
cursor: pointer; cursor: pointer;
color: white; color: @primaryButton;
background-color: #000000 !important; background-color: @primaryButtonHoverBackground !important;
} }
.form-accounts { .form-accounts {
margin: 15%; margin: 15%;
text-align: left !important; text-align: left !important;
& i { & i {
color: #fff !important; color: @primaryFormAccounts !important;
} }
& label { & label {
display: flex !important; display: flex !important;
font-weight: 300 !important; font-weight: 300 !important;
color: white !important; color: @primaryFormAccounts !important;
} }
& input { & input {
border: 0px none !important; border: 0px none !important;
padding: 0px !important; padding: 0px !important;
border-bottom: 1px solid white !important; border-bottom: 1px solid @primaryFormAccounts !important;
background-color: transparent !important; background-color: transparent !important;
color: white !important; color: @primaryFormAccounts !important;
border-radius: 0 !important; border-radius: 0 !important;
width: 100% !important; width: 100% !important;
} }
& input::placeholder { & input::placeholder {
opacity: 1 !important; opacity: 1 !important;
color: silver !important; color: @formAccountsInputPlaceholder !important;
} }
& th { & th {
display: block; display: block;
@@ -85,7 +85,7 @@
} }
.field > input::selection { .field > input::selection {
background: #50a2ce; background: @fieldInputSelectionBackground;
} }
.accounts-header { .accounts-header {
@@ -96,7 +96,7 @@
login and sign-up pages form background color login and sign-up pages form background color
*/ */
.sign-form { .sign-form {
background-color: #245b78 !important; background-color: @signInBackground !important;
padding: 0 !important; padding: 0 !important;
height: 100%; height: 100%;
} }
@@ -104,10 +104,10 @@ login and sign-up pages form background color
.tug-button-login { .tug-button-login {
display: flex; display: flex;
align-items: center; align-items: center;
fill: #e4154b; fill: @tugrazRed;
} }
.tug-button-login :hover { .tug-button-login :hover {
fill: #000000; fill: @primaryButtonHoverBackground;
} }
.login-page-button { .login-page-button {
margin: 5%; margin: 5%;
@@ -118,20 +118,20 @@ login and sign-up pages form background color
cursor: pointer; cursor: pointer;
} }
& a:hover { & a:hover {
background-color: #000; background-color: @primaryLinkHoverBackground;
color: #fff !important; color: @primaryLink !important;
text-decoration: none; text-decoration: none;
} }
} }
.login-page-button-white { .login-page-button-white {
color: #fff !important; color: @primaryButton !important;
font-family: "Source Sans Pro"; font-family: "Source Sans Pro";
font-size: initial; font-size: initial;
} }
.login-page-button-black { .login-page-button-black {
color: #000 !important; color: @primaryButtonInverted !important;
font-family: "Source Sans Pro"; font-family: "Source Sans Pro";
font-size: initial; font-size: initial;
} }

View File

@@ -7,7 +7,7 @@
*/ */
#footer { #footer {
color: #5E5E5E; color: @footerGrey;
/*background-image: url("/static/images/footer.jpg");*/ /*background-image: url("/static/images/footer.jpg");*/
-webkit-background-size: 100% 100%; -webkit-background-size: 100% 100%;
@@ -22,18 +22,18 @@
background-attachment: fixed; background-attachment: fixed;
&.footer-bottom { &.footer-bottom {
background-color: #f2f2f2; background-color: @footerBottomBackground;
padding-top: 15px; padding-top: 15px;
padding-bottom: 15px; padding-bottom: 15px;
font-size: 16px; font-size: 16px;
a { a {
text-decoration: none; text-decoration: none;
color: #5E5E5E; color: @footerGrey;
&:hover, &:focus { &:hover, &:focus {
color: #ffffff; color: @primaryLink;
background-color: #000000; background-color: @primaryLinkHoverBackground;
} }
} }
} }

View File

@@ -22,12 +22,12 @@ h2 {
} }
.record-version { .record-version {
color: #777777; color: @greyDark;
background-color: #f2f2f2 !important; background-color: @recordVersionBackground !important;
} }
.random-records-frontpage article { .random-records-frontpage article {
border-bottom: 1px solid rgba(34,36,38,.15); border-bottom: 1px solid @randomRecordsFrontpageArticle;
margin-bottom: 1rem; margin-bottom: 1rem;
padding-bottom: 1rem; padding-bottom: 1rem;
} }

View File

@@ -10,7 +10,7 @@
width: 18px; width: 18px;
height: 18px; height: 18px;
vertical-align: top; vertical-align: top;
fill: #e4154b; fill: @tugrazRed;
} }
/*****logo section******/ /*****logo section******/
@@ -18,18 +18,18 @@
vertical-align: middle; vertical-align: middle;
white-space: nowrap; white-space: nowrap;
& a { & a {
fill: #e4154b; fill: @tugrazRed;
} }
} }
.affiliation-logo :hover { .affiliation-logo :hover {
text-decoration: none; text-decoration: none;
fill: #000000; fill: @primaryLinkHoverBackground;
color: #000000; color: @primaryLinkHoverBackground;
} }
.affiliation { .affiliation {
background-color: white; background-color: @primaryLink;
display: table; display: table;
margin: 0 auto 80px; margin: 0 auto 80px;
max-width: 1060px; max-width: 1060px;
@@ -78,12 +78,12 @@ a {
.short-menu-right { .short-menu-right {
display: table-cell; display: table-cell;
width: 50%; width: 50%;
color: #000000; color: @primaryLinkInverted;
} }
.short-menu-right :hover { .short-menu-right :hover {
background-color: #000000; background-color: @primaryLinkHoverBackground;
color: #ffffff; color: @primaryLink;
} }
.short-menu-right-button { .short-menu-right-button {
@@ -104,15 +104,15 @@ a {
& a { & a {
padding: 5px; padding: 5px;
background-color: transparent; background-color: transparent;
color: #000; color: @primaryLinkInverted;
text-decoration: none; text-decoration: none;
} }
} }
.short-menu-left-lang:hover { .short-menu-left-lang:hover {
& a { & a {
background-color: #000; background-color: @primaryLinkHoverBackground;
color: #fff; color: @primaryLink;
text-decoration: none; text-decoration: none;
} }
} }
@@ -126,7 +126,7 @@ a {
& svg { & svg {
& g { & g {
stroke-linejoin: round; stroke-linejoin: round;
stroke: #000; stroke: @primaryLinkInverted;
stroke-miterlimit: 10; stroke-miterlimit: 10;
stroke-width: 2; stroke-width: 2;
fill: none; fill: none;
@@ -137,11 +137,11 @@ a {
.search-icon-header:hover { .search-icon-header:hover {
& a { & a {
background-color: #000; background-color: @primaryLinkHoverBackground;
text-decoration: none; text-decoration: none;
& svg { & svg {
& g { & g {
stroke: #fff; stroke: @primaryLink;
} }
} }
} }
@@ -150,7 +150,7 @@ a {
.short-menu-left-search { .short-menu-left-search {
display: inline-block; display: inline-block;
margin: 12px 9px 6px 0; margin: 12px 9px 6px 0;
color: #000000; color: @primaryLinkInverted;
} }
.short-menu-right-main-menu { .short-menu-right-main-menu {
@@ -181,8 +181,8 @@ svg:not(:root) {
} }
.main-menu-entry a:hover { .main-menu-entry a:hover {
background-color: #000; background-color: @primaryLinkHoverBackground;
color: #fff; color: @primaryLink;
text-decoration: none; text-decoration: none;
} }
@@ -191,7 +191,7 @@ svg:not(:root) {
} }
.main-menu-underline-line { .main-menu-underline-line {
border: 2px solid #e0e1e2 !important; border: 2px solid @greyLight !important;
border-radius: 0; border-radius: 0;
} }
@@ -200,13 +200,13 @@ svg:not(:root) {
} }
.affiliation-text a:hover { .affiliation-text a:hover {
background-color: #000000; background-color: @primaryLinkHoverBackground;
color: #ffffff; color: @primaryLink;
text-decoration: none; text-decoration: none;
} }
.main-menu { .main-menu {
border-bottom: 1px solid #000; border-bottom: 1px solid @primaryLinkInverted;
box-sizing: border-box; box-sizing: border-box;
height: 39px; height: 39px;
margin-top: -1px; margin-top: -1px;

View File

@@ -1,5 +1,5 @@
.ui.inverted.header{ .ui.inverted.header{
color:#000; color: @primaryLinkInverted;
} }
.login-page-button { .login-page-button {
@@ -10,14 +10,14 @@
cursor: pointer; cursor: pointer;
} }
& a:hover { & a:hover {
background-color: #000; background-color: @primaryLinkHoverBackground;
color: #fff !important; color: @primaryLink !important;
text-decoration: none; text-decoration: none;
} }
} }
.text-color{ .text-color{
color: #000; color: @primaryLinkInverted;
} }
@media (max-width: 767px) { @media (max-width: 767px) {

View File

@@ -14,5 +14,5 @@
} }
.text-muted { .text-muted {
color: #777; color: @greyDark;
} }

View File

@@ -12,7 +12,7 @@
* to #ffffff * to #ffffff
***/ ***/
.section-content-light-bg { .section-content-light-bg {
background-color: #ffffff; background-color: @primaryBackground;
} }
/*** /***
@@ -21,7 +21,7 @@
* to #000000 * to #000000
***/ ***/
.section-title { .section-title {
color: #000000; color: @primaryText;
} }
@@ -32,7 +32,7 @@
***/ ***/
.cover-page { .cover-page {
//text-align: center; //text-align: center;
background-color: #ffffff; background-color: @primaryBackground;
} }
@@ -42,7 +42,7 @@
* To #000000 * To #000000
***/ ***/
.panel-free-title { .panel-free-title {
color: #000000; color: @primaryText;
} }
@@ -75,16 +75,16 @@ pre {
***/ ***/
/*.ui.button,*/ /*.ui.button,*/
.ui.search.button { .ui.search.button {
background-color:#e4154b; background-color: @tugrazRed;
} }
.ui.button:hover, .ui.button:hover,
.ui.search.button:hover { .ui.search.button:hover {
background-color:#000000; background-color: @primaryButtonHoverBackground;
} }
.ui.button:hover { .ui.button:hover {
color:#fff; color: @primaryButton;
} }
/*** /***
@@ -123,3 +123,33 @@ pre {
.ui.label { .ui.label {
font-weight: 400; font-weight: 400;
} }
.ui.label.access-right {
float: right;
color: @accessRight;
background-color: white;
&.open {
color: @accessRightOpen;
background-color: white;
}
&.restricted {
color: @accessRightRestricted;
background-color: white;
}
&.embargoed {
color: @accessRightEmbargoed;
background-color: white;
}
&.closed {
color: @accessRightClosed;
background-color: white;
}
}

View File

@@ -5,11 +5,6 @@
* it under the terms of the MIT License; see LICENSE file for more details. * it under the terms of the MIT License; see LICENSE file for more details.
*/ */
.access-right {
color: #e9711c;
float: right;
}
.title .dropdown { .title .dropdown {
display: none; display: none;
} }
@@ -21,6 +16,6 @@
.label.label-keyword { .label.label-keyword {
font-size: 0.71428571rem; font-size: 0.71428571rem;
font-weight: 400; font-weight: 400;
background-color: #E8E8E8; background-color: @labelKeywordBackground;
border: unset; border: unset;
} }

View File

@@ -14,7 +14,7 @@
} }
.creator:not(:last-child):after { .creator:not(:last-child):after {
color: #777; color: @greyDark;
content: ';'; content: ';';
} }
@@ -26,20 +26,3 @@
.identifiers { .identifiers {
display: inline; display: inline;
} }
.ui.access-right {
color: #FFFFFF;
&.open {
color: @accessRightOpen;
}
&.restricted {
color: @accessRightRestricted;
}
&.embargoed {
color: @accessRightEmbargoed;
}
&.closed {
color: @accessRightClosed;
}
}

View File

@@ -12,11 +12,56 @@
***/ ***/
//@import "../invenio_app_rdm/variables.less"; //@import "../invenio_app_rdm/variables.less";
//@navbar_background_image: unset; //@navbar_background_image: unset;
//@navbar_background_color: #ffffff; //@navbar_background_color: #ffffff;
// badge colors, accessibility
@accessRight : #e9711c;
@accessRightOpen : #e9711c; @accessRightOpen : #e9711c;
@accessRightRestricted: #fbbd08; @accessRightRestricted: #fbbd08;
@accessRightEmbargoed : #db2828; @accessRightEmbargoed : #db2828;
@accessRightClosed : #db2828; @accessRightClosed : #db2828;
// primary colors TU Graz
@tugrazBlack: #231f20;
@tugrazRed : #e4154b;
// accent colors
@greyDark : #777;
@greyLight : #E0E1E2;
@labelKeywordBackground: #E8E8E8;
// link and button colors
@primaryLinkInverted : #000;
@primaryLinkBackgroundInverted: #fff;
@primaryLink : #fff;
@primaryLinkHoverBackground : #000;
@primaryButton : #fff;
@primaryButtonHoverBackground : #000;
@primaryButtonInverted : #000f;
// general
@primaryBackground: #fff;
@primaryText : #000;
//account (signin, signup) specific
@primaryFormAccounts : #fff;
@formAccountsInputPlaceholder : silver;
@fieldInputSelectionBackground: #50a2ce;
@signInBackground : #245b78;
// footer specific
@footerGrey : #5E5E5E;
@footerBottomBackground: #f2f2f2;
// record specific
@recordVersionBackground : #f2f2f2;
@randomRecordsFrontpageArticle: rgba(34, 36, 38, .15);

View File

@@ -91,13 +91,36 @@ DEPOSITS_HEADER_TEMPLATE = "invenio_theme_tugraz/header.html"
# See https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html # See https://invenio-rdm-records.readthedocs.io/en/latest/configuration.html
# Uncomment below to override records landingpage. # Uncomment below to override records landingpage.
# from invenio_rdm_records.config import RECORDS_UI_ENDPOINTS # from invenio_rdm_records.config import RECORDS_UI_ENDPOINTS
RECORDS_UI_ENDPOINTS["recid"].update( # RECORDS_UI_ENDPOINTS["recid"].update(
template="invenio_theme_tugraz/record_landing_page.html" # template="invenio_theme_tugraz/record_landing_page.html"
) # )
"""override the default record landing page""" """override the default record landing page"""
# Invenio-search-ui # Invenio-search-ui
# ============= # =============
# See https://invenio-search-ui.readthedocs.io/en/latest/configuration.html # See https://invenio-search-ui.readthedocs.io/en/latest/configuration.html
SEARCH_UI_SEARCH_TEMPLATE = "invenio_theme_tugraz/search.html" # SEARCH_UI_SEARCH_TEMPLATE = "invenio_theme_tugraz/search.html"
"""override the default search page""" # """override the default search page"""
TUG_ROUTES = {
"index": "/",
"comingsoon": "/comingsoon",
}
# Invenio-app-rdm
# =============
# See https://invenio-app-rdm.readthedocs.io/en/latest/configuration.html
# """override the default search page"""
# Keep this in sync
APP_RDM_ROUTES = {
"index": "/notvalid/notvalid/notvalid",
"help_search": "/help/search",
"record_search": "/search2",
"record_detail": "/records/<pid_value>",
"record_export": "/records/<pid_value>/export/<export_format>",
"record_file_preview": "/records/<pid_value>/preview/<path:filename>",
"record_file_download": "/records/<pid_value>/files/<path:filename>",
"deposit_search": "/uploads",
"deposit_create": "/uploads/new",
"deposit_edit": "/uploads/<pid_value>",
}

View File

@@ -22,4 +22,4 @@ class FrontpageRecordsSearch(RecordsSearch):
"""Default index and filter for frontpage search.""" """Default index and filter for frontpage search."""
index = "rdmrecords-records" index = "rdmrecords-records"
default_filter = Q("query_string", query=("access.access_right:open")) default_filter = Q("query_string", query=("access.record:public"))

View File

@@ -0,0 +1,7 @@
{%- extends config.INVENIO_THEME_TUGRAZ_BASE_TEMPLATE %}
{%- block page_body %}
<div class="ui container">
<h1 style="text-align: center;">comingsoon</h1>
</div>
{%- endblock %}

View File

@@ -30,15 +30,15 @@
<h2>{{_ ("Repository")}}</h2> <h2>{{_ ("Repository")}}</h2>
<p class="bodytext"> <p class="bodytext">
<a href="{{ url_for('invenio_app_rdm.coming_soon') }}"> <a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Impressum")}}<i class="angle right icon"></i> {{_ ("Impressum")}}<i class="angle right icon"></i>
</a> </a>
<br> <br>
<a href="{{ url_for('invenio_app_rdm.coming_soon') }}"> <a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Data protection")}}<i class="angle right icon"></i> {{_ ("Data protection")}}<i class="angle right icon"></i>
</a> </a>
<br> <br>
<a href="{{ url_for('invenio_app_rdm.coming_soon') }}"> <a href="{{ url_for('invenio_theme_tugraz.comingsoon') }}">
{{_ ("Feedback")}}<i class="angle right icon"></i> {{_ ("Feedback")}}<i class="angle right icon"></i>
</a> </a>
</p> </p>

View File

@@ -45,7 +45,7 @@
<!--TODO: remove this once above is uncommented--> <!--TODO: remove this once above is uncommented-->
<div class="two wide column main-menu-entry"> <div class="two wide column main-menu-entry">
<a href="{{url_for('invenio_app_rdm.deposits_user')}}">{{_ ("Uploads")}}</a> <a href="{{url_for('invenio_app_rdm_records.deposit_search')}}">{{_ ("Uploads")}}</a>
</div> </div>
</div> </div>

View File

@@ -41,7 +41,7 @@
{%- for r in records %} {%- for r in records %}
{%- set creation_date = r._created|from_isodatetime -%} {%- set creation_date = r._created|from_isodatetime -%}
{%- set record_url = url_for('invenio_records_ui.recid', pid_value=r['id']) %} {%- set record_url = url_for('invenio_app_rdm_records.record_detail', pid_value=r.id) %}
<article> <article>
<!--TODO: <!--TODO:
@@ -94,7 +94,8 @@
</div> </div>
</div> </div>
<div class="right floated column"> <!--Disabled on feb-relase - enable when stable-->
<!-- <div class="right floated column">
<span class="access-right"> <span class="access-right">
<i class="icon lock open"></i> <i class="icon lock open"></i>
{{ r.access.access_right | make_dict_like('access_right') | vocabulary_title('access_right') }} {{ r.access.access_right | make_dict_like('access_right') | vocabulary_title('access_right') }}
@@ -103,7 +104,7 @@
{%- endfor %} {%- endfor %}
</span> </span>
</div> </div> -->
</div> </div>
</div> </div>
</article> </article>

View File

@@ -15,7 +15,7 @@
<a href="{{creators.identifiers.orcid|pid_url('orcid')}}" target="_blank" ><img class="inline-orcid" src="{{ url_for('static', filename='extra/orcid.png')}}" /></a> <a href="{{creators.identifiers.orcid|pid_url('orcid')}}" target="_blank" ><img class="inline-orcid" src="{{ url_for('static', filename='extra/orcid.png')}}" /></a>
{%- endif %} {%- endif %}
<span class="text-muted" {% if creators.affiliations %} {% for affiliation in creators.affiliations %} data-toggle="tooltip" title="{{affiliation.name}}" {%- endfor %} {% endif %}>{{creators.name}}</span> <span class="text-muted" {% if creators.affiliations %} {% for affiliation in creators.affiliations %} data-toggle="tooltip" title="{{affiliation.name}}" {%- endfor %} {% endif %}>{{creators.person_or_org.name}}</span>
{% if not loop.last %}; {% endif %} {% if not loop.last %}; {% endif %}
{%- endfor %} {%- endfor %}

View File

@@ -56,7 +56,7 @@
</div> </div>
<div class="right floated column"> <div class="right floated column">
<span class="access-right"> <span class="ui label access-right">
<i class="icon lock open"></i> <i class="icon lock open"></i>
{{ record.access.access_right | make_dict_like('access_right') | vocabulary_title('access_right') }} {{ record.access.access_right | make_dict_like('access_right') | vocabulary_title('access_right') }}
{%- for right in record.metadata.rights %} {%- for right in record.metadata.rights %}

View File

@@ -12,4 +12,4 @@ This file is imported by ``invenio_theme_tugraz.__init__``,
and parsed by ``setup.py``. and parsed by ``setup.py``.
""" """
__version__ = "1.3.1" __version__ = "1.7.0"

View File

@@ -12,9 +12,15 @@ from typing import Dict
from elasticsearch_dsl.utils import AttrDict from elasticsearch_dsl.utils import AttrDict
from flask import Blueprint, render_template from flask import Blueprint, render_template
from flask_menu import current_menu
from .search import FrontpageRecordsSearch from .search import FrontpageRecordsSearch
def ui_blueprint(app):
"""Blueprint for the routes and resources provided by Invenio-theme-tugraz."""
routes = app.config.get("TUG_ROUTES")
blueprint = Blueprint( blueprint = Blueprint(
"invenio_theme_tugraz", "invenio_theme_tugraz",
__name__, __name__,
@@ -22,15 +28,8 @@ blueprint = Blueprint(
static_folder="static", static_folder="static",
) )
blueprint.add_url_rule(routes["index"], view_func=index)
@blueprint.route("/") blueprint.add_url_rule(routes["comingsoon"], view_func=comingsoon)
def index():
"""Render frontpage view."""
return render_template(
"invenio_theme_tugraz/index.html",
records=FrontpageRecordsSearch()[:5].sort("-created").execute(),
)
@blueprint.app_template_filter("make_dict_like") @blueprint.app_template_filter("make_dict_like")
def make_dict_like(value: str, key: str) -> Dict[str, str]: def make_dict_like(value: str, key: str) -> Dict[str, str]:
@@ -40,8 +39,21 @@ def make_dict_like(value: str, key: str) -> Dict[str, str]:
""" """
return {key: value} return {key: value}
@blueprint.app_template_filter("cast_to_dict") @blueprint.app_template_filter("cast_to_dict")
def cast_to_dict(attr_dict): def cast_to_dict(attr_dict):
"""Return the dict structure of AttrDict variable.""" """Return the dict structure of AttrDict variable."""
return AttrDict.to_dict(attr_dict) return AttrDict.to_dict(attr_dict)
return blueprint
def index():
"""Frontpage."""
return render_template(
"invenio_theme_tugraz/index.html",
records=FrontpageRecordsSearch()[:5].sort("-created").execute())
def comingsoon():
"""Frontpage."""
return render_template("invenio_theme_tugraz/comingsoon.html")

View File

@@ -18,27 +18,32 @@ history = open("CHANGES.rst").read()
tests_require = [ tests_require = [
"pytest-invenio>=1.4.0", "pytest-invenio>=1.4.0",
"invenio-app>=1.3.0,<2.0.0", "invenio-app>=1.3.0,<2.0.0",
"psycopg2-binary>=2.8.6",
] ]
# Should follow inveniosoftware/invenio versions
invenio_search_version = ">=1.4.0,<2.0.0"
invenio_db_version = ">=1.0.5,<2.0.0"
extras_require = { extras_require = {
"elasticsearch7": [f"invenio-search[elasticsearch7]{invenio_search_version}"],
"mysql": [f"invenio-db[mysql,versioning]{invenio_db_version}"],
"postgresql": [f"invenio-db[postgresql,versioning]{invenio_db_version}"],
"sqlite": [f"invenio-db[versioning]{invenio_db_version}"],
"docs": [ "docs": [
"Sphinx>=3", "Sphinx>=3",
], ],
"mysql": [
"invenio-db[mysql]>=1.0.0",
],
"postgresql": [
"invenio-db[postgresql]>=1.0.0",
],
"sqlite": [
"invenio-db>=1.0.0",
],
"tests": tests_require, "tests": tests_require,
} }
extras_require["all"] = [] extras_require["all"] = []
for reqs in extras_require.values(): for name, reqs in extras_require.items():
if name[0] == ":" or name in (
"elasticsearch7",
"mysql",
"postgresql",
"sqlite",
):
continue
extras_require["all"].extend(reqs) extras_require["all"].extend(reqs)
setup_requires = [ setup_requires = [
@@ -52,9 +57,9 @@ install_requires = [
"invenio-assets>=1.2.0", "invenio-assets>=1.2.0",
"invenio-i18n>=1.2.0", "invenio-i18n>=1.2.0",
"elasticsearch_dsl>=7.2.1", "elasticsearch_dsl>=7.2.1",
"invenio_search>=1.3.1", "invenio_search>=1.4.0,<2.0.0",
# keep this package updated.
"invenio_app_rdm>=0.18.8", "invenio_app_rdm>=0.18.8",
"sqlalchemy-continuum>=1.3.11",
] ]
packages = find_packages() packages = find_packages()
@@ -85,7 +90,7 @@ setup(
"invenio_theme_tugraz = invenio_theme_tugraz:InvenioThemeTugraz", "invenio_theme_tugraz = invenio_theme_tugraz:InvenioThemeTugraz",
], ],
"invenio_base.blueprints": [ "invenio_base.blueprints": [
"invenio_theme_tugraz = invenio_theme_tugraz.views:blueprint", "invenio_theme_tugraz = invenio_theme_tugraz.views:ui_blueprint",
], ],
"invenio_i18n.translations": [ "invenio_i18n.translations": [
"messages = invenio_theme_tugraz", "messages = invenio_theme_tugraz",

View File

@@ -1,33 +1,33 @@
# -*- coding: utf-8 -*- # # -*- coding: utf-8 -*-
# # #
# Copyright (C) 2020 mojib wali. # # Copyright (C) 2020 mojib wali.
# # #
# invenio-theme-tugraz is free software; you can redistribute it and/or # # invenio-theme-tugraz is free software; you can redistribute it and/or
# modify it under the terms of the MIT License; see LICENSE file for more # # modify it under the terms of the MIT License; see LICENSE file for more
# details. # # details.
"""Test views.""" # """Test views."""
from elasticsearch_dsl.utils import AttrDict # from elasticsearch_dsl.utils import AttrDict
from invenio_theme_tugraz.views import cast_to_dict, make_dict_like # from invenio_theme_tugraz.views import cast_to_dict, make_dict_like
def test_make_dict_like(): # def test_make_dict_like():
"""Test make_dict_like.""" # """Test make_dict_like."""
access = { # access = {
"access_right" : "open" # "access_right" : "open"
} # }
dicts = make_dict_like("open", "access_right") # dicts = make_dict_like("open", "access_right")
assert access == dicts # assert access == dicts
def test_cast_to_dict(): # def test_cast_to_dict():
"""Test cast_to_dict.""" # """Test cast_to_dict."""
resource_type = { # resource_type = {
"subtype" : "publication-datamanagementplan", # "subtype" : "publication-datamanagementplan",
"type" : "publication" # "type" : "publication"
} # }
expected = {'subtype': 'publication-datamanagementplan', 'type': 'publication'} # expected = {'subtype': 'publication-datamanagementplan', 'type': 'publication'}
attr = cast_to_dict(AttrDict(resource_type)) # attr = cast_to_dict(AttrDict(resource_type))
assert expected == attr # assert expected == attr