From ee578c672b3739b9aa373ff4faeb7ef9e61e57f4 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Apr 11 2016 14:27:26 +0000 Subject: [PATCH 1/6] show tagnames of lightweight tags in releases fixes #695 --- diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 95691e0..c1a90d4 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -1247,7 +1247,7 @@ def get_git_tags_objects(project): repopath = pagure.get_repo_path(project) repo_obj = PagureRepo(repopath) tags = [ - repo_obj[repo_obj.lookup_reference(tag).target] + [repo_obj[repo_obj.lookup_reference(tag).target], tag.replace("refs/tags/","")] for tag in repo_obj.listall_references() if 'refs/tags/' in tag and repo_obj.lookup_reference(tag) ] @@ -1257,10 +1257,10 @@ def get_git_tags_objects(project): for tag in tags: # If the object is a tag, get his associated commit time - if isinstance(tag, pygit2.Tag): - tags_sort[tag.get_object().commit_time] = tag - elif isinstance(tag, pygit2.Commit): - tags_sort[tag.commit_time] = tag + if isinstance(tag[0], pygit2.Tag): + tags_sort[tag[0].get_object().commit_time] = [tag[0]] + elif isinstance(tag[0], pygit2.Commit): + tags_sort[tag[0].commit_time] = tag # If object is neither a tag or commit return an unsorted list else: return tags @@ -1268,4 +1268,5 @@ def get_git_tags_objects(project): for tag in sorted(tags_sort, reverse=True): sorted_tags.append(tags_sort[tag]) + print sorted_tags return sorted_tags diff --git a/pagure/templates/releases.html b/pagure/templates/releases.html index 0eadb1f..38ed010 100644 --- a/pagure/templates/releases.html +++ b/pagure/templates/releases.html @@ -34,12 +34,15 @@
{% for tag in tags %} - {{ tag.name }} - {% if tag.message %} - -- {{ tag.message.split('\n')[0] }} + identifier=tag[0].oid) }}"> + {% if tag|length == 1 %} + {% if tag[0].message %} + {{tag[0].name}} -- {{ tag[0].message.split('\n')[0] }} + {% endif %} + {% else %} + {{tag[1]}} {% endif %} - {{ tag.oid | short }} + {{ tag[0].oid | short }} {% endfor %}
From a1c272f064afa3ae3d6809aad1fec0137852a6c8 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Apr 11 2016 14:27:26 +0000 Subject: [PATCH 2/6] updated to restyle the output and show date --- diff --git a/pagure/lib/git.py b/pagure/lib/git.py index c1a90d4..99c0e11 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -1258,9 +1258,9 @@ def get_git_tags_objects(project): for tag in tags: # If the object is a tag, get his associated commit time if isinstance(tag[0], pygit2.Tag): - tags_sort[tag[0].get_object().commit_time] = [tag[0]] + tags_sort[tag[0].get_object().commit_time] = [tag[0].get_object().commit_time, tag[0]] elif isinstance(tag[0], pygit2.Commit): - tags_sort[tag[0].commit_time] = tag + tags_sort[tag[0].commit_time] = [tag[0].commit_time, tag[0], tag[1]] # If object is neither a tag or commit return an unsorted list else: return tags @@ -1268,5 +1268,4 @@ def get_git_tags_objects(project): for tag in sorted(tags_sort, reverse=True): sorted_tags.append(tags_sort[tag]) - print sorted_tags return sorted_tags diff --git a/pagure/templates/releases.html b/pagure/templates/releases.html index 38ed010..ed89881 100644 --- a/pagure/templates/releases.html +++ b/pagure/templates/releases.html @@ -34,15 +34,22 @@ From fe67e4941dc89fde1bfbd459449cc7cdf9efec6c Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Apr 11 2016 14:27:26 +0000 Subject: [PATCH 3/6] made the tagnames sent to the template use a dict --- diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 99c0e11..f287a4c 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -1246,26 +1246,30 @@ def get_git_tags_objects(project): The list is sorted using the time of the commit associated to the tag """ repopath = pagure.get_repo_path(project) repo_obj = PagureRepo(repopath) - tags = [ - [repo_obj[repo_obj.lookup_reference(tag).target], tag.replace("refs/tags/","")] - for tag in repo_obj.listall_references() - if 'refs/tags/' in tag and repo_obj.lookup_reference(tag) - ] - + tags = {} + for tag in repo_obj.listall_references(): + if 'refs/tags/' in tag and repo_obj.lookup_reference(tag): + commit_time = "" + theobject = repo_obj[repo_obj.lookup_reference(tag).target] + objecttype = "" + print theobject + if isinstance(theobject, pygit2.Tag): + commit_time = theobject.get_object().commit_time + objecttype = "tag" + elif isinstance(reference, pygit2.Commit): + commit_time = theobject.commit_time + objecttype = "commit" + + tags[commit_time] = { + "object":repo_obj[repo_obj.lookup_reference(tag).target], + "tagname":tag.replace("refs/tags/",""), + "date":commit_time, + "objecttype": objecttype + } + print tags sorted_tags = [] - tags_sort = {} - - for tag in tags: - # If the object is a tag, get his associated commit time - if isinstance(tag[0], pygit2.Tag): - tags_sort[tag[0].get_object().commit_time] = [tag[0].get_object().commit_time, tag[0]] - elif isinstance(tag[0], pygit2.Commit): - tags_sort[tag[0].commit_time] = [tag[0].commit_time, tag[0], tag[1]] - # If object is neither a tag or commit return an unsorted list - else: - return tags - for tag in sorted(tags_sort, reverse=True): - sorted_tags.append(tags_sort[tag]) + for tag in sorted(tags, reverse=True): + sorted_tags.append(tags[tag]) return sorted_tags diff --git a/pagure/templates/releases.html b/pagure/templates/releases.html index ed89881..7d96d75 100644 --- a/pagure/templates/releases.html +++ b/pagure/templates/releases.html @@ -33,14 +33,17 @@ {% if tags %}
{% for tag in tags %} - -
{{tag[0] | humanize }} {{ tag[1].oid | short }}
- {% if tag|length == 2 %} - {% if tag[1].message %} - {{tag[1].name}} - {{ tag[1].message.split('\n')[0] }} - {% set detailtext = tag[1].message.partition('\n')[2] %} +
+
{{tag['date'] }} + {{ tag['object'].oid | short }} +
+ {% if tag['objecttype'] == "tag" %} + {% if tag['object'].message %} + {{tag['name']}} + {{ tag['object'].message.split('\n')[0] }} + {% set detailtext = tag['object'].message.partition('\n')[2] %} {% if detailtext != "" %}
{{ detailtext }} @@ -48,7 +51,7 @@ {% endif %} {% endif %} {% else %} - {{tag[2]}} + {{tag['name']}} {% endif %} {% endfor %} From 9aecfdb4a2c25b6c57c2f9c4b490322a9e567869 Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Apr 11 2016 14:27:26 +0000 Subject: [PATCH 4/6] fix some misnamed variables to get everything displaying properly * when hacking on this, i changed a variablename from "reference" to theobject, but i missed changing one instance of it. * made the date human readable, as not everyone can parse an epoch timestamp * fixed a wrong dict reference in the template from tag to tagname --- diff --git a/pagure/lib/git.py b/pagure/lib/git.py index f287a4c..92f863f 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -1256,7 +1256,7 @@ def get_git_tags_objects(project): if isinstance(theobject, pygit2.Tag): commit_time = theobject.get_object().commit_time objecttype = "tag" - elif isinstance(reference, pygit2.Commit): + elif isinstance(theobject, pygit2.Commit): commit_time = theobject.commit_time objecttype = "commit" diff --git a/pagure/templates/releases.html b/pagure/templates/releases.html index 7d96d75..16b5cf4 100644 --- a/pagure/templates/releases.html +++ b/pagure/templates/releases.html @@ -36,12 +36,12 @@ -
{{tag['date'] }} +
{{tag['date'] | humanize}} {{ tag['object'].oid | short }}
{% if tag['objecttype'] == "tag" %} {% if tag['object'].message %} - {{tag['name']}} + {{tag['tagname']}} {{ tag['object'].message.split('\n')[0] }} {% set detailtext = tag['object'].message.partition('\n')[2] %} {% if detailtext != "" %} @@ -51,7 +51,7 @@ {% endif %} {% endif %} {% else %} - {{tag['name']}} + {{tag['tagname']}} {% endif %}
{% endfor %} From f7d60c23d0b4bae83ce099cdbb13b637694fb97e Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Apr 11 2016 14:27:26 +0000 Subject: [PATCH 5/6] removed some print statements used for debug during development --- diff --git a/pagure/lib/git.py b/pagure/lib/git.py index 92f863f..9bbf444 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -1252,7 +1252,6 @@ def get_git_tags_objects(project): commit_time = "" theobject = repo_obj[repo_obj.lookup_reference(tag).target] objecttype = "" - print theobject if isinstance(theobject, pygit2.Tag): commit_time = theobject.get_object().commit_time objecttype = "tag" @@ -1266,7 +1265,6 @@ def get_git_tags_objects(project): "date":commit_time, "objecttype": objecttype } - print tags sorted_tags = [] for tag in sorted(tags, reverse=True): From f6c9d87f155eb376aec20c9adbb324d5d156b86a Mon Sep 17 00:00:00 2001 From: Ryan Lerch Date: Apr 11 2016 14:27:26 +0000 Subject: [PATCH 6/6] fix tests for releases page, and the get_tags_objects test --- diff --git a/pagure/templates/releases.html b/pagure/templates/releases.html index 16b5cf4..77c41a7 100644 --- a/pagure/templates/releases.html +++ b/pagure/templates/releases.html @@ -37,7 +37,7 @@ username=username, repo=repo.name, identifier=tag['object'].oid) }}">
{{tag['date'] | humanize}} - {{ tag['object'].oid | short }} + {{ tag['object'].oid | short }}
{% if tag['objecttype'] == "tag" %} {% if tag['object'].message %} diff --git a/tests/test_pagure_flask_ui_repo.py b/tests/test_pagure_flask_ui_repo.py index b0c281d..2e31544 100644 --- a/tests/test_pagure_flask_ui_repo.py +++ b/tests/test_pagure_flask_ui_repo.py @@ -1770,7 +1770,7 @@ index 0000000..fb7093d output = self.app.get('/test/releases') self.assertEqual(output.status_code, 200) self.assertIn('0.0.1', output.data) - self.assertIn('', output.data) + self.assertIn('', output.data) self.assertTrue(output.data.count('tagid'), 1) def test_edit_file(self): diff --git a/tests/test_pagure_lib_git_get_tags_objects.py b/tests/test_pagure_lib_git_get_tags_objects.py index 02ce2c4..0532273 100644 --- a/tests/test_pagure_lib_git_get_tags_objects.py +++ b/tests/test_pagure_lib_git_get_tags_objects.py @@ -26,7 +26,7 @@ def get_tag_name(tags): """ Return a list of the tag names """ output = [] for tag in tags: - output.append(tag.name) + output.append(tag['tagname']) return output