Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deploy Changes for 4.1.7 to QA #1912

Merged
merged 7 commits into from
Nov 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/clever/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
"1": "E",
"2": "E",
"3": "E",
"4": "M", # Middle
"4": "E", # Middle
"5": "M",
"6": "M",
"7": "M",
Expand Down
3 changes: 3 additions & 0 deletions api/clever/title_i.json
Original file line number Diff line number Diff line change
Expand Up @@ -8681,6 +8681,9 @@
"063432013803",
"063432013878",
"063432013916",
"063432014499",
"063432014500",
"063432014617",
"063441002774",
"063441005369",
"063441005585",
Expand Down
3 changes: 2 additions & 1 deletion api/opds.py
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,7 @@ def open_access_link(self, pool, lpdm):
always_available = OPDSFeed.makeelement(
"{%s}availability" % OPDSFeed.OPDS_NS, status="available"
)

link_tag.append(always_available)
return link_tag

Expand Down Expand Up @@ -1130,7 +1131,7 @@ def fulfill_link(self, license_pool, active_loan, delivery_mechanism,
active_loan=active_loan
)

children = AcquisitionFeed.license_tags(license_pool, active_loan, None)
children = AcquisitionFeed.license_tags(license_pool, active_loan, None, rel=rel, library=self.library)
link_tag.extend(children)

children = self.drm_device_registration_tags(
Expand Down
14 changes: 10 additions & 4 deletions core/opds.py
Original file line number Diff line number Diff line change
Expand Up @@ -1650,7 +1650,7 @@ def indirect_acquisition(cls, indirect_types):
return top_level_parent

@classmethod
def license_tags(cls, license_pool, loan, hold):
def license_tags(cls, license_pool, loan, hold, rel=None, library=None):
# Generate a list of licensing tags. These should be inserted
# into a <link> tag.
tags = []
Expand Down Expand Up @@ -1688,10 +1688,16 @@ def license_tags(cls, license_pool, loan, hold):
else:
status = 'reserved'
since = hold.start
elif (license_pool.open_access or license_pool.unlimited_access or license_pool.self_hosted or (
elif (license_pool.open_access or rel == OPDSFeed.OPEN_ACCESS_REL):
status = 'available'

default_loan_period = collection.default_loan_period(library) if library else collection.STANDARD_DEFAULT_LOAN_PERIOD

since = license_pool.availability_time
until = datetime.datetime.utcnow() + datetime.timedelta(days=default_loan_period)
elif (license_pool.unlimited_access or license_pool.self_hosted or (
license_pool.licenses_available > 0 and
license_pool.licenses_owned > 0)
):
license_pool.licenses_owned > 0)):
status = 'available'
else:
status='unavailable'
Expand Down
27 changes: 27 additions & 0 deletions core/tests/test_opds.py
Original file line number Diff line number Diff line change
Expand Up @@ -1625,6 +1625,33 @@ def test_license_tags_show_self_hosted_books(self):
assert 'status' in tags[0].attrib
assert 'available' == tags[0].attrib['status']

def test_license_tags_open_access(self):
# Arrange
edition, pool = self._edition(with_license_pool=True)
pool.open_access = True
pool.self_hosted = False
pool.unlimited_access = False
creation_time = datetime.datetime.utcnow()

# Act
tags = AcquisitionFeed.license_tags(
pool, None, None
)

# Assert
assert 1 == len(tags)

[tag] = tags

assert ('status' in tag.attrib) == True
assert 'available' == tag.attrib['status']
assert 'since' in tag.attrib
assert tag.attrib['since'] == pool.availability_time.strftime('%Y-%m-%dT%H:%M:%S+00:00')
assert 'until' in tag.attrib
assert tag.attrib['until'] == (creation_time + datetime.timedelta(days=21)).strftime('%Y-%m-%dT%H:%M:%SZ')
assert ('holds' in tag.attrib) == False
assert ('copies' in tag.attrib) == False

def test_single_entry(self):

# Here's a Work with two LicensePools.
Expand Down
4 changes: 2 additions & 2 deletions tests/clever/test_clever.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,11 @@ def test_external_type_from_clever_grade(self):
THEN: The matching external_type value should be returned, or None if the match fails
"""
for e_grade in [
"InfantToddler", "Preschool", "PreKindergarten", "TransitionalKindergarten", "Kindergarten", "1", "2", "3"
"InfantToddler", "Preschool", "PreKindergarten", "TransitionalKindergarten", "Kindergarten", "1", "2", "3", "4"
]:
assert external_type_from_clever_grade(e_grade) == "E"

for m_grade in ["4", "5", "6", "7", "8"]:
for m_grade in ["5", "6", "7", "8"]:
assert external_type_from_clever_grade(m_grade) == "M"

for h_grade in ["9", "10", "11", "12", "13", "PostGraduate"]:
Expand Down
Loading