Пример #1
0
    def from_resource(self, obj, field):
        """
        Outout a field to dic value
        """

        val = super(EventDateField, self).from_resource(obj, field)

        return_value = []
        for event_date in val:

            # Resolve VenueResource
            v = getattr(event_date, 'venue', None)
            if not isinstance(v,
                              Resource):  # TODO: Should be Resource base class
                v = get_venue_by_slug(event_date.venue_slug)
                event_date.venue = v_resource(v)

            event_date_resource = {}

            event_date_resource['start'] = event_date.start.isoformat() + 'Z'
            event_date_resource['end'] = event_date.end.isoformat() + 'Z'

            event_date_resource['type'] = event_date.type
            event_date_resource['category'] = event_date.category
            event_date_resource['label'] = event_date.label
            event_date_resource['venue_slug'] = event_date.venue_slug
            event_date_resource['venue'] = event_date.venue

            return_value.append(event_date_resource)

        return return_value
Пример #2
0
def edit_event(entity, data):
    """
    Edit an event
    """

    # Create the base Event Model

    entity.slug = data['slug']
    entity.name = data['name']
    entity.url = data['url']

    entity.summary = data['summary']
    entity.content = data['content']
    entity.featured = bool(data['featured'])

    # Create the Event Dates
    # TODO: As we add different event types, pull this into its own method

    event_dates = []
    for d_data in data['event_dates']:
        ed = EventDate()

        ed.category = d_data['category']
        ed.venue_slug = d_data['venue_slug']

        # Check to ensure that venue_slug exists...
        v = venue_api.get_venue_by_slug(d_data['venue_slug'])
        if not v:
            raise Exception("%s is not a know venue slug." %
                            d_data['venue_slug'])

        # TODO: Also check if start is before end, etc

        ed.label = d_data['label']
        ed.type = str(d_data['type'])  # This is not a long term solution...
        ed.start = d_data['start'].replace(
            tzinfo=None)  # Expected to be a DateTime or None
        ed.end = d_data['end'].replace(
            tzinfo=None)  # Expected to be a DateTime or None
        event_dates.append(ed)

    entity.event_dates = event_dates

    entity.put()

    # Step 2: Next update the search indexes incase anything affecting them has changed
    event_search.maybe_up_update_search_index(entity)

    # Step 3: Kill All caches
    ubercache.cache_invalidate('events')

    return entity
Пример #3
0
    def _delete(self, slug):
        """
        Delete a Resource
        """

        venue = venues_api.get_venue_by_slug(slug)

        if not venue:
            self.serve_404('Gallery Not Found')
            return False

        result = venues_api.delete_venue(venue, self.cleaned_data)
        self.serve_success(result)
Пример #4
0
    def test_base(self, m_get_venue_key):
        # Setup Mocks
        test_slug = 'test'
        mock_key = Mock()
        mock_key.get = Mock(return_value='VenueEntity')  # Mock key.get() call

        m_get_venue_key.return_value = mock_key

        # Run code under test
        result = api.get_venue_by_slug(test_slug)

        # Check mocks
        m_get_venue_key.assert_called_once_with('test')
        mock_key.get.assert_called_once_with()
        self.assertEqual(result, 'VenueEntity')
Пример #5
0
    def get(self, slug):
        # TODO: Abstract this a bit more out into a rest-like service...
        e = venues_api.get_venue_by_slug(slug)

        if not e:
            logging.error('Gallery Not Found with slug %s.' % slug)
            self.response.set_status(404)

        # TODO: Update these values
        pagemeta = {
            'title': 'Gallery Name',
            'description': 'Gallery Summary',
            'image': ''
        }

        template_values = {'pagemeta': pagemeta}
        self.render_template('templates/index.html', template_values)
Пример #6
0
    def _get(self):

        # Check if there is a query filter, etc
        get_by_slug = self.cleaned_params.get('get_by_slug', None)

        if get_by_slug:
            venue = venues_api.get_venue_by_slug(get_by_slug)
            if not venue:
                self.serve_404('Gallery Not Found')
                return False

            resource = create_resource_from_entity(venue)
            self.serve_success(resource)
            return

        q = self.cleaned_params.get('q', None)

        if q:
            results = vsearch.simple_search(q)
            # hydrate the search results
            keys_to_fetch = []
            #raise Exception(results)

            # TODO: This should be a bulk get
            for r in results['index_results']:
                keys_to_fetch.append(venues_api.get_venue_key(r.doc_id))

            entities = ndb.get_multi(keys_to_fetch)

        else:
            entities = Venue.query().fetch(1000)

        # Create A set of results based upon this result set - iterator??
        results = []
        for e in entities:
            results.append(create_resource_from_entity(e))

        self.serve_success(results)
Пример #7
0
def create_event(data):
    """
    Create an event
    # TODO: Make this transactional
    """

    # check if there are any other events with this slug

    v = Event.query(Event.slug == data['slug']).get()
    if v:
        raise Exception(
            'There is already an Event with the slug "%s". Please select another.'
            % data['slug'])

    search_index = event_search.get_search_index()

    # Create the base Event Model
    entity = Event()
    entity.slug = data['slug']
    entity.name = data['name']
    entity.url = data['url']

    entity.summary = data['summary']
    entity.content = data['content']
    entity.featured = bool(data['featured'])

    # Create the Event Dates
    # TODO: As we add different event types, pull this into its own method

    event_dates = []
    for d_data in data['event_dates']:
        ed = EventDate()

        ed.category = d_data['category']
        ed.venue_slug = d_data['venue_slug']

        # Check to ensure that venue_slug exists...
        v = venue_api.get_venue_by_slug(d_data['venue_slug'])
        if not v:
            raise Exception("%s is not a know venue slug." %
                            d_data['venue_slug'])

        # TODO: Also check if start is before end, etc

        ed.label = d_data['label']
        ed.type = str(d_data['type'])  # This is not a long term solution...
        ed.start = d_data['start'].replace(
            tzinfo=None)  # Expected to be a DateTime or None
        ed.end = d_data['end'].replace(
            tzinfo=None)  # Expected to be a DateTime or None
        event_dates.append(ed)

    entity.event_dates = event_dates

    entity.put()

    # Build search indexes for event dates
    search_docs = event_search.build_index(entity)
    search_index.put(search_docs)

    # Step 3: Delete any cache keys related
    ubercache.cache_invalidate('events')

    return entity