本文整理汇总了Python中mediadrop.model.fetch_row函数的典型用法代码示例。如果您正苦于以下问题:Python fetch_row函数的具体用法?Python fetch_row怎么用?Python fetch_row使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了fetch_row函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: reorder
def reorder(self, id, direction, **kwargs):
"""Reorder a PlayerPref.
:param id: Player ID.
:type id: ``int``
:param direction: ``"up"`` for higher priority, ``"down"`` for
lower priority
:type direction: ``unicode``
:returns: Redirect back to :meth:`index` after success.
"""
if direction == 'up':
offset = -1
elif direction == 'down':
offset = 1
else:
return
player1 = fetch_row(PlayerPrefs, id)
new_priority = player1.priority + offset
try:
player2 = fetch_row(PlayerPrefs, priority=new_priority)
player2.priority = player1.priority
player1.priority = new_priority
except HTTPException, e:
if e.code != 404:
raise
示例2: save
def save(self, id, delete=None, **kwargs):
"""Save changes or create a category.
See :class:`~mediadrop.forms.admin.settings.categories.CategoryForm` for POST vars.
:param id: Category ID
:param delete: If true the category is to be deleted rather than saved.
:type delete: bool
:rtype: JSON dict
:returns:
success
bool
"""
if tmpl_context.form_errors:
if request.is_xhr:
return dict(success=False, errors=tmpl_context.form_errors)
else:
# TODO: Add error reporting for users with JS disabled?
return redirect(action="edit")
cat = fetch_row(Category, id)
if delete:
DBSession.delete(cat)
data = dict(success=True, id=cat.id, parent_options=unicode(category_form.c["parent_id"].display()))
else:
cat.name = kwargs["name"]
cat.slug = get_available_slug(Category, kwargs["slug"], cat)
if kwargs["parent_id"]:
parent = fetch_row(Category, kwargs["parent_id"])
if parent is not cat and cat not in parent.ancestors():
cat.parent = parent
else:
cat.parent = None
DBSession.add(cat)
DBSession.flush()
data = dict(
success=True,
id=cat.id,
name=cat.name,
slug=cat.slug,
parent_id=cat.parent_id,
parent_options=unicode(category_form.c["parent_id"].display()),
depth=cat.depth(),
row=unicode(
category_row_form.display(
action=url_for(id=cat.id), category=cat, depth=cat.depth(), first_child=True
)
),
)
if request.is_xhr:
return data
else:
redirect(action="index", id=None)
示例3: index
def index(self, page=1, search=None, filter=None, podcast=None, category=None, tag=None, **kwargs):
"""List media with pagination and filtering.
:param page: Page number, defaults to 1.
:type page: int
:param search: Optional search term to filter by
:type search: unicode or None
:param podcast_filter: Optional podcast to filter by
:type podcast_filter: int or None
:rtype: dict
:returns:
media
The list of :class:`~mediadrop.model.media.Media` instances
for this page.
search
The given search term, if any
search_form
The :class:`~mediadrop.forms.admin.SearchForm` instance
podcast
The podcast object for rendering if filtering by podcast.
"""
media = Media.query.options(orm.undefer("comment_count_published"))
if search:
media = media.admin_search(search)
else:
media = media.order_by_status().order_by(Media.publish_on.desc(), Media.modified_on.desc())
if not filter:
pass
elif filter == "unreviewed":
media = media.reviewed(False)
elif filter == "unencoded":
media = media.reviewed().encoded(False)
elif filter == "drafts":
media = media.drafts()
elif filter == "published":
media = media.published()
if category:
category = fetch_row(Category, slug=category)
media = media.filter(Media.categories.contains(category))
if tag:
tag = fetch_row(Tag, slug=tag)
media = media.filter(Media.tags.contains(tag))
if podcast:
podcast = fetch_row(Podcast, slug=podcast)
media = media.filter(Media.podcast == podcast)
return dict(
media=media,
search=search,
search_form=search_form,
media_filter=filter,
category=category,
tag=tag,
podcast=podcast,
)
示例4: edit
def edit(self, id, **kwargs):
"""Display the :class:`~mediadrop.forms.admin.groups.GroupForm` for editing or adding.
:param id: Group ID
:type id: ``int`` or ``"new"``
:rtype: dict
:returns:
user
The :class:`~mediadrop.model.auth.Group` instance we're editing.
user_form
The :class:`~mediadrop.forms.admin.groups.GroupForm` instance.
user_action
``str`` form submit url
group_values
``dict`` form values
"""
group = fetch_row(Group, id)
if tmpl_context.action == "save" or id == "new":
# Use the values from error_handler or GET for new groups
group_values = kwargs
else:
permission_ids = map(lambda permission: permission.permission_id, group.permissions)
group_values = dict(
display_name=group.display_name, group_name=group.group_name, permissions=permission_ids
)
return dict(group=group, group_form=group_form, group_action=url_for(action="save"), group_values=group_values)
示例5: view
def view(self, slug, page=1, show='latest', **kwargs):
"""View a podcast and the media that belongs to it.
:param slug: A :attr:`~mediadrop.model.podcasts.Podcast.slug`
:param page: Page number, defaults to 1.
:type page: int
:rtype: dict
:returns:
podcast
A :class:`~mediadrop.model.podcasts.Podcast` instance.
episodes
A list of :class:`~mediadrop.model.media.Media` instances
that belong to the ``podcast``.
podcasts
A list of all the other podcasts
"""
podcast = fetch_row(Podcast, slug=slug)
episodes = podcast.media.published()
episodes, show = helpers.filter_library_controls(episodes, show)
episodes = viewable_media(episodes)
if request.settings['rss_display'] == 'True':
response.feed_links.append(
(url_for(action='feed'), podcast.title)
)
return dict(
podcast = podcast,
episodes = episodes,
result_count = episodes.count(),
show = show,
)
示例6: create_new_user
def create_new_user(username, config):
from mediadrop.model import DBSession, User, fetch_row, Group
user = User.by_user_name(username)
if user is None:
try:
print "MIDDLEWARE"
print config
l = ldap.initialize(config['ldap_url'])
l.simple_bind_s(config['ldap_binddn'], config['ldap_pw'])
filter = '(samaccountname=%s)' % username
r = l.search_s(config['ldap_base'],ldap.SCOPE_SUBTREE, filter, ['displayname', 'mail'])
l.unbind_s()
user_attrs = {}
for dn, entry in r:
for attr, v in entry.iteritems():
user_attrs[attr] = v[0]
except ldap.LDAPError:
l.unbind_s()
new_user = fetch_row(User, "new")
new_user.display_name = user_attrs['displayName']
new_user.email_address = user_attrs['mail']
new_user.user_name = username
query = DBSession.query(Group).filter(Group.group_name.in_(['authenticated']))
new_user.groups = list(query.all())
DBSession.add(new_user)
DBSession.commit()
示例7: rate
def rate(self, slug, up=None, down=None, **kwargs):
"""Say 'I like this' for the given media.
:param slug: The media :attr:`~mediadrop.model.media.Media.slug`
:rtype: unicode
:returns:
The new number of likes
"""
media = fetch_row(Media, slug=slug)
request.perm.assert_permission(u'view', media.resource)
if up:
if not request.settings['appearance_show_like']:
abort(status_code=403)
media.increment_likes()
elif down:
if not request.settings['appearance_show_dislike']:
abort(status_code=403)
media.increment_dislikes()
if request.is_xhr:
return u''
else:
redirect(action='view')
示例8: embed_player
def embed_player(self, slug, w=None, h=None, **kwargs):
media = fetch_row(Media, slug=slug)
request.perm.assert_permission(u'view', media.resource)
return dict(
media = media,
width = w and int(w) or None,
height = h and int(h) or None,
)
示例9: view
def view(self, slug, podcast_slug=None, **kwargs):
"""Display the media player, info and comments.
:param slug: The :attr:`~mediadrop.models.media.Media.slug` to lookup
:param podcast_slug: The :attr:`~mediadrop.models.podcasts.Podcast.slug`
for podcast this media belongs to. Although not necessary for
looking up the media, it tells us that the podcast slug was
specified in the URL and therefore we reached this action by the
preferred route.
:rtype dict:
:returns:
media
The :class:`~mediadrop.model.media.Media` instance for display.
related_media
A list of :class:`~mediadrop.model.media.Media` instances that
rank as topically related to the given media item.
comments
A list of :class:`~mediadrop.model.comments.Comment` instances
associated with the selected media item.
comment_form_action
``str`` comment form action
comment_form_values
``dict`` form values
next_episode
The next episode in the podcast series, if this media belongs to
a podcast, another :class:`~mediadrop.model.media.Media`
instance.
"""
media = fetch_row(Media, slug=slug)
request.perm.assert_permission(u'view', media.resource)
if media.podcast_id is not None:
# Always view podcast media from a URL that shows the context of the podcast
if url_for() != url_for(podcast_slug=media.podcast.slug):
redirect(podcast_slug=media.podcast.slug)
try:
media.increment_views()
DBSession.commit()
except OperationalError:
DBSession.rollback()
if request.settings['comments_engine'] == 'facebook':
response.facebook = Facebook(request.settings['facebook_appid'])
related_media = viewable_media(Media.query.related(media))[:6]
# TODO: finish implementation of different 'likes' buttons
# e.g. the default one, plus a setting to use facebook.
return dict(
media = media,
related_media = related_media,
comments = media.comments.published().all(),
comment_form_action = url_for(action='comment'),
comment_form_values = kwargs,
)
示例10: disable
def disable(self, id, **kwargs):
"""Disable a StorageEngine.
:param id: engine ID.
:type id: ``int``
:returns: Redirect back to :meth:`index` after success.
"""
engine = fetch_row(StorageEngine, id)
engine.enabled = False
redirect(action='index', id=None)
示例11: fetch_engine
def fetch_engine(self, id, engine_type=None):
if id != 'new':
engine = fetch_row(StorageEngine, id)
else:
types = dict((cls.engine_type, cls) for cls in StorageEngine)
engine_cls = types.get(engine_type, None)
if not engine_cls:
redirect(controller='/admin/storage', action='index')
engine = engine_cls()
return engine
示例12: disable
def disable(self, id, **kwargs):
"""Disable a PlayerPref.
:param id: Player ID.
:type id: ``int``
:returns: Redirect back to :meth:`index` after success.
"""
player = fetch_row(PlayerPrefs, id)
player.enabled = False
update_enabled_players()
redirect(action='index', id=None)
示例13: update_status
def update_status(self, id, status=None, publish_on=None, publish_until=None, **values):
"""Update the publish status for the given media.
:param id: Media ID
:type id: ``int``
:param update_status: The text of the submit button which indicates
that the :attr:`~mediadrop.model.media.Media.status` should change.
:type update_status: ``unicode`` or ``None``
:param publish_on: A date to set to
:attr:`~mediadrop.model.media.Media.publish_on`
:type publish_on: :class:`datetime.datetime` or ``None``
:param publish_until: A date to set to
:attr:`~mediadrop.model.media.Media.publish_until`
:type publish_until: :class:`datetime.datetime` or ``None``
:rtype: JSON dict
:returns:
success
bool
message
Error message, if unsuccessful
status_form
Rendered XHTML for the status form, updated to reflect the
changes made.
"""
media = fetch_row(Media, id)
new_slug = None
# Make the requested change assuming it will be allowed
if status == 'unreviewed':
media.reviewed = True
elif status == 'draft':
self._publish_media(media, publish_on)
elif publish_on:
media.publish_on = publish_on
media.update_popularity()
elif publish_until:
media.publish_until = publish_until
# Verify the change is valid by re-determining the status
media.update_status()
DBSession.flush()
if request.is_xhr:
# Return the rendered widget for injection
status_form_xhtml = unicode(update_status_form.display(
action=url_for(action='update_status'), media=media))
return dict(
success = True,
status_form = status_form_xhtml,
slug = new_slug,
)
else:
redirect(action='edit')
示例14: index
def index(self, page=1, show='latest', q=None, tag=None, **kwargs):
"""List media with pagination.
The media paginator may be accessed in the template with
:attr:`c.paginators.media`, see :class:`webhelpers.paginate.Page`.
:param page: Page number, defaults to 1.
:type page: int
:param show: 'latest', 'popular' or 'featured'
:type show: unicode or None
:param q: A search query to filter by
:type q: unicode or None
:param tag: A tag slug to filter for
:type tag: unicode or None
:rtype: dict
:returns:
media
The list of :class:`~mediadrop.model.media.Media` instances
for this page.
result_count
The total number of media items for this query
search_query
The query the user searched for, if any
"""
media = Media.query.published()
media, show = helpers.filter_library_controls(media, show)
if q:
media = media.search(q, bool=True)
if tag:
tag = fetch_row(Tag, slug=tag)
media = media.filter(Media.tags.contains(tag))
if (request.settings['rss_display'] == 'True') and (not (q or tag)):
if show == 'latest':
response.feed_links.extend([
(url_for(controller='/sitemaps', action='latest'), _(u'Latest RSS')),
])
elif show == 'featured':
response.feed_links.extend([
(url_for(controller='/sitemaps', action='featured'), _(u'Featured RSS')),
])
media = viewable_media(media)
return dict(
media = media,
result_count = media.count(),
search_query = q,
show = show,
tag = tag,
)
示例15: _assert_succesful_media_upload
def _assert_succesful_media_upload(self):
media = fetch_row(Media, slug=u'testing-mp3-async-upload')
assert_equals('John Doe', media.author.name)
assert_equals('[email protected]', media.author.email)
assert_equals('testing mp3 async upload', media.title)
assert_equals('<p>a great song</p>', media.description)
assert_length(1, media.files)
media_file = media.files[0]
assert_equals('mp3', media_file.container)
assert_equals('awesome-song.mp3', media_file.display_name)
return media