Skip to content

Commit 6227162

Browse files
committed
Updated mgmt command to find github repos to back up. Improved test coverage of branch changes. Branch ready for merge.
- Legacy-Id: 18163
1 parent 99df95d commit 6227162

6 files changed

Lines changed: 44 additions & 25 deletions

File tree

ietf/doc/management/commands/find_github_backup_info.py

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
import json
33

44
from django.core.management.base import BaseCommand
5+
from django.db.models import F
56

6-
from ietf.extresource.models import ExtResource
77
from ietf.doc.models import DocExtResource
88
from ietf.group.models import GroupExtResource
99
from ietf.person.models import PersonExtResource
@@ -14,17 +14,33 @@ class Command(BaseCommand):
1414
def handle(self, *args, **options):
1515

1616
info_dict = {}
17-
for repo in ExtResource.objects.filter(name__slug='github_repo'):
17+
18+
19+
for repo in DocExtResource.objects.filter(name__slug='github_repo'):
20+
if not repo.value.endswith('/'):
21+
repo.value += '/'
1822
if repo not in info_dict:
1923
info_dict[repo.value] = []
20-
21-
for username in DocExtResource.objects.filter(extresource__name__slug='github_username', doc__name__in=repo.docextresource_set.values_list('doc__name',flat=True).distinct()):
24+
for username in DocExtResource.objects.filter(name__slug='github_username', doc=F('doc')):
2225
info_dict[repo.value].push(username.value)
2326

24-
for username in GroupExtResource.objects.filter(extresource__name__slug='github_username', group__acronym__in=repo.groupextresource_set.values_list('group__acronym',flat=True).distinct()):
27+
for repo in GroupExtResource.objects.filter(name__slug='github_repo'):
28+
if not repo.value.endswith('/'):
29+
repo.value += '/'
30+
if repo not in info_dict:
31+
info_dict[repo.value] = []
32+
for username in GroupExtResource.objects.filter(name__slug='github_username', group=F('group')):
2533
info_dict[repo.value].push(username.value)
2634

27-
for username in PersonExtResource.objects.filter(extresource__name__slug='github_username', person_id__in=repo.personextresource_set.values_list('person__id',flat=True).distinct()):
35+
for repo in PersonExtResource.objects.filter(name__slug='github_repo'):
36+
if not repo.value.endswith('/'):
37+
repo.value += '/'
38+
if repo not in info_dict:
39+
info_dict[repo.value] = []
40+
for username in PersonExtResource.objects.filter(name__slug='github_username', person=F('person')):
2841
info_dict[repo.value].push(username.value)
2942

30-
print (json.dumps(info_dict))
43+
#print (json.dumps(info_dict))
44+
# For now, all we need are the repo names
45+
for name in info_dict.keys():
46+
print(name)

ietf/doc/tests_draft.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1117,8 +1117,8 @@ def test_edit_doc_extresources(self):
11171117
badlines = (
11181118
'github_repo https://github3.com/some/repo',
11191119
'github_notify badaddr',
1120-
'website /not/a/good/url'
1121-
'notavalidtag blahblahblah'
1120+
'website /not/a/good/url',
1121+
'notavalidtag blahblahblah',
11221122
)
11231123

11241124
for line in badlines:
@@ -1140,6 +1140,7 @@ def test_edit_doc_extresources(self):
11401140
self.assertIn('github_username githubuser', doc.latest_event(DocEvent,type="changed_document").desc)
11411141
self.assertEqual(doc.docextresource_set.count(), 3)
11421142
self.assertEqual(doc.docextresource_set.get(name__slug='github_repo').display_name, 'Some display text')
1143+
self.assertIn(doc.docextresource_set.first().name.slug,str(doc.docextresource_set.first()))
11431144

11441145

11451146
class SubmitToIesgTests(TestCase):

ietf/group/migrations/0034_populate_groupextresources.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ def forward(apps, schema_editor):
6868
name = ExtResourceName.objects.get(slug=slug)
6969
try:
7070
validate_external_resource_value(name, group_url.url)
71-
GroupExtResource.objects.create(group=group_url.group, name_id=slug, value=group_url.url, display_name=group_url.name) # TODO: validate this value against name.type
71+
GroupExtResource.objects.create(group=group_url.group, name_id=slug, value=group_url.url, display_name=group_url.name)
7272
except ValidationError as e: # pyflakes:ignore
7373
print("Failed validation:", group_url.url, e, file=stats_file)
7474
stats['failed_validation'] +=1

ietf/group/tests_info.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
from ietf.group.models import Group, GroupEvent, GroupMilestone, GroupStateTransitions, Role
3232
from ietf.group.utils import save_group_in_history, setup_default_community_list_for_group
3333
from ietf.meeting.factories import SessionFactory
34-
from ietf.name.models import DocTagName, GroupStateName, GroupTypeName
34+
from ietf.name.models import DocTagName, GroupStateName, GroupTypeName, ExtResourceName
3535
from ietf.person.models import Person, Email
3636
from ietf.person.factories import PersonFactory
3737
from ietf.review.factories import ReviewRequestFactory, ReviewAssignmentFactory
@@ -634,6 +634,7 @@ def test_edit_info(self):
634634
def test_edit_extresources(self):
635635
group = GroupFactory(acronym='mars',parent=GroupFactory(type_id='area'))
636636
CharterFactory(group=group)
637+
ExtResourceName.objects.create(slug='keymaster', name='Keymaster', type_id='email')
637638

638639
url = urlreverse('ietf.group.views.edit', kwargs=dict(group_type=group.type_id, acronym=group.acronym, action="edit", field="resources"))
639640
login_testing_unauthorized(self, "secretary", url)
@@ -646,8 +647,9 @@ def test_edit_extresources(self):
646647
badlines = (
647648
'github_repo https://github3.com/some/repo',
648649
'github_notify badaddr',
649-
'website /not/a/good/url'
650-
'notavalidtag blahblahblah'
650+
'website /not/a/good/url',
651+
'notavalidtag blahblahblah',
652+
'github_repo',
651653
)
652654

653655
for line in badlines:
@@ -660,15 +662,22 @@ def test_edit_extresources(self):
660662
github_repo https://github.com/some/repo Some display text
661663
github_username githubuser
662664
webpage http://example.com/http/is/fine
665+
jabber_room xmpp:mars@jabber.example.com
666+
keymaster keymaster@example.org Group Rooter
663667
"""
664668

665669
r = self.client.post(url, dict(resources=goodlines, submit="1"))
666670
self.assertEqual(r.status_code,302)
667671
group = Group.objects.get(acronym=group.acronym)
668672
self.assertEqual(group.latest_event(GroupEvent,type="info_changed").desc[:20], 'Resources changed to')
669673
self.assertIn('github_username githubuser', group.latest_event(GroupEvent,type="info_changed").desc)
670-
self.assertEqual(group.groupextresource_set.count(), 3)
674+
self.assertEqual(group.groupextresource_set.count(), 5)
671675
self.assertEqual(group.groupextresource_set.get(name__slug='github_repo').display_name, 'Some display text')
676+
self.assertIn(group.groupextresource_set.first().name.slug, str(group.groupextresource_set.first()))
677+
678+
# exercise format_resources
679+
r = self.client.get(url)
680+
self.assertIn('Group Rooter', unicontent(r))
672681

673682

674683
def test_edit_field(self):

ietf/group/views.py

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -860,15 +860,6 @@ def desc(attr, new, old):
860860

861861
return entry % dict(attr=attr, new=new, old=old)
862862

863-
def format_urls(urls, fs="\n"):
864-
res = []
865-
for u in urls:
866-
if u.name:
867-
res.append("%s (%s)" % (u.url, u.name))
868-
else:
869-
res.append(u.url)
870-
return fs.join(res)
871-
872863
def format_resources(resources, fs="\n"):
873864
res = []
874865
for r in resources:

ietf/ietfauth/tests.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -681,8 +681,9 @@ def test_edit_person_extresources(self):
681681
badlines = (
682682
'github_repo https://github3.com/some/repo',
683683
'github_notify badaddr',
684-
'website /not/a/good/url'
685-
'notavalidtag blahblahblah'
684+
'website /not/a/good/url',
685+
'notavalidtag blahblahblah',
686+
'website',
686687
)
687688

688689
for line in badlines:
@@ -701,6 +702,7 @@ def test_edit_person_extresources(self):
701702
self.assertEqual(r.status_code,302)
702703
self.assertEqual(person.personextresource_set.count(), 3)
703704
self.assertEqual(person.personextresource_set.get(name__slug='github_repo').display_name, 'Some display text')
705+
self.assertIn(person.personextresource_set.first().name.slug, str(person.personextresource_set.first()))
704706

705707

706708
class OpenIDConnectTests(TestCase):

0 commit comments

Comments
 (0)