Permalink
Browse files

fix issue 138: New badger_example app and standalone test scaffolding

* Moved badger_example out of tests directory and up to package root
* Clean out playdoh / jinja templates, since they live in badg.us
* Misc tweaks to get tests working standalone
  • Loading branch information...
1 parent 3bab1af commit b3544906d70bae51315639ae12381a5c40b048e5 @lmorchard committed Jan 2, 2013
Showing with 417 additions and 1,052 deletions.
  1. +22 −0 .travis.yml
  2. +3 −0 README.rst
  3. +12 −0 badger/requirements/tests.txt
  4. +0 −120 badger/templates/badger_playdoh/award_detail.html
  5. +0 −35 badger/templates/badger_playdoh/awards_by_badge.html
  6. +0 −18 badger/templates/badger_playdoh/awards_by_user.html
  7. +0 −24 badger/templates/badger_playdoh/awards_list.html
  8. +0 −31 badger/templates/badger_playdoh/badge_award.html
  9. +0 −80 badger/templates/badger_playdoh/badge_create.html
  10. +0 −44 badger/templates/badger_playdoh/badge_delete.html
  11. +0 −209 badger/templates/badger_playdoh/badge_detail.html
  12. +0 −39 badger/templates/badger_playdoh/badges_list.html
  13. +0 −1 badger/templates/badger_playdoh/base.html
  14. +0 −13 badger/templates/badger_playdoh/deferred_award_body.txt
  15. +0 −1 badger/templates/badger_playdoh/deferred_award_subject.txt
  16. +0 −125 badger/templates/badger_playdoh/home.html
  17. +0 −5 badger/templates/badger_playdoh/includes/award_as_badge.html
  18. +0 −4 badger/templates/badger_playdoh/includes/award_as_user.html
  19. +0 −19 badger/templates/badger_playdoh/includes/award_full.html
  20. +0 −16 badger/templates/badger_playdoh/includes/awards_as_badges_list.html
  21. +0 −34 badger/templates/badger_playdoh/includes/awards_list.html
  22. +0 −44 badger/templates/badger_playdoh/includes/badge_full.html
  23. +0 −15 badger/templates/badger_playdoh/includes/badges_list.html
  24. +0 −21 badger/templates/badger_playdoh/includes/pagination.html
  25. +0 −10 badger/templates/badger_vanilla/includes/award_full.html
  26. +18 −1 badger/templatetags/badger_tags.py
  27. +1 −7 badger/tests/__init__.py
  28. +1 −1 badger/tests/test_badges_py.py
  29. +1 −1 badger/tests/test_models.py
  30. +5 −5 badger/tests/test_views.py
  31. 0 {badger/tests → }/badger_example/__init__.py
  32. 0 {badger/tests → }/badger_example/badges.py
  33. 0 ...ures/badger_tests_badger_example_badges.json → badger_example/fixtures/badger_example_badges.json
  34. 0 {badger/tests → }/badger_example/models.py
  35. +7 −15 {badger/templates/badger_playdoh → badger_example/templates/badger}/award_delete.html
  36. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/award_detail.html
  37. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/awards_by_badge.html
  38. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/awards_by_user.html
  39. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/awards_list.html
  40. +2 −5 {badger/templates/badger_vanilla → badger_example/templates/badger}/badge_award.html
  41. +18 −0 badger_example/templates/badger/badge_create.html
  42. +43 −0 badger_example/templates/badger/badge_delete.html
  43. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/badge_detail.html
  44. +4 −4 {badger/templates/badger_playdoh → badger_example/templates/badger}/badge_edit.html
  45. +5 −5 {badger/templates/badger_playdoh → badger_example/templates/badger}/badge_nominate_for.html
  46. +2 −2 {badger/templates/badger_playdoh → badger_example/templates/badger}/badges_by_user.html
  47. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/badges_list.html
  48. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/base.html
  49. +16 −24 {badger/templates/badger_playdoh → badger_example/templates/badger}/claim_deferred_award.html
  50. +1 −1 {badger/templates/badger_playdoh → badger_example/templates/badger}/claims_list.html
  51. +10 −0 badger_example/templates/badger/deferred_award_body.txt
  52. +2 −0 badger_example/templates/badger/deferred_award_subject.txt
  53. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/home.html
  54. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/includes/award_as_badge.html
  55. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/includes/award_as_user.html
  56. +24 −0 badger_example/templates/badger/includes/award_full.html
  57. 0 ...r/templates/badger_vanilla → badger_example/templates/badger}/includes/awards_as_badges_list.html
  58. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/includes/awards_list.html
  59. +14 −1 {badger/templates/badger_vanilla → badger_example/templates/badger}/includes/badge_full.html
  60. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/includes/badges_list.html
  61. 0 {badger/templates/badger_vanilla → badger_example/templates/badger}/includes/pagination.html
  62. +2 −2 {badger/templates/badger_playdoh → badger_example/templates/badger}/manage_claims.html
  63. +2 −2 {badger/templates/badger_playdoh → badger_example/templates/badger}/nomination_detail.html
  64. 0 ...templates/badger_playdoh → badger_example/templates/badger}/notification/award_accepted/full.html
  65. 0 .../templates/badger_playdoh → badger_example/templates/badger}/notification/award_accepted/full.txt
  66. 0 ...mplates/badger_playdoh → badger_example/templates/badger}/notification/award_accepted/notice.html
  67. 0 ...templates/badger_playdoh → badger_example/templates/badger}/notification/award_accepted/short.txt
  68. 0 ...templates/badger_playdoh → badger_example/templates/badger}/notification/award_declined/full.html
  69. 0 .../templates/badger_playdoh → badger_example/templates/badger}/notification/award_declined/full.txt
  70. 0 ...mplates/badger_playdoh → badger_example/templates/badger}/notification/award_declined/notice.html
  71. 0 ...templates/badger_playdoh → badger_example/templates/badger}/notification/award_declined/short.txt
  72. 0 ...templates/badger_playdoh → badger_example/templates/badger}/notification/award_received/full.html
  73. 0 .../templates/badger_playdoh → badger_example/templates/badger}/notification/award_received/full.txt
  74. 0 ...mplates/badger_playdoh → badger_example/templates/badger}/notification/award_received/notice.html
  75. 0 ...templates/badger_playdoh → badger_example/templates/badger}/notification/award_received/short.txt
  76. 0 .../templates/badger_playdoh → badger_example/templates/badger}/notification/badge_awarded/full.html
  77. 0 ...r/templates/badger_playdoh → badger_example/templates/badger}/notification/badge_awarded/full.txt
  78. 0 ...emplates/badger_playdoh → badger_example/templates/badger}/notification/badge_awarded/notice.html
  79. 0 .../templates/badger_playdoh → badger_example/templates/badger}/notification/badge_awarded/short.txt
  80. 0 ...r/templates/badger_playdoh → badger_example/templates/badger}/notification/badge_edited/full.html
  81. 0 ...er/templates/badger_playdoh → badger_example/templates/badger}/notification/badge_edited/full.txt
  82. 0 ...templates/badger_playdoh → badger_example/templates/badger}/notification/badge_edited/notice.html
  83. 0 ...r/templates/badger_playdoh → badger_example/templates/badger}/notification/badge_edited/short.txt
  84. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/base.html
  85. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/email_body.txt
  86. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/email_subject.txt
  87. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/full.html
  88. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/full.txt
  89. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_accepted/full.html
  90. 0 ...lates/badger_playdoh → badger_example/templates/badger}/notification/nomination_accepted/full.txt
  91. 0 ...es/badger_playdoh → badger_example/templates/badger}/notification/nomination_accepted/notice.html
  92. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_accepted/short.txt
  93. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_approved/full.html
  94. 0 ...lates/badger_playdoh → badger_example/templates/badger}/notification/nomination_approved/full.txt
  95. 0 ...es/badger_playdoh → badger_example/templates/badger}/notification/nomination_approved/notice.html
  96. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_approved/short.txt
  97. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_declined/full.html
  98. 0 ...lates/badger_playdoh → badger_example/templates/badger}/notification/nomination_declined/full.txt
  99. 0 ...es/badger_playdoh → badger_example/templates/badger}/notification/nomination_declined/notice.html
  100. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_declined/short.txt
  101. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_received/full.html
  102. 0 ...lates/badger_playdoh → badger_example/templates/badger}/notification/nomination_received/full.txt
  103. 0 ...es/badger_playdoh → badger_example/templates/badger}/notification/nomination_received/notice.html
  104. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_received/short.txt
  105. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_rejected/full.html
  106. 0 ...lates/badger_playdoh → badger_example/templates/badger}/notification/nomination_rejected/full.txt
  107. 0 ...es/badger_playdoh → badger_example/templates/badger}/notification/nomination_rejected/notice.html
  108. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_rejected/short.txt
  109. 0 ...tes/badger_playdoh → badger_example/templates/badger}/notification/nomination_submitted/full.html
  110. 0 ...ates/badger_playdoh → badger_example/templates/badger}/notification/nomination_submitted/full.txt
  111. 0 ...s/badger_playdoh → badger_example/templates/badger}/notification/nomination_submitted/notice.html
  112. 0 ...tes/badger_playdoh → badger_example/templates/badger}/notification/nomination_submitted/short.txt
  113. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/notice.html
  114. 0 ...ger/templates/badger_playdoh → badger_example/templates/badger}/notification/notice_settings.html
  115. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/notices.html
  116. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/short.txt
  117. 0 {badger/templates/badger_playdoh → badger_example/templates/badger}/notification/single.html
  118. +3 −3 {badger/templates/badger_playdoh → badger_example/templates/badger}/staff_tools.html
  119. +8 −0 badger_example/templates/base.html
  120. +16 −0 badger_example/urls.py
  121. +13 −0 manage.py
  122. +1 −55 runtests.py
  123. +1 −10 setup.py
  124. +160 −0 test_settings.py
View
@@ -0,0 +1,22 @@
+language: python
+
+python:
+ - "2.7"
+
+env:
+ - DB=mysql
+
+before_install:
+ - sudo apt-get update -qq
+ - sudo apt-get install build-essential python-dev python-pip python-virtualenv python-imaging python-lxml python-pyquery libxml2-dev libxslt-dev libjpeg8 libjpeg62-dev libfreetype6 libfreetype6-dev zlib1g-dev python-bcrypt sqlite3
+ - sudo ln -s /usr/lib/`uname -i`-linux-gnu/libfreetype.so /usr/lib
+ - sudo ln -s /usr/lib/`uname -i`-linux-gnu/libz.so /usr/lib
+
+install:
+ - pip install -r badger/requirements/tests.txt --use-mirrors
+
+script: python manage.py test badger
+
+notifications:
+ email:
+ - me@lmorchard.com
View
@@ -2,6 +2,9 @@
django-badger
=============
+.. image:: https://secure.travis-ci.org/lmorchard/django-badger.png?branch=master
+ :target: http://travis-ci.org/lmorchard/django-badger
+
Badger is a family of Django apps intended to help introduce badges into your
project, to track and award achievements by your users. This can be used to
help encourage certain behaviors, recognize skills, or just generally
@@ -0,0 +1,12 @@
+Django==1.4.3
+PIL==1.1.7
+lxml==3.1beta1
+pyquery==1.2.4
+South==0.7.6
+argparse==1.2.1
+cssselect==0.7.1
+distribute==0.6.24
+django-nose==1.1
+feedparser==5.1.3
+nose==1.2.1
+wsgiref==0.1.2
@@ -1,120 +0,0 @@
-{% extends "badger_playdoh/base.html" %}
-
-{% set user = award.user %}
-{% set award_url = request.build_absolute_uri(url('badger.views.award_detail', award.badge.slug, award.id)) %}
-{% if award.image %}
- {% set image_url = award.image.url %}
-{% elif badge.image %}
- {% set image_url = badge.image.url %}
-{% else %}
- {# TODO: Put the URL for default badge image in settings #}
- {% set image_url = "/media/img/default-badge.png" %}
-{% endif %}
-
-{% block pageid %}award_detail{% endblock %}
-
-{% block extrahead %}
- <link rel="alternate" type="application/json"
- title="{{ _('{title} (JSON)') | f(title=award) }}"
- href="{{ request.build_absolute_uri(url('badger.award_detail_json', badge.slug, award.pk)) }}" />
-
- <meta property="og:type" content="article">
- <meta property="og:url" content="{{ award_url }}">
- <meta property="og:site_name" content="{{ settings.SITE_TITLE }}">
- <meta property="og:image" content="{{ request.build_absolute_uri(image_url) }}">
- <meta property="og:title" content="{{ badge.title }}">
- <meta property="og:description" content="{{ award.user }} earned the badge &quot;{{ badge.title }}&quot; on {{ settings.SITE_TITLE }}!">
- <meta property="og:updated_time" content="{{ award.created.isoformat() }}Z">
- <meta property="article:published_time" content="{{ award.created.isoformat() }}Z">
- <meta property="article:author" content="{{ request.build_absolute_uri(url('profiles.profile_view', award.creator.username)) }}">
- {% for tag in badge.tags.all() %}
- <meta property="article:tag" content="{{ tag.name }}">
- {% endfor %}
-{% endblock %}
-
-{% block content %}
-<header class="page-header">
- <h2 class="badge-title">
- {% if award.user == request.user %}
- {{ _("Your Awarded Badge: {badge_title}") | f(badge_title=badge.title) }}
- {% else %}
- {{ _("Awarded Badge: {badge_title}") | f(badge_title=badge.title) }}
- {% endif %}
- </h2>
-</header>
-<section class="row-fluid">
-
- <section class="badge span4">
- {% include "badger_playdoh/includes/badge_full.html" %}
- </section>
-
- <section class="award span8">
- {% include "badger_playdoh/includes/award_full.html" %}
- <dl class="share">
- <dt>{{ _('Share:') }}</dt>
- <dd><ul>
-
- {% if award.user == request.user %}
- <li><form class="obi_issuer">
- <button class="btn issue" style="width: 18em"><img class="obi_icons" width="32" style="margin: 0 0em 0em 0; float: left" src="http://openbadges.org/img/index/backpack.png" />
- <strong>{{_("Add this badge to your Mozilla&nbsp;Badge&nbsp;Backpack")}}</strong></button>
- </form></li>
- {% endif %}
-
- {% if award.user == request.user %}
- <li><a href="https://twitter.com/share" class="twitter-share-button"
- data-text="I earned the badge &quot;{{ badge.title }}&quot; on {{ settings.SITE_TITLE }}!"
- data-size="large"
- data-url="{{ award_url }}" data-hashtags="badgus">...</a></li>
- {% else %}
- <li><a href="https://twitter.com/share" class="twitter-share-button"
- data-text="{{ award.user }} earned the badge &quot;{{ badge.title }}&quot; on {{ settings.SITE_TITLE }}!"
- data-size="large"
- data-url="{{ award_url }}" data-hashtags="badgus">...</a></li>
- {% endif %}
-
- <li><div class="g-plus" data-href="{{ award_url }}" data-action="share"
- data-annotation="bubble" data-height="24"></div></li>
-
- <li><div class="fb-like" data-href="{{ award_url }}" data-send="true"
- data-width="450" data-show-faces="false"></div></li>
-
- </ul></dd>
- </dl>
- </section>
-
-</section>
-
-<div id="fb-root"></div>
-<script>
- window.fbAsyncInit = function() {
- FB.init({
- appId : '235454449896211', // App ID
- channelUrl : '{{ request.build_absolute_uri('/media/fb-channel.html') }}', // Channel File
- status : true, // check login status
- cookie : true, // enable cookies to allow the server to access the session
- xfbml : true // parse XFBML
- });
- // Additional initialization code here
- };
-
- // Load the SDK Asynchronously
- (function(d){
- var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
- if (d.getElementById(id)) {return;}
- js = d.createElement('script'); js.id = id; js.async = true;
- js.src = "//connect.facebook.net/en_US/all.js";
- ref.parentNode.insertBefore(js, ref);
- }(document));
-</script>
-
-{% endblock %}
-
-{% block js %}
- <script type="text/javascript"
- src="{{ settings.OBI_BASE_URL }}issuer.js"></script>
- <script type="text/javascript"
- src="//platform.twitter.com/widgets.js"></script>
- <script type="text/javascript"
- src="https://apis.google.com/js/plusone.js"></script>
-{% endblock %}
@@ -1,35 +0,0 @@
-{% extends "badger_playdoh/base.html" %}
-
-{% block pageid %}badge_awards_by_badge{% endblock %}
-
-{% block extrahead %}
- <link rel="alternate" type="application/atom+xml"
- title="{{ _('Recent awards') }}"
- href="{{ url('badger.feeds.awards_by_badge', 'atom', badge.slug) }}" />
-{% endblock %}
-
-{% block content %}
-
-<section class="row-fluid">
- <section>
- <header class="page-header">
- <h2>{{ _("Badge detail for {title}") | f(title=badge.title) }}</h2>
- </header>
- {% include "badger_playdoh/includes/badge_full.html" %}
- </section>
-
- <section>
- <header class="page-header">
- <h2>{{_("Awards")}}</h2>
- </header>
- <ul class="awards">
- {% for award in awards %}
- <li>
- {% include "badger_playdoh/includes/award_as_user.html" %}
- </li>
- {% endfor %}
- </ul>
- </section>
-</section>
-
-{% endblock %}
@@ -1,18 +0,0 @@
-{% extends "badger_playdoh/base.html" %}
-
-{% block pageid %}badge_awards_by_user{% endblock %}
-
-{% block extrahead %}
- <link rel="alternate" type="application/atom+xml"
- title="{{ _('Recent awards') }}"
- href="{{ url('badger.feeds.awards_by_user', 'atom', user.username) }}" />
-{% endblock %}
-
-{% block content %}
-<section class="awards_list">
- <header class="page-header">
- <h2>{{ _("Awards for {user}") | f(user=user) }}</h2>
- </header>
- {% include "badger_playdoh/includes/awards_as_badges_list.html" %}
-</section>
-{% endblock %}
@@ -1,24 +0,0 @@
-{% extends "badger_playdoh/base.html" %}
-
-{% block pageid %}awards{% endblock %}
-
-{% block extrahead %}
- <link rel="alternate" type="application/atom+xml"
- title="{{ _('Recent badge awards') }}"
- href="{{ url('badger.feeds.awards_recent', 'atom') }}" />
-{% endblock %}
-
-{% block content %}
-
-<section class="awards_list" class="item_flow">
- <header class="page-header">
- {% if badge %}
- <h2>{{ _("Awarded badges for {badge}") | f(badge=badge) }}</h2>
- {% else: %}
- <h2>{{ _("Awarded badges") }}</h2>
- {% endif %}
- </header>
- {% include "badger_playdoh/includes/awards_list.html" %}
-</section>
-
-{% endblock %}
@@ -1,31 +0,0 @@
-{% extends "badger_playdoh/base.html" %}
-
-{% block pageid %}badge_award{% endblock %}
-
-{% block content %}
-
-<section class="row-fluid">
-
- <section class="span4" id="detail">
- <header class="page-header">
- <h2>{{ _("Badge: {badge_title}") | f(badge_title=badge.title) }}</h2>
- </header>
- {% include "badger_playdoh/includes/badge_full.html" %}
- </section>
-
- <section class="span8">
- <header class="page-header">
- <h2>{{ _("Issue badge awards") }}</h2>
- </header>
-
- <form id="award_badge" method="POST" action="" enctype="multipart/form-data">
- {{ csrf() }}
- <ul>
- {{ form.as_ul() }}
- <li><input type="submit" class="btn btn-large btn-primary submit" value="{{ _("Issue badge awards") }}"></li>
- </ul>
- </form>
- </section>
-
-</section>
-{% endblock %}
@@ -1,80 +0,0 @@
-{% extends "badger_playdoh/base.html" %}
-
-{% block pageid %}badge_create{% endblock %}
-
-{% block content %}
-
-<section>
- <section class="row-fluid">
- <section class="span6">
- <header class="page-header">
- <h2>{{ _("Create a badge") }}</h2>
- </header>
- <form id="create_badge" method="POST" action="" enctype="multipart/form-data">
- {{ csrf() }}
- <ul>
- {{ form.as_ul() }}
- <li><input type="submit" class="btn btn-large btn-primary submit" value="{{ _("Create badge") }}"></li>
- </ul>
- </form>
- </section>
- <section class="span6 sample-badge">
- <header class="page-header">
- <h2>Example badge:</h2>
- </header>
- <p>{% trans %}
- This isn't a real badge, but it shows a few things you can do.
- {% endtrans %}</p>
- {# TODO: Put the URL for default badge image in settings #}
- {% set image_url = "/media/img/default-badge.png" %}
- <dl class="badge">
- <dt>{{_("Title:")}}</dt>
- <dd class="title"><strong>{{ _('Test Badger') }}</strong>
- <p><i>{% trans %}
- Try to keep this to 5 words, or less.
- {% endtrans %}</i></p></dd>
- <dt>{{_("Image:")}}</dt>
- <dd class="image"><span class="image"><img src="{{ image_url }}" width="256" height="256" /></span>
- <p><i>{% trans %}
- This should be a square image, around 256x256
- pixels. The system will automatically crop and
- resize images that fall outside these guidelines.
- Also, consider using simple artwork that stays
- distinctive at a variety of sizes and viewing
- distances. Lots of small details and words are hard
- to see when the badge image is either small or far
- away.
- {% endtrans %}</i></p>
- </dd>
- <dt>{{_("Description:")}}</dt>
- <dd class="description">{{ _("For having qualities like a test pilot, but more badgery.") }}
- <p><i>{% trans %}
- Use this to describe why someone would earn this
- badge. Explain the conditions and criteria a person
- would need to satisfy to receive this badge as an
- award.
- {% endtrans %}</i></p>
- </dd>
- <dt>{{ _("Tags:") }}</dt>
- <dd><ul class="tags">
- {% set tags = [ 'tests', 'A2makerfaire2012', 'badgers' ] %}
- {% for tag in tags %}
- <li><a class="tag" href="{{ url('badger.badges_list', tag_name=tag) }}"><i class="icon-tag icon-white"></i> {{ tag }}</a></li>
- {% endfor %}
- </ul>
- {% set example_tag_url = url('badger.badges_list', tag_name='a2makerfaire2012') %}
- <p><i>{% trans %}
- Use tags to group your badge with others. These are
- like <a href="https://support.twitter.com/articles/49309-what-are-hashtags-symbols" target="_blank">hashtags on Twitter</a>.
- These <a href="http://twitter.pbworks.com/w/page/1779812/Hashtags" target="_blank">are best used sparingly</a>:
- Try not to enter more than 2-5 concise topics or keywords. Events
- often use tags to help gather badges that will be
- offered (eg. <a href="{{ example_tag_url }}" target="_blank">A2makerfaire2012</a>).
- {% endtrans %}</i></p>
- </dd>
- </dl>
- </section>
- </section>
-</section>
-
-{% endblock %}
Oops, something went wrong.

0 comments on commit b354490

Please sign in to comment.