50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
from time import sleep
|
|
|
|
from celery.decorators import task
|
|
|
|
from django.contrib.auth.models import User
|
|
|
|
from regluit.core import bookloader, models
|
|
from regluit.core import goodreads, librarything
|
|
|
|
@task
|
|
def populate_edition(isbn):
|
|
"""given an edition this task will populate the database with additional
|
|
information about related editions and subjects related to this edition
|
|
"""
|
|
bookloader.add_related(isbn)
|
|
edition=models.Edition.get_by_isbn(isbn)
|
|
if edition:
|
|
bookloader.add_openlibrary(edition.work)
|
|
return edition
|
|
|
|
@task
|
|
def load_goodreads_shelf_into_wishlist(user_id, shelf_name='all', goodreads_user_id=None, max_books=None,
|
|
expected_number_of_books=None):
|
|
user=User.objects.get(id=user_id)
|
|
return goodreads.load_goodreads_shelf_into_wishlist(user,shelf_name,goodreads_user_id,max_books, expected_number_of_books)
|
|
|
|
@task
|
|
def load_librarything_into_wishlist(user_id, lt_username, max_books=None):
|
|
user=User.objects.get(id=user_id)
|
|
return librarything.load_librarything_into_wishlist(user, lt_username, max_books)
|
|
|
|
@task
|
|
def add(x,y):
|
|
return x+y
|
|
|
|
@task
|
|
def fac(n, sleep_interval=None):
|
|
if not(isinstance(n,int) and n >= 0):
|
|
raise Exception("You can't calculate a factorial of %s " % (str(n)))
|
|
if n <= 1:
|
|
return 1
|
|
else:
|
|
res = 1
|
|
for i in xrange(2,n+1):
|
|
res = res*i
|
|
fac.update_state(state="PROGRESS", meta={"current": i, "total": n})
|
|
if sleep_interval is not None:
|
|
sleep(sleep_interval)
|
|
return res
|