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)
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'
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)
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'
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")
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)
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.'
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()
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')
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)
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.'
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')
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()
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()
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
def test_artwork_repects_foreign_key_constraint(self): name = "painting" price = 100 with self.assertRaises(IntegrityError): Artwork.create(name=name, price=price, sold=False)
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
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()