def save(self, id, slug, title, author_name, author_email, description, notes, details, podcast, tags, topics, delete=None, **kwargs): """Save changes or create a new :class:`~mediacore.model.media.Media` instance. Form handler the :meth:`edit` action and the :class:`~mediacore.forms.media.MediaForm`. Redirects back to :meth:`edit` after successful editing and :meth:`index` after successful deletion. """ media = fetch_row(Media, id, incl_trash=True) if delete: media.status.add('trash') DBSession.add(media) DBSession.flush() redirect(action='index', id=None) if id == 'new': media.status = 'draft,unencoded,unreviewed' media.slug = get_available_slug(Media, slug, media) media.title = title media.author = Author(author_name, author_email) media.description = helpers.clean_admin_xhtml(description) media.notes = notes media.duration = helpers.duration_to_seconds(details['duration']) media.podcast_id = podcast media.set_tags(tags) media.set_topics(topics) media.update_status() DBSession.add(media) DBSession.flush() redirect(action='edit', id=media.id)