def mutate(self, info, artwork_data=None):
        metrics = ArtworkMetrics()
        artwork = Artwork(
            title=artwork_data.title,
            artist=artwork_data.artist,
            description=artwork_data.description,
            pictures=artwork_data.pictures if artwork_data.pictures else [],
            found_by=decodeId(artwork_data.found_by),
            location={
                "type": "Point",
                "coordinates":
                [artwork_data.location[0], artwork_data.location[1]]
            },
            metrics=metrics,
            num_ratings=artwork_data.num_ratings,
            rating=artwork_data.rating,
            comments=[],
            tags=artwork_data.tags)
        artwork.save()
        # Add artwork to user portfolio
        user = UpdateUserMutation.getUser(artwork_data.found_by)
        user.personal_portfolio.artworks.append(artwork)
        user.metrics.works_found += 1
        user.save()
        UpdateUserMutation.updateMetrics(user)

        return CreateArtworkMutation(artwork=artwork)
Beispiel #2
0
 def test_artwork_repects_unique_name(self):
     name = "painting"
     price = 100
     Artwork.create(artist=self.artist, name=name, price=price, sold=False)
     with self.assertRaises(IntegrityError):
         Artwork.create(artist=self.artist,
                        name=name,
                        price=price,
                        sold=False)
def add_artwork(artist, name, price, availability):
    try:
        artist_id = _get_artist_id(artist)
        new_artwork = Artwork(artist=artist_id,
                              name=name,
                              price=price,
                              available=availability)
        new_artwork.save()
        return f'The artwork \'{name}\' by {artist} was added successfully.'
    except IntegrityError:
        return 'I\'m sorry. There was an issue adding this art.'
def update_artwork(artist_id_in, artwork_name_in, available_in):
    try:
        return Artwork.update(available=available_in).where(
            Artwork.artist_id == artist_id_in,
            Artwork.artwork_name == artwork_name_in).execute()
    except DatabaseError:
        return 'Sorry there was an error updating the artwork'
def get_all_available_artwork(artist_id_in):
    try:
        return Artwork.select().where(Artwork.artist_id == artist_id_in,
                                      Artwork.available == 1)
    except DatabaseError:  #as de:
        #return de
        return 'Sorry. There was an error retrieving the artwork'
Beispiel #6
0
 def test_delete_artwork_by_name(
     self
 ):  # Makes sure artwork is gone after calling the method to delete it
     self.add_generic_sample_data()
     artworkDB.delete_artwork('Simplicity Defined')
     artwork = Artwork.get_or_none(Artwork.name == 'Simplicity Defined')
     self.assertIsNone(artwork)
Beispiel #7
0
def show_all_available():
    artworks = Artwork.select().where(Artwork.sold == False)
    if artworks:
        for artwork in artworks:
            ui.display(format_artwork(artwork))
    else:
        ui.display('No artwork found')
def delete_artwork(artist_id_in, artwork_name_in):
    try:
        return Artwork.delete().where(
            Artwork.artist_id == artist_id_in,
            Artwork.artwork_name == artwork_name_in).execute()
    except DatabaseError:  # as de:
        #return de
        return 'Sorry. There was an error deleting the artwork'
def get_all_artwork(artist_id_in):
    try:
        return Artwork.select().join(
            Artist, on=(Artist.artist_id == Artwork.artist_id)).where(
                Artwork.artist_id == artist_id_in)
    except DatabaseError:  #as de:
        #return de
        return 'Sorry. There was an error retrieving the artwork'
Beispiel #10
0
def get_by_id():
    id = ui.get_positive_integer("Enter artwork by id: ")
    try:
        artwork = Artwork.get(Artwork.id == id)
        ui.display(format_artwork(artwork))
        return artwork
    except Exception:
        ui.display("Artwork does not exist")
Beispiel #11
0
 def test_change_artwork_availability(
         self
 ):  # Make sure availability status of artwork is changed correctly
     self.add_generic_sample_data()
     artworkDB.change_availability('Simplicity Defined', False)
     artwork = Artwork.get_or_none(Artwork.name == 'Simplicity Defined',
                                   Artwork.available == False)
     self.assertIsNotNone(artwork)
Beispiel #12
0
 def test_artwork_created(self):
     name = "painting"
     price = 100
     artwork = Artwork.create(artist=self.artist,
                              name=name,
                              price=price,
                              sold=False)
     self.assertTrue(artwork.name == "painting")
def find_artwork(artist_id_in, artwork_name_in):
    try:
        searched_artwork = Artwork.get_or_none(
            Artwork.artist_id == artist_id_in,
            Artwork.artwork_name == artwork_name_in)
        return searched_artwork
    except DatabaseError:  #as de:
        #return de
        return 'Sorry. There was an error retrieving the artwork.'
Beispiel #14
0
 def test_addArtwork_2(self):
     newartwork = Artwork(title='defg', artwork_id='00005')
     db.session.add(newartwork)
     db.session.commit()
     findartwork = db.session.query(Artwork).filter_by(
         artwork_id='00005').first()
     self.assertIsNone(findartwork.date)
     db.session.delete(findartwork)
     db.session.commit()
Beispiel #15
0
def show_all_available_by_artist():
    artist_control.show_all()
    artist = artist_control.get_by_id()
    artworks = Artwork.select().where(Artwork.sold == False, Artwork.artist == artist)
    if artworks:
        for artwork in artworks:
            ui.display(format_artwork(artwork))
    else:
        ui.display('No artwork found')
Beispiel #16
0
 def test_add_artwork(
     self
 ):  # Try to retrieve data about an artwork after adding it to the database
     artworkDB.add_artist('Bob', '*****@*****.**')
     artworkDB.add_artwork('Bob', 'Air is Empathy', 6600, True)
     artwork = Artwork.get_or_none(Artwork.name == 'Air is Empathy',
                                   Artwork.price == 6600,
                                   Artwork.available == True)
     self.assertIsNotNone(artwork)
Beispiel #17
0
 def test_addArtwork_1(self):
     newartwork = Artwork(title='def', artwork_id='00004')
     db.session.add(newartwork)
     db.session.commit()
     findartwork = db.session.query(Artwork).filter_by(
         artwork_id='00004').first()
     self.assertEqual(findartwork.title, 'def')
     db.session.delete(findartwork)
     db.session.commit()
def add_artwork(artist_id_in, artwork_name_in, price_in, available_in):
    try:
        artwork = Artwork.create(artist_id=artist_id_in,
                                 artwork_name=artwork_name_in,
                                 price=price_in,
                                 available=available_in)
        artwork.save()
        return 'Artwork saved.'
    except DatabaseError:  # as de:
        #return de
        return 'There was an error in adding the artwork. Make sure it isn\'t already in database.'
Beispiel #19
0
def create():
    try:
        artist_control.show_all()
        artist = artist_control.get_by_id()
        name = get_artwork_name()
        price = get_artwork_price()
        sold = False
        artwork = Artwork.create(
            artist=artist, name=name, price=price, sold=sold)
        ui.display('Success')
        ui.display(format_artwork(artwork))

    except IntegrityError:
        ui.display('Artwork already exists')
Beispiel #20
0
 def test_relationship_1(self):
     newartist = Artist(artist_name='someone', artist_id='00009')
     db.session.add(newartist)
     db.session.commit()
     newartwork = Artwork(title='defgh',
                          artwork_id='00010',
                          painter=newartist)
     db.session.add(newartwork)
     db.session.commit()
     findartwork = db.session.query(Artwork).filter_by(
         artwork_id='00010').first()
     self.assertEqual(findartwork.artist_id, '00009')
     db.session.delete(findartwork)
     db.session.commit()
     findartist = db.session.query(Artist).filter_by(
         artist_id='00009').first()
     db.session.delete(findartist)
     db.session.commit()
Beispiel #21
0
 def test_relationship_2(self):
     newmuseum = Museum(museum='ghijk', museum_id='00011')
     db.session.add(newmuseum)
     db.session.commit()
     newartwork = Artwork(title='defgh',
                          artwork_id='00012',
                          owner=newmuseum)
     db.session.add(newmuseum)
     db.session.commit()
     findartwork = db.session.query(Artwork).filter_by(
         artwork_id='00012').first()
     self.assertEqual(findartwork.artwork_id, '00012')
     db.session.delete(findartwork)
     db.session.commit()
     findmuseum = db.session.query(Museum).filter_by(
         museum_id='00011').first()
     db.session.delete(findmuseum)
     db.session.commit()
Beispiel #22
0
 def test_artwork_can_be_retrieved_by_user(self):
     name = "paintings"
     price = 100.24
     Artwork.create(artist=self.artist, name=name, price=price, sold=False)
     Artwork.create(artist=self.artist,
                    name=f"{name}1",
                    price=price,
                    sold=False)
     Artwork.create(artist=self.artist,
                    name=f"{name}2",
                    price=price,
                    sold=False)
     self.assertEqual(len(self.artist.artworks), 3)
def init_db():
    art = [
        Artwork(title="Street Art", description="A true masterpiece", location=[7,80]),
        Artwork(title="Hidden Subway Mural", description="Far side of the subway station has a double walled mural.", location=[10,132]),
        Artwork(title="Blue Bridge", description="Neon blue tentacles of paint wind up the struts of the bridge", location=[0,0], tags=["amazing"]),
        Artwork(title="Artistic Underpass", description="Bridge ceiling covered in art", location=[0,0], tags=["surreal", "amazing"]),
        Artwork(title="Fire Wall", description="Tongues of flame comemorate the historic fire of this district", tags=["sad", "historic", "amazing"], location=[0,0]),
        Artwork(title="Street Corner Fresco", description="This popular street has a decorative fresco spilling out of the alley behind a popular restaurant", tags=["amazing", "unreal"], location=[0,0])
    ]

    for a in art:
        a.save()

    portfolios = [
        Portfolio(artworks=[art[0], art[1]]),
        Portfolio(artworks=[art[2], art[4]]),
        Portfolio(artworks=[art[1], art[2], art[3]]),
        Portfolio(artworks=[art[3], art[5]]),
    ]
    for p in portfolios:
        p.save()

    users = [
        User(name="Grant", portfolio=portfolios[0], bio="Love me some AI and maybe web dev."),
        User(name="Braden", portfolio=portfolios[1], bio="Spending some time on CSC 400."),
        User(name="Kyle", portfolio=portfolios[2], bio="Fitness, meditation and good books."),
        User(name="John", portfolio=portfolios[3], bio="Looking around for some art. Wasn't satisfied with my dope Windows Vista wallpaper.")
    ]
    for user in users:
        user.save()

    achievements = [
        Achievement(title="Noob", description="You signed up for the service!", points=10)
    ]
    for a in achievements:
        a.save()

    for user in users:
        user.achievements.append(achievements[0])
    for user, portfolio in zip(users, portfolios):
        portfolio.owner = user

    
    for portfolio in portfolios:
        portfolio.save()
def change_availability(artwork_name, availability):
    Artwork.update(available=availability).where(
        Artwork.name == artwork_name).execute()
def get_all_artwork():
    artwork = Artwork.select()
    return artwork
def search_artwork_by_artist(name):
    artworks = Artwork.select().join(Artist).where(Artist.name == name)
    return artworks
Beispiel #27
0
 def test_artwork_repects_foreign_key_constraint(self):
     name = "painting"
     price = 100
     with self.assertRaises(IntegrityError):
         Artwork.create(name=name, price=price, sold=False)
Beispiel #28
0
import random
from models import db, Artwork
from contextlib import suppress

headers = {'X-Xapp-Token': os.getenv('ARTSY_X_XAPP_TOKEN')
def getArtsyObject(url):
    return json.loads(requests.get(url, headers=headers).text)

nextUrl = 'https://api.artsy.net/api/artworks?size=50&offset=15'
artists = {} # store artists name
for i in range(0,1):
    print('Next url:', nextUrl)
    response = getArtsyObject(nextUrl)
    artworks = response['_embedded']['artworks']
    for a in artworks:
        o = Artwork()#origin='artsy')
        with suppress (KeyError, IndexError):
            o.name = a['title']
        # get author via API call (or cache)
        with suppress (KeyError, IndexError):
            href = a['_links']['artists']['href']
            if not href in artists:
                artist = getArtsyObject(href)
                artists[href] = artist['_embedded']['artists'][0]['name']
            o.author = artists[href]
        with suppress (KeyError, IndexError):
            href = a['_links']['image']['href']
            if 'large' in a['image_versions']:
                href = href.replace('{image_version}', 'large')
            else:
                href = href.replace('{image_version}', a['image_versions'][0])
def search_available_by_artist(name):
    artworks = Artwork.select().join(Artist).where((Artist.name == name) &
                                                   (Artwork.available == True))
    return artworks
Beispiel #30
0
def create_museums_db():

    #load museum data
    with open('museum.json') as f:
        museums = json.load(f)
        #processes muesum data
        for dmuseum in museums['museum']:
            museum_id = dmuseum["museum_id"]
            museum = dmuseum["museum"]
            location = dmuseum["location"]

            #process moma data
            if museum == "Museum of Modern Art":
                moma = Museum(museum=museum,
                              location=location,
                              museum_id=museum_id)
                db.session.add(moma)
                db.session.commit()
            #process Tate data
            elif museum == "Tate Modern":
                tate = Museum(museum=museum,
                              location=location,
                              museum_id=museum_id)
                db.session.add(tate)
                db.session.commit()
        f.close()

    # load artist data
    artistfiles = {"momaArtist":["moma_artists.csv",250,None],\
    "tateArtist":["tate_artist_data.csv",100,None]}
    artistData = load_data(artistfiles)

    #processes artist data
    for museumName, museumData in artistData.items():
        for index in museumData:

            if museumName == "momaArtist":
                gender = museumData[index]["Gender"]
                artist_id = str(museumData[index]["ConstituentID"]) + "_moma"
                artist_name = museumData[index]["DisplayName"]
                artist_dates = museumData[index]["BeginDate"]
                nationality = museumData[index]["Nationality"]
            elif museumName == "tateArtist":
                gender = museumData[index]["gender"]
                artist_id = str(museumData[index]["id"]) + "_tate"
                artist_name = museumData[index]["name"]
                artist_dates = museumData[index]["dates"]
                nationality = museumData[index]["placeOfBirth"]

            newArtist = Artist(artist_id=artist_id,
                               artist_name=artist_name,
                               artist_dates=artist_dates,
                               gender=gender,
                               nationality=nationality)
            db.session.add(newArtist)
            db.session.commit()

    # load artwork data
    artworkfiles = {"momaArtwork":['moma_artworks.csv',750, None],\
    "tateArtwork":["tate_artwork_data.csv",400,None]}
    artworkData = load_data(artworkfiles)

    #proceses artwork data
    for museumName, museumData in artworkData.items():

        for index in museumData:

            #processes moma data
            if museumName == "momaArtwork":
                # skips columens with an artist ID error
                if "," in str(museumData[index]["ConstituentID"]):
                    pass
                else:
                    title = museumData[index]["Title"]
                    artist = museumData[index]["Artist"]
                    artist_id = str(
                        museumData[index]["ConstituentID"]) + "_moma"
                    date = museumData[index]["Date"]
                    medium = museumData[index]["Medium"]
                    credit = museumData[index]["CreditLine"]
                    acquired_date = museumData[index]["DateAcquired"]
                    imageURL = museumData[index]["ThumbnailURL"]
                    dimensions = museumData[index]["Dimensions"]
                    artwork_id = str(museumData[index]["ObjectID"]) + "_moma"

                    newArtwork = Artwork(title = title, artist = artist, artist_id= artist_id, date = date, \
                        medium = medium,  credit = credit, acquired_date = acquired_date, imageURL = imageURL, \
                    dimensions = dimensions, artwork_id = artwork_id, owner = moma)

            #processes tate data
            elif museumName == "tateArtwork":
                title = museumData[index]["title"]
                artist = museumData[index]["artist"]
                artist_id = str(museumData[index]["artistId"]) + "_tate"
                date = museumData[index]["year"]
                medium = museumData[index]["medium"]
                credit = museumData[index]["creditLine"]
                acquired_date = museumData[index]["acquisitionYear"]
                imageURL = museumData[index]["thumbnailUrl"]
                dimensions = museumData[index]["dimensions"]
                artwork_id = str(museumData[index]["id"]) + "_tate"

                newArtwork = Artwork(title = title, artist = artist, artist_id= artist_id, date = date, \
                    medium = medium,  credit = credit, acquired_date = acquired_date, imageURL = imageURL, \
                    dimensions = dimensions, artwork_id = artwork_id, owner = tate)

            db.session.add(newArtwork)
            db.session.commit()