def body_to_article(self, headline, byline, text, date, source, meta): """ Create an Article-object based on given parameters. It raises an error (Medium.DoesNotExist) when the given source does not have an entry in the database. @param headline: headline of new Article-object @type headline: unicode / str @param byline: byline for new Article @type byline: NoneType, unicode, str @param text: text for new Article @type text: unicode / str @param date: date(time) for new Article @type date: datetime.date, datetime.datetime @param source: medium-label for new Article @type source: unicode / str @param meta: object containing all sorts of meta-information, most of it suitable for metastring. However, some information (author, length) will be extracted. @type meta: dictionary @return Article-object """ log.debug( "Creating article object for {headline!r}".format(**locals())) art = Article(headline=headline, byline=byline, text=text, date=date) art.medium = get_or_create(Medium, name=source) # Author / Section meta = meta.copy() art.author = meta.pop('author', None) art.section = meta.pop('section', None) if 'length' in meta: art.length = int(meta.pop('length').split()[0]) else: art.length = art.text.count(" ") art.metastring = str(meta) art.project = self.options['project'] return art