def render(value):
     return Markup(self.render_markdown(value))
def create_product_list(asin_list, review_score_dict, query, age_list,
                        occasion_list):
    product_list = []
    for asin in asin_list:
        row = metadata_df.loc[metadata_df.asin == asin]
        reviews = reviews_df.loc[reviews_df.asin == asin]
        if (not row.empty):
            title = str(row['title'].iloc[0])

            if asin in review_score_dict:
                review_scores = review_score_dict[asin]
                review_score_sorted = {
                    k: v
                    for k, v in sorted(review_scores.items(),
                                       key=lambda item: item[1],
                                       reverse=True)
                }
                reviewerIDs = list(review_score_sorted.keys())[:2]
                if (len(reviewerIDs) >= 2):
                    review1 = str(
                        reviews.loc[reviews['reviewerID'] ==
                                    reviewerIDs[0]].iloc[0]['reviewText'])
                    review2 = str(
                        reviews.loc[reviews['reviewerID'] ==
                                    reviewerIDs[1]].iloc[0]['reviewText'])
                    summary1 = str(
                        reviews.loc[reviews['reviewerID'] ==
                                    reviewerIDs[0]].iloc[0]['summary'])
                    summary2 = str(
                        reviews.loc[reviews['reviewerID'] ==
                                    reviewerIDs[1]].iloc[0]['summary'])
                if (len(reviewerIDs) == 1):
                    review1 = str(
                        reviews.loc[reviews['reviewerID'] ==
                                    reviewerIDs[0]].iloc[0]['reviewText'])
                    summary1 = str(
                        reviews.loc[reviews['reviewerID'] ==
                                    reviewerIDs[0]].iloc[0]['summary'])
                    review2 = ""
                    summary2 = ""
                else:
                    review1 = str(reviews['reviewText'].iloc[0])
                    review2 = str(reviews['reviewText'].iloc[1])
                    summary1 = str(reviews['summary'].iloc[0])
                    summary2 = str(reviews['summary'].iloc[1])
            else:
                review1 = str(reviews['reviewText'].iloc[0])
                review2 = str(reviews['reviewText'].iloc[1])
                summary1 = str(reviews['summary'].iloc[0])
                summary2 = str(reviews['summary'].iloc[1])
            image = str(row['image'].iloc[0])
            out_price = '$' + str(row['price'].iloc[0])

            review1, review2 = highlight(query, age_list, occasion_list,
                                         review1, review2)

            # if (float(row['price'].iloc[0]) <= price):
            # if(float(row['price'].iloc[0]) <= max_price and float(row['price'].iloc[0]) >= min_price):
            product_tuple = (asin, title, summary1, summary2, Markup(review1),
                             Markup(review2), image, out_price)
            product_list.append(product_tuple)
    # list of tuples
    return product_list
Exemple #3
0
def plain(repo, ref, path, entry):
    data = escape(decode(entry.to_object().data))
    data = re.sub(
        r'(https?://(?:[-a-zA-Z0-9\._~:/?#\[\]@!\'()*+,;=]+|&amp;)+)',
        Markup(r'<a href="\1">\1</a>'), data)
    return Markup(u"<pre>%s</pre>" % data)
Exemple #4
0
 def render(self):
     return Markup(u'\n'.join(
         chain(*[getattr(self, 'render_' + name)()
                 for name in MEDIA_TYPES])))
 def _urlencode(self, s):
     if type(s) == 'Markup':
         s = s.unescape()
     return Markup(urllib.quote_plus(s.encode('utf-8')))
Exemple #6
0
    def _add_item_to_the_feed(self, feed, item):
        """Performs an 'in-place' update of existing 'published' articles
        in ``feed`` by creating a new entry using the contents from the
        ``item`` being passed.
        This method is invoked by pelican's core.

        :param feed: An PodcastFeed instance.
        :param item: An article (pelican's Article object).

        """
        # Local copy of iTunes attributes to add to the feed.
        items = DEFAULT_ITEM_ELEMENTS.copy()

        # Link to the new article.
        #  http://example.com/episode-01
        items['link'] = '{0}/{1}'.format(self.site_url, item.url)

        # Title for the article.
        #  ex: <title>Episode Title</title>
        items['title'] = Markup(item.title).striptags()

        # Summary for the article. This can be obtained either from
        # a ``:description:`` or a ``:summary:`` directive.
        #  ex: <itunes:summary>In this episode... </itunes:summary>
        if hasattr(item, 'description'):
            items['itunes:summary'] = item.description
        else:
            items['itunes:summary'] = Markup(item.summary).striptags()
        items['description'] = items['itunes:summary']

        # Date the article was last modified.
        #  ex: <pubDate>Fri, 13 Jun 2014 04:59:00 -0300</pubDate>
        items['pubDate'] = rfc2822_date(
            set_date_tzinfo(
                item.modified if hasattr(item, 'modified') else item.date,
                self.settings.get('TIMEZONE', None)))

        # Name(s) for the article's author(s).
        #  ex: <itunes:author>John Doe</itunes:author>
        if hasattr(item, 'author'):
            items['itunes:author'] = item.author.name

        # Subtitle for the article.
        #  ex: <itunes:subtitle>My episode subtitle</itunes:subtitle>
        if hasattr(item, 'subtitle'):
            items['itunes:subtitle'] = Markup(item.subtitle).striptags()

        # Ex:
        #  <itunes:image href="http://example.com/Episodio1.jpg" />
        if hasattr(item, 'image'):
            items['itunes:image'] = {
                'href': '{0}{1}'.format(self.site_url, item.image)
            }

        # Information about the episode audio.
        #  ex: <enclosure url="http://example.com/episode.m4a"
        #   length="872731" type="audio/x-m4a" />
        if hasattr(item, 'podcast'):
            enclosure = {'url': item.podcast}
            # Include the file size if available.
            if hasattr(item, 'length'):
                enclosure['length'] = item.length
            # Include the audio mime type if available...
            if hasattr(item, 'mimetype'):
                enclosure['type'] = item.mimetype
            else:
                # ... or default to 'audio/mpeg'.
                enclosure['type'] = 'audio/mpeg'
            items['enclosure'] = enclosure

        # Duration for the audio file.
        #  <itunes:duration>7:04</itunes:duration>
        if hasattr(item, 'duration'):
            items['itunes:duration'] = item.duration

        # Unique identifier for the episode.
        # Use a 'guid' if available...
        #  ex: <guid>http://example.com/aae20050615.m4a</guid>
        if hasattr(item, 'guid'):
            items['guid'] = item.guid
        # ... else, use the article's link instead.
        #  ex: <guid>http://example.com/episode-01</guid>
        else:
            items['guid'] = items['link']
        # Add the new article to the feed.
        feed.add_item(**items)
Exemple #7
0
def nl2br(value):
    if not value:
        return ""
    result = u'\n\n'.join(u'<p>%s</p>' % p.replace('\n', Markup('<br>\n'))
                          for p in _paragraph_re.split(escape(value.strip())))
    return Markup(result)
Exemple #8
0
def public_email(email):
    """Email address -> publicly displayable email."""
    return Markup('<span class="email">%s</span>' % unicode_to_html(email))
Exemple #9
0
def private_message(user):
    """Return a link to private message the user."""
    url = urlparams(reverse('messages.new'), to=user.username)
    msg = _('Private message')
    return Markup(u'<p class="pm"><a href="{url}">{msg}</a></p>'.format(
        url=url, msg=msg))
Exemple #10
0
 def render_embed(self):
     """
     Produce rendered charts in html for embedding purpose
     """
     return Markup("<br/> ".join([chart.render_embed() for chart in self]))
 def get_code():
     return dict(recaptcha=Markup(self.get_code()))
Exemple #12
0
 def include():
     js_path = url_for('serve_js')
     return Markup('<script src="%s" type="text/javascript"></script>') % (
         js_path, )
Exemple #13
0
 def __init__(self, isbn, name):
     self.name = name
     self.cover = isbnlib.cover(isbn)['thumbnail']
     self.description = isbnlib.desc(isbn)
     self.description = self.description.replace('\n', '<br>')
     self.description = Markup(self.description)
Exemple #14
0
def anchor_here(s):
	return Markup('<div id="-{}"></div>'.format(uri_fragment(s)))
Exemple #15
0
def simple():
    c = bar_base()
    return Markup(c.render_embed())
Exemple #16
0
def format_markdown(text):
    html = markdown_processor.convert(text)
    html = cleaner.clean_html(html)
    return Markup(html)
Exemple #17
0
def render_dashboard(new_user=False,
                     new_team=False,
                     set_team=False,
                     form=None):
    """
    Render dashboard screen.
    :return:
    """
    if new_user:
        if form is None:
            form = set_role_form_choices_validators(RoleForm())
        # Create user in database, on submit.
        submit_action = url_for('setup_user')
        submit_text = "Create"
    elif new_team:
        if form is None:
            form = NewTeamForm()
        # Create manager's team in database, on submit.
        submit_action = url_for('setup_team_ui')
        submit_text = "Create"
    elif set_team:
        if form is None:
            form = set_team_form_choices_validators(SetTeamForm())
        # Set player's team in database, on submit.
        submit_action = url_for('set_user_team', user_id=get_profile_db_id())
        submit_text = "Set"
    else:
        # Basic dashboard.
        form = None
        submit_action = None
        submit_text = None

        # Show messages for unconfirmed match selections.
        db_id = get_profile_db_id()
        for match in get_selected_and_unconfirmed(db_id):
            url = url_for('match_selections', match_id=match.id)
            opposition = get_team_name(
                pick_by_home_id(match, M_AWAY_ID, M_HOME_ID))

            flash(
                Markup(
                    f'<div>'
                    f'You have not confirmed availability for '
                    f'{match[M_START_TIME].strftime(APP_DATETIME_FMT)} '
                    f'{choose_by_home_id(match[M_HOME_ID], "home", "away")} '
                    f'match versus {opposition}.'
                    f'</div>'
                    f'<div>'
                    f'<a class="btn btn-default btn-sm" href="{url}">'
                    f'<i class="fas fa-edit" data-bs-toggle="tooltip" '
                    f'data-bs-placement="top" title="Confirm availability"></i>'
                    f'</a>'
                    f'</div>'))

    return render_template(
        'dashboard.html',
        new_user=new_user,
        new_team=new_team,
        set_team=set_team,
        form=form,
        submit_action=submit_action,
        submit_text=submit_text,
        userinfo_pretty=json_encoder.encode(get_jwt_payload()),
        last_login=local_datetime(
            get_jwt_payload_updated_at()).strftime(APP_DATETIME_FMT),
        title="Dashboard")
Exemple #18
0
 def render(self, format):
     return Markup(
         "<script>\ndocument.write(moment(\"%s\").%s);\n</script>" %
         (self.timestamp.strftime("%Y-%m-%dT%H:%M:%S Z"), format))
Exemple #19
0
    def test_markup_and_chainable_undefined(self):
        from jinja2 import Markup
        from jinja2.runtime import ChainableUndefined

        assert str(Markup(ChainableUndefined())) == ""
    def regulation_results_page(self, request):
        all_regs = Part.objects.order_by('part_number')
        regs = validate_regs_list(request)
        order = validate_order(request)
        search_query = request.GET.get('q', '').strip()
        payload = {
            'search_query': search_query,
            'results': [],
            'total_results': 0,
            'regs': regs,
            'all_regs': [],
        }
        if not search_query or len(urllib.parse.unquote(search_query)) == 1:
            self.results = payload
            return TemplateResponse(request, self.get_template(request),
                                    self.get_context(request))
        search = SectionParagraphDocument.search().query('match',
                                                         text={
                                                             "query":
                                                             search_query,
                                                             "operator": "AND"
                                                         })
        search = search.highlight('text',
                                  pre_tags="<strong>",
                                  post_tags="</strong>")
        total_results = search.count()
        all_regs = [{
            'short_name':
            reg.short_name,
            'id':
            reg.part_number,
            'num_results':
            search.filter('term', part=reg.part_number).count(),
            'selected':
            reg.part_number in regs
        } for reg in all_regs]
        payload.update({'all_regs': all_regs, 'total_count': total_results})
        if regs:
            search = search.filter('terms', part=regs)
        if order == 'regulation':
            search = search.sort('part', 'section_order')
        search = search[0:total_results]
        response = search.execute()
        for hit in response[0:total_results]:
            try:
                snippet = Markup("".join(hit.meta.highlight.text[0]))
            except TypeError as e:
                logger.warning(
                    "Query string {} produced a TypeError: {}".format(
                        search_query, e))
                continue
            hit_payload = {
                'id':
                hit.paragraph_id,
                'part':
                hit.part,
                'reg':
                hit.short_name,
                'label':
                hit.title,
                'snippet':
                snippet,
                'url':
                "{}{}/{}/#{}".format(self.parent().url, hit.part,
                                     hit.section_label, hit.paragraph_id),
            }
            payload['results'].append(hit_payload)

        payload.update({'current_count': search.count()})
        self.results = payload
        context = self.get_context(request)
        num_results = validate_num_results(request)
        paginator = Paginator(payload['results'], num_results)
        page_number = validate_page_number(request, paginator)
        paginated_page = paginator.page(page_number)
        context.update({
            'current_count':
            payload['current_count'],
            'total_count':
            payload['total_count'],
            'paginator':
            paginator,
            'current_page':
            page_number,
            'num_results':
            num_results,
            'order':
            order,
            'results':
            paginated_page,
            'show_filters':
            any(reg['selected'] is True for reg in payload['all_regs'])
        })
        return TemplateResponse(request, self.get_template(request), context)
Exemple #21
0
def em(text):
    return Markup("<em>{}</em>").format(text)
Exemple #22
0
 def format_json(self, value):
     return Markup(json.dumps(value, sort_keys=True).strip())
Exemple #23
0
 def __call__(self, field, **kwargs):
     if request.method == 'POST':
         area_value = request.form.get(field.name, '')
         netloc_value = request.form.get(field.name + '_netloc', '')
         selected_value = request.form.get(field.name + '_selected', '')
     else:
         area_value = request.args.get(field.name, '')
         netloc_value = request.args.get(field.name + '_netloc', '')
         selected_value = request.args.get(field.name + '_selected', '')
         if hasattr(field.data, 'get') and area_value == '':
             area_value = field.data.get('area_value')
             netloc_value = field.data.get('netloc_value')
             selected_value = field.data.get('selected_value')
     if area_value == '':
         area_value_chosen = u'请选择区域'
     else:
         area_value_chosen = area_value
     html = u'''
     <script type="text/javascript">
         $(function(){
             var config = {
                 replace_search_input: function(){
                     return '<div id="tree" style="height: 150px;"></div>'
                 }
             };
             $("#%(field_id)s_chosen").chosen(config);
             $("#tree").dynatree({
                 checkbox: true,
                 selectMode: %(select_mode)s,
                 imagePath: '',
                 initAjax:{
                     url:"/area_select",
                     data:{
                         selected_ids: $('#%(field_id)s_selected').val()
                     }
                 },
                 onActivate: function(dtnode) {},
                 onLazyRead: function(dtnode){
                     dtnode.appendAjax({
                         url:"/area_select",
                         data:{
                             key: dtnode.data.key,
                             selected_ids: $('#%(field_id)s_selected').val()
                         }
                     });
                 },
                 onSelect: function(select, dtnode) {
                     var selNodes = dtnode.tree.getSelectedNodes();
                     var selkeys = [];
                     var selTitles = [];
                     var selvals = $.map(selNodes, function(node){
                         selkeys.push(node.data.key);
                         selTitles.push(node.data.title);
                         return node.data.area_type + '=' + node.data.key;
                     });
                     $("#%(field_id)s_netloc").val(selvals.join(" or "));
                     $("#%(field_id)s_selected").val(selkeys.join(","));
                     $("#%(field_id)s").val(selTitles.join(","));
                     if(selTitles == "") {
                         $("a.chzn-single.chzn-default span").html("请选择区域");
                     }else {
                         $("a.chzn-single.chzn-default span").html(selTitles.join(","));
                     }
                 },
                 strings: {
                     loading: "加载中…",
                     loadError: "加载错误!"
                 },
                 onKeydown: function(dtnode, event) {
                     if( event.which == 13 ) {
                         dtnode.toggleSelect();
                         return false;
                     }
                 }
             });
             $("a.chzn-single.chzn-default span").html("%(area_value_chosen)s");
         });
     </script>
     <select id="%(field_id)s_chosen"></select>
     <input id="%(field_id)s" type="hidden" name="%(field_name)s" value="%(area_value)s" />
     <input id="%(field_id)s_netloc" type="hidden" value="%(netloc_value)s" name="%(field_name)s_netloc" />
     <input id="%(field_id)s_selected" type="hidden" value="%(selected_value)s" name="%(field_name)s_selected" />
     ''' % {
         'select_mode': field.select_mode,
         'field_id': field.id,
         'field_name': field.name,
         'area_value': area_value,
         'area_value_chosen': area_value_chosen,
         'netloc_value': netloc_value,
         'selected_value': selected_value
     }
     return Markup(html)
Exemple #24
0
 def format_yaml(self, value):
     return Markup(yaml.dump(value, default_flow_style=True,
                             Dumper=OrderedDictDumper).strip())
 def _safe(self, s):
     if type(s) == 'Markup':
         return s.unescape()
     else:
         return Markup(s).unescape()
Exemple #26
0
 def format_python(self, value):
     return Markup(pprint.pformat(value).strip())
Exemple #27
0
            link2 = url_for('commit', repo=repo.name, ref=commit['hex'])
            blame[-1] = commit['hex']
            return Markup(
                '<a href="%s" title="%s (%s)">%s</a> %s<a href="%s#l-%s">%s</a>'
                % (link2, commit['summary'],
                   time.strftime(
                       '%Y-%m-%d', time.gmtime(int(
                           commit['committer-time']))), commit['hex'][:7],
                   match.group(1), link, orig_line, match.group(2)))

        html = re.sub(r'(<a name="l-(\d+)"></a><span class="[^"]+">\s*)(\d+)',
                      replace, html)
    return html


add_plain_link = Markup(
    '''<script type="text/javascript">add_plain_link()</script>''')


@renderer
def markdown(repo, ref, path, entry):
    data = decode(entry.to_object().data)
    return Markup(
        markdown_.Markdown(safe_mode="escape").convert(data)) + add_plain_link


@renderer
def rest(repo, ref, path, entry):
    data = decode(entry.to_object().data)
    settings = {
        'file_insertion_enabled': False,
        'raw_enabled': False,
Exemple #28
0
 def _render(self, csrf_token):
     from django.template.defaulttags import CsrfTokenNode
     return Markup(CsrfTokenNode().render({'csrf_token': csrf_token}))
Exemple #29
0
def markdown(repo, ref, path, entry):
    data = decode(entry.to_object().data)
    return Markup(
        markdown_.Markdown(safe_mode="escape").convert(data)) + add_plain_link
    def _add_item_to_the_feed(self, feed, item):
        """Performs an 'in-place' update of existing 'published' articles
        in ``feed`` by creating a new entry using the contents from the
        ``item`` being passed.
        This method is invoked by pelican's core.

        :param feed: A PodcastFeed instance.
        :param item: An article (pelican's Article object).

        """
        # Local copy of iTunes attributes to add to the feed.
        article = DEFAULT_ITEM_ELEMENTS.copy()

        article_values_map = [
            [
                "link",
                lambda calee, item, article: "{0}/{1}".format(
                    calee.site_url, item.url),
            ],
            [
                "title",
                lambda calee, item, article: Markup(item.title).striptags(),
            ],  # NOQA E231
            [
                "itunes:summary",
                lambda calee, item, article: item.description if hasattr(
                    item, "description") else Markup(item.summary).striptags(),
            ],
            [
                "description",
                lambda calee, item, article: "<![CDATA[{}]]>".format(
                    Markup(item.summary)),
            ],
            [
                "pubDate",
                lambda calee, item, article: rfc2822_date(
                    set_date_tzinfo(
                        item.modified
                        if hasattr(item, "modified") else item.date,
                        self.settings.get("TIMEZONE", None),
                    )),
            ],
            ["itunes:author", lambda calee, item, article: item.author.name],
            [
                "itunes:subtitle",
                lambda calee, item, article: Markup(item.subtitle).striptags()
                if hasattr(item, "subtitle") else None,
            ],
            [
                "itunes:image",
                lambda calee, item, article: {
                    "href": "{0}{1}".format(self.site_url, item.image)
                } if hasattr(item, "image") else None,
            ],
            [
                "guid",
                lambda calee, item, article: item.guid
                if hasattr(item, "guid") else article["link"],
            ],
        ]

        def update_article(item, article, *args):
            if len(args) == 2:
                args = args + (None, )
            _key, value, default = args
            try:
                val = value(self, item, article)
                if val:
                    article[_key] = val
            except Exception as e:
                logger.warning("Exception %s", e)

        for article_value_map in article_values_map:
            update_article(item, article, *article_value_map)

        # get file path to podcast attachment file.
        def get_attachment_filepath(settings):
            siteurl = self.settings.get("SITEURL", None)
            content_path = self.settings.get("PATH", None)
            if item.podcast.startswith(siteurl):
                return f"{content_path}/{item.podcast[len(siteurl):]}"

        def get_attachment_url(settings):
            return item.podcast

        enclosure = {"url": get_attachment_url(self.settings)}

        if hasattr(item, "length"):
            enclosure["length"] = item.length
        if hasattr(item, "duration"):
            article["itunes:duration"] = item.duration

        filepath = get_attachment_filepath(self.settings)

        if filepath and os.path.exists(filepath):
            enclosure["length"] = str(os.path.getsize(filepath))
            audiofile = mutagen.File(filepath)

            (enclosure["type"], ) = set(
                audiofile.mime) & set(SUPPORTED_MIME_TYPES)

            article["itunes:duration"] = str(int(audiofile.info.length))

        article["enclosure"] = enclosure

        # Add the new article to the feed.
        feed.add_item(**article)