Ejemplo n.º 1
0
 def on_create(self, docs):
     """Set default metadata."""
     planning_type = get_resource_service('planning_types').find_one(
         req=None, name='planning')
     for doc in docs:
         if 'guid' not in doc:
             doc['guid'] = generate_guid(type=GUID_NEWSML)
         doc[config.ID_FIELD] = doc['guid']
         self.validate_planning(doc)
         set_original_creator(doc)
         self._set_planning_event_info(doc, planning_type)
         self._set_coverage(doc)
         self.set_planning_schedule(doc)
         # set timestamps
         update_dates_for(doc)
    def on_create(self, docs):
        for doc in docs:
            date = utc_to_local(doc.get('tz') or app.config['DEFAULT_TIMEZONE'], doc.get('date'))
            _id = date.strftime(ID_DATE_FORMAT)

            items = self.find(where={'_id': _id})
            if items.count() > 0:
                raise SuperdeskApiError.badRequestError(
                    message="Featured story already exists for this date.")

            self.validate_featured_attrribute(doc.get('items'))
            doc['_id'] = _id
            self.post_featured_planning(doc)
            # set the author
            set_original_creator(doc)

            # set timestamps
            update_dates_for(doc)
Ejemplo n.º 3
0
    def on_create(self, docs):
        # events generated by recurring rules
        generated_events = []
        for event in docs:
            # generates an unique id
            if 'guid' not in event:
                event['guid'] = generate_guid(type=GUID_NEWSML)
            event[config.ID_FIELD] = event['guid']

            # family_id get on ingest we don't need it planning
            event.pop('family_id', None)

            # set the author
            set_original_creator(event)

            # set timestamps
            update_dates_for(event)

            # overwrite expiry date
            overwrite_event_expiry_date(event)

            # We ignore the 'update_method' on create
            if 'update_method' in event:
                del event['update_method']

            # Remove the 'expired' flag if it is set, as no new Event can be created
            # as expired
            if 'expired' in event:
                del event['expired']

            set_planning_schedule(event)
            planning_item = event.get('_planning_item')

            # validate event
            self.validate_event(event)

            # generates events based on recurring rules
            if event['dates'].get('recurring_rule', None):
                recurring_events = generate_recurring_events(event)
                generated_events.extend(recurring_events)
                # remove the event that contains the recurring rule. We don't need it anymore
                docs.remove(event)

                # Set the current Event to the first Event in the new series
                # This will make sure the ID of the Event can be used when
                # using 'event' from here on, such as when linking to a Planning item
                event = recurring_events[0]
                # And set the Planning Item from the original
                # (generate_recurring_events removes this field)
                event['_planning_item'] = planning_item

            if event['state'] == 'ingested':
                events_history = get_resource_service('events_history')
                events_history.on_item_created([event])

            if planning_item:
                self._link_to_planning(event)
                del event['_planning_item']

        if generated_events:
            docs.extend(generated_events)