https
parent
52127faec9
commit
db97a98ae8
|
@ -11,7 +11,7 @@
|
|||
{% if editions %}
|
||||
<ul>
|
||||
{% for edition in editions %}
|
||||
<li> <img src="http://covers.openlibrary.org/b/isbn/{{edition.isbn_10}}-S.jpg" /> {{edition.id}} | {{edition.title}} |
|
||||
<li> <img src="https://covers.openlibrary.org/b/isbn/{{edition.isbn_10}}-S.jpg" /> {{edition.id}} | {{edition.title}} |
|
||||
<a href="{% url 'isbn' isbn=edition.isbn_10 %}">{{edition.isbn_10}}</a> |
|
||||
<a href="{% url 'isbn' isbn=edition.isbn_13 %}">{{edition.isbn_13}}</a>
|
||||
{% endfor %}
|
||||
|
|
|
@ -168,7 +168,7 @@ class ApiHelpView(TemplateView):
|
|||
|
||||
class OPDSNavigationView(TemplateView):
|
||||
json=False
|
||||
# http://stackoverflow.com/a/6867976: secret to how to change content-type
|
||||
# https://stackoverflow.com/a/6867976: secret to how to change content-type
|
||||
|
||||
def render_to_response(self, context, **response_kwargs):
|
||||
if json:
|
||||
|
|
|
@ -479,7 +479,7 @@ def thingisbn(isbn):
|
|||
Library Thing. (takes isbn_10 or isbn_13, returns isbn_10, except for 979 isbns, which come back as isbn_13')
|
||||
"""
|
||||
logger.info("looking up %s at ThingISBN" , isbn)
|
||||
url = "http://www.librarything.com/api/thingISBN/%s" % isbn
|
||||
url = "https://www.librarything.com/api/thingISBN/%s" % isbn
|
||||
xml = requests.get(url, headers={"User-Agent": settings.USER_AGENT}).content
|
||||
doc = ElementTree.fromstring(xml)
|
||||
return [e.text for e in doc.findall('isbn')]
|
||||
|
@ -590,7 +590,7 @@ def add_openlibrary(work, hard_refresh = False):
|
|||
w = None # openlibrary work json
|
||||
|
||||
# get the 1st openlibrary match by isbn that has an associated work
|
||||
url = "http://openlibrary.org/api/books"
|
||||
url = "https://openlibrary.org/api/books"
|
||||
params = {"format": "json", "jscmd": "details"}
|
||||
subjects = []
|
||||
for edition in work.editions.all():
|
||||
|
@ -621,7 +621,7 @@ def add_openlibrary(work, hard_refresh = False):
|
|||
logger.info("got openlibrary work %s for isbn %s", work_key, isbn_key)
|
||||
models.Identifier.get_or_add(type='olwk',value=work_key,work=work)
|
||||
try:
|
||||
w = _get_json("http://openlibrary.org" + work_key,type='ol')
|
||||
w = _get_json("https://openlibrary.org" + work_key,type='ol')
|
||||
if w.has_key('description'):
|
||||
description=w['description']
|
||||
if isinstance(description,dict):
|
||||
|
|
16
core/cc.py
16
core/cc.py
|
@ -5,13 +5,13 @@
|
|||
## need to add versioned CC entries
|
||||
|
||||
INFO_CC = (
|
||||
('CC BY-NC-ND', 'by-nc-nd', 'Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0)', 'http://creativecommons.org/licenses/by-nc-nd/3.0/', 'Creative Commons Attribution-NonCommercial-NoDerivs'),
|
||||
('CC BY-NC-SA', 'by-nc-sa', 'Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)', 'http://creativecommons.org/licenses/by-nc-sa/3.0/', 'Creative Commons Attribution-NonCommercial-ShareAlike'),
|
||||
('CC BY-NC', 'by-nc', 'Creative Commons Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0)', 'http://creativecommons.org/licenses/by-nc/3.0/', 'Creative Commons Attribution-NonCommercial'),
|
||||
('CC BY-ND', 'by-nd', 'Creative Commons Attribution-NoDerivs 3.0 Unported (CC BY-ND 3.0)', 'http://creativecommons.org/licenses/by-nd/3.0/','Creative Commons Attribution-NoDerivs'),
|
||||
('CC BY-SA', 'by-sa', 'Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)', 'http://creativecommons.org/licenses/by-sa/3.0/', 'Creative Commons Attribution-ShareAlike'),
|
||||
('CC BY', 'by', 'Creative Commons Attribution 3.0 Unported (CC BY 3.0)', 'http://creativecommons.org/licenses/by/3.0/', 'Creative Commons Attribution'),
|
||||
('CC0', 'cc0', 'No Rights Reserved (CC0)', 'http://creativecommons.org/about/cc0', 'No Rights Reserved (CC0)'),
|
||||
('CC BY-NC-ND', 'by-nc-nd', 'Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported (CC BY-NC-ND 3.0)', 'https://creativecommons.org/licenses/by-nc-nd/3.0/', 'Creative Commons Attribution-NonCommercial-NoDerivs'),
|
||||
('CC BY-NC-SA', 'by-nc-sa', 'Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)', 'https://creativecommons.org/licenses/by-nc-sa/3.0/', 'Creative Commons Attribution-NonCommercial-ShareAlike'),
|
||||
('CC BY-NC', 'by-nc', 'Creative Commons Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0)', 'https://creativecommons.org/licenses/by-nc/3.0/', 'Creative Commons Attribution-NonCommercial'),
|
||||
('CC BY-ND', 'by-nd', 'Creative Commons Attribution-NoDerivs 3.0 Unported (CC BY-ND 3.0)', 'https://creativecommons.org/licenses/by-nd/3.0/','Creative Commons Attribution-NoDerivs'),
|
||||
('CC BY-SA', 'by-sa', 'Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)', 'https://creativecommons.org/licenses/by-sa/3.0/', 'Creative Commons Attribution-ShareAlike'),
|
||||
('CC BY', 'by', 'Creative Commons Attribution 3.0 Unported (CC BY 3.0)', 'https://creativecommons.org/licenses/by/3.0/', 'Creative Commons Attribution'),
|
||||
('CC0', 'cc0', 'No Rights Reserved (CC0)', 'https://creativecommons.org/about/cc0', 'No Rights Reserved (CC0)'),
|
||||
)
|
||||
INFO_FREE = INFO_CC + (
|
||||
('GFDL', 'gdfl', 'GNU Free Documentation License', 'http://www.gnu.org/licenses/fdl-1.3-standalone.html', 'GNU Free Documentation License'),
|
||||
|
@ -19,7 +19,7 @@ INFO_FREE = INFO_CC + (
|
|||
('OSI', 'opensource', 'OSI Approved License', 'https://opensource.org/licenses', 'OSI Approved License'),
|
||||
)
|
||||
INFO_PD = (
|
||||
('PD-US', 'pd-us', 'Public Domain, US', 'http://creativecommons.org/about/pdm', 'Public Domain, US'),
|
||||
('PD-US', 'pd-us', 'Public Domain, US', 'https://creativecommons.org/about/pdm', 'Public Domain, US'),
|
||||
)
|
||||
INFO_ALL = INFO_FREE + INFO_PD
|
||||
# CCHOICES, CCGRANTS, and FORMATS are all used in places that expect tuples
|
||||
|
|
|
@ -58,7 +58,7 @@ def safe_strip(a_string):
|
|||
|
||||
class GoodreadsClient(object):
|
||||
|
||||
url = 'http://www.goodreads.com'
|
||||
url = 'https://www.goodreads.com'
|
||||
request_token_url = urljoin(url,'oauth/request_token')
|
||||
authorize_url = urljoin(url, '/oauth/authorize')
|
||||
access_token_url = urljoin(url,'/oauth/access_token')
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
## {{{ http://code.activestate.com/recipes/498104/ (r1)
|
||||
|
||||
## also http://stackoverflow.com/questions/4047511/checking-if-an-isbn-number-is-correct
|
||||
## also https://stackoverflow.com/questions/4047511/checking-if-an-isbn-number-is-correct
|
||||
|
||||
import re
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ class LibraryThing(object):
|
|||
This class retrieves and parses the CSV representation of a LibraryThing user's library.
|
||||
"""
|
||||
url = "https://www.librarything.com"
|
||||
csv_file_url = "http://www.librarything.com/export-csv"
|
||||
csv_file_url = "https://www.librarything.com/export-csv"
|
||||
|
||||
def __init__(self, username=None, password=None):
|
||||
self.username = username
|
||||
|
@ -160,7 +160,7 @@ class LibraryThing(object):
|
|||
cookies = r.cookies
|
||||
|
||||
while next_page:
|
||||
url = "http://www.librarything.com/catalog_bottom.php?view=%s&viewstyle=%d&collection=%d&offset=%d" % (self.username,
|
||||
url = "https://www.librarything.com/catalog_bottom.php?view=%s&viewstyle=%d&collection=%d&offset=%d" % (self.username,
|
||||
view_style, COLLECTION, offset)
|
||||
logger.info("url: %s", url)
|
||||
if cookies is None:
|
||||
|
|
|
@ -2,7 +2,7 @@ from django.core.management.base import BaseCommand
|
|||
|
||||
from regluit.core.models import Subject
|
||||
|
||||
#http://stackoverflow.com/questions/8733233/filtering-out-certain-bytes-in-python
|
||||
#https://stackoverflow.com/questions/8733233/filtering-out-certain-bytes-in-python
|
||||
|
||||
def valid_xml_char_ordinal(c):
|
||||
codepoint = ord(c)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<div class="launch_top" id="degruyter_countdown" style="font-size:20px;text-align:center;width:50%"></div>
|
||||
|
||||
<h4>Help us unglue this book!</h4>
|
||||
<p>De Gruyter has agreed to run an ungluing campaign for this book, if it can get enough support from ungluers like you. The target price will be $2100, after which the book will be free for everyone on earth to read, copy, and share, forever (under a Creative Commons <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">BY-NC-ND</a> license).</p>
|
||||
<p>De Gruyter has agreed to run an ungluing campaign for this book, if it can get enough support from ungluers like you. The target price will be $2100, after which the book will be free for everyone on earth to read, copy, and share, forever (under a Creative Commons <a href="https://creativecommons.org/licenses/by-nc-nd/3.0/">BY-NC-ND</a> license).</p>
|
||||
|
||||
<p>They'll launch a campaign when 50 ungluers have wished for this book. Right now <span id="wisher_data"></span>. </p>
|
||||
|
||||
|
|
|
@ -477,7 +477,7 @@ class Campaign(models.Model):
|
|||
# copy custom premiums
|
||||
new_premiums = self.premiums.filter(type='CU')
|
||||
|
||||
# setting pk to None will insert new copy http://stackoverflow.com/a/4736172/7782
|
||||
# setting pk to None will insert new copy https://stackoverflow.com/a/4736172/7782
|
||||
self.pk = None
|
||||
self.status = 'INITIALIZED'
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ logger = logging.getLogger(__name__)
|
|||
# create Wishlist and UserProfile to associate with User
|
||||
def create_user_objects(sender, created, instance, **kwargs):
|
||||
# use get_model to avoid circular import problem with models
|
||||
# don't create Wishlist or UserProfile if we are loading fixtures http://stackoverflow.com/a/3500009/7782
|
||||
# don't create Wishlist or UserProfile if we are loading fixtures https://stackoverflow.com/a/3500009/7782
|
||||
if not kwargs.get('raw', False):
|
||||
try:
|
||||
Wishlist = apps.get_model('core', 'Wishlist')
|
||||
|
|
|
@ -201,7 +201,7 @@ class BookLoaderTests(TestCase):
|
|||
def test_thingisbn_mock(self):
|
||||
with requests_mock.Mocker(real_http=True) as m:
|
||||
with open(os.path.join(TESTDIR, '9780441569595.xml')) as lt:
|
||||
m.get('http://www.librarything.com/api/thingISBN/0441007465', content=lt.read())
|
||||
m.get('https://www.librarything.com/api/thingISBN/0441007465', content=lt.read())
|
||||
self.test_thingisbn(mocking=True)
|
||||
|
||||
def test_thingisbn(self, mocking=False):
|
||||
|
@ -222,7 +222,7 @@ class BookLoaderTests(TestCase):
|
|||
# ask for related editions to be added using the work we just created
|
||||
with requests_mock.Mocker(real_http=True) as m:
|
||||
with open(os.path.join(TESTDIR, '9780441569595.xml')) as lt:
|
||||
m.get('http://www.librarything.com/api/thingISBN/0441007465', content=lt.read())
|
||||
m.get('https://www.librarything.com/api/thingISBN/0441007465', content=lt.read())
|
||||
bookloader.add_related('0441007465') # should join the editions
|
||||
self.assertTrue(models.Edition.objects.count() >= edbefore)
|
||||
self.assertTrue(models.Work.objects.filter(language=lang).count() < langbefore)
|
||||
|
@ -243,7 +243,7 @@ class BookLoaderTests(TestCase):
|
|||
edition = bookloader.add_by_isbn('9780606301121') # A People's History Of The United States
|
||||
with requests_mock.Mocker(real_http=True) as m:
|
||||
with open(os.path.join(TESTDIR, '9780061989834.xml')) as lt:
|
||||
m.get('http://www.librarything.com/api/thingISBN/9780606301121', content=lt.read())
|
||||
m.get('https://www.librarything.com/api/thingISBN/9780606301121', content=lt.read())
|
||||
edition = tasks.populate_edition.run(edition.isbn_13)
|
||||
self.assertTrue(edition.work.editions.all().count() > 10)
|
||||
self.assertTrue(edition.work.subjects.all().count() > 8)
|
||||
|
@ -444,7 +444,7 @@ class BookLoaderTests(TestCase):
|
|||
self.assertEqual(w.first_epub_url(), ebook_epub.url)
|
||||
self.assertEqual(w.first_pdf_url(), ebook_pdf.url)
|
||||
|
||||
ebook_pdf.url='http://en.wikisource.org/wiki/Frankenstein'
|
||||
ebook_pdf.url='https://en.wikisource.org/wiki/Frankenstein'
|
||||
self.assertEqual(ebook_pdf.set_provider(), 'Wikisource')
|
||||
|
||||
self.user.wishlist.add_work(w, 'test')
|
||||
|
@ -492,12 +492,12 @@ class BookLoaderTests(TestCase):
|
|||
title = "Moby Dick"
|
||||
ol_work_id = "/works/OL102749W"
|
||||
gutenberg_etext_id = 2701
|
||||
epub_url = "http://www.gutenberg.org/cache/epub/2701/pg2701.epub"
|
||||
license = 'http://www.gutenberg.org/license'
|
||||
epub_url = "https://www.gutenberg.org/cache/epub/2701/pg2701.epub"
|
||||
license = 'https://www.gutenberg.org/license'
|
||||
lang = 'en'
|
||||
format = 'epub'
|
||||
publication_date = datetime(2001,7,1)
|
||||
seed_isbn = '9780142000083' # http://www.amazon.com/Moby-Dick-Whale-Penguin-Classics-Deluxe/dp/0142000086
|
||||
seed_isbn = '9780142000083' # https://www.amazon.com/Moby-Dick-Whale-Penguin-Classics-Deluxe/dp/0142000086
|
||||
|
||||
ebook = bookloader.load_gutenberg_edition(title, gutenberg_etext_id, ol_work_id, seed_isbn, epub_url, format, license, lang, publication_date)
|
||||
self.assertEqual(ebook.url, epub_url)
|
||||
|
@ -575,7 +575,7 @@ class CampaignTests(TestCase):
|
|||
|
||||
def test_required_fields(self):
|
||||
# a campaign must have a target, deadline and a work
|
||||
# see http://stackoverflow.com/questions/21458387/transactionmanagementerror-you-cant-execute-queries-until-the-end-of-the-atom
|
||||
# see https://stackoverflow.com/questions/21458387/transactionmanagementerror-you-cant-execute-queries-until-the-end-of-the-atom
|
||||
with transaction.atomic():
|
||||
c = Campaign()
|
||||
self.assertRaises(IntegrityError, c.save)
|
||||
|
@ -591,7 +591,7 @@ class CampaignTests(TestCase):
|
|||
c = Campaign(target=D('1000.00'), deadline=datetime(2013, 1, 1), work=w)
|
||||
c.license = 'CC BY-NC'
|
||||
c.save()
|
||||
self.assertEqual(c.license_url, 'http://creativecommons.org/licenses/by-nc/3.0/')
|
||||
self.assertEqual(c.license_url, 'https://creativecommons.org/licenses/by-nc/3.0/')
|
||||
self.assertEqual(c.license_badge, '/static/images/ccbync.png')
|
||||
|
||||
def test_campaign_status(self):
|
||||
|
@ -769,7 +769,7 @@ class GoodreadsTest(TestCase):
|
|||
gc = goodreads.GoodreadsClient(key=settings.GOODREADS_API_KEY, secret=settings.GOODREADS_API_SECRET)
|
||||
reviews = gc.review_list_unauth(user_id=gr_uid, shelf='read')
|
||||
# test to see whether there is a book field in each of the review
|
||||
# url for test is http://www.goodreads.com/review/list.xml?id=767708&shelf=read&page=1&per_page=20&order=a&v=2&key=[key]
|
||||
# url for test is https://www.goodreads.com/review/list.xml?id=767708&shelf=read&page=1&per_page=20&order=a&v=2&key=[key]
|
||||
self.assertTrue(all([r.has_key("book") for r in reviews]))
|
||||
|
||||
class LibraryThingTest(TestCase):
|
||||
|
@ -897,12 +897,12 @@ class DownloadPageTest(TestCase):
|
|||
e2.save()
|
||||
|
||||
eb1 = models.Ebook()
|
||||
eb1.url = "http://example.org"
|
||||
eb1.url = "https://example.org"
|
||||
eb1.edition = e1
|
||||
eb1.format = 'epub'
|
||||
|
||||
eb2 = models.Ebook()
|
||||
eb2.url = "http://example2.com"
|
||||
eb2.url = "https://example2.com"
|
||||
eb2.edition = e2
|
||||
eb2.format = 'mobi'
|
||||
|
||||
|
@ -1203,7 +1203,7 @@ class OnixLoaderTests(TestCase):
|
|||
'Subtitle': u'',
|
||||
'TableOfContents': u'',
|
||||
'Title': u'Immersion into Noise',
|
||||
'URL': u'http://dx.doi.org/10.3998/ohp.9618970.0001.001',
|
||||
'URL': u'https://doi.org/10.3998/ohp.9618970.0001.001',
|
||||
'eISBN': u'N/A',
|
||||
'eListPrice': u'N/A',
|
||||
'ePublicationDate': u'',
|
||||
|
@ -1218,7 +1218,7 @@ class OnixLoaderTests(TestCase):
|
|||
'keywords': u'Greece; Greek History; Lord Byron; War of Independence; Philhellenes; war; history; Romanticism',
|
||||
'Publication type': u'Monograph', 'GBP price epub': u'5.95', 'publication month': u'11', 'no of tables': u'',
|
||||
'GBP price paperback': u'15.95', 'AUD price epub': u'9.95', 'ISBN 4 with dashes': u'978-1-906924-02-7-epub',
|
||||
'DOI prefix': u'10.11647', 'License URL (human-readable summary)': u'http://creativecommons.org/licenses/by-nc-nd/2.0/',
|
||||
'DOI prefix': u'10.11647', 'License URL (human-readable summary)': u'https://creativecommons.org/licenses/by-nc-nd/2.0/',
|
||||
'Contributor 5 surname': u'', 'Contributor 1 first name': u'William', 'Contributor 6 first name': u'',
|
||||
'ONIX Role Code (List 17)6': u'', 'ONIX Role Code (List 17)5': u'', 'ONIX Role Code (List 17)4': u'',
|
||||
'ONIX Role Code (List 17)3': u'', 'ONIX Role Code (List 17)2': u'A24', 'ONIX Role Code (List 17)1': u'A01',
|
||||
|
@ -1226,7 +1226,7 @@ class OnixLoaderTests(TestCase):
|
|||
'ISBN 3 with dashes': u'978-1-906924-02-7', 'Countries excluded': u'None', 'first edition publication date': u'39753',
|
||||
'Original Language': u'English', 'ISBN 1 with dashes': u'978-1-906924-00-3', 'Contributor 4 first name': u'',
|
||||
'ISBN 5 with dashes': u'978-1-906924-02-7-mobi', 'Contributor 2 surname': u'Beaton',
|
||||
'License URL (our copyright tab)': u'http://www.openbookpublishers.com/isbn/9781906924003#copyright',
|
||||
'License URL (our copyright tab)': u'https://www.openbookpublishers.com/isbn/9781906924003#copyright',
|
||||
'BISAC subject code 1': u'HIS042000', 'BISAC subject code 3': u'HIS037060',
|
||||
'BISAC subject code 2': u'HIS054000', 'BISAC subject code 5': u'',
|
||||
'BISAC subject code 4': u'', 'Status': u'Active', 'Geographic rights': u'Worldwide',
|
||||
|
|
|
@ -73,7 +73,7 @@ export ANSIBLE_VAULT_PASSWORD_FILE=[path]
|
|||
```
|
||||
|
||||
To use `git diff` with these encrypted files, see the
|
||||
[.gitattributes](https://github.com/Gluejar/regluit/blob/open_source/.gitattributes) has been added to allow for using `git diff` with `ansible-vault` files: [git - How to diff ansible vault changes? - Stack Overflow](http://stackoverflow.com/questions/29937195/how-to-diff-ansible-vault-changes/39511274#39511274). One highlight from the tips, run:
|
||||
[.gitattributes](https://github.com/Gluejar/regluit/blob/open_source/.gitattributes) has been added to allow for using `git diff` with `ansible-vault` files: [git - How to diff ansible vault changes? - Stack Overflow](https://stackoverflow.com/questions/29937195/how-to-diff-ansible-vault-changes/39511274#39511274). One highlight from the tips, run:
|
||||
|
||||
|
||||
```
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<h1>Unglue.it is currently undergoing maintenance</h1>
|
||||
|
||||
<p>
|
||||
While you wait, why not like us on <a href="http://facebook.com/unglueit">Facebook</a>, follow us on <a href="http://twitter.com/unglueit">Twitter</a>, or subscribe to our <a href="https://blog.unglue.it">blog</a>? We'll keep you up to date there with our progress fixing things.
|
||||
While you wait, why not like us on <a href="https://facebook.com/unglueit">Facebook</a>, follow us on <a href="https://twitter.com/unglueit">Twitter</a>, or subscribe to our <a href="https://blog.unglue.it">blog</a>? We'll keep you up to date there with our progress fixing things.
|
||||
</p>
|
||||
|
||||
<p>You can also help us by <a href="{% url 'feedback' %}">sending us feedback</a>.</p>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block title %} Everything You Always Wanted to Know {% endblock %}
|
||||
{% block doccontent %}
|
||||
<h2>About</h2>
|
||||
<p><a href="https://unglue.it">Unglue.it</a> is a service provided by <a href="http://ebookfoundation.org">The Free Ebook Foundation</a> It's a place for individuals and institutions to join together to liberate specific ebooks and other types of digital content by paying authors and publishers to relicense their works under <a href="http://creativecommons.org">Creative Commons</a> licenses.</p>
|
||||
<p><a href="https://unglue.it">Unglue.it</a> is a service provided by <a href="https://ebookfoundation.org">The Free Ebook Foundation</a> It's a place for individuals and institutions to join together to liberate specific ebooks and other types of digital content by paying authors and publishers to relicense their works under <a href="https://creativecommons.org">Creative Commons</a> licenses.</p>
|
||||
|
||||
<p>What does this mean?</p>
|
||||
<ul>
|
||||
|
@ -28,7 +28,7 @@
|
|||
|
||||
<div class="outer">
|
||||
<div><img src="/static/images/headshots/raymond.jpg" class="mediaborder" alt="raymond" /></div>
|
||||
<div class="text"><b>Raymond Yee</b> is a data architect, author, consultant, and teacher. He is author of the leading book on web mashups, <a href="http://blog.mashupguide.net/2008/02/29/the-book-is-available-now/">Pro Web 2.0 Mashups: Remixing Data and Web Services</a> (published by Apress and licensed under a Creative Commons license), and has numerous blogs at his <a href="http://raymondyee.net/">personal site</a>. At the UC Berkeley School of Information, he taught Mixing and Remixing Information, a course on using APIs to create mashups. An open data and open government afficionado, he recently co-wrote three influential reports on how the US government can improve its efforts to make data and services available through APIs. Raymond served as the Integration Advisor for the Zotero Project (a widely used open source research tool) and managed the <a href="http://www.archive.org/details/zoterocommons">Zotero Commons</a>, a collaboration between George Mason University and the Internet Archive. Raymond has been an invited speaker about web technology at the Library of Congress, Fashion Institute of Technology, the O'Reilly Emerging Technology Conference, American Library Association, the Open Education conference, Code4lib, Educause, and NISO. While earning a Ph.D. in biophysics, he taught computer science, philosophy, and personal development to middle and high school students in the Academic Talent Development Program on the Berkeley campus. Raymond is an erstwhile tubaist, admirer of J. S. Bach, and son of industrious Chinese-Canadian restaurateurs.<br /><br />
|
||||
<div class="text"><b>Raymond Yee</b> is a data architect, author, consultant, and teacher. He is author of the leading book on web mashups, <a href="http://blog.mashupguide.net/2008/02/29/the-book-is-available-now/">Pro Web 2.0 Mashups: Remixing Data and Web Services</a> (published by Apress and licensed under a Creative Commons license), and has numerous blogs at his <a href="http://raymondyee.net/">personal site</a>. At the UC Berkeley School of Information, he taught Mixing and Remixing Information, a course on using APIs to create mashups. An open data and open government afficionado, he recently co-wrote three influential reports on how the US government can improve its efforts to make data and services available through APIs. Raymond served as the Integration Advisor for the Zotero Project (a widely used open source research tool) and managed the <a href="https://www.archive.org/details/zoterocommons">Zotero Commons</a>, a collaboration between George Mason University and the Internet Archive. Raymond has been an invited speaker about web technology at the Library of Congress, Fashion Institute of Technology, the O'Reilly Emerging Technology Conference, American Library Association, the Open Education conference, Code4lib, Educause, and NISO. While earning a Ph.D. in biophysics, he taught computer science, philosophy, and personal development to middle and high school students in the Academic Talent Development Program on the Berkeley campus. Raymond is an erstwhile tubaist, admirer of J. S. Bach, and son of industrious Chinese-Canadian restaurateurs.<br /><br />
|
||||
|
||||
Recently, Raymond has been teaching a course at UC Berkeley's School of Information science on working with Open Data; with any luck, the textbook he's working on will be a subject of a future ungluing campaign!</div>
|
||||
</div>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<b>What if you could</b> give a book to everyone on earth? Get an ebook and read it on any device, in any format, forever? Give an ebook to your library, for them to share? Own DRM-free ebooks, legally? Read free ebooks, and know their creators had been fairly paid?
|
||||
</p>
|
||||
<p>
|
||||
At Unglue.it, you can reward creators that have set their books free, via <a href="http://creativecommons.org">Creative Commons</a> licenses. You can buy books that WANT to be free, but need funding to get there. You can pledge toward creating free ebooks from print books.
|
||||
At Unglue.it, you can reward creators that have set their books free, via <a href="https://creativecommons.org">Creative Commons</a> licenses. You can buy books that WANT to be free, but need funding to get there. You can pledge toward creating free ebooks from print books.
|
||||
</p>
|
||||
<p>
|
||||
Traditionally published books are stuck: legal restrictions keep you from being able to enjoy and share them. Unglue.it gets them unstuck. Authors and publishers decide what amount lets them freely share their books with the world while still making a living. We raise that fee here through crowdfunding: people like you chipping in. When campaigns succeed, authors and publishers get paid, and you get a free ebook.
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
<p>Ungluing campaigns offer ways to earn income while at the same time making your books free. They're a tool for you to reach out to, discover, interact with, and increase your audience while raising the profile of your work. Your unglued book, in turn, becomes an ambassador for the rest of your work.</p>
|
||||
|
||||
<p>Rest assured that, when you unglue a book, you retain the copyright. You can choose whichever <a href="http://creativecommons.org/licenses/">Creative Commons license</a> serves your interests best, whether that's inviting your fans to remix your work or sharing it widely while reserving certain rights. If a book is unglued via a pledge campaign, you should set the price to zero in the Smashwords admin so as to honor the intentions of your supporters. We encourage you to develop enhanced digital editions to sell alongside the Creative Commons Licensed edition and print versions for sale. </p>
|
||||
<p>Rest assured that, when you unglue a book, you retain the copyright. You can choose whichever <a href="https://creativecommons.org/licenses/">Creative Commons license</a> serves your interests best, whether that's inviting your fans to remix your work or sharing it widely while reserving certain rights. If a book is unglued via a pledge campaign, you should set the price to zero in the Smashwords admin so as to honor the intentions of your supporters. We encourage you to develop enhanced digital editions to sell alongside the Creative Commons Licensed edition and print versions for sale. </p>
|
||||
|
||||
<h2>The Fine Print</h2>
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
Of course, <span class="ungluer"></span> can't do that, because books are stuck. Copyright and ebook licensing often make it illegal for individuals, and even libraries, to share digital books. DRM makes sharing hard. At Unglue.it, we respect copyright and pay book creators, while enabling book lovers to share their favorite books with everyone.
|
||||
</p>
|
||||
<p>
|
||||
In short, we get books unstuck. Authors and publishers decide what amount lets them freely share their books with the world while still making a living. We raise that fee here through crowdfunding: people like you and <span class="ungluer"></span> chipping in. When campaigns succeed, authors and publishers get paid, and they issue a free electronic edition under a <a href="http://creativecommons.org">Creative Commons</a> license. It's like public radio: once donors have covered the station's costs, its programs are free to all.
|
||||
In short, we get books unstuck. Authors and publishers decide what amount lets them freely share their books with the world while still making a living. We raise that fee here through crowdfunding: people like you and <span class="ungluer"></span> chipping in. When campaigns succeed, authors and publishers get paid, and they issue a free electronic edition under a <a href="https://creativecommons.org">Creative Commons</a> license. It's like public radio: once donors have covered the station's costs, its programs are free to all.
|
||||
</p>
|
||||
<p>
|
||||
What if your favorite book could be free to the world?
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
We all do, but we can't, because books are stuck. Copyright and ebook licensing often make it illegal for individuals, and even libraries, to share digital books. DRM makes sharing hard. At Unglue.it, we respect copyright and pay book creators, while enabling book lovers to share their favorite books with everyone.
|
||||
</p>
|
||||
<p>
|
||||
In short, we get books unstuck. Authors and publishers decide what amount lets them freely share their books with the world while still making a living. We raise that fee here through crowdfunding: people like you and <span class="ungluer"></span> chipping in. When campaigns succeed, book creators get paid, and they issue a free electronic edition under a <a href="http://creativecommons.org">Creative Commons</a> license. It's like public radio: once donors have covered the station's costs, its programs are free to all.
|
||||
In short, we get books unstuck. Authors and publishers decide what amount lets them freely share their books with the world while still making a living. We raise that fee here through crowdfunding: people like you and <span class="ungluer"></span> chipping in. When campaigns succeed, book creators get paid, and they issue a free electronic edition under a <a href="https://creativecommons.org">Creative Commons</a> license. It's like public radio: once donors have covered the station's costs, its programs are free to all.
|
||||
</p>
|
||||
<p>
|
||||
<span class="ungluer"></span> hasn't nominated any favorite books yet, but you can. What if your favorite book could be free to the world?
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
<div id="user-block1">
|
||||
<div id="block-intro-text"><br /><span class="special-user-name">Ready to Read</span></div>
|
||||
</div>
|
||||
<div class="user-block24"><p style="font-size: larger;"><span class="user-short-info">These {% if pub_lang %}{{ pub_lang|ez_lang_name }} language {% endif %}{% if cc.is_cc %}<a href="http://creativecommons.org/">Creative Commons</a>{% endif %} {% if license %}<a href="{{cc.url}}">{{ license }}</a>{% endif %} {%if cc.is_pd %}ebooks are ready to read - they belong to all of us!{% else %}licensed ebooks are ready to read - the people who created them want you to read and share them.{% endif %}</span></p>
|
||||
<div class="user-block24"><p style="font-size: larger;"><span class="user-short-info">These {% if pub_lang %}{{ pub_lang|ez_lang_name }} language {% endif %}{% if cc.is_cc %}<a href="https://creativecommons.org/">Creative Commons</a>{% endif %} {% if license %}<a href="{{cc.url}}">{{ license }}</a>{% endif %} {%if cc.is_pd %}ebooks are ready to read - they belong to all of us!{% else %}licensed ebooks are ready to read - the people who created them want you to read and share them.{% endif %}</span></p>
|
||||
{% if license %}<p style="font-size: smaller;"><a href="{{cc.url}}"><img src="{{cc.badge}}" alt="badge for {{license}}" style="float:left;padding:0.5em" /></a> {{cc.description}}
|
||||
</p>{% endif %}
|
||||
</div>
|
||||
|
|
|
@ -233,7 +233,7 @@ $j(document).ready(function() {
|
|||
</p>
|
||||
<p class="ebook_download logo"><img src="/static/images/ibooks_logo.jpg" alt="iBooks Logo" />iBooks</p>
|
||||
<ul>
|
||||
<li><a href="http://itunes.apple.com/us/app/ibooks/id364709193?mt=8">Download the free iBooks app</a> from the App Store.</li>
|
||||
<li><a href="https://itunes.apple.com/us/app/ibooks/id364709193?mt=8">Download the free iBooks app</a> from the App Store.</li>
|
||||
<li>Download the <a href="{{ formats.epub }}">epub file</a>.</li>
|
||||
<li>You will be given the option of opening the file in iBooks.</li>
|
||||
</ul>
|
||||
|
@ -256,7 +256,7 @@ $j(document).ready(function() {
|
|||
</p>
|
||||
<p class="ebook_download logo"><img src="/static/images/ibooks_logo.jpg" alt="iBooks Logo" />iBooks</p>
|
||||
<ul>
|
||||
<li><a href="http://itunes.apple.com/us/app/ibooks/id364709193?mt=8">Download the free iBooks app</a> from the App Store.</li>
|
||||
<li><a href="https://itunes.apple.com/us/app/ibooks/id364709193?mt=8">Download the free iBooks app</a> from the App Store.</li>
|
||||
<li>Download the <a href="{{ formats.pdf }}">pdf file</a>.</li>
|
||||
<li>You will be given the option of opening the file in iBooks.</li>
|
||||
</ul>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<ul class="terms">
|
||||
<li>a list of ISBNs of other editions of the work</li>
|
||||
<li> <i>For Pledge Campaigns only</i><ol>
|
||||
<li>the Creative Commons license selected for the campaign, formatted in accordance with best practices at <a href="http://wiki.creativecommons.org/Marking/Creators">http://wiki.creativecommons.org/Marking/Creators</a>, and a statement that for the purposes of the license, "Non-Commercial" use shall include, but not be limited to, the distribution of the Work by a commercial entity without charge.</li>
|
||||
<li>the Creative Commons license selected for the campaign, formatted in accordance with best practices at <a href="https://wiki.creativecommons.org/Marking/Creators">https://wiki.creativecommons.org/Marking/Creators</a>, and a statement that for the purposes of the license, "Non-Commercial" use shall include, but not be limited to, the distribution of the Work by a commercial entity without charge.</li>
|
||||
<li>an acknowledgement of Ungluers of the work, formatted in accordance with the premium descriptions on the Campaign page.</li>
|
||||
<li>The Unglue.it logo</li>
|
||||
<li>the text “CC edition release enabled by Unglue.it users” (including the hyperlink to the site)</li>
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<dl>
|
||||
<dt>What is Unglue.it?</dt>
|
||||
|
||||
<dd><a href="/">Unglue.it</a> is a place for individuals and institutions to join together to make ebooks free to the world. We work together to support authors, publishers, or other rights holders who want their ebooks to be free. We support <a href="http://creativecommons.org">Creative Commons</a> licensing as an enabling tool to "unglue" the ebooks. </dd>
|
||||
<dd><a href="/">Unglue.it</a> is a place for individuals and institutions to join together to make ebooks free to the world. We work together to support authors, publishers, or other rights holders who want their ebooks to be free. We support <a href="https://creativecommons.org">Creative Commons</a> licensing as an enabling tool to "unglue" the ebooks. </dd>
|
||||
|
||||
<dt>What are Ungluing Campaigns?</dt>
|
||||
|
||||
|
@ -65,11 +65,11 @@ You may get premiums as part of a Pledge Campaign, depending on the amount you p
|
|||
|
||||
<dt>Does Unglue.it own the copyright of unglued books?</dt>
|
||||
|
||||
<dd>No. When you unglue a book, the copyright stays with its current owner. Unglue.it does not buy copyrights. A <a href="http://creativecommons.org">Creative Commons</a> license is a licensing agreement. As with other licensing agreements, it grants certain rights to others but does not affect the status of the copyright.<br /><br />
|
||||
<dd>No. When you unglue a book, the copyright stays with its current owner. Unglue.it does not buy copyrights. A <a href="https://creativecommons.org">Creative Commons</a> license is a licensing agreement. As with other licensing agreements, it grants certain rights to others but does not affect the status of the copyright.<br /><br />
|
||||
|
||||
Just like many traditional publishing transactions, ungluing is about licensing rights. We use <a href="http://creativecommons.org">Creative Commons</a> licenses which allow creators to choose the ways in which their works can be copied, shared and re-used.<br /><br />
|
||||
Just like many traditional publishing transactions, ungluing is about licensing rights. We use <a href="https://creativecommons.org">Creative Commons</a> licenses which allow creators to choose the ways in which their works can be copied, shared and re-used.<br /><br />
|
||||
|
||||
If you are a copyright holder, you retain your copyright when you unglue a book. Creative Commons licenses are non-exclusive, so you also retain the right to enter into separate licensing agreements. You can read more about these licenses at the <a href="http://wiki.creativecommons.org/Frequently_Asked_Questions">Creative Commons FAQ</a>.</dd>
|
||||
If you are a copyright holder, you retain your copyright when you unglue a book. Creative Commons licenses are non-exclusive, so you also retain the right to enter into separate licensing agreements. You can read more about these licenses at the <a href="https://wiki.creativecommons.org/Frequently_Asked_Questions">Creative Commons FAQ</a>.</dd>
|
||||
|
||||
<dt>If I'm a rights holder and my book is unglued, does that mean I can never make money from it again?</dt>
|
||||
|
||||
|
@ -271,7 +271,7 @@ Support the books you've loved and make them free to everyone.
|
|||
<dl>
|
||||
<dt>So what is an unglued ebook?</dt>
|
||||
|
||||
<dd>An unglued ebook is a book that's added a <a href="http://creativecommons.org">Creative Commons</a> license, after payments to the author, publisher, or other rights holder.<br /><br />
|
||||
<dd>An unglued ebook is a book that's added a <a href="https://creativecommons.org">Creative Commons</a> license, after payments to the author, publisher, or other rights holder.<br /><br />
|
||||
|
||||
What does this mean for you? If you're a book lover, you can read unglued ebooks for free, on the device of your choice, in the format of your choice, and share them with all your friends. If you're a library, you can lend them to your patrons with no checkout limits or simultaneous user restrictions, and preserve them however you think best. If you're a rights holder, you get a payments in lieu of further royalties, while retaining copyright and all interests in your work.
|
||||
</dd>
|
||||
|
@ -314,7 +314,7 @@ Under all CC licenses (except CC0), you <b>cannot</b>: remove the author's name
|
|||
|
||||
<dt>What does non-commercial mean under Creative Commons?</dt>
|
||||
|
||||
<dd>Creative Commons doesn't define "commercial" thoroughly (though it's worth reading what <a href="http://wiki.creativecommons.org/FAQ#Does_my_use_violate_the_NonCommercial_clause_of_the_licenses.3F">they have to say on the topic</a>). So as part of the Unglue.it process, ungluing rights holders agree that "For purposes of interpreting the CC License, Rights Holder agrees that 'non-commercial' use shall include, without limitation, distribution by a commercial entity without charge for access to the Work."<br /><br />
|
||||
<dd>Creative Commons doesn't define "commercial" thoroughly (though it's worth reading what <a href="https://wiki.creativecommons.org/FAQ#Does_my_use_violate_the_NonCommercial_clause_of_the_licenses.3F">they have to say on the topic</a>). So as part of the Unglue.it process, ungluing rights holders agree that "For purposes of interpreting the CC License, Rights Holder agrees that 'non-commercial' use shall include, without limitation, distribution by a commercial entity without charge for access to the Work."<br /><br />
|
||||
|
||||
Unglue.it can't provide legal advice about how to interpret Creative Commons licenses, and we encourage you to read about the licenses yourself and, if necessary, seek qualified legal advice.</dd>
|
||||
|
||||
|
@ -344,7 +344,7 @@ Unglue.it also provides links to download previously unglued books, creative com
|
|||
<dl>
|
||||
<dt>Why does an unglued book have to be in copyright?</dt>
|
||||
|
||||
<dd>Because books out of copyright are already free for you to copy, remix, and share! If a book is in the <a href="http://en.wikipedia.org/wiki/Public_domain">public domain</a>, it doesn't need to be unglued.</dd>
|
||||
<dd>Because books out of copyright are already free for you to copy, remix, and share! If a book is in the <a href="https://en.wikipedia.org/wiki/Public_domain">public domain</a>, it doesn't need to be unglued.</dd>
|
||||
|
||||
<dt>How can I tell if a book is in copyright or not?</dt>
|
||||
|
||||
|
@ -368,7 +368,7 @@ Unglue.it signs agreements assuring the copyright status of every work we unglue
|
|||
<dd>To start a campaign, you need to be a verified rights holder who has signed a Platform Services Agreement with us. </dd>
|
||||
<dt>What do I need to do to become an authorized Rights Holder on Unglue.it?</dt>
|
||||
|
||||
<dd>Contact our Rights Holder Relations team, <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>, to discuss signing our <a href="https://www.docracy.com/1mud3ve9w8/unglue-it-non-exclusive-platform-services-agreement">Platform Services Agreement (PSA)</a>, setting a revenue goal, and running a campaign on Unglue.it to release your book under a <a href="http://creativecommons.org">Creative Commons</a> license, or to raise money for a book you've already released under such a license.</dd>
|
||||
<dd>Contact our Rights Holder Relations team, <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>, to discuss signing our <a href="https://www.docracy.com/1mud3ve9w8/unglue-it-non-exclusive-platform-services-agreement">Platform Services Agreement (PSA)</a>, setting a revenue goal, and running a campaign on Unglue.it to release your book under a <a href="https://creativecommons.org">Creative Commons</a> license, or to raise money for a book you've already released under such a license.</dd>
|
||||
|
||||
<dt>I haven't signed an agreement, but my books are listed on Unglue.it. What's going on?</dt>
|
||||
<dd>If your book is listed on Unglue.it, it's because an unglue.it user has indicated some interested in the book. Perhaps your book has been added to a user's favorites list. Users can also use the site to post links to Creative Commons licensed or public domain books. Unglue.it works with non-profit sites such as Internet Archive to improve their coverage and preservation of Creative Commons licensed books.
|
||||
|
@ -485,7 +485,7 @@ If you want to find an interesting campaign and don't have a specific book in mi
|
|||
<p>This assumes that you have a (free) Google account.</p>
|
||||
|
||||
<ul class="bullets">
|
||||
<li>Upload your PDF to <a href="http://drive.google.com">Google Drive</a>.</li>
|
||||
<li>Upload your PDF to <a href="https://drive.google.com">Google Drive</a>.</li>
|
||||
<li>Click on the Share button.</li>
|
||||
<li>Change the visibility to public on the web and click Save, then Done.</li>
|
||||
<li>In the File menu, click the Embed this PDF option.</li>
|
||||
|
@ -646,7 +646,7 @@ If you're concerned a campaign may not reach its goal you have several options.
|
|||
|
||||
<dt>If I am an author do I have to talk to my publisher or agent first?</dt>
|
||||
|
||||
<dd>It is your responsibility to get advice on the current status of any contracts you may have ever had for the right to publish your work, whether or not a book is in print now. <a href="http://creativecommons.org">Creative Commons</a> licenses are media neutral and worldwide (English). You may need waivers from other parties who have exclusive licenses for this book.</dd>
|
||||
<dd>It is your responsibility to get advice on the current status of any contracts you may have ever had for the right to publish your work, whether or not a book is in print now. <a href="https://creativecommons.org">Creative Commons</a> licenses are media neutral and worldwide (English). You may need waivers from other parties who have exclusive licenses for this book.</dd>
|
||||
|
||||
<dt>If I am a publisher, but I do not have an ebook royalty in my contract, can I sign your Platform Services Agreement?</dt>
|
||||
|
||||
|
@ -666,7 +666,7 @@ If you're concerned a campaign may not reach its goal you have several options.
|
|||
|
||||
<dt>Can an unglued ebook be issued only in the US?</dt>
|
||||
|
||||
<dd>No. An unglued ebook is released to the world. It uses a <a href="http://creativecommons.org">Creative Commons</a> license which is territory-neutral. That is, the unglued ebook can be read by anyone, anywhere in the world, subject always to the limitations of the license.</dd>
|
||||
<dd>No. An unglued ebook is released to the world. It uses a <a href="https://creativecommons.org">Creative Commons</a> license which is territory-neutral. That is, the unglued ebook can be read by anyone, anywhere in the world, subject always to the limitations of the license.</dd>
|
||||
{% endif %}
|
||||
|
||||
</dl>
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
<form id="clear_goodreads_id" method="post" action="{% url 'goodreads_flush_assoc' %}">
|
||||
<p><input type="submit" value="Unlink your Goodreads account from Unglue.it" /></p>
|
||||
</form>
|
||||
<p>You can also revoke access for Unglue.it at <a href="http://www.goodreads.com/user/edit?tab=apps">Goodreads user apps panel</a>.</p>
|
||||
<p>You can also revoke access for Unglue.it at <a href="https://www.goodreads.com/user/edit?tab=apps">Goodreads user apps panel</a>.</p>
|
||||
|
||||
<hr />
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ The library license gives download access to one library member at a time for 14
|
|||
</ol>
|
||||
</dd>
|
||||
<dt>Stay in touch.</dt>
|
||||
<dd>You can follow us on Twitter (<a href="http://twitter.com/unglueit">@unglueit</a>), <a href="http://facebook/com/unglueit">Facebook</a>, and our <a href="https://blog.unglue.it">blog</a>, and <a href="http://eepurl.com/fKLfI">subscribe to our newsletter</a> (1-2 emails per month).</dd>
|
||||
<dd>You can follow us on Twitter (<a href="https://twitter.com/unglueit">@unglueit</a>), <a href="https://facebook/com/unglueit">Facebook</a>, and our <a href="https://blog.unglue.it">blog</a>, and <a href="http://eepurl.com/fKLfI">subscribe to our newsletter</a> (1-2 emails per month).</dd>
|
||||
<dt>Spread the word.</dt>
|
||||
<dd>There are social media sharing links on most pages on the site. There are some right here!
|
||||
<div id="widgetcode">Copy/paste this into your site:<br /><textarea rows="7" cols="22"><iframe src="https://{{request.META.HTTP_HOST}}/api/widget/{{work.first_isbn_13}}/" width="152" height="325" frameborder="0"></iframe></textarea></div>
|
||||
|
@ -56,7 +56,7 @@ The library license gives download access to one library member at a time for 14
|
|||
</ul>
|
||||
<div class="clearfix"></div></dd>
|
||||
<dt>Educate yourself and your patrons about ebook issues and Creative Commons licenses.</dt>
|
||||
<dd>Checkout limits, publishers who won't sell ebooks to libraries, DRM, companies tracking readers' behavior, library prices far in excess of consumer costs, incompatible technologies and formats, cataloging silos...you know why it's hard for you to deliver a seamless ereading experience to your patrons. Make sure they know, too. And make sure everyone knows how solutions, like <a href="http://creativecommons.org">Creative Commons</a> licenses, can help libraries and readers while respecting copyright and protecting creators' rights.</dd>
|
||||
<dd>Checkout limits, publishers who won't sell ebooks to libraries, DRM, companies tracking readers' behavior, library prices far in excess of consumer costs, incompatible technologies and formats, cataloging silos...you know why it's hard for you to deliver a seamless ereading experience to your patrons. Make sure they know, too. And make sure everyone knows how solutions, like <a href="https://creativecommons.org">Creative Commons</a> licenses, can help libraries and readers while respecting copyright and protecting creators' rights.</dd>
|
||||
<dt>Support <a href="{% url 'campaign_list' 'ending' %}">our active campaigns</a>.</dt>
|
||||
<dd>Ultimately ebooks can't be unglued unless authors and publishers are paid for their work. Many of our staunchest supporters are librarians. There are also several libraries which have supported campaigns, including Leddy Library (University of Windsor, Ontario); the University of Alberta library ; and the Z. Smith Reynolds library (Wake Forest University).</dd>
|
||||
<dt>Give feedback and ask questions.</dt>
|
||||
|
|
|
@ -77,7 +77,7 @@ function highlightTarget(targetdiv) {
|
|||
</a>
|
||||
{% endif %}
|
||||
{% if library.user.profile.facebook_id %}
|
||||
<a href="http://www.facebook.com/profile.php?id={{library.user.profile.facebook_id}}" class="nounderline">
|
||||
<a href="https://www.facebook.com/profile.php?id={{library.user.profile.facebook_id}}" class="nounderline">
|
||||
<img src="/static/images/supporter_icons/facebook_square.png" alt="{{ supporter }}'s Facebook" title="{{ supporter }}'s Facebook" />
|
||||
</a>
|
||||
{% endif %}
|
||||
|
@ -92,7 +92,7 @@ function highlightTarget(targetdiv) {
|
|||
</a>
|
||||
{% endif %}
|
||||
{% if library.user.profile.librarything_id %}
|
||||
<a href="http://www.librarything.com/profile/{{ library.user.profile.librarything_id }}" class="nounderline">
|
||||
<a href="https://www.librarything.com/profile/{{ library.user.profile.librarything_id }}" class="nounderline">
|
||||
<img src="/static/images/supporter_icons/librarything_square.png" alt="{{ supporter }}'s profile on LibraryThing" title="{{ supporter }}'s page on LibraryThing" />
|
||||
</a>
|
||||
{% endif %}
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
{% if books %}
|
||||
<ul>
|
||||
{% for book in books|slice:":50" %}
|
||||
<li>{% if lt_api_key %}<img src="http://covers.librarything.com/devkey/{{lt_api_key}}/small/isbn/{{book.isbn}}" />{% endif %}<img src="http://covers.openlibrary.org/b/isbn/{{book.isbn}}-S.jpg" />{{book.title.title}} | ISBN:{{book.isbn}} | Work ID:{{book.work_id}} | Book ID:{{book.book_id}}</li>
|
||||
<li>{% if lt_api_key %}<img src="https://covers.librarything.com/devkey/{{lt_api_key}}/small/isbn/{{book.isbn}}" />{% endif %}<img src="https://covers.openlibrary.org/b/isbn/{{book.isbn}}-S.jpg" />{{book.title.title}} | ISBN:{{book.isbn}} | Work ID:{{book.work_id}} | Book ID:{{book.book_id}}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
|
|
@ -181,10 +181,10 @@ Please fix the following before launching your campaign:
|
|||
{% ifnotequal campaign_status 'ACTIVE' %}
|
||||
{% ifnotequal campaign.type 3 %}
|
||||
<h3>License being offered</h3>
|
||||
<p> This is the license you are offering to use once the campaign succeeds. For more information on the licenses you can use, see <a href="http://creativecommons.org/licenses">Creative Commons: About the Licenses</a>. Once your campaign is active, you'll be able to switch to a less restrictive license, but not a more restrictive one. We encourage you to pick the least restrictive license you are comfortable with, as this will increase the ways people can use your unglued ebook and motivate more people to donate.</p>
|
||||
<p> This is the license you are offering to use once the campaign succeeds. For more information on the licenses you can use, see <a href="https://creativecommons.org/licenses">Creative Commons: About the Licenses</a>. Once your campaign is active, you'll be able to switch to a less restrictive license, but not a more restrictive one. We encourage you to pick the least restrictive license you are comfortable with, as this will increase the ways people can use your unglued ebook and motivate more people to donate.</p>
|
||||
{% else %}
|
||||
<h3>License Being Used</h3>
|
||||
<p> This is the license you are using. For more information on the licenses you can use, see <a href="http://creativecommons.org/licenses">Creative Commons: About the Licenses</a>.
|
||||
<p> This is the license you are using. For more information on the licenses you can use, see <a href="https://creativecommons.org/licenses">Creative Commons: About the Licenses</a>.
|
||||
Once your campaign is active, you'll be able to switch to a less restrictive license, but not a more restrictive one.
|
||||
We encourage you to pick the least restrictive license you are comfortable with, as this will increase the ways people can use your unglued ebook and motivate more people to participate.
|
||||
</p>
|
||||
|
@ -241,7 +241,7 @@ Please fix the following before launching your campaign:
|
|||
{% else %}
|
||||
<p>You are offering your ebook under a <b><a href="{{campaign.license_url }}">{{ campaign.license }}</a></b> license.</p>
|
||||
{% endifnotequal %}
|
||||
<p>Since your campaign is active, you may only change the license to remove restrictions. For more information on the licenses you can use, see <a href="http://creativecommons.org/licenses">Creative Commons: About the Licenses</a>.</p>
|
||||
<p>Since your campaign is active, you may only change the license to remove restrictions. For more information on the licenses you can use, see <a href="https://creativecommons.org/licenses">Creative Commons: About the Licenses</a>.</p>
|
||||
<div>
|
||||
{{ form.license.errors }}<span>{{ form.license }}</span>
|
||||
</div>
|
||||
|
|
|
@ -42,7 +42,7 @@ onload = function(){
|
|||
ISBN: <span itemprop="isbn">{{ edition.isbn_13 }}</span><br />
|
||||
{% endif %}
|
||||
{% if edition.oclc %}
|
||||
OCLC: <a href="http://www.worldcat.org/oclc/{{ edition.oclc }}">{{ edition.oclc }}</a><br />
|
||||
OCLC: <a href="https://www.worldcat.org/oclc/{{ edition.oclc }}">{{ edition.oclc }}</a><br />
|
||||
{% endif %}
|
||||
|
||||
{% include 'edition_upload.html' %}
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
Your donation of ${{transaction.max_amount|default:"0"}} to the Free Ebook Foundation will help us make free ebooks of all types more accessible for those that need them. The Free Ebook Foundation is a US 501(c)3 non-profit organization. Our tax ID number is 61-1767266. Your gift is tax deductible to the full extent provided by the law.
|
||||
|
||||
For more information about the Free Ebook Foundation, visit http://ebookfoundation.org/
|
||||
For more information about the Free Ebook Foundation, visit https://ebookfoundation.org/
|
||||
|
||||
Thank you again for your generous support.
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
{% block comments_textual %}
|
||||
<p>Your donation of ${{transaction.max_amount|default:"0"}} to the Free Ebook Foundation will help us make free ebooks of all types more accessible for those that need them. The Free Ebook Foundation is a US 501(c)3 non-profit organization. Our tax ID number is 61-1767266. Your gift is tax deductible to the full extent provided by the law.<p>
|
||||
<p>For more information about the Free Ebook Foundation, visit <a href="http://ebookfoundation.org/ ">our website</a>.
|
||||
<p>For more information about the Free Ebook Foundation, visit <a href="https://ebookfoundation.org/ ">our website</a>.
|
||||
</p>
|
||||
<p>Thank you again for your support.
|
||||
</p>
|
||||
|
|
|
@ -2,7 +2,7 @@ Your Platform Services Agreement has been accepted and you're now an official Un
|
|||
|
||||
Here's what to do next. Find your book(s) on Unglue.it. On the More... tab of the book page, you'll now see an option to claim the book. Do this. We'll follow up. Once we've approved your claim, you'll be able to run campaigns for the book.
|
||||
|
||||
If your book isn't listed in Google Books (which powers our search), you won't be able to find it at Unglue.it. That's okay. You can submit your books for inclusion in Google's search results: http://books.google.com/googlebooks/publishers.html . We can also create a custom page for you; just notify us.
|
||||
If your book isn't listed in Google Books (which powers our search), you won't be able to find it at Unglue.it. That's okay. You can submit your books for inclusion in Google's search results: https://books.google.com/googlebooks/publishers.html . We can also create a custom page for you; just notify us.
|
||||
|
||||
You can also start thinking ahead about what you'd like your campaigns to look like and how you'd like to publicize them. Some good things to brainstorm: your campaign pitch; any photos or video you can include; compelling premiums you might be able to offer; what you want your target to be and how long you think your campaign should last; and how to share your campaign with your social networks (online and off) and media contacts.
|
||||
|
||||
|
|
|
@ -12,11 +12,11 @@
|
|||
|
||||
{% block comments_textual %}
|
||||
{% ifequal campaign.type 1 %}
|
||||
<div>Congratulations! You wished for a campaign, and here it is. If ungluers like you pledge {{ campaign.target|intcomma }} by {{ campaign.deadline|date:"M d, Y" }}, <I>{{ campaign.work.title }}</i> will be released under a <a href="http://creativecommons.org">Creative Commons</a> license for all to enjoy.</div>
|
||||
<div>Congratulations! You wished for a campaign, and here it is. If ungluers like you pledge {{ campaign.target|intcomma }} by {{ campaign.deadline|date:"M d, Y" }}, <I>{{ campaign.work.title }}</i> will be released under a <a href="https://creativecommons.org">Creative Commons</a> license for all to enjoy.</div>
|
||||
<div>You can help! <a href="{% url 'pledge' campaign.work.id %}">Pledge</a> any amount, and use the sharing options on the <a href="{% url 'work' campaign.work.id %}">campaign page</a> to tell your friends.</a></div>
|
||||
{% endifequal %}
|
||||
{% ifequal campaign.type 2 %}
|
||||
<div>Great! You wished for a campaign, and here it is. Someday, the book will be released under a <a href="http://creativecommons.org">Creative Commons license</a> for everyone to enjoy. Every copy purchased brings that day {{ campaign.days_per_copy|floatformat }} days sooner.</div>
|
||||
<div>Great! You wished for a campaign, and here it is. Someday, the book will be released under a <a href="https://creativecommons.org">Creative Commons license</a> for everyone to enjoy. Every copy purchased brings that day {{ campaign.days_per_copy|floatformat }} days sooner.</div>
|
||||
<div>You can help! <a href="{% url 'purchase' campaign.work.id %}">Purchase</a> a copy, and use the sharing options on the <a href="{% url 'work' campaign.work.id %}">campaign page</a> to tell your friends.</a></div>
|
||||
{% endifequal %}
|
||||
{% ifequal campaign.type 3 %}
|
||||
|
|
|
@ -20,7 +20,7 @@ URL: {{ ebook.download_url }}
|
|||
{% if work.ebooks.0.rights == 'PD-US' %}
|
||||
A public domain ebook belongs to all of us. You can do anything you like with it.
|
||||
{% else %}
|
||||
The Creative Commons licensing terms for {{ work.title }} allow you to redistribute the files under the specified license terms. There's no DRM. For full details, see http://creativecommons.org/licenses/.
|
||||
The Creative Commons licensing terms for {{ work.title }} allow you to redistribute the files under the specified license terms. There's no DRM. For full details, see https://creativecommons.org/licenses/.
|
||||
{% endif %}
|
||||
|
||||
{% if work.last_campaign_status == 'SUCCESSFUL' %}
|
||||
|
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
<h2 class="thank-you">Thank you!</h2>
|
||||
{% if not campaign %}
|
||||
<p class="pledge_complete">You've just donated ${{ transaction.amount|floatformat:2|intcomma }} to the <a href="http://ebookfoundation.org">Free Ebook Foundation</a></p>
|
||||
<p class="pledge_complete">You've just donated ${{ transaction.amount|floatformat:2|intcomma }} to the <a href="https://ebookfoundation.org">Free Ebook Foundation</a></p>
|
||||
{% endif %}
|
||||
{% ifequal campaign.type 1 %}
|
||||
<p class="pledge_complete">You've just {% if modified %}modified your pledge for{% else %}pledged{% endif %} ${{ transaction.amount|floatformat:2|intcomma }} to <I><a href="{% url 'work' work.id %}">{{ work.title }}</a></I>. If it reaches its goal of ${{ campaign.target|intcomma }} by {{ campaign.deadline|date:"M d Y"}}, it will be unglued for all to enjoy.</p>
|
||||
|
@ -74,8 +74,8 @@
|
|||
{% else %}
|
||||
|
||||
<ul class="social menu pledge">
|
||||
<a href="https://www.facebook.com/sharer.php?u=http://ebookfoundation.org"><li class="facebook first"><span>Facebook</span></li></a>
|
||||
<a href="https://twitter.com/intent/tweet?url=http://ebookfoundation.org&text=I%20just%20supported%20The%20Free%20Ebook%20Foundation.%20Will%20you%20join%20me%3F"><li class="twitter"><span>Twitter</span></li></a>
|
||||
<a href="https://www.facebook.com/sharer.php?u=https://ebookfoundation.org"><li class="facebook first"><span>Facebook</span></li></a>
|
||||
<a href="https://twitter.com/intent/tweet?url=https://ebookfoundation.org&text=I%20just%20supported%20The%20Free%20Ebook%20Foundation.%20Will%20you%20join%20me%3F"><li class="twitter"><span>Twitter</span></li></a>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
|
|
@ -60,10 +60,10 @@ When books have a clear, established legal license which promotes use, they can
|
|||
<dt>Where?</dt>
|
||||
<dd>The Free Ebook Foundation is a New Jersey non-for-profit corporation, but its employees and contractors live and work across North America. The best way to contact us is by email, <a href="mailto:press@gluejar.com">freeebookfoundation@gmail.com</a>.</dd>
|
||||
<dt>What's your technology?</dt>
|
||||
<dd>Unglue.it is built using <a href="http://python.org/">Python</a> and the <a href="https://www.djangoproject.com/">Django framework</a>. We use data from the <a href="http://code.google.com/apis/books/docs/v1/getting_started.html">Google Books</a>, <a href="http://openlibrary.org/developers/api">Open Library</a>, <a href="http://www.librarything.com/api">LibraryThing</a>, and <a href="http://www.goodreads.com/api">GoodReads</a> APIs; we appreciate that they've made these APIs available, and we're returning the favor with <a href="/api/help">our own API</a>. You're welcome to use it. We use <a href="http://lesscss.org/">Less</a> to organize our CSS. We process pledges with <a href="https://stripe.com/">Stripe</a>. We collaborate on our code at <a href="https://github.com/">GitHub</a> and deploy to the cloud with <a href="http://aws.amazon.com/ec2/">Amazon EC2</a>.</dd>
|
||||
<dd>Unglue.it is built using <a href="http://python.org/">Python</a> and the <a href="https://www.djangoproject.com/">Django framework</a>. We use data from the <a href="https://code.google.com/apis/books/docs/v1/getting_started.html">Google Books</a>, <a href="https://openlibrary.org/developers/api">Open Library</a>, <a href="https://www.librarything.com/api">LibraryThing</a>, and <a href="https://www.goodreads.com/api">GoodReads</a> APIs; we appreciate that they've made these APIs available, and we're returning the favor with <a href="/api/help">our own API</a>. You're welcome to use it. We use <a href="http://lesscss.org/">Less</a> to organize our CSS. We process pledges with <a href="https://stripe.com/">Stripe</a>. We collaborate on our code at <a href="https://github.com/">GitHub</a> and deploy to the cloud with <a href="https://aws.amazon.com/ec2/">Amazon EC2</a>.</dd>
|
||||
<dt>What licenses are supported? </dt>
|
||||
<dd>
|
||||
We support the <a href="http://creativecommons.org/licenses/">Creative Commons</a> licenses in all of our programs. Ebooks with these licenses are free and legal for everyone to read, copy, and share worldwide and requires that the author attribution.<br /><br />
|
||||
We support the <a href="https://creativecommons.org/licenses/">Creative Commons</a> licenses in all of our programs. Ebooks with these licenses are free and legal for everyone to read, copy, and share worldwide and requires that the author attribution.<br /><br />
|
||||
We support a additional Free Licenses in our Thanks-for-Ungluing program.
|
||||
</dd>
|
||||
|
||||
|
@ -110,7 +110,7 @@ We support a additional Free Licenses in our Thanks-for-Ungluing program.
|
|||
<div>
|
||||
<iframe width="480" height="274" src="//www.youtube-nocookie.com/embed/YNGPCR-iM24?rel=0" frameborder="0" allowfullscreen></iframe><br />
|
||||
<I>November 2011</I><br />
|
||||
Eric Hellman, "The Network is Overrated"; talk at <a href="http://bib.archive.org/">Books in Browsers</a> 2011.
|
||||
Eric Hellman, "The Network is Overrated"; talk at <a href="https://bib.archive.org/">Books in Browsers</a> 2011.
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -70,11 +70,11 @@ We use <a href=" http://w3c.github.io/webappsec/specs/referrer-policy">referrer
|
|||
<ul class="bullets">
|
||||
|
||||
<li>
|
||||
We use <a href="http://www.google.com/analytics/">Google Analytics</a>. If you believe their <a href="http://www.google.com/analytics/terms/us.html">terms of service</a>, they can't share this data outside Google. But Google is fundamentally an advertising company, and it's very likely that Google knows exactly who you are.
|
||||
We use <a href="https://www.google.com/analytics/">Google Analytics</a>. If you believe their <a href="https://www.google.com/analytics/terms/us.html">terms of service</a>, they can't share this data outside Google. But Google is fundamentally an advertising company, and it's very likely that Google knows exactly who you are.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
We use cover images from <a href="http://books.google.com/">Google Books</a>. We don't really know if Google Books does much with the data they receive as a result. Google isn't learning anything they don't already know from analytics, but the <a href="http://books.google.com/intl/en/googlebooks/privacy.html">Google Books Privacy Policy</a> is interesting reading for privacy wonks.
|
||||
We use cover images from <a href="https://books.google.com/">Google Books</a>. We don't really know if Google Books does much with the data they receive as a result. Google isn't learning anything they don't already know from analytics, but the <a href="https://books.google.com/intl/en/googlebooks/privacy.html">Google Books Privacy Policy</a> is interesting reading for privacy wonks.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
@ -94,7 +94,7 @@ When you download an ebook via Unglue.it, it usually comes from a third party. W
|
|||
|
||||
<ul class="bullets">
|
||||
<li><a href="https://archive.org/about/terms.php">Internet Archive</a> (Excellent privacy!) </li>
|
||||
<li><a href="http://www.gutenberg.org/wiki/Gutenberg:Privacy_policy">Project Gutenberg</a> (insecure) </li>
|
||||
<li><a href="https://www.gutenberg.org/wiki/Gutenberg:Privacy_policy">Project Gutenberg</a> (insecure) </li>
|
||||
<li><a href="http://www.oapen.org/about">OAPEN</a> (no privacy policy, insecure) </li>
|
||||
<li><a href="http://www.hathitrust.org/privacy">Hathitrust</a> (insecure) </li>
|
||||
<li><a href="https://help.github.com/articles/github-privacy-policy/">Github</a> </li>
|
||||
|
@ -115,7 +115,7 @@ We have used a small number of third party services that do not set cookies to t
|
|||
|
||||
<ul class="bullets">
|
||||
<li>
|
||||
We've worked to pare this list down to one. <a href="http://aws.amazon.com/s3/">Amazon S3</a>. We disable logging for our S3 buckets, but we're not aware of any privacy commitment by Amazon Web Services regarding their logging practices for S3 (Simple Storage Service) separate from the Amazon privacy policies. But we can verify that S3 sets no tracking cookies.
|
||||
We've worked to pare this list down to one. <a href="https://aws.amazon.com/s3/">Amazon S3</a>. We disable logging for our S3 buckets, but we're not aware of any privacy commitment by Amazon Web Services regarding their logging practices for S3 (Simple Storage Service) separate from the Amazon privacy policies. But we can verify that S3 sets no tracking cookies.
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
|
|
|
@ -150,7 +150,7 @@ function highlightTarget(targetdiv) {
|
|||
</a>
|
||||
{% endif %}
|
||||
{% if supporter.profile.librarything_id %}
|
||||
<a href="http://www.librarything.com/profile/{{ supporter.profile.librarything_id }}" class="nounderline">
|
||||
<a href="https://www.librarything.com/profile/{{ supporter.profile.librarything_id }}" class="nounderline">
|
||||
<img src="/static/images/supporter_icons/librarything_square.png" alt="{{ supporter }}'s profile on LibraryThing" title="{{ supporter }}'s page on LibraryThing" />
|
||||
</a>
|
||||
{% endif %}
|
||||
|
|
|
@ -214,7 +214,7 @@
|
|||
<a id="find-google" href="{{ work.googlebooks_url }}"><img src="/static/images/supporter_icons/googlebooks_square.png" title="Find on Google Books" alt="Find on Google Books" /></a>
|
||||
{% endif %}
|
||||
{% if work.first_oclc %}
|
||||
<a rel="nofollow" id="find-oclc" href="http://www.worldcat.org/oclc/{{ work.first_oclc }}"><img src="/static/images/supporter_icons/worldcat_square.png" title="Find on Worldcat" alt="Find on Worldcat" /></a>
|
||||
<a rel="nofollow" id="find-oclc" href="https://www.worldcat.org/oclc/{{ work.first_oclc }}"><img src="/static/images/supporter_icons/worldcat_square.png" title="Find on Worldcat" alt="Find on Worldcat" /></a>
|
||||
{% endif %}
|
||||
<a rel="nofollow" class="find-openlibrary" href="{% url 'work_openlibrary' work_id %}"><img src="/static/images/supporter_icons/openlibrary_square.png" title="Find on OpenLibrary" alt="Find on OpenLibrary" /></a>
|
||||
<a rel="nofollow" class="find-goodreads" href="{% url 'work_goodreads' work_id %}"><img src="/static/images/supporter_icons/goodreads_square.png" title="Find on GoodReads" alt="Find on GoodReads" /></a>
|
||||
|
|
|
@ -223,7 +223,7 @@ class PledgingUiTests(TestCase):
|
|||
|
||||
# login and heck whether user logged in
|
||||
self.assertTrue(self.client.login(username=self.USERNAME, password=self.PASSWORD))
|
||||
# http://stackoverflow.com/a/6013115
|
||||
# https://stackoverflow.com/a/6013115
|
||||
#self.assertEqual(self.client.session['_auth_user_id'], self.user.pk)
|
||||
|
||||
user = auth.get_user(self.client)
|
||||
|
|
|
@ -2577,11 +2577,11 @@ def work_librarything(request, work_id):
|
|||
url = work.librarything_url
|
||||
elif isbn:
|
||||
# TODO: do the redirect here and capture the work id?
|
||||
url = "http://www.librarything.com/isbn/%s" % isbn
|
||||
url = "https://www.librarything.com/isbn/%s" % isbn
|
||||
else:
|
||||
term = work.title + " " + work.author()
|
||||
q = urlencode({'searchtpe': 'work', 'term': term})
|
||||
url = "http://www.librarything.com/search.php?" + q
|
||||
url = "https://www.librarything.com/search.php?" + q
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
def work_openlibrary(request, work_id):
|
||||
|
@ -2593,20 +2593,20 @@ def work_openlibrary(request, work_id):
|
|||
url = work.openlibrary_url
|
||||
elif len(isbns) > 0:
|
||||
isbns = ",".join(isbns)
|
||||
u = 'http://openlibrary.org/api/books?bibkeys=%s&jscmd=data&format=json' % isbns
|
||||
u = 'https://openlibrary.org/api/books?bibkeys=%s&jscmd=data&format=json' % isbns
|
||||
try:
|
||||
j = json.loads(requests.get(u).content)
|
||||
# as long as there were some matches get the first one and route to it
|
||||
if len(j.keys()) > 0:
|
||||
first = j.keys()[0]
|
||||
url = "http://openlibrary.org" + j[first]['key']
|
||||
url = "https://openlibrary.org" + j[first]['key']
|
||||
except ValueError:
|
||||
# fail at openlibrary
|
||||
logger.warning("failed to get OpenLibrary json at %s" % u)
|
||||
# fall back to doing a search on openlibrary
|
||||
if not url:
|
||||
q = urlencode({'q': work.title + " " + work.author()})
|
||||
url = "http://openlibrary.org/search?" + q
|
||||
url = "https://openlibrary.org/search?" + q
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
def work_goodreads(request, work_id):
|
||||
|
@ -2615,10 +2615,10 @@ def work_goodreads(request, work_id):
|
|||
if work.goodreads_id:
|
||||
url = work.goodreads_url
|
||||
elif isbn:
|
||||
url = "http://www.goodreads.com/book/isbn/%s" % isbn
|
||||
url = "https://www.goodreads.com/book/isbn/%s" % isbn
|
||||
else:
|
||||
q = urlencode({'query': work.title + " " + work.author()})
|
||||
url = "http://www.goodreads.com/search?" + q
|
||||
url = "https://www.goodreads.com/search?" + q
|
||||
return HttpResponseRedirect(url)
|
||||
|
||||
@login_required
|
||||
|
@ -3219,10 +3219,10 @@ def send_to_kindle(request, work_id, javascript='0'):
|
|||
|
||||
|
||||
"""
|
||||
Amazon SES has a 10 MB size limit (http://aws.amazon.com/ses/faqs/#49) in messages sent
|
||||
Amazon SES has a 10 MB size limit (https://aws.amazon.com/ses/faqs/#49) in messages sent
|
||||
to determine whether the file will meet this limit, we probably need to compare the
|
||||
size of the mime-encoded file to 10 MB. (and it's unclear exactly what the Amazon FAQ means precisely by
|
||||
MB either: http://en.wikipedia.org/wiki/Megabyte) http://www.velocityreviews.com/forums/t335208-how-to-get-size-of-email-attachment.html might help
|
||||
MB either: https://en.wikipedia.org/wiki/Megabyte) http://www.velocityreviews.com/forums/t335208-how-to-get-size-of-email-attachment.html might help
|
||||
|
||||
for the moment, we will hardwire a 749229 limit in filesize:
|
||||
* assume conservative size of megabyte, 1000000B
|
||||
|
|
|
@ -83,7 +83,7 @@ def selective_social_user(backend, uid, user=None, *args, **kwargs):
|
|||
'is_new': user is None,
|
||||
'new_association': False}
|
||||
|
||||
# http://stackoverflow.com/a/19361220
|
||||
# https://stackoverflow.com/a/19361220
|
||||
# adapting https://github.com/omab/python-social-auth/blob/v0.2.10/social/apps/django_app/middleware.py#L25
|
||||
|
||||
class SocialAuthExceptionMiddlewareWithoutMessages(SocialAuthExceptionMiddleware):
|
||||
|
|
|
@ -235,7 +235,7 @@ class Block(models.Model):
|
|||
ordering = ['lower',]
|
||||
|
||||
|
||||
# from http://en.wikipedia.org/wiki/Luhn_algorithm#Implementation_of_standard_Mod_10
|
||||
# from https://en.wikipedia.org/wiki/Luhn_algorithm#Implementation_of_standard_Mod_10
|
||||
def luhn_checksum(card_number):
|
||||
def digits_of(n):
|
||||
return [int(d) for d in str(n)]
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
<br /><br />
|
||||
Lower: <code>24.0.0.1</code> Upper: <code>24.0.0.255</code>
|
||||
<br /><br />
|
||||
Don't use "loopback" addresses like 127.0.0.1, or the <a href="http://en.wikipedia.org/wiki/Private_network">private network blocks</a>: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255. </p>
|
||||
Don't use "loopback" addresses like 127.0.0.1, or the <a href="https://en.wikipedia.org/wiki/Private_network">private network blocks</a>: 10.0.0.0 - 10.255.255.255, 172.16.0.0 - 172.31.255.255, 192.168.0.0 - 192.168.255.255. </p>
|
|
@ -19,7 +19,7 @@ from django.contrib.auth.models import User
|
|||
# create Credit to associate with User
|
||||
def create_user_objects(sender, created, instance, **kwargs):
|
||||
# use get_model to avoid circular import problem with models
|
||||
# don't create Credit if we are loading fixtures http://stackoverflow.com/a/3500009/7782
|
||||
# don't create Credit if we are loading fixtures https://stackoverflow.com/a/3500009/7782
|
||||
if not kwargs.get('raw', False):
|
||||
try:
|
||||
Credit = apps.get_model('payment', 'Credit')
|
||||
|
|
|
@ -57,7 +57,7 @@ STRIPE_EVENT_TYPES = ['account.updated', 'account.application.deauthorized', 'ba
|
|||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# http://stackoverflow.com/questions/2348317/how-to-write-a-pager-for-python-iterators/2350904#2350904
|
||||
# https://stackoverflow.com/questions/2348317/how-to-write-a-pager-for-python-iterators/2350904#2350904
|
||||
def grouper(iterable, page_size):
|
||||
page= []
|
||||
for item in iterable:
|
||||
|
@ -155,7 +155,7 @@ def filter_none(d):
|
|||
|
||||
# if you create a Customer object, then you'll be able to charge multiple times. You can create a customer with a token.
|
||||
|
||||
# http://en.wikipedia.org/wiki/Luhn_algorithm#Implementation_of_standard_Mod_10
|
||||
# https://en.wikipedia.org/wiki/Luhn_algorithm#Implementation_of_standard_Mod_10
|
||||
|
||||
def luhn_checksum(card_number):
|
||||
def digits_of(n):
|
||||
|
|
|
@ -75,7 +75,7 @@ def route53_records(domain_name, name, record_type):
|
|||
|
||||
def modify_rds_parameter(group_name, parameter, value, apply_immediate=False):
|
||||
"""change parameter in RDS parameter group_name to value
|
||||
http://stackoverflow.com/a/9085381/7782
|
||||
https://stackoverflow.com/a/9085381/7782
|
||||
Remember to make sure that the parameter group is actually associated with the db.
|
||||
You will likely need to reboot db too.
|
||||
"""
|
||||
|
|
|
@ -211,7 +211,7 @@ def test_relaunch(unglue_it_url = settings.LIVE_SERVER_TEST_URL, do_local=True,
|
|||
|
||||
# click on biggest campaign list
|
||||
# I have no idea why selenium thinks a is not displayed....so that's why I'm going up one element.
|
||||
# http://stackoverflow.com/a/6141678/7782
|
||||
# https://stackoverflow.com/a/6141678/7782
|
||||
#biggest_campaign_link = WebDriverWait(sel,20).until(lambda d: d.find_element_by_css_selector("li > a[href*='/campaigns/ending']"))
|
||||
#biggest_campaign_link.click()
|
||||
#time.sleep(1)
|
||||
|
|
|
@ -10,7 +10,7 @@ contributor:
|
|||
deathdate: 1933
|
||||
gutenberg_agent_id: '37155'
|
||||
url: http://www.gutenberg.org/2009/agents/37155
|
||||
wikipedia: http://en.wikipedia.org/wiki/E._W._Kemble
|
||||
wikipedia: https://en.wikipedia.org/wiki/E._W._Kemble
|
||||
edition_list:
|
||||
-
|
||||
_edition: rtc_isbn
|
||||
|
@ -32,8 +32,8 @@ creator:
|
|||
deathdate: 1910
|
||||
gutenberg_agent_id: '53'
|
||||
url: http://www.gutenberg.org/2009/agents/53
|
||||
wikipedia: http://en.wikipedia.org/wiki/Mark_Twain
|
||||
description: 'Wikipedia: http://en.wikipedia.org/wiki/Adventures_of_Huckleberry_Finn'
|
||||
wikipedia: https://en.wikipedia.org/wiki/Mark_Twain
|
||||
description: 'Wikipedia: https://en.wikipedia.org/wiki/Adventures_of_Huckleberry_Finn'
|
||||
gutenberg_bookshelf:
|
||||
- Banned Books from Anne Haight's list
|
||||
- Best Books Ever Listings
|
||||
|
@ -45,7 +45,7 @@ language: en
|
|||
publication_date: 2015-08-01
|
||||
publisher: Project Gutenberg
|
||||
rights: PD-US
|
||||
rights_url: http://creativecommons.org/licenses/by-nc/4.0/
|
||||
rights_url: https://creativecommons.org/licenses/by-nc/4.0/
|
||||
subjects:
|
||||
- !lcsh Male friendship -- Fiction
|
||||
- !lcsh Fugitive slaves -- Fiction
|
||||
|
|
|
@ -5,7 +5,7 @@ contributor:
|
|||
gutenberg_agent_id: 25396
|
||||
agent_name: John Schoenherr
|
||||
agent_sortname: Schoenherr, John
|
||||
wikipedia: http://en.wikipedia.org/wiki/John_Schoenherr
|
||||
wikipedia: https://en.wikipedia.org/wiki/John_Schoenherr
|
||||
covers:
|
||||
-
|
||||
image_path: 20728-h/images/illus-front.jpg
|
||||
|
@ -18,7 +18,7 @@ creator:
|
|||
gutenberg_agent_id: 8301
|
||||
agent_name: H. Beam Piper
|
||||
agent_sortname: Piper, H. Beam
|
||||
wikipedia: http://en.wikipedia.org/wiki/H._Beam_Piper
|
||||
wikipedia: https://en.wikipedia.org/wiki/H._Beam_Piper
|
||||
description:
|
||||
funding_info:
|
||||
identifiers:
|
||||
|
|
|
@ -3,7 +3,7 @@ import sys
|
|||
import unicodedata
|
||||
|
||||
|
||||
#http://stackoverflow.com/questions/1707890/fast-way-to-filter-illegal-xml-unicode-chars-in-python
|
||||
#https://stackoverflow.com/questions/1707890/fast-way-to-filter-illegal-xml-unicode-chars-in-python
|
||||
_illegal_unichrs = [(0x00, 0x08), (0x0B, 0x0C), (0x0E, 0x1F),
|
||||
(0x7F, 0x84), (0x86, 0x9F),
|
||||
(0xFDD0, 0xFDDF), (0xFFFE, 0xFFFF)]
|
||||
|
|
|
@ -37,8 +37,8 @@ Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
|||
end
|
||||
|
||||
|
||||
# 512MB not enough for compiling lxml: http://stackoverflow.com/a/25916353/7782
|
||||
# http://stackoverflow.com/a/26468913/7782 --> for how to get to this setting
|
||||
# 512MB not enough for compiling lxml: https://stackoverflow.com/a/25916353/7782
|
||||
# https://stackoverflow.com/a/26468913/7782 --> for how to get to this setting
|
||||
node.vm.provider "virtualbox" do |v|
|
||||
v.memory = 1024
|
||||
v.cpus = 2
|
||||
|
|
|
@ -156,7 +156,7 @@
|
|||
# installing mysql
|
||||
# https://github.com/bennojoy/mysql --> probably the right way
|
||||
# how do you make use of other people's playbooks in the right way?
|
||||
# http://stackoverflow.com/a/7740571/7782
|
||||
# https://stackoverflow.com/a/7740571/7782
|
||||
|
||||
- name: mysql setup
|
||||
raw: debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password password {{mysql_root_pw}}'
|
||||
|
@ -190,8 +190,8 @@
|
|||
|
||||
|
||||
# running stuff within a virtualenv
|
||||
# http://stackoverflow.com/a/20572360
|
||||
# http://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
# https://stackoverflow.com/a/20572360
|
||||
# https://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
|
||||
|
||||
#sudo("ln -s /opt/regluit/deploy/please.conf /etc/apache2/sites-available/please")
|
||||
|
@ -276,7 +276,7 @@
|
|||
|
||||
#Run syncdb on the application
|
||||
# TO DO: syncdb might be deprecated
|
||||
# http://stackoverflow.com/a/29683785
|
||||
# https://stackoverflow.com/a/29683785
|
||||
|
||||
- name: django syncdb
|
||||
django_manage: >
|
||||
|
|
|
@ -103,7 +103,7 @@
|
|||
## installing mysql
|
||||
## https://github.com/bennojoy/mysql --> probably the right way
|
||||
## how do you make use of other people's playbooks in the right way?
|
||||
## http://stackoverflow.com/a/7740571/7782
|
||||
## https://stackoverflow.com/a/7740571/7782
|
||||
#
|
||||
#- name: mysql setup
|
||||
# raw: debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password password {{mysql_root_pw}}'
|
||||
|
@ -126,8 +126,8 @@
|
|||
|
||||
|
||||
# running stuff within a virtualenv
|
||||
# http://stackoverflow.com/a/20572360
|
||||
# http://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
# https://stackoverflow.com/a/20572360
|
||||
# https://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
|
||||
|
||||
## hard coding of just
|
||||
|
|
|
@ -22,13 +22,13 @@
|
|||
# installing mysql
|
||||
# https://github.com/bennojoy/mysql --> probably the right way
|
||||
# how do you make use of other people's playbooks in the right way?
|
||||
# http://stackoverflow.com/a/7740571/7782
|
||||
# https://stackoverflow.com/a/7740571/7782
|
||||
|
||||
post_tasks:
|
||||
|
||||
# running stuff within a virtualenv
|
||||
# http://stackoverflow.com/a/20572360
|
||||
# http://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
# https://stackoverflow.com/a/20572360
|
||||
# https://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
|
||||
|
||||
## hard coding of {{config_name}}
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
# installing mysql
|
||||
# https://github.com/bennojoy/mysql --> probably the right way
|
||||
# how do you make use of other people's playbooks in the right way?
|
||||
# http://stackoverflow.com/a/7740571/7782
|
||||
# https://stackoverflow.com/a/7740571/7782
|
||||
|
||||
- name: mysql setup
|
||||
raw: debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password password {{mysql_root_pw}}'
|
||||
|
@ -158,8 +158,8 @@
|
|||
|
||||
|
||||
# running stuff within a virtualenv
|
||||
# http://stackoverflow.com/a/20572360
|
||||
# http://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
# https://stackoverflow.com/a/20572360
|
||||
# https://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
|
||||
|
||||
## hard coding of please
|
||||
|
|
|
@ -103,7 +103,7 @@
|
|||
# installing mysql
|
||||
# https://github.com/bennojoy/mysql --> probably the right way
|
||||
# how do you make use of other people's playbooks in the right way?
|
||||
# http://stackoverflow.com/a/7740571/7782
|
||||
# https://stackoverflow.com/a/7740571/7782
|
||||
|
||||
- name: mysql setup
|
||||
raw: debconf-set-selections <<< 'mysql-server-5.5 mysql-server/root_password password {{mysql_root_pw}}'
|
||||
|
@ -126,8 +126,8 @@
|
|||
|
||||
|
||||
# running stuff within a virtualenv
|
||||
# http://stackoverflow.com/a/20572360
|
||||
# http://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
# https://stackoverflow.com/a/20572360
|
||||
# https://stackoverflow.com/questions/20575084/best-way-to-always-run-ansible-inside-a-virtualenv-on-remote-machines?rq=1
|
||||
|
||||
|
||||
## hard coding of please
|
||||
|
|
Loading…
Reference in New Issue