Example #1
0
def two_books(django_db_setup, django_db_blocker):
    with django_db_blocker.unblock():
        books = [
            Book(bookid="jaM7DwAAQBAJ",
                 title="Ender's Game",
                 authors="Orson Scott Card",
                 publisher="Tom Doherty Associates",
                 published="2017-10-17",
                 isbn="9780765394866",
                 pages=448,
                 language="en",
                 description=("This engaging, collectible, miniature hardcover"
                              " of the Orson Scott Card classic ...")),
            Book(bookid="UCJMRAAACAAJ",
                 title="Elantris",
                 authors="Brandon Sanderson",
                 publisher="Gollancz",
                 published="2011",
                 isbn="9780575097445",
                 pages=656,
                 language="en",
                 description=("Elantris was built on magic and it thrived. "
                              "But then the magic began to fade ..."))
        ]
        Book.objects.bulk_create(books)
        added_titles = ["Ender's Game", "Elantris"]
        return Book.objects.filter(title__in=added_titles)
Example #2
0
 def setUp(self):
     books = Book.objects.bulk_create([
         Book(
             title="one",
             publication_date="1970-01-01",
             isbn="12345x",
             page_count=100,
             cover_photo="www.google.pl",
             publication_language="pl",
         ),
         Book(
             title="two",
             publication_date="1980-01-01",
             isbn="12346x",
             page_count=100,
             cover_photo="www.google.pl",
             publication_language="pl",
         ),
         Book(
             title="three",
             publication_date="1990-01-01",
             isbn="12347x",
             page_count=100,
             cover_photo="www.google.pl",
             publication_language="pl",
         ),
     ])
     authors = Author.objects.bulk_create([
         Author(name="Stephen King"),
         Author(name="Andriej Diakow"),
         Author(name="Dan Simmons"),
     ])
     for author, book in zip(authors, books):
         book.authors.add(author)
Example #3
0
    def setUpTestData(cls):
        murder = Book(title="Murder on the Orient Express",
                      subtitle="A Hercule Poirot Mystery")
        murder.save()
        murder.author.create(given_name="Agatha",
                             last_name="Christie",
                             date_of_birth="1890-09-15",
                             date_of_death="1976-01-12")
        murder.genre.create(name="Mystery")
        murder.save()

        omens = Book(
            title="Good Omens",
            subtitle="The Nice and Accurate Prophecies of Agnes Nutter, Witch",
            pub_year=1990)
        omens.save()
        omens.author.create(given_name="Terry",
                            last_name="Pratchett",
                            date_of_birth="1948-04-28",
                            date_of_death="2015-03-12")
        omens.author.create(given_name="Neil",
                            last_name="Gaiman",
                            date_of_birth="1960-11-10")
        omens.genre.create(name="Science Fiction")
        omens.genre.create(name="Fantasy")
        omens.save()
Example #4
0
 def test_models(self):
     data_dicts = set_up_data()
     self.assertTrue(Collection(data_dicts['c']))
     self.assertTrue(Publisher(data_dicts['p']))
     self.assertTrue(Author(data_dicts['a']))
     self.assertTrue(Book(data_dicts['b1']))
     self.assertTrue(Book(data_dicts['b2']))
    def test_setCollaborators_should_setCollaboratorsAndSaveBook(self):
        _book = Book()
        _book.set_collaborators = mock.Mock()

        self.modelStub.from_legacy_model.return_value = _book

        self.sut.set_collaborators(Book(), [])
        self.assertTrue(_book.set_collaborators.called)
        self.repositoryStub.save.assert_called_with(_book)
Example #6
0
def run():
    author1 = Author(name="J. K. Rowling", birth_date="1965-07-31", author_pic="authors/2020/05/jkrowling.jpg", bio="Es una escritora, productora de cine y guionista británica, conocida por ser la autora de la serie de libros Harry Potter, que han superado los quinientos millones de ejemplares vendidos.")
    author2 = Author(name="Rick Riordan", birth_date='1964-06-05', author_pic="authors/2020/06/rriordan.jpg", bio="Richard Russell Riordan es un escritor estadounidense. Es más conocido por ser el autor de la saga Percy Jackson y los dioses del Olimpo.")
    author3 = Author(name="Suzanne Collins", birth_date='1962-08-10', author_pic="authors/2020/06/scollins.jpg", bio="Escritora estadounidense, sus revolucionarias novelas juveniles, Los Juegos del Hambre, En llamas y Sinsajo fueron superventas de The New York Times. Recibieron reconocimiento en todo el mundo.")
    publisher1 = Publisher(name="Bloomsbury", city="Londres", country="Reino Unido", about="Bloomsbury Publishing es una casa editorial independiente, asentada en Londres en el Reino Unido, conocida por sus novelas literarias. Fue nombrada \"editorial del año\" en 1999 y 2000.", website="www.bloomsbury.com", publisher_pic="publishers/2020/06/bblogo.png")
    publisher2 = Publisher(name="Salamandra", city="Barcelona", country="España", about="Ediciones Salamandra, también llamada simplemente Salamandra, es una editorial fundada en 1989 en Barcelona como filial española de la editorial argentina Emecé Editores.", website="www.megustaleer.com/editoriales/salamandra/SD/", publisher_pic="publishers/2020/06/sallogo.jpg")
    publisher3 = Publisher(name="Scholastic", city="Nueva York", country="Estados Unidos", about="Scholastic es una empresa editora de libros estadounidense conocida por publicar materiales educativos para escuelas, además de libros comerciales.", website="www.scholastic.com", publisher_pic="publishers/2020/06/schlogo.png")
    tag1 = Tag(title="Fantasy")
    tag2 = Tag(title="Mystery")
    tag3 = Tag(title="Novel")
    tag4 = Tag(title="Adventure")
    book1 = Book(title="Harry Potter y la Piedra Filosofal", author=author1, pub_date="1997-06-26", publisher=publisher1, description="Harry Potter crece en la casa de sus tíos, los Dursley, quienes le ocultan su verdadera historia familiar; al cumplir Harry once años de edad, empiezan a llegarle cartas de remitente desconocido, que van aumentando en número a medida que sus tíos no dejan que las abra. Las mismas traen la noticia de que el niño ha sido admitido en el Colegio Hogwarts de Magia y Hechicería, ya que, al igual que sus padres, tiene poderes mágicos. \\n\\nSe descubre entonces que los Potter no murieron en un accidente de coche como se le había dicho a Harry, sino que habían sido asesinados en la noche de Halloween por un hechicero tenebroso conocido como lord Voldemort, quien había aterrorizado a la comunidad mágica británica años atrás. Sin embargo, algo ocurrió esa noche: Voldemort consiguió matar al matrimonio Potter pero no pudo asesinar al bebé, perdió su cuerpo y le dejó al niño una cicatriz permanente en forma de rayo en su frente. \\n\\nRubeus Hagrid aparece para llevarse a Harry una noche, cuando los Dursley intentan impedir que parta rumbo al colegio. Más tarde, el hombre ayuda a Harry a comprar sus materiales escolares en el callejón Diagon y allí éste descubre que es famoso entre los magos por haber sobrevivido al intento de homicidio. Posteriormente, el muchacho toma el tren que lo lleva a Hogwarts y allí conoce a Ron Weasley, un chico pelirrojo hijo de magos, y a Hermione Granger, una jovencita de origen muggle con altas aspiraciones académicas. Los tres se hacen amigos y más tarde, durante su año escolar, se ven envueltos en una serie de episodios relacionados con un objeto escondido en las profundidades del edificio: la piedra filosofal, un artefacto con el poder de transmutar los metales en oro y producir el elixir de la vida eterna. Diferentes hechos les hacen suponer que uno de sus profesores, Severus Snape, desea conseguir la piedra para entregársela a Voldemort, con quien el docente estaría confabulado.", price="199.99", cover_pic="covers/2020/05/hpylpf.jpg", book_content="contents/hpylpf.pdf")
    book2 = Book(title="Harry Potter y la Cámara Secreta", author=author1, pub_date="1998-07-08", publisher=publisher1, description="Tras derrotar una vez más a lord Voldemort, su siniestro enemigo  en Harry  Potter y la piedra filosofal, Harry espera impaciente en casa de sus insoportables tíos el inicio del segundo curso del Colegio Hogwarts de Magia y hechicería. Sin embargo, la espera dura poco, pues un elfo aparece en su habitación y le advierte que una amenaza mortal se cierne sobre la escuela. Así pues, Harry no se lo piensa dos veces y, acompañado de  Ron, su mejor amigo, se dirige a Hogwarts en un coche volador. Pero ¿puede un aprendiz de mago defender la escuela de los malvados que pretenden destruirla? Sin saber que alguien ha abierto la Cámara de los Secretos, dejando escapar una serie de monstruos peligrosos, Harry y sus amigos Ron y Hermione tendrán que enfrentarse con arañas gigantes, serpientes encantadas, fantasmas enfurecidos y, sobre todo, con la mismísima reencarnación de su más temible adversario.", price="199.99", cover_pic="covers/2020/05/hpylca.jpg", book_content="contents/hpylca.pdf")
    book3 = Book(title="Harry Potter y el Prisionero de Azkaban", author=author1, pub_date="1999-07-08", publisher=publisher1, description="Por la cicatriz que lleva en la frente, sabemos que Harry Potter no es un niño como los demás, sino el héroe que venció a lord Voldemort, el mago más temible y maligno de todos los tiempos y culpable de la muerte de los  padres  de  Harry.  Desde  entonces,  Harry  no  tiene  más  remedio  que  vivir  con  sus  pesados  tíos  y  su  insoportable  primo  Dudley,  todos  ellos  muggles, o sea, personas no magas, que desprecian a su sobrino debido a sus poderes. Igual que en las dos primeras partes de la serie —La piedra filosofal y La cámara  secreta—  Harry  aguarda  con  impaciencia  el  inicio  del  tercer  curso  en  el  Colegio  Hogwarts  de  Magia  y  Hechicería.  Tras  haber  cumplido los trece años, solo y lejos de sus amigos de Hogwarts, Harry se pelea con su bigotuda tía Marge, a la que convierte en globo, y debe huir en un autobús mágico. Mientras tanto, de la prisión de Azkaban se ha  escapado  un  terrible  villano,  Sirius  Black,  un  asesino  en  serie  con  poderes  mágicos  que  fue  cómplice  de  lord  Voldemort  y  que  parece  dispuesto  a  eliminar  a  Harry  del  mapa.  Y  por  si  esto  fuera  poco,  Harry  deberá enfrentarse también a unos terribles monstruos, los dementores, seres  abominables  capaces  de  robarles  la  felicidad  a  los  magos  y  de  borrar  todo  recuerdo  hermoso  de  aquellos  que  osan  mirarlos.  Lo  que  ninguno de estos malvados personajes sabe es que Harry, con la ayuda de sus fieles amigos Ron y Hermione, es capaz de todo y mucho más.", price="199.99", cover_pic="covers/2020/05/hpyepda.jpg", book_content="contents/hpyepda.pdf")
    book4 = Book(title="Harry Potter y el Cáliz de Fuego", author=author1, pub_date='2000-07-08', publisher=publisher1, description="Tras otro abominable verano con los Dursley, Harry se dispone a  iniciar el cuarto curso en Hogwarts, la famosa escuela de magia y  hechicería. A sus catorce años, a Harry le gustaría ser un joven  mago como los demás y dedicarse a aprender nuevos sortilegios, encontrarse con sus amigos Ron y Hermione y asistir con ellos a los Mundiales de quidditch. Sin embargo, al llegar al colegio le espera una gran sorpresa que lo obligará a  enfrentarse a los desafíos más temibles de toda su vida. Si logra superarlos, habrá demostrado que ya no es un niño y que está preparado para vivir las nuevas y emocionantes experiencias que el futuro le depara.",  price="199.99", cover_pic="covers/2020/06/hpyecdf.jpg", book_content="contents/hpyecdf.pdf")
    book5 = Book(title="Percy Jackson y el Ladrón del Rayo", author=author2, pub_date='2005-06-28', publisher=publisher2, description="¿Qué pasaría si un día descubrieras que, en realidad, eres hijo de un dios griego que debe cumplir una misión secreta? Pues eso es lo que le sucede a Percy Jackson, que a partir de ese momento se dispone a vivir los acontecimientos más emocionantes de su vida. Expulsado de seis colegios, Percy padece dislexia y dificultades para concentrarse, o al menos ésa es la versión oficial. Objeto de burlas por inventarse historias fantásticas, ni siquiera él mismo acaba de creérselas hasta el día que los dioses del Olimpo le revelan la verdad: Percy es nada menos que un semidiós, es decir, el hijo de un dios y una mortal. Y como tal ha de descubrir quién ha robado el rayo de Zeus y así evitar que estalle una guerra entre los dioses. Para cumplir la misión contará con la ayuda de sus amigos Grover, un joven sátiro, y Annabeth, hija de Atenea. El ladrón del rayo da comienzo a la apasionante serie Percy Jackson y los Dioses del Olimpo, un mundo secreto que los antiguos dioses griegos han recreado a nuestro alrededor en pleno siglo XXI.", price="159.99", cover_pic="covers/2020/06/pjyeldr.jpg", book_content="contents/pjyeldr.pdf")
    book6 = Book(title="Percy Jackson y el Mar de los Monstruos", author=author2, pub_date='2006-04-01', publisher=publisher2, description="Desde que sabe que es hijo de un dios del Olimpo, Percy Jackson espera que el destino le depare continuas aventuras. Y sus expectativas se cumplen con creces. Aunque el nuevo curso en la Escuela Meriwether transcurre con inusual nor- malidad, un simple partido de balón prisionero acaba en batalla campal contra una banda de feroces gigantes. A partir de ahí los acontecimientos se precipitan: el perímetro mágico que protege el Campamento Mestizo es destruido por un misterioso enemigo y la única seguridad con que contaban los semidioses desaparece. Así, para impedir este daño irreparable, Percy y sus amigos inician la travesía del temible Mar de los Monstruos en busca de lo único que puede salvar el campamento: el Vellocino de Oro.", price="159.99", cover_pic="covers/2020/06/pjyemdlm.jpg", book_content="contents/pjyemdlm.pdf")
    book7 = Book(title="Percy Jackson y la Maldición del Titán", author=author2, pub_date="2007-04-15", publisher=publisher2, description="Ante la llamada de socorro de su amigo el sátiro Grover, Percy acude inmediatamente en su auxilio. Y aunque va acompañado de Annabeth y Thalia, las dos semidiosas que son sus aliadas, ninguno imagina la sorpresa  que  los  aguarda:  una  terrible  mantícora  pretende secuestrarlos  y  llevarlos  ante  el  general  enviado  por  Cronos,  el diabólico señor de los titanes. Sin embargo, gracias a la ayuda de las cazadoras de Artemisa, Percy y sus aliadas logran escapar y volver al campamento  mestizo.  Una  vez  allí,  emprenderán  la  búsqueda  del monstruo que puede provocar la destrucción del Olimpo, a pesar de que, según la profecía del Oráculo, sólo uno de ellos logrará resistir la maldición del titán.", price="159.99", cover_pic="covers/2020/06/pjylmdt.jpg", book_content="contents/pjylmdt.pdf")
    book8 = Book(title="The Hunger Games", author=author3, pub_date="2008-09-14", publisher=publisher3, description="Ganar significa fama y fortuna. Perder significa muerte segura. Los juegos del hambre han comenzado. . . . En las ruinas de un lugar una vez conocido como América del Norte se encuentra la nación de Panem, un brillante Capitolio rodeado de doce distritos periféricos. El Capitolio es duro y cruel y mantiene a los distritos en línea al obligarlos a enviar a un niño y una niña entre las edades de doce y dieciocho años a participar en los Juegos Anuales del Hambre, una pelea a muerte en la televisión en vivo.Katniss Everdeen, de 16 años, lo considera una sentencia de muerte cuando se adelanta para ocupar el lugar de su hermana en los Juegos. Pero Katniss ha estado cerca de la muerte antes, y la supervivencia, para ella, es una segunda naturaleza. Sin querer realmente, se convierte en una contendiente. Pero si quiere ganar, tendrá que comenzar a tomar decisiones que sopesen la supervivencia contra la humanidad y la vida contra el amor.", price="149.99", cover_pic="covers/2020/06/thg.jpg", book_content="contents/thg.pdf")
    book9 = Book(title="Catching Fire", author=author3, pub_date="2009-09-01", publisher=publisher3, description="Suzanne Collins continúa la increíble historia de Katniss Everdeen en la fenomenal trilogía de los Juegos del Hambre. Contra viento y marea, Katniss Everdeen ha ganado los Juegos del Hambre anuales con su colega tributo del distrito, Peeta Mellark. Pero fue una victoria ganada por el desafío del Capitolio y sus duras reglas. Katniss y Peeta deberían estar felices. Después de todo, acaban de ganar para ellos y sus familias una vida segura y abundante. Pero hay rumores de rebelión entre los sujetos, y Katniss y Peeta, para su horror, son los rostros de esa rebelión. El capitolio está enojado. El Capitolio quiere venganza.", price="149.99", cover_pic="covers/2020/06/thgcf.jpg", book_content="contents/thgcf.pdf")
    book10 = Book(title="Mockingjay", author=author3, pub_date="2010-08-24", publisher=publisher3, description="Katniss Everdeen, niña en llamas, ha sobrevivido, a pesar de que su casa ha sido destruida. Hay rebeldes. Hay nuevos líderes. Se está desarrollando una revolución. El Distrito 13 salió de las sombras y está planeando derrocar al Capitolio. Aunque ha sido parte de la revolución durante mucho tiempo, Katniss no lo ha sabido. Ahora parece que todos han intervenido en los planes cuidadosamente elaborados menos ella. El éxito de la rebelión depende de la voluntad de Katniss de ser un peón, de aceptar la responsabilidad de innumerables vidas y de cambiar el curso del futuro de Panem. Para hacer esto, debe dejar de lado sus sentimientos de ira y desconfianza. Ella debe convertirse en el Sinsajo de los rebeldes, sin importar el costo.", price="149.99", cover_pic="covers/2020/06/thgmj.jpg", book_content="contents/thgmj.pdf")
    author1.save()
    author2.save()
    author3.save()
    publisher1.save()
    publisher2.save()
    publisher3.save()
    tag1.save()
    tag2.save()
    tag3.save()
    tag4.save()
    book1.save()
    book2.save()
    book3.save()
    book4.save()
    book5.save()
    book6.save()
    book7.save()
    book8.save()
    book9.save()
    book10.save()
    book1.tags.set([tag1])
    book2.tags.set([tag1, tag2])
    book3.tags.set([tag1])
    book4.tags.set([tag1, tag2])
    book5.tags.set([tag1, tag4])
    book6.tags.set([tag1, tag4])
    book7.tags.set([tag1, tag4])
    book8.tags.set([tag3])
    book9.tags.set([tag3])
    book10.tags.set([tag3])
Example #7
0
def books(django_db_setup, django_db_blocker):
    with django_db_blocker.unblock():
        books = [
            Book(bookid="nneBa6-mWfgC",
                 title="Coders at Work",
                 authors="Peter Seibel",
                 publisher="Apress",
                 published="2009-09-16",
                 isbn="978143021948463",
                 pages=632,
                 language="en",
                 description=("<p>Peter Seibel interviews 15 of the most "
                              "interesting computer programmers alive ...")),
            Book(bookid="__CvAFrcWY0C",
                 title="Unlimited Power",
                 authors="Tony Robbins",
                 publisher="Simon and Schuster",
                 published="2008-06-30",
                 isbn="978141658637144",
                 pages=448,
                 language="en",
                 description=("<p>Anthony Robbins calls it the "
                              "new science of personal achievement ...")),
            Book(bookid="3V_6DwAAQBAJ",
                 title="Power Vs. Force",
                 authors="David R. Hawkins",
                 publisher="Hay House, Inc",
                 published="2014",
                 isbn="978140194507741",
                 pages=412,
                 language="en",
                 description=("Imagine—what if you had access to a simple "
                              "yes-or-no answer to any question you wished "
                              "to ask? ...")),
            Book(bookid="bK1ktwAACAAJ",
                 title="177 Mental Toughness Secrets of the World Class",
                 authors="Steve Siebold",
                 publisher="London House Press",
                 published="2010",
                 isbn="9780975500354",
                 pages=281,
                 language="en",
                 description=("NEW EDITION: Is it possible for a person of "
                              "average intelligence and modest means to "
                              "ascend to the throne of the world class? "
                              "The answer is YES!"))
        ]
        Book.objects.bulk_create(books)
        return Book.objects.all()
Example #8
0
 def handle(self, *args, **options):
     book_number = options['book_number']
     author_number = options['author_number']
     category_number = options['category_number']
     
     authors = []
     categories = []
     books = []
     
     self.stdout.write(self.style.NOTICE('Will create {} books with {} different authors and {} different categories!'.format(
         book_number, author_number, category_number
     )))
     
     for i in range(author_number):
         first_name = random.choice(string.ascii_uppercase) + ''.join(random.choice(string.ascii_lowercase) for _ in range(5))
         last_name = random.choice(string.ascii_uppercase) +  ''.join(random.choice(string.ascii_lowercase) for _ in range(7))
         author_name = first_name+' '+last_name
         authors.append(author_name)
     
     for i in range(category_number):
         category_name =  ''.join(random.choice(string.ascii_uppercase) for _ in range(8))
         categories.append(category_name)
         
     for i in range(book_number):
         title = random.choice(string.ascii_uppercase) +  ''.join(random.choice(string.ascii_lowercase) for _ in range(8))
         book = Book(title=title, author=random.choice(authors), category=random.choice(categories))
         books.append(book)
         
     Book.objects.bulk_create(books)
         
     self.stdout.write(self.style.SUCCESS('Created {} books!!'.format(
         book_number
     )))
         
     """
Example #9
0
    def _handle_json(self, jsonpath):
        """
        Store books from a file in JSON format.

        """
        jsonfile = open(jsonpath)
        data_list = json.loads(jsonfile.read())
        for d in data_list:
            # Get a Django File from the given path:
            f = open(d['book_path'])
            d['book_file'] = File(f)
            del d['book_path']

            if d.has_key('cover_path'):
                f_cover = open(d['cover_path'])
                d['cover_img'] = File(f_cover)
                del d['cover_path']


            if d.has_key('a_status'):
                d['a_status'] = Status.objects.get(status = d['a_status'])

            tags = d['tags']
            del d['tags']

            book = Book(**d)
            try:
                book.save() # must save item to generate Book.id before creating tags
                [book.tags.add(tag) for tag in tags]
                book.save() # save again after tags are generated
            except IntegrityError as e:
                if str(e) == "column file_sha256sum is not unique":
                    print "The book (", d['book_file'], ") was not saved because the file already exsists in the database."
                else:
                    raise CommandError('Error adding file %s: %s' % (d['book_file'], sys.exc_info()[1]))
Example #10
0
def create_and_save_book(book):
    book_id = book["id"]
    title = book["volumeInfo"].get("title")
    authors = book["volumeInfo"].get("authors")
    published_date = book["volumeInfo"].get("publishedDate")
    categories = book["volumeInfo"].get("categories")
    average_rating = book["volumeInfo"].get("averageRating")
    ratings_count = book["volumeInfo"].get("ratingsCount")
    thumbnail = book["volumeInfo"].get("imageLinks")

    # If there is a thumbnail, normal has higher priority over small
    if thumbnail is not None:
        thumbnail = thumbnail.get("thumbnail", thumbnail.get("smallThumbnail"))

    published_date = parse_date(published_date)

    book = Book(
        book_id=book_id,
        title=title,
        published_date=published_date,
        average_rating=average_rating,
        ratings_count=ratings_count,
        thumbnail=thumbnail,
    )

    book.save()

    create_and_add_authors(authors, book)
    create_and_add_categories(categories, book)
Example #11
0
    def setUp(self):
        self.author1 = AuthorFactory(name='Author 1')
        self.author2 = AuthorFactory(name='Author 2')

        self.book = Book(title='MyBook')
        self.book.save()
        self.book.authors.add(self.author1.pk, self.author2.pk)
Example #12
0
    def _handle_csv(self, csvpath):
        """
        Store books from a file in CSV format.
        
        """

        csvfile = open(csvpath)
        dialect = csv.Sniffer().sniff(csvfile.read(1024))
        csvfile.seek(0)
        reader = csv.reader(csvfile, dialect)

        #TODO: Figure out if this is a valid CSV file

        for row in reader:
            path = row[0]
            title = row[1]
            author = row[2]
            summary = row[3]

            f = open(path)
            book = Book(book_file=File(f),
                        a_title=title,
                        a_author=author,
                        a_summary=summary)
            book.save()
Example #13
0
    def setUp(self):
        self.author1 = AuthorFactory(name="Author 1")
        self.author2 = AuthorFactory(name="Author 2")

        self.book = Book(title="MyBook")
        self.book.save()
        self.book.authors.add(self.author1.pk, self.author2.pk)
Example #14
0
def add_book(request):
    booksurl = request.build_absolute_uri(reverse('books:index'))
    if request.method == 'POST':
        book_form = BookForm(request.POST)
        print(book_form.errors)
        if book_form.is_valid():
            book_ISBN = book_form.cleaned_data['ISBN']
            book_name = book_form.cleaned_data['name']
            book_description = book_form.cleaned_data['description']
            book_author = book_form.cleaned_data['author']
            book_publication_year = book_form.cleaned_data['publication_year']
            book_publisher = book_form.cleaned_data['publisher']
            book_page_count = book_form.cleaned_data['page_count']
            book_cover_URL = book_form.cleaned_data['cover_URL']
            new_book = Book(ISBN=book_ISBN,
                            name=book_name,
                            description=book_description,
                            author=book_author,
                            publication_year=book_publication_year,
                            publisher=book_publisher,
                            page_count=book_page_count,
                            cover_URL=book_cover_URL)
            new_book.save()
            return HttpResponseRedirect('/')
    else:
        book_form = BookForm()
    return render(request, 'books/add_book.html', {
        'booksurl': booksurl,
        'book_form': book_form
    })
Example #15
0
    def _handle_csv(self, csvpath):
        """
        Store books from a file in CSV format.
        WARN: does not handle tags

        """

        csvfile = open(csvpath)
        dialect = csv.Sniffer().sniff(csvfile.read(1024))
        csvfile.seek(0)
        reader = csv.reader(csvfile, dialect)

        # TODO: Figure out if this is a valid CSV file

        status_published = Status.objects.get(status='Published')

        for row in reader:
            path = row[0]
            title = row[1]
            author = row[2]
            summary = row[3]

            if os.path.exists(path):
                f = open(path)
                book = Book(book_file=File(f), a_title=title, a_author=author,
                            a_summary=summary, a_status=status_published)
                try:
                    book.save()
                except:
                    print "EXCEPTION SAVING FILE '%s': %s" % (
                        path, sys.exc_info()[0])
            else:
                print "FILE NOT FOUND '%s'" % path
Example #16
0
def import_books(all_data, options):
    """Import books from JSON data."""

    for k, val in all_data["books"].items():
        # If already present, overwrite:
        try:
            book = Book.objects.get(pk=k)
        except ObjectDoesNotExist:
            book = Book(pk=k)
            book.save()

        # Get author:
        try:
            book.authors.add(*[Author.objects.get(pk=pk) for pk in val.get("author_pks", [])])
        except ObjectDoesNotExist:
            pass

        # Get saga:
        try:
            book.saga = Saga.objects.get(pk=val["saga"])
        except ObjectDoesNotExist:
            pass

        book.title = val["title"]
        book.pages = val["pages"]
        book.year = val["year"]
        book.index_in_saga = val["i_saga"]
        book.owned = val["owned"]
        book.ordered = val["ordered"]

        msg = f"Imported [BOOK] {book}"
        print(msg)

        if not options.dry_run:
            book.save()
Example #17
0
def edit_image(request, id):
    book = Book.objects.get(id=id)
    if request.method == 'POST':
        user = get_user(request)

        image = request.FILES['image']
        fs = FileSystemStorage()
        filename = fs.save(image.name, image)
        file_url = fs.url(filename)

        book = Book(id=id, image=file_url)
        book.save(update_fields=["image"])
        context = {
            'user': user,
            'book': book,
        }
        return render(request, 'books/edit_image_res.html', context)
    else:  # elif request.method == 'GET':
        user = get_user(request)
        image_form = EditImageForm(initial={
            'image': book.image,
        })
        context = {
            'user': user,
            'image_form': image_form,
            'book': book,
        }
        return render(request, 'books/edit_image.html', context)
Example #18
0
    def test_book_list_view_GET(self):
        response = self.client.get(self.book_list_url)

        self.assertEquals(response.status_code, 200)
        self.assertTemplateUsed(response, 'books/book_list.html')
        self.assertEquals(Book.objects.count(), 0)

        author = Author(
            fullName='Author'
        )
        author.save()
        isbn = IndustryIdentifier(
            isbn='ISBN_10',
            identifier='1234567890'
        )
        isbn.save()
        book = Book(
            title='Title',
            publishedDate='2019',
            pageCount=0,
            language='en',
            smallThumbnail='http://books.google.com/books/content?id=hFfhrCWiLSMC&printsec=frontcover&img=1&zoom=5&source=gbs_api',
            thumbnail='http://books.google.com/books/content?id=hFfhrCWiLSMC&printsec=frontcover&img=1&zoom=1&source=gbs_api'
        )
        book.save()
        book.authors.add(author)
        book.industryIdentifiers.add(isbn)
        
        self.assertEquals(Book.objects.count(), 1)
    def handle(self, *args, **kwargs):
        Book.objects.all().delete()
        Author.objects.all().delete()

        for name, books in [
            ('Alice', [
                ('The Great Read', datetime(2020, 11, 1)),
                ('Super Duper Book', datetime(2020, 12, 15)),
            ]),
            ('Bob', [
                ('Mystery Novel', datetime(2020, 10, 1)),
                ('Hidden Secrets', datetime(2020, 11, 10)),
                ('The Great Reveal', datetime(2020, 11, 20)),
            ]),
            ('Charlie', [
                ('Secrets of the Place', datetime(2021, 2, 15)),
                ('Survival Guide', datetime(2020, 12, 15)),
            ]),
        ]:
            author = Author(name=name)
            author.save()

            for book in books:
                Book(
                    title=book[0],
                    published=book[1],
                    author=author,
                ).save()
Example #20
0
def test_book2():
    """
    Tests Book model, creation and the correct storage of the information.
    This time only with mandatory information
    """
    isbn = str(random.randint(0, 5156123423456015412))[:12]
    user = User.objects.all().last()
    title = 'THis is the TITLE'
    price = 23.45
    language = 'Espanol'
    primary_genre = 'FANT'
    publisher = 'Alejandria'
    num_pages = 100
    obj = Book(ISBN=isbn,
               user_id=user,
               title=title,
               price=price,
               language=language,
               primary_genre=primary_genre,
               publisher=publisher,
               num_pages=num_pages)
    obj.save()

    obj = Book.objects.all().filter(pk=isbn).first()

    check = all([
        isbn == obj.ISBN, user == obj.user_id, title == obj.title,
        price == float(obj.price), language == obj.language,
        primary_genre == obj.primary_genre, publisher == obj.publisher,
        num_pages == obj.num_pages
    ])

    assert check
Example #21
0
    def handle(self, *args, **options):
        with open('./books/management/commands/words.txt', 'r') as file:
            words = file.read()
        words = words.split('\n')
        for i in range(40):
            random_word = random.choice(words)
            print(f"Searching for book: {random_word}.")
            response = requests.get('http://openlibrary.org/search.json?q=' +
                                    random_word)
            data = json.loads(response.text)
            if len(data['docs']) == 0:
                continue
            book_data = random.choice(data['docs'])
            title = book_data['title']
            if 'first_publish_year' not in book_data:
                continue
            year_published = book_data['first_publish_year']

            authors = book_data.get('author_name',
                                    ['No Author'])  #get or create for this.

            if Book.objects.filter(title=title,
                                   year_published=year_published).exists():
                continue

            book = Book(title=title, year_published=year_published)
            book.save()

            for author in authors:
                author, created = Author.objects.get_or_create(name=author)
                book.authors.add(author)

            print(str(round(i / 40 * 100, 2)) + '%')
Example #22
0
    def post(self, request, *args, **kwargs):
        title = request.data.get('title')
        condition = request.data.get('condition')
        category = request.data.get('category')
        price = request.data.get('price')
        bookad_image = request.data.get('image')
        try:
            book = Book.objects.get(title=title)
        except ObjectDoesNotExist:
            title, description, author, _ = google_books.get_book_info(title)
            book_image = google_books.get_book_image(title)
            #TODO: Make the image in the book as book_image
            book = Book(title=title,
                        description=description,
                        author=author,
                        category=category,
                        image=bookad_image)
            book.save()

        book_ad = BookAD(book=book,
                         user=request.user,
                         price=price,
                         ad_image=bookad_image)
        book_ad.save()
        return Response(status=HTTP_200_OK)
def add_book(request, book_id):
    """
    For adding a new book in the Inventory by searching in Google Books
    """
    try:
        book = Book.objects.get(book_id=book_id)
        increase_book(request, book_id)
        # return redirect('book_list')
    except:
        key = 'AIzaSyDwXeYjarTARFI9bfX8bs96rqt0R3VZkwk'
        url = "https://www.googleapis.com/books/v1/volumes/{}?key={}".format(
            book_id, key)
        response = requests.get(url)
        data = response.json()
        print(data)
        book_name = data['volumeInfo']['title']
        authors = data['volumeInfo']['authors']
        if authors is not None:
            authors = ", ".join(authors)
        new_book = Book(book_name=book_name,
                        author=authors,
                        book_id=book_id,
                        copies=1)
        new_book.save()

    return redirect('book_list')
Example #24
0
    def setUp(self):
        self.author_one = AuthorFactory(name="Author 1")
        self.author_two = AuthorFactory(name="Author 2")

        self.book = Book(title="My Book")
        self.book.save()
        self.book.authors.add(self.author_one.pk, self.author_two.pk)
 def setUp(self):
     self.book_1 = book_case_1
     self.book_1.save()
     self.book_tag_3 = BookTag(keyword='horror')
     self.book_tag_3.save()
     self.book_2_dict = book_case_2_dict
     self.book_2 = Book(**self.book_2_dict)
Example #26
0
    def _save_book(self):
        print('... Save Model Book ...')
        for _, row in self.df_books.iterrows():
            price = int(row['price'])
            pub_date_list = row['pubdate'].split()
            pub_date = datetime.datetime(int(pub_date_list[0]),
                                         int(pub_date_list[1]),
                                         int(pub_date_list[2]))
            try:
                page = int(row['page'])
            except ValueError:
                page = None
            rating = float(row['rating'])
            publisher = Publisher.objects.get(name=row['publisher'])
            book = Book(isbn_13=row['isbn_13'],
                        isbn_10=row['isbn_10'],
                        title=row['title'],
                        price=price,
                        pub_date=pub_date,
                        page=page,
                        headline=row['headline'],
                        description=row['description'],
                        rating=rating,
                        publisher=publisher)
            try:
                book.save()
            except IntegrityError:
                book = Book.objects.get(title=row['title'])

            author = Author.objects.get(name=row['author'])
            book.authors.add(author)
            book.save()
Example #27
0
def create_book(genre):
    """ Tests Book model, creation and the correct storage of the information"""

    isbn = str(random.randint(0, 5156123423456015412))[:12]
    user = create_user()
    title = 'THis is the TITLE'
    description = 'This is the description of a test book'
    saga = 'SAGA\'S NAME'
    author = "Author"
    price = 23.45
    language = 'Espanol'
    primary_genre = genre
    publisher = 'Alejandria'
    num_pages = 100
    num_sold = 0
    recommended_age = 'Juvenile'

    obj = Book(ISBN=isbn,
               user_id=user,
               title=title,
               description=description,
               saga=saga,
               price=price,
               language=language,
               primary_genre=primary_genre,
               publisher=publisher,
               num_pages=num_pages,
               num_sold=num_sold,
               recommended_age=recommended_age)
    obj.save()
    return obj
Example #28
0
 def setUp(self):
     # create root page
     root_page = Page.objects.get(title="Root")
     # create homepage
     homepage = HomePage(
         title="Hello World",
         slug="hello-world",
     )
     # add homepage to root page
     root_page.add_child(instance=homepage)
     # create book index page
     book_index = BookIndex(
         title="Book Index",
         page_description="Test",
         dev_standard_1_description="Test",
         dev_standard_2_description="Test",
         dev_standard_3_description="Test",
     )
     # add book index to homepage
     homepage.add_child(instance=book_index)
     # create book (finally! needed for Errata reports)
     book = Book(
         cnx_id='d50f6e32-0fda-46ef-a362-9bd36ca7c97d',
         title='University Physics',
         salesforce_abbreviation='University Phys (Calc)',
         salesforce_name='University Physics',
         description="Test Book",
     )
     book_index.add_child(instance=book)
Example #29
0
def add_book(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        content = request.POST.get('content')
        book = Book(name=name, content=content)
        book.save()
        return JsonResponse({"code": 200, "msg": "success"})
Example #30
0
def book_create_database():
    batch_size = 10
    objs = (Book(title='Endless Stories %s' % i) for i in range(10))
    while True:
        batch = list(islice(objs, batch_size))
        if not batch:
            break
        Book.objects.bulk_create(batch, batch_size)