本文整理汇总了Python中mediacore.lib.i18n._函数的典型用法代码示例。如果您正苦于以下问题:Python _函数的具体用法?Python _怎么用?Python _使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了_函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _parse
def _parse(self, url, **kwargs):
"""Return metadata for the given URL that matches :attr:`url_pattern`.
:type url: unicode
:param url: A remote URL string.
:param \*\*kwargs: The named matches from the url match object.
:rtype: dict
:returns: Any extracted metadata.
"""
id = kwargs['id']
yt_service = gdata.youtube.service.YouTubeService()
yt_service.ssl = False
try:
entry = yt_service.GetYouTubeVideoEntry(video_id=id)
except gdata.service.RequestError, e:
if e['status'] == 403 and e['body'] == 'Private video':
raise UserStorageError(
_('This video is private and cannot be embedded.'))
elif e['status'] == 400 and e['body'] == 'Invalid id':
raise UserStorageError(
_('Invalid YouTube URL. This video does not exist.'))
示例2: boolean_radiobuttonlist
def boolean_radiobuttonlist(name, **kwargs):
return RadioButtonList(
name,
options=lambda: (('true', _('Yes')), ('false', _('No'))),
validator=OneOf(['true', 'false']),
**kwargs
)
示例3: send_comment_notification
def send_comment_notification(media_obj, comment):
"""
Helper method to send a email notification that a comment has been posted.
Sends to the address configured in the 'email_comment_posted' setting,
if it is configured.
:param media_obj: The media object to send a notification about.
:type media_obj: :class:`~mediacore.model.media.Media` instance
:param comment: The newly posted comment.
:type comment: :class:`~mediacore.model.comments.Comment` instance
"""
send_to = request.settings['email_comment_posted']
if not send_to:
# Comment notification emails are disabled!
return
author_name = media_obj.author.name
comment_subject = comment.subject
post_url = url_for_media(media_obj, qualified=True)
comment_body = strip_xhtml(line_break_xhtml(line_break_xhtml(comment.body)))
subject = _('New Comment: %(comment_subject)s') % locals()
body = _("""A new comment has been posted!
Author: %(author_name)s
Post: %(post_url)s
Body: %(comment_body)s
""") % locals()
send(send_to, request.settings['email_send_from'], subject, body)
示例4: boolean_radiobuttonlist
def boolean_radiobuttonlist(name, **kwargs):
return RadioButtonList(
name,
options=lambda: ((True, _('Yes')), (False, _('No'))),
validator=StringBool,
**kwargs
)
示例5: comment
def comment(self, slug, name="", email=None, body="", **kwargs):
"""Post a comment from :class:`~mediacore.forms.comments.PostCommentForm`.
:param slug: The media :attr:`~mediacore.model.media.Media.slug`
:returns: Redirect to :meth:`view` page for media.
"""
def result(success, message=None, comment=None):
if request.is_xhr:
result = dict(success=success, message=message)
if comment:
result["comment"] = render("comments/_list.html", {"comment_to_render": comment}, method="xhtml")
return result
elif success:
return redirect(action="view")
else:
return self.view(slug, name=name, email=email, body=body, **kwargs)
akismet_key = request.settings["akismet_key"]
if akismet_key:
akismet = Akismet(agent=USER_AGENT)
akismet.key = akismet_key
akismet.blog_url = request.settings["akismet_url"] or url_for("/", qualified=True)
akismet.verify_key()
data = {
"comment_author": name.encode("utf-8"),
"user_ip": request.environ.get("REMOTE_ADDR"),
"user_agent": request.environ.get("HTTP_USER_AGENT", ""),
"referrer": request.environ.get("HTTP_REFERER", "unknown"),
"HTTP_ACCEPT": request.environ.get("HTTP_ACCEPT"),
}
if akismet.comment_check(body.encode("utf-8"), data):
return result(False, _(u"Your comment has been rejected."))
media = fetch_row(Media, slug=slug)
request.perm.assert_permission(u"view", media.resource)
c = Comment()
name = filter_vulgarity(name)
c.author = AuthorWithIP(name, email, request.environ["REMOTE_ADDR"])
c.subject = "Re: %s" % media.title
c.body = filter_vulgarity(body)
require_review = request.settings["req_comment_approval"]
if not require_review:
c.reviewed = True
c.publishable = True
media.comments.append(c)
DBSession.flush()
send_comment_notification(media, c)
if require_review:
message = _("Thank you for your comment! We will post it just as " "soon as a moderator approves it.")
return result(True, message=message)
else:
return result(True, comment=c)
示例6: real_boolean_radiobuttonlist
def real_boolean_radiobuttonlist(name, **kwargs):
# TODO: replace uses of boolean_radiobuttonlist with this, then scrap the old one.
return RadioButtonList(
name,
options=lambda: ((True, _('Yes')), (False, _('No'))),
validator=StringBool,
**kwargs
)
示例7: register_default_types
def register_default_types():
default_types = [
(VIDEO, _('Video')),
(AUDIO, _('Audio')),
(AUDIO_DESC, _('Audio Description')),
(CAPTIONS, _('Captions')),
]
for t in default_types:
yield t
示例8: 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:`~mediacore.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,
)
示例9: _parse
def _parse(self, url, id, **kwargs):
"""Return metadata for the given URL that matches :attr:`url_pattern`.
:type url: unicode
:param url: A remote URL string.
:param \*\*kwargs: The named matches from the url match object.
:rtype: dict
:returns: Any extracted metadata.
"""
if '?' in url:
url += '&skin=api'
else:
url += '?skin=api'
req = Request(url)
try:
temp_data = urlopen(req)
xmlstring = temp_data.read()
try:
try:
xmltree = ElementTree.fromstring(xmlstring)
except:
temp_data.close()
raise
except SyntaxError:
raise UserStorageError(
_('Invalid BlipTV URL. This video does not exist.'))
except URLError, e:
log.exception(e)
raise
示例10: _parse
def _parse(self, url, **kwargs):
"""Return metadata for the given URL that matches :attr:`url_pattern`.
:type url: unicode
:param url: A remote URL string.
:param \*\*kwargs: The named matches from the url match object.
:rtype: dict
:returns: Any extracted metadata.
"""
id = kwargs['id']
# Ensure the video uses the .com TLD for the API request.
url = 'http://www.dailymotion.com/video/%s' % id
data_url = 'http://www.dailymotion.com/services/oembed?' + \
urlencode({'format': 'json', 'url': url})
headers = {'User-Agent': USER_AGENT}
req = Request(data_url, headers=headers)
try:
temp_data = urlopen(req)
try:
data_string = temp_data.read()
if data_string == 'This video cannot be embeded.':
raise UserStorageError(
_('This DailyMotion video does not allow embedding.'))
data = simplejson.loads(data_string)
finally:
temp_data.close()
except URLError, e:
log.exception(e)
data = {}
示例11: best_translation
def best_translation(a, b):
"""Return the best translation given a preferred and a fallback string.
If we have a translation for our preferred string 'a' or if we are using
English, return 'a'. Otherwise, return a translation for the fallback string 'b'.
:param a: The preferred string to translate.
:param b: The fallback string to translate.
:returns: The best translation
:rtype: string
"""
translated_a = _(a)
if a != translated_a or translator.locale.language == 'en':
return translated_a
else:
return _(b)
示例12: send_support_request
def send_support_request(email, url, description, get_vars, post_vars):
"""
Helper method to send a Support Request email in response to a server
error.
Sends to the address configured in the 'email_support_requests' setting,
if it is configured.
:param email: The requesting user's email address.
:type email: unicode
:param url: The url that the user requested assistance with.
:type url: unicode
:param description: The user's description of their problem.
:type description: unicode
:param get_vars: The GET variables sent with the failed request.
:type get_vars: dict of str -> str
:param post_vars: The POST variables sent with the failed request.
:type post_vars: dict of str -> str
"""
send_to = request.settings['email_support_requests']
if not send_to:
return
get_vars = "\n\n ".join(x + " : " + get_vars[x] for x in get_vars)
post_vars = "\n\n ".join([x + " : " + post_vars[x] for x in post_vars])
subject = _('New Support Request: %(email)s') % locals()
body = _("""A user has asked for support
Email: %(email)s
URL: %(url)s
Description: %(description)s
GET_VARS:
%(get_vars)s
POST_VARS:
%(post_vars)s
""") % locals()
send(send_to, request.settings['email_send_from'], subject, body)
示例13: _to_python
def _to_python(self, value, state=None):
try:
return helpers.duration_to_seconds(value)
except ValueError:
msg = _('Bad duration formatting, use Hour:Min:Sec')
# Colons have special meaning in error messages
msg.replace(':', ':')
raise formencode.Invalid(msg, value, state)
示例14: _to_python
def _to_python(self, value, state=None):
if not value.strip():
return (None, None)
try:
width, height = value.split("x")
except ValueError, e:
raise Invalid(_("Value must be in the format wxh; e.g. 200x300"), value, state)
示例15: parse
def parse(self, file=None, url=None):
"""Return metadata for the given file or raise an error.
:type file: :class:`cgi.FieldStorage` or None
:param file: A freshly uploaded file object.
:type url: unicode or None
:param url: A remote URL string.
:rtype: dict
:returns: Any extracted metadata.
:raises UnsuitableEngineError: If file information cannot be parsed.
"""
if url is None:
raise UnsuitableEngineError
if url.startswith('rtmp://'):
known_server_uris = self._data.setdefault(RTMP_SERVER_URIS, ())
if RTMP_URI_DIVIDER in url:
# Allow the user to explicitly mark the server/file separation
parts = url.split(RTMP_URI_DIVIDER)
server_uri = parts[0].rstrip('/')
file_uri = ''.join(parts[1:]).lstrip('/')
if server_uri not in known_server_uris:
known_server_uris.append(server_uri)
else:
# Get the rtmp server from our list of known servers or fail
for server_uri in known_server_uris:
if url.startswith(server_uri):
file_uri = url[len(server_uri.rstrip('/') + '/'):]
break
else:
raise UserStorageError(
_('This RTMP server has not been configured. Add it '
'by going to Settings > Storage Engines > '
'Remote URLs.'))
unique_id = ''.join((server_uri, RTMP_URI_DIVIDER, file_uri))
else:
unique_id = url
filename = os.path.basename(url)
name, ext = os.path.splitext(filename)
ext = unicode(ext).lstrip('.').lower()
container = guess_container_format(ext)
# FIXME: Replace guess_container_format with something that takes
# into consideration the supported formats of all the custom
# players that may be installed.
# if not container or container == 'unknown':
# raise UnsuitableEngineError
return {
'type': guess_media_type(ext),
'container': container,
'display_name': u'%s.%s' % (name, container or ext),
'unique_id': unique_id,
}