Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion ckanext/dataportaltheme/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,47 @@ def gettasks(params={'state': 'open'}):
return obj


@ttl_cache(ttl=60 * 60)
def get_medium_posts(medium_account):
MEDIUM_URL = 'https://medium.com/' + medium_account + '/latest?format=json'
IMAGE_URL_PREFIX = 'https://medium.com/p/'
POST_URL_PREFIX = 'https://cdn-images-1.medium.com/fit/c/200/200/'
ALT_IMAGE_ID = '1*bDcdy0VgfLjvZ8G_NG5BxQ.png'

posts = []

medium_data = requests.get(MEDIUM_URL).text

try:
posts_data = json.loads(medium_data[16:])['payload']['references']['Post']

for post_item in posts_data.values():

post_id = post_item.get('id', None)
post_url = IMAGE_URL_PREFIX + post_id
post_title = post_item.get('title', None)
post_subtitle = post_item['content']['subtitle']

post_image_url = post_item['virtuals']['previewImage']['imageId']
if post_image_url == '':
post_image_url = POST_URL_PREFIX + ALT_IMAGE_ID
else:
post_image_url = POST_URL_PREFIX + post_image_url

posts.append({
'id': post_id,
'name': post_title,
'description': post_subtitle,
'url': post_url,
'imageUrl': post_image_url
})
except Exception:
# maybe change this
pass

return posts


def all_groups():
'''Return a sorted list of the groups with the most datasets.'''

Expand Down Expand Up @@ -128,6 +169,7 @@ def update_config_schema(self, schema):
'twitter_url': [ignore_missing],
'instagram_url': [ignore_missing],
'linkedIn_url': [ignore_missing],
'medium_url': [ignore_missing],
})

return schema
Expand Down Expand Up @@ -185,6 +227,7 @@ def get_helpers(self):
latest_issues = gettasks()[:3]
except:
latest_issues = []

return {
'all_groups': all_groups,
'current_year': datetime.now().year,
Expand All @@ -193,7 +236,8 @@ def get_helpers(self):
'https://github.com/orgs/code4romania/projects/12'),
'similar': similar_with,
'generate_url': generate_url,
'get_view_data': get_view_data
'get_view_data': get_view_data,
'medium_latest': get_medium_posts,
}


Expand Down
4 changes: 4 additions & 0 deletions ckanext/dataportaltheme/templates/admin/dataportal.html
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ <h3>Social Links </h3>
{{ form.input('instagram_url', id='field-instagram_url', label=_('Instagram url'), value=g['instagram_url'], error=errors['instagram_url']) }}
{{ form.input('linkedIn_url', id='field-linkedIn_url', label=_('LinkedIn url'), value=g['linkedIn_url'], error=errors['linkedIn_url']) }}
{{ form.input('twitter_url', id='field-twitter_url', label=_('Twitter url'), value=g['twitter_url'], error=errors['twitter_url']) }}

<h3>Medium feed</h3>
{{ form.input('medium_url', id='field-medium_url', label=_('Medium url'), value=g['medium_url'], error=errors['medium_url']) }}

{% endblock %}
<div class="form-actions">
<button type="submit" class="btn btn-primary" name="save">{{ _('Update Config') }}</button>
Expand Down
32 changes: 1 addition & 31 deletions ckanext/dataportaltheme/templates/home/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,37 +22,7 @@
{% block primary_content %}
{% snippet "home/layout.html" , selected_group=selected_group%}
{% block medium_extension %}
<div class="container articles">
<div class="row equal">
<div class="col-md-4">
<article class="shadowbox">
<h3>Cum să utilizezi datele deschise pentru a-ți crește calitatea vieții</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna wirl aliqua. Up exlaborum incididunt quis nostrud exercitatn. Lorem ipsum dolor sit amet, consectetur adipisicing elit,</p>
<a href="#" class="readMore">Citește mai mult</a>
</article>
</div>


<div class="col-md-4">
<article class="shadowbox">
<h3>Storytelling cu date dechise. Studiu de caz: Madrid</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna wirl aliqua. Up exlaborum incididunt quis nostrud exercitatn. Lorem ipsum dolor sit amet, consectetur ad</p>
<a href="#" class="readMore">Citește mai mult</a>
</article>
</div>


<div class="col-md-4">
<article class="shadowbox">
<h3>Analiza datelor de trafic rutier</h3>
<p>
<img src="/home-dummies/pie2.png" />
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna wirl aliqua. Up exlaborum incididunt quis nostrud exercitatn. Lorem ipsum dolor sit amet, consectetur adipisicing elit,
</p>
<a href="#" class="readMore">Citește mai mult</a>
</article>
</div>
</div>
{% snippet "home/snippets/mediumfeed.html" %}
</div>
{% endblock medium_extension %}
<div class="main">
Expand Down
20 changes: 20 additions & 0 deletions ckanext/dataportaltheme/templates/home/snippets/mediumfeed.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<div class="container articles">
<h2>Ultimele articole adăugate: </h2>

{% for medium_row in h.medium_latest(g['medium_url'])[:6]|slice(2) %}
<div class="row equal">
{% for post in medium_row %}

<div class="col-md-4">
<h3>{{ post['title'] }}</h3>
<article class="shadowbox">
<p>{{ post['description'] }}</p>
<a href="{{ post['url'] }}" class="readMore" target="_blank">Citește mai mult</a>
<img src="{{ post['imageUrl'] }}"/>
</article>
</div>
{% endfor %}
</div>
<br/>
{% endfor %}
</div>