Example #1
0
 def test_show_creation_with_duplicate_url(self):
     url = self.random()
     hamlet = Show(company=self.evam, name="Hamlet spoof", url=url)
     hamlet.put()
     
     same_url_try = Show(company=self.evam, name="Hamlet other url try", url=url)
     self.assertRaises(ValueError, same_url_try.put)        
Example #2
0
def create_show_submission():
    error = False
    try:
        artits_id = request.form.get('artist_id')
        venue_id = request.form.get('venue_id')
        start_time = request.form.get('start_time')
        show = Show()
        show.artist_id = artits_id
        show.venue_id = venue_id
        show.start_time = datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
        db.session.add(show)
        db.session.commit()
    except:
        error = True
        db.session.rollback()
    finally:
        db.session.close()
    # called to create new shows in the db, upon submitting new show listing form
    # TODO: insert form data as a new Show record in the db, instead

    # on successful db insert, flash success
    if error == False:
        flash('Show was successfully listed!')
    else:
        flash('Show was failed listed!')
    # TODO: on unsuccessful db insert, flash an error instead.
    # e.g., flash('An error occurred. Show could not be listed.')
    # see: http://flask.pocoo.org/docs/1.0/patterns/flashing/
    return render_template('pages/home.html')
Example #3
0
 def test_show_creation_by_admin(self):
     show_route = '/_admin/show'
     self.admin_app.post(show_route, {'action':'update'}, status=403) # tells blank posts to bugger off 
     url = self.random()
     Show(name=self.random(), url = url, description=self.random(), company=self.evam).put()
     
     self.assertTrue(Show.get_by_url(url))
     show_data = dict(action='delete')
     self.admin_app.post(show_route+'/'+url, show_data)
     self.assertFalse(Show.get_by_url(url))
Example #4
0
    def post(self):
        show = Show()
        # show.key=ndb.Key('Show', int(request.form['id']))
        show.event_id = ndb.Key('Event', int(request.form['event_id']))
        show.client_id = ndb.Key('Client', int(request.form['client_id']))
        show.screen_id = ndb.Key('Screen_Layout', int(request.form['screen_id']))
        show.name = request.form['name']
        show.datetime = datetime.datetime.now()
        screen = ndb.Key('Screen_Layout', int(request.form['screen_id']))
        seats = screen.get().seats
        print type(seats)
        updated_seats = {}
        for each in seats:
            updated_seats[str(each['row'])+'-'+str(each['column'])]= {'status':4}
        show.seats = updated_seats
        res = show.put()

        # The below paragraph should be deleted later
        offset_id = 21
        prices = []
        print show.screen_id
        categories = Category.query(Category.screen_id == show.screen_id).fetch()
        for category in categories:
            price1 = Price(id=show.key.id() + offset_id, show_id=show.key, category_id=category.key, amount=500)
            offset_id += 1
            prices.append(price1)
        print "###"
        print prices
        for price in prices:
            price.put()

        # The above paragraph should be deleted later

        return jsonify({'id': res.id(), 'message': "Success"})
Example #5
0
 def test_cascading_deletes(self):
     company = Company(name=self.random(), url = self.random())
     company.put()
     
     show_url = self.random()
     show = Show(name= self.random(), url = show_url, company = company)
     show.put()
     
     self.assertTrue(Show.get_by_url(show_url))
     company.delete()
     self.assertFalse(Show.get_by_url(show_url))
Example #6
0
    def get_by_id_full(cls, id):
        details = {}
        venue = cls.get_by_id(id)
        past_shows = Show.get_past_by_venue(id)
        upcoming_shows = Show.get_upcoming_by_venue(id)
        details.update(venue)
        details.update({'upcoming_shows': upcoming_shows})
        details.update({'upcoming_shows_count': len(upcoming_shows)})
        details.update({'past_shows': past_shows})
        details.update({'past_shows_count': len(past_shows)})

        return details
Example #7
0
class ExtendedTestCase(unittest.TestCase): 
    public_app = TestApp(public_main.createApp())
    admin_app = TestApp(admin_main.createApp())
    _login_stubs = StubOutForTesting()
    stubs = StubOutForTesting()
    
    def random(self):
        import hashlib, time
        return hashlib.md5((time.clock()*random.random()).__str__()).hexdigest()
    
    def setUp(self):
        self.make_test_data()
        self.login()
        self.mox = Mox()
      
    def tearDown(self):
        self.logout()
        self.stubs.UnsetAll()
        for model in [City, Company, Performance, Show, Venue]:
            for datum in model.all():
                datum.delete()

    def login(self, user="******", admin=True):
        self._login_stubs.Set(users, 'get_current_user', lambda user = user : users.User(user))
        self._login_stubs.Set(users, 'is_current_user_admin', lambda admin = admin : admin)

    def logout(self):
        self._login_stubs.UnsetAll()

    def make_test_data(self):
        now = datetime.datetime.now()
        self.now = datetime.datetime(year = now.date().year, month = now.date().month, day = now.date().day, hour = now.time().hour, minute = now.time().minute)
        self.one_day_later = self.now + datetime.timedelta(days=1)
        self.two_days_later = self.now + datetime.timedelta(days=2)
        self.three_days_later = self.now + datetime.timedelta(days=3)
        
        self.evam = Company(name='Evam Theatre Company', url='evam')
        self.evam.put()
        self.hamlet = Show(name='Hamlet', url='hamlet', company=self.evam)
        self.hamlet.put()
        self.chennai = City(name='Chennai', url='chennai')
        self.chennai.put()
        self.bangalore = City(name='Bangalore', url='bangalore')
        self.bangalore.put()
        self.lady_andal = Venue(name='Lady Andal', url='lady_andal', city=self.chennai)
        self.lady_andal.put()
        
    def make_performance(self, show, venue, dt):
        perf = Performance(show=show, venue=venue, utc_date_time=dt)
        perf.put()
        return perf
Example #8
0
 def create_show(self, *args, **kwargs):
     """Create show for organizer"""
     args[0]["organizer_id"] = self.id
     show = Show()
     for key, value in args[0].items():
         setattr(show, key, value)
     try:
         show.save()
         return show
     except exc.IntegrityError as e:
         print("show")
         errorInfo = e.orig.args
         print(errorInfo[0])  # This will give you error code
         print(errorInfo[1])  # This will give you error message
Example #9
0
 def search_by_name(cls, venue_name):
     venues = cls.query.filter(cls.name.ilike(f'%{venue_name}%')).all()
     return [{
         "id": venue.id,
         "name": venue.name,
         "num_upcoming_shows": Show.count_upcoming_by_venue_id(venue.id)
     } for venue in venues]
Example #10
0
    def get(self, event_id):
        event_id = int(event_id)
        query = Show.query(Show.event_id == ndb.Key(Event, event_id))
        shows_list = []
        for each in query.fetch():
            show_id = each.key.id()
            client = each.client_id.get()
            screen = each.client_id.get()
            if client is not None:
                client_name = each.client_id.get().name
            else:
                client_name = "Unknown"
            if screen is not None:
                screen_name = each.screen_id.get().name
            else:
                screen_name = "Unknown"
            datetime = each.datetime
            shows_list.append({
                'show_id': show_id,
                'client_name': client_name,
                'screen_name': screen_name,
                'datetime': datetime
            })

        return jsonify(shows_list)
def create_show_submission():
    try:
        show = Show()
        show.artist_id = request.form.get('artist_id')
        show.venue_id = request.form.get('venue_id')
        show.start_time = request.form.get('start_time')

        db.session.add(show)
        db.session.commit()
        flash('Show was successfully created!')
    except:
        print(sys.exc_info())
        db.session.rollback()
        flash('An error occurred. Show could not be created.')
    finally:
        db.session.close()

    return render_template('pages/home.html')
Example #12
0
 def update(self, show_url=None):
     show = Show.get_by_url(show_url)
     if not show: raise Exception("Show doesn't exist")
     show.name = self.read('name')
     show.url = self.read('url') 
     show.company = self.check_company()
     show.description = self.read('desc')
     show.put()
     self.redirect('/_admin/show/')
Example #13
0
def create_shows():
    show1 = Show(id=1, event_id=ndb.Key(Event, 1), client_id=ndb.Key(Client, 12345),
                 screen_id=ndb.Key(Screen_Layout, 1),
                 datetime=datetime.strptime("2018-09-24 12:00:00.0", '%Y-%m-%d %H:%M:%S.%f'),
                 seats={'1-1': {'status': 4}, '1-2': {'status': 4}, '2-1': {'status': 4}, '2-2': {'status': 4}})
    show2 = Show(id=2, event_id=ndb.Key(Event, 2), client_id=ndb.Key(Client, 12345),
                 screen_id=ndb.Key(Screen_Layout, 2),
                 datetime=datetime.strptime("2018-09-20 12:00:00.0", '%Y-%m-%d %H:%M:%S.%f'),
                 seats={'1-1': {'status': 4}, '1-2': {'status': 4}, '2-1': {'status': 4}, '2-2': {'status': 4}})

    show3 = Show(id=3, event_id=ndb.Key(Event, 4), client_id=ndb.Key(Client, 123456),
                 screen_id=ndb.Key(Screen_Layout, 3),
                 datetime=datetime.strptime("2018-09-20 12:00:00.0", '%Y-%m-%d %H:%M:%S.%f'),
                 seats={'1-1': {'status': 4}, '1-2': {'status': 4}, '2-1': {'status': 4}, '2-2': {'status': 4}})
    show4 = Show(id=4, event_id=ndb.Key(Event, 3), client_id=ndb.Key(Client, 123456),
                 screen_id=ndb.Key(Screen_Layout, 4),
                 datetime=datetime.strptime("2018-09-20 12:00:00.0", '%Y-%m-%d %H:%M:%S.%f'),
                 seats={'1-1': {'status': 4}, '1-2': {'status': 4}, '2-1': {'status': 4}, '2-2': {'status': 4}})
    ndb.put_multi([show1, show2, show3, show4])
Example #14
0
    def get_by_city_state(cls, state, city):
        state_venues = cls.query.filter_by(city=city, state=state).all()

        venues = [{
            "id":
            venue.id,
            "name":
            venue.name,
            "num_upcoming_shows":
            Show.count_upcoming_by_venue_id(venue.id)
        } for venue in state_venues]
        return venues
Example #15
0
 def get_titles_test(self, name):
     try:
         try:
             optimized = Show().getShows(MockService().getData())
             #self.post_to_db(optimized)
         except Exception as ex:
             self.logger.error(
                 "DB service couldn't able to process this result.", ex)
         return optimized
     except Exception as ex:
         self.logger.error("Unable to get results", ex)
         return {}
Example #16
0
 def get(self):
     user_id = request.environ['USER_ID']
     client_id = user_id.get().detail_id
     shows = Show.query(Show.client_id == client_id)
     shows_list = []
     for show in shows:
         event_name = show.event_id.get().name
         screen_name = show.screen_id.get().name
         shows_list.append({
             "event_name": event_name,
             'screen_name': screen_name,
             "datetime": show.datetime
         })
     return jsonify(shows_list)
Example #17
0
 def create(self, performance=None):
   show = Show.get(self.read('show_key'))
   if not show: raise Exception("That show doesn't exist.")
   venue = Venue.get(self.read('venue_key'))
   if not venue: raise Exception("That venue doesn't exist.")
   year = int(self.read('year'))
   month = int(self.read('month'))
   day = int(self.read('day'))
   hour = int(self.read('hour'))
   minute = int(self.read('minute'))
   Performance(show = show,
               venue = venue,
               utc_date_time = datetime.datetime(year, month, day, hour, minute) - venue.city.get_timedelta()
               ).put()
   self.get()
Example #18
0
 def test_show_updates_by_admin(self):
     show_route = '/_admin/show'
     self.admin_app.post(show_route, {'action':'update'}, status=403) # tells blank posts to bugger off 
     url = self.random()
     Show(name=self.random(), url = url, description=self.random(), company=self.evam).put()
     
     name = self.random()
     new_url = self.random()
     description = self.random()
     company = self.evam.url
     show_data = dict(action='update', name=name, url=new_url, desc = description, company = self.evam.url)
     self.admin_app.post(show_route+'/'+url, show_data, status = 302)
     show = Show.get_by_url(new_url)
     self.assertEqual(show.name,name)
     self.assertEqual(show.description,description)
     self.assertEqual(show.company.url,self.evam.url)        
Example #19
0
    def test_show_creation_by_admin(self):
        show_route = '/_admin/show'
        self.admin_app.post(show_route, {'action':'create'}, status=403) # tells blank posts to bugger off 
        name = self.random()
        url = self.random()
        description = self.random()
        company = self.evam.url

        show_data = dict(action='create', name=name, url=url, desc = description, company = company)
        self.admin_app.post(show_route, show_data)
        self.admin_app.post(show_route, show_data, status=403) # create the show only once

        show = Show.get_by_url(url)
        self.assertTrue(show)
        self.assertEqual(name, show.name)
        self.assertEqual(url, show.url)
        self.assertEqual(description, show.description)
Example #20
0
 def make_test_data(self):
     now = datetime.datetime.now()
     self.now = datetime.datetime(year = now.date().year, month = now.date().month, day = now.date().day, hour = now.time().hour, minute = now.time().minute)
     self.one_day_later = self.now + datetime.timedelta(days=1)
     self.two_days_later = self.now + datetime.timedelta(days=2)
     self.three_days_later = self.now + datetime.timedelta(days=3)
     
     self.evam = Company(name='Evam Theatre Company', url='evam')
     self.evam.put()
     self.hamlet = Show(name='Hamlet', url='hamlet', company=self.evam)
     self.hamlet.put()
     self.chennai = City(name='Chennai', url='chennai')
     self.chennai.put()
     self.bangalore = City(name='Bangalore', url='bangalore')
     self.bangalore.put()
     self.lady_andal = Venue(name='Lady Andal', url='lady_andal', city=self.chennai)
     self.lady_andal.put()
Example #21
0
def populate_db():
    if app.config["POPULATE_DB"]:
        for artist in ARTISTS:
            db.session.add(Artist(**artist))

        for show in SHOWS:
            db.session.add(Show(**show))

        for venue in VENUES:
            db.session.add(Venue(**venue))

        try:
            db.session.commit()
        except exc.SQLAlchemyError:
            db.session.rollback()
            print(sys.exc_info())
        finally:
            db.session.close()
Example #22
0
 def get_titles(self, name):
     try:
         feed_headers = {'x-rapidapi-key': config.FeedKey}
         response = requests.get(config.Feed.format(name),
                                 verify="certificates/feed.cer",
                                 headers=feed_headers)
         headers = {
             'Content-type': 'application/json',
             'Accept': 'text/plain',
         }
         optimized = Show().getShows(response.json())
         db_thread = threading.Thread(target=self.post_to_db,
                                      args=[optimized])
         db_thread.daemon = True
         db_thread.start()
         return optimized
     except Exception as ex:
         self.logger.error("Unable to get results", ex)
         return {}
Example #23
0
    def post(self):
        # Got client ID from environ
        user_id = request.environ['USER_ID']
        client_id = user_id.get().detail_id

        show = Show()
        show.event_id = ndb.Key('Event', int(request.json['event_id']))
        show.client_id = client_id  # Fetched from the environ values.
        show.screen_id = ndb.Key('Screen_Layout',
                                 int(request.json['screen_id']))
        show.datetime = datetime.strptime(request.json['datetime'],
                                          "%d-%m-%Y %H:%M")
        screen = ndb.Key('Screen_Layout', int(request.json['screen_id']))
        seats = screen.get().seats
        updated_seats = {}
        for each in seats:
            updated_seats[str(each['row']) + '-' + str(each['column'])] = {
                'status': 4
            }
        show.seats = updated_seats

        categories_price = request.json['category-price']
        res = show.put()

        # Creating a price for each request
        try:
            for each in categories_price:
                price = Price(show_id=res,
                              category_id=ndb.Key('Category',
                                                  int(each['category'])),
                              amount=int(each['price']))
                print '########'
                print type(price.category_id.id())
                price.put()

        except:
            return jsonify({"code": 500, "message": "server error"})

        return jsonify({"code": 200, "id": res.id(), "message": "Success"})
Example #24
0
    def post(self):

        user_id = request.environ['USER_ID']
        client_id = user_id.get().detail_id

        show = Show.get_by_id(request.json['id'])
        if not show:
            return jsonify({"code": 404, "message": "Show Not found."})

            # Check if the user is authorized to edit.
        if client_id != show.client_id:
            return jsonify({"code": 400, "message": "Not authorized."})
        # UPDATE EXISTING DATA MINOR INFORMATIONS
        show.event_id = ndb.Key('Event', int(request.json['event_id']))
        show.screen_id = ndb.Key('Screen_Layout',
                                 int(request.json['screen_id']))
        show.name = request.json['name']
        show.datetime = datetime.strptime(request.json['datetime'],
                                          "%Y-%m-%d %I:%M %p")
        res = show.put()

        return jsonify({"code": 200, "id": res.id(), "message": "Success"})
Example #25
0
def change_seat_availability():
    # LIST to status map
        status=['Booked','Bought','Under Maintenance', 'Unavailable', 'Available']
        id=int(request.json['show_id'])
        seat_no=request.json['seat_no']
        print(type(id))
        show=Show.get_by_id(id)
        seats=show.seats
        print(seats)
        if show.seats.get(seat_no):
            if show.seats[seat_no]['status']==4:
                show.seats[seat_no]['status']=3
            elif show.seats[seat_no]['status']==3:
                show.seats[seat_no]['status']=4
            else :
                return jsonify({'status':404, 'message': "Seat is unavailable for changing status. It is "+status[show.seats[seat_no]['status']]})
            show.put()
            print(show.seats)
            return jsonify({'status':200, 'message': "Seat status changed to "+status[show.seats[seat_no]['status']]})
            
        else:
            return jsonify({'status':404, 'message': "Seat not found."})
Example #26
0
 def test_get_route(self):
     url = self.random()
     hamlet = Show(company=self.evam, name="Hamlet spoof", url=url)
     self.assertEqual('/' + self.evam.url + '/shows/' + hamlet.url, hamlet.get_route())
Example #27
0
 def get(self, show_url = None):
     show = Show.get_by_url(show_url)
     self.render('admin/show.html', dict(shows = Show.all(), companies = Company.all(), current_show = show))
Example #28
0
 def delete(self, show_url = None):
     show = Show.get_by_url(show_url) 
     if show : show.delete()
     self.get()
Example #29
0
 def get(self, url = None):
   self.render('admin/performance.html', dict(performances=Performance.all(), shows=Show.all(), venues=Venue.all()))
Example #30
0
from models.venue import Venue

engine = create_engine("sqlite:///concerts.db")
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()

# Users
person1 = User(name="John Doe")
person2 = User(name="Frank Stallone")
person3 = User(name="Grace Kelly")
session.add_all([person1, person2, person3])

# Shows
phirst_show = date(2003, 11, 28)
phish_11_28_03 = Show(date=phirst_show)

ph_1995 = date(1995, 12, 31)
phish_12_31_95 = Show(date=ph_1995)

cornell_77 = date(1977, 5, 8)
dead_5_8_77 = Show(date=cornell_77)

sunshine_daydream = date(1972, 8, 27)
dead_venetta = Show(date=sunshine_daydream)

dead_msg = date(1979, 1, 7)
dead_1_7_79 = Show(date=dead_msg)

# Bands
phish = Band(name='Phish')
Example #31
0
 def test_get_show_by_url(self):
     url = self.random()
     hamlet = Show(company=self.evam, name=self.random(), url=url)
     hamlet.put()
     self.assertEqual(hamlet.name, self.evam.get_show_by_url(url).name)
Example #32
0
def seed_db():
    genre_objs = [Genre(name=genre) for genre in genres]
    artist_objs = [Artist(**artist) for artist in artists]
    venue_objs = [Venue(**venue) for venue in venues]

    try:
        db.session.add_all(genre_objs)
        db.session.add_all(artist_objs)
        db.session.add_all(venue_objs)
        db.session.commit()

        # genre ids
        genre_ids = {}
        for genre in genre_objs:
            genre_ids.update({genre.name: genre.id})

        # artist ids
        artist1_id = artist_objs[0].id
        artist2_id = artist_objs[1].id
        artist3_id = artist_objs[2].id

        # venue ids
        venue1_id = venue_objs[0].id
        venue2_id = venue_objs[1].id
        venue3_id = venue_objs[2].id

        # add artist genres
        artists_genres = [
            ArtistGenre(artist_id=artist1_id, genre_id=genre_ids["Rock n Roll"]),
            ArtistGenre(artist_id=artist2_id, genre_id=genre_ids["Jazz"]),
            ArtistGenre(artist_id=artist3_id, genre_id=genre_ids["Jazz"]),
            ArtistGenre(artist_id=artist3_id, genre_id=genre_ids["Classical"])
        ]
        db.session.add_all(artists_genres)

        # add venue genres
        venues_genres = [
            VenueGenre(venue_id=venue1_id, genre_id=genre_ids["Jazz"]),
            VenueGenre(venue_id=venue1_id, genre_id=genre_ids["Reggae"]),
            VenueGenre(venue_id=venue1_id, genre_id=genre_ids["Swing"]),
            VenueGenre(venue_id=venue1_id, genre_id=genre_ids["Classical"]),
            VenueGenre(venue_id=venue1_id, genre_id=genre_ids["Folk"]),

            VenueGenre(venue_id=venue2_id, genre_id=genre_ids["Classical"]),
            VenueGenre(venue_id=venue2_id, genre_id=genre_ids["R&B"]),
            VenueGenre(venue_id=venue2_id, genre_id=genre_ids["Hip-Hop"]),

            VenueGenre(venue_id=venue3_id, genre_id=genre_ids["Rock n Roll"]),
            VenueGenre(venue_id=venue3_id, genre_id=genre_ids["Jazz"]),
            VenueGenre(venue_id=venue3_id, genre_id=genre_ids["Classical"]),
            VenueGenre(venue_id=venue3_id, genre_id=genre_ids["Folk"]),
        ]
        db.session.add_all(venues_genres)

        # add shows

        shows = [
            {'artist_id': artist1_id, 'venue_id': venue3_id,
             'start_time': '2019-06-15T23:00:00.000Z'},
            {'artist_id': artist3_id, 'venue_id': venue3_id,
             'start_time': '2035-04-01T20:00:00.000Z'},
            {'artist_id': artist3_id, 'venue_id': venue3_id,
             'start_time': '2035-04-08T20:00:00.000Z'},
            {'artist_id': artist3_id, 'venue_id': venue3_id,
             'start_time': '2035-04-15T20:00:00.000Z'},
            {'venue_id': venue1_id, 'artist_id': artist1_id,
             'start_time': '2019-05-21T21:30:00.000Z'},
            {'venue_id': venue3_id, 'artist_id': artist2_id,
             'start_time': '2019-06-15T23:00:00.000Z'},
            {'venue_id': venue3_id, 'artist_id': artist3_id,
             'start_time': '2035-04-01T20:00:00.000Z'},
            {'venue_id': venue3_id, 'artist_id': artist3_id,
             'start_time': '2035-04-08T20:00:00.000Z'},
            {'venue_id': venue3_id, 'artist_id': artist3_id,
             'start_time': '2035-04-15T20:00:00.000Z'},
        ]
        show_objs = [Show(**show) for show in shows]
        db.session.add_all(show_objs)
        db.session.commit()

    except:
        db.session.rollback()
        print(sys.exc_info())
    finally:
        db.session.close()
Example #33
0
from models import storage
from models.city import City
from models.venue import Venue
from models.show import Show
from models.artist import Artist
from models.organizer import Organizer
#Create city
organizer = Organizer
city = City(city_name='Cali', country_name="Colombia")
city.save()

#create venue
venue = Venue(city_id=city.id,
              venue_name="Asilo",
              email="*****@*****.**",
              address="Calle del cartucho",
              capacity=150)
venue.save()
#create show
show = Show(venue_id=venue.id, price_tikets=25000)
#Create artist
artist = Artist(artist_name="Ponkeys",
                genre_artist="Funk",
                email="*****@*****.**")
artist.save()
print(venue)
print(show)
print(artist)
print(show.org_id)
Example #34
0
 def test_get_by_url(self):
     url = self.random()
     Show(company= self.evam, name ="new show", url = url, desc = "lorem ipsum dolor").put()
     show = Show.get_by_url(url)
     self.assertEqual(show.name,"new show")