Merged in [15595] from rjsparks@nostrum.com:
Converted stats, submit, sync. and utils/test to use factories. Excluded utils/test_data from coverage checks. - Legacy-Id: 15599 Note: SVN reference [15595] has been migrated to Git commit 39e76a836996ec9ed8ea449c92bdfae91c3dbaae
This commit is contained in:
parent
fcddc86447
commit
ef3cbf4684
|
@ -1,7 +1,5 @@
|
|||
# -*- conf-mode -*-
|
||||
|
||||
|
||||
/personal/rjs/6.86.1.dev0@15568 # Test coverage lower
|
||||
/personal/rcross/6.81.3.dev0@15262 # Secretariat admin access to Document has drawbacks
|
||||
/personal/sbirkholz/mtgreg3@14074 # reviewed with issues; feedback sent
|
||||
/personal/sbirkholz/meeting_registration@13969 # manual branch merge
|
||||
|
|
|
@ -457,7 +457,7 @@ def recent_drafts(request, days=7):
|
|||
results, meta = prepare_document_table(request, docs, query={'sort':'-date', }, max_results=len(names))
|
||||
pages = 0
|
||||
for doc in results:
|
||||
pages += doc.pages
|
||||
pages += doc.pages or 0
|
||||
|
||||
return render(request, 'doc/recent_drafts.html', {
|
||||
'docs':results, 'meta':meta, 'pages':pages, 'days': days,
|
||||
|
|
|
@ -511,6 +511,7 @@ TEST_CODE_COVERAGE_EXCLUDE_FILES = [
|
|||
"ietf/name/generate_fixtures.py",
|
||||
"ietf/review/import_from_review_tool.py",
|
||||
"ietf/stats/backfill_data.py",
|
||||
"ietf/utils/test_data.py",
|
||||
]
|
||||
|
||||
# These are code line regex patterns
|
||||
|
|
|
@ -7,15 +7,17 @@ from requests import Response
|
|||
from django.urls import reverse as urlreverse
|
||||
from django.contrib.auth.models import User
|
||||
|
||||
from ietf.utils.test_data import make_test_data, make_review_data
|
||||
from ietf.utils.test_utils import login_testing_unauthorized, TestCase, unicontent
|
||||
import ietf.stats.views
|
||||
|
||||
from ietf.submit.models import Submission
|
||||
from ietf.doc.models import Document, DocAlias, State, RelatedDocument, NewRevisionDocEvent
|
||||
from ietf.doc.factories import WgDraftFactory, WgRfcFactory
|
||||
from ietf.doc.models import Document, DocAlias, State, RelatedDocument, NewRevisionDocEvent, DocumentAuthor
|
||||
from ietf.meeting.factories import MeetingFactory
|
||||
from ietf.person.factories import PersonFactory
|
||||
from ietf.person.models import Person, Email
|
||||
from ietf.name.models import FormalLanguageName, DocRelationshipName, CountryName
|
||||
from ietf.review.factories import ReviewRequestFactory
|
||||
from ietf.stats.models import MeetingRegistration, CountryAlias
|
||||
from ietf.stats.utils import get_meeting_registration_data
|
||||
|
||||
|
@ -27,7 +29,16 @@ class StatisticsTests(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_document_stats(self):
|
||||
draft = make_test_data()
|
||||
WgRfcFactory()
|
||||
draft = WgDraftFactory()
|
||||
DocumentAuthor.objects.create(
|
||||
document=draft,
|
||||
person=Person.objects.get(email__address="aread@ietf.org"),
|
||||
email=Email.objects.get(address="aread@ietf.org"),
|
||||
country="Germany",
|
||||
affiliation="IETF",
|
||||
order=1
|
||||
)
|
||||
|
||||
# create some data for the statistics
|
||||
Submission.objects.create(
|
||||
|
@ -102,7 +113,6 @@ class StatisticsTests(TestCase):
|
|||
|
||||
def test_meeting_stats(self):
|
||||
# create some data for the statistics
|
||||
make_test_data()
|
||||
meeting = MeetingFactory(type_id='ietf', date=datetime.date.today(), number="96")
|
||||
MeetingRegistration.objects.create(first_name='John', last_name='Smith', country_code='US', email="john.smith@example.us", meeting=meeting)
|
||||
CountryAlias.objects.get_or_create(alias="US", country=CountryName.objects.get(slug="US"))
|
||||
|
@ -137,8 +147,6 @@ class StatisticsTests(TestCase):
|
|||
self.assertTrue(q('table.stats-data'))
|
||||
|
||||
def test_known_country_list(self):
|
||||
make_test_data()
|
||||
|
||||
# check redirect
|
||||
url = urlreverse(ietf.stats.views.known_countries_list)
|
||||
|
||||
|
@ -147,8 +155,8 @@ class StatisticsTests(TestCase):
|
|||
self.assertTrue("United States" in unicontent(r))
|
||||
|
||||
def test_review_stats(self):
|
||||
doc = make_test_data()
|
||||
review_req = make_review_data(doc)
|
||||
review_req = ReviewRequestFactory()
|
||||
PersonFactory(user__username='plain')
|
||||
|
||||
# check redirect
|
||||
url = urlreverse(ietf.stats.views.review_stats)
|
||||
|
|
|
@ -19,8 +19,10 @@ from django.urls import reverse as urlreverse
|
|||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.submit.utils import expirable_submissions, expire_submission, ensure_person_email_info_exists
|
||||
from ietf.doc.factories import DocumentFactory, WgDraftFactory, IndividualDraftFactory
|
||||
from ietf.doc.models import Document, DocAlias, DocEvent, State, BallotPositionDocEvent, DocumentAuthor
|
||||
from ietf.doc.utils import create_ballot_if_not_open
|
||||
from ietf.group.factories import GroupFactory, RoleFactory
|
||||
from ietf.group.models import Group
|
||||
from ietf.group.utils import setup_default_community_list_for_group
|
||||
from ietf.meeting.models import Meeting
|
||||
|
@ -33,7 +35,6 @@ from ietf.submit.models import Submission, Preapproval
|
|||
from ietf.submit.mail import add_submission_email, process_response_email
|
||||
from ietf.utils.mail import outbox, empty_outbox
|
||||
from ietf.utils.models import VersionInfo
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.test_utils import login_testing_unauthorized, unicontent, TestCase
|
||||
from ietf.utils.draft import Draft
|
||||
|
||||
|
@ -97,6 +98,9 @@ class SubmitTests(TestCase):
|
|||
self.yang_iana_model_dir = self.tempdir('yang-iana-model')
|
||||
settings.SUBMIT_YANG_IANA_MODEL_DIR = self.yang_iana_model_dir
|
||||
|
||||
# Submit views assume there is a "next" IETF to look for cutoff dates against
|
||||
MeetingFactory(type_id='ietf', date=datetime.date.today()+datetime.timedelta(days=180))
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.staging_dir)
|
||||
shutil.rmtree(self.repository_dir)
|
||||
|
@ -195,7 +199,10 @@ class SubmitTests(TestCase):
|
|||
|
||||
def submit_new_wg(self, formats):
|
||||
# submit new -> supply submitter info -> approve
|
||||
draft = make_test_data()
|
||||
GroupFactory(type_id='wg',acronym='ames')
|
||||
mars = GroupFactory(type_id='wg', acronym='mars')
|
||||
RoleFactory(name_id='chair', group=mars, person__user__username='marschairman')
|
||||
draft = WgDraftFactory(group=mars)
|
||||
setup_default_community_list_for_group(draft.group)
|
||||
|
||||
# prepare draft to suggest replace
|
||||
|
@ -314,13 +321,19 @@ class SubmitTests(TestCase):
|
|||
|
||||
def submit_existing(self, formats, change_authors=True, group_type='wg', stream_type='ietf'):
|
||||
# submit new revision of existing -> supply submitter info -> prev authors confirm
|
||||
draft = make_test_data()
|
||||
if not group_type=='wg':
|
||||
draft.group.type_id=group_type
|
||||
draft.group.save()
|
||||
if not stream_type=='ietf':
|
||||
draft.stream_id=stream_type
|
||||
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="added_comment", by=Person.objects.get(user__username="secretary"), desc="Test")])
|
||||
# The tests expect the draft to always have an ad, but that doesn't match what happens for most streams
|
||||
ad = Person.objects.get(user__username='ad')
|
||||
if group_type == 'area':
|
||||
group = GroupFactory(type_id='area', acronym='mars')
|
||||
RoleFactory(name_id='ad', group=group, person=ad)
|
||||
else:
|
||||
area = GroupFactory(type_id='area')
|
||||
RoleFactory(name_id='ad',group=area,person=ad)
|
||||
group = GroupFactory(type_id=group_type, parent=area, acronym='mars')
|
||||
draft = DocumentFactory(type_id='draft', group=group, stream_id=stream_type, ad=ad, authors=PersonFactory.create_batch(1))
|
||||
if stream_type == 'ietf':
|
||||
draft.set_state(State.objects.get(type_id='draft-stream-ietf',slug='wg-doc'))
|
||||
|
||||
prev_author = draft.documentauthor_set.all()[0]
|
||||
if change_authors:
|
||||
# Make it such that one of the previous authors has an invalid email address
|
||||
|
@ -503,7 +516,6 @@ class SubmitTests(TestCase):
|
|||
|
||||
def submit_new_individual(self, formats):
|
||||
# submit new -> supply submitter info -> confirm
|
||||
draft = make_test_data()
|
||||
|
||||
name = "draft-authorname-testing-tests"
|
||||
rev = "00"
|
||||
|
@ -558,9 +570,10 @@ class SubmitTests(TestCase):
|
|||
self.submit_new_individual(["txt", "xml"])
|
||||
|
||||
def test_submit_update_individual(self):
|
||||
draft = make_test_data()
|
||||
draft.group = None
|
||||
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="added_comment", by=Person.objects.get(user__username="secretary"), desc="Test")])
|
||||
IndividualDraftFactory(name='draft-ietf-random-thing', states=[('draft','rfc')], other_aliases=['rfc9999',], pages=5)
|
||||
ad=Person.objects.get(user__username='ad')
|
||||
# Group of None here does not reflect real individual submissions
|
||||
draft = IndividualDraftFactory(group=None, ad = ad, authors=[ad,], notify='aliens@example.mars', pages=5)
|
||||
replaces_count = draft.relateddocument_set.filter(relationship_id='replaces').count()
|
||||
name = draft.name
|
||||
rev = '%02d'%(int(draft.rev)+1)
|
||||
|
@ -600,9 +613,9 @@ class SubmitTests(TestCase):
|
|||
self.assertIn(draft.title, unicontent(r))
|
||||
|
||||
def test_submit_cancel_confirmation(self):
|
||||
draft = make_test_data()
|
||||
draft.group = None
|
||||
draft.save_with_history([DocEvent.objects.create(doc=draft, rev=draft.rev, type="added_comment", by=Person.objects.get(user__username="secretary"), desc="Test")])
|
||||
ad=Person.objects.get(user__username='ad')
|
||||
# Group of None here does not reflect real individual submissions
|
||||
draft = IndividualDraftFactory(group=None, ad = ad, authors=[ad,], notify='aliens@example.mars', pages=5)
|
||||
name = draft.name
|
||||
old_rev = draft.rev
|
||||
rev = '%02d'%(int(draft.rev)+1)
|
||||
|
@ -622,8 +635,6 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(draft.rev, old_rev)
|
||||
|
||||
def test_submit_new_wg_with_dash(self):
|
||||
make_test_data()
|
||||
|
||||
group = Group.objects.create(acronym="mars-special", name="Mars Special", type_id="wg", state_id="active")
|
||||
|
||||
name = "draft-ietf-%s-testing-tests" % group.acronym
|
||||
|
@ -633,8 +644,6 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(Submission.objects.get(name=name).group.acronym, group.acronym)
|
||||
|
||||
def test_submit_new_irtf(self):
|
||||
make_test_data()
|
||||
|
||||
group = Group.objects.create(acronym="saturnrg", name="Saturn", type_id="rg", state_id="active")
|
||||
|
||||
name = "draft-irtf-%s-testing-tests" % group.acronym
|
||||
|
@ -645,8 +654,6 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(Submission.objects.get(name=name).group.type_id, group.type_id)
|
||||
|
||||
def test_submit_new_iab(self):
|
||||
make_test_data()
|
||||
|
||||
name = "draft-iab-testing-tests"
|
||||
|
||||
self.do_submission(name, "00")
|
||||
|
@ -655,7 +662,7 @@ class SubmitTests(TestCase):
|
|||
|
||||
def test_cancel_submission(self):
|
||||
# submit -> cancel
|
||||
make_test_data()
|
||||
GroupFactory(acronym='mars')
|
||||
|
||||
name = "draft-ietf-mars-testing-tests"
|
||||
rev = "00"
|
||||
|
@ -677,7 +684,7 @@ class SubmitTests(TestCase):
|
|||
|
||||
def test_edit_submission_and_force_post(self):
|
||||
# submit -> edit
|
||||
draft = make_test_data()
|
||||
draft = WgDraftFactory(group__acronym='mars')
|
||||
|
||||
name = "draft-ietf-mars-testing-tests"
|
||||
rev = "00"
|
||||
|
@ -773,7 +780,7 @@ class SubmitTests(TestCase):
|
|||
|
||||
def test_search_for_submission_and_edit_as_secretariat(self):
|
||||
# submit -> edit
|
||||
make_test_data()
|
||||
GroupFactory(acronym='mars')
|
||||
|
||||
name = "draft-ietf-mars-testing-tests"
|
||||
rev = "00"
|
||||
|
@ -823,7 +830,7 @@ class SubmitTests(TestCase):
|
|||
|
||||
def test_request_full_url(self):
|
||||
# submit -> request full URL to be sent
|
||||
make_test_data()
|
||||
GroupFactory(acronym='mars')
|
||||
|
||||
name = "draft-ietf-mars-testing-tests"
|
||||
rev = "00"
|
||||
|
@ -855,8 +862,7 @@ class SubmitTests(TestCase):
|
|||
# who gets the management url behaves as expected
|
||||
|
||||
def test_submit_all_file_types(self):
|
||||
make_test_data()
|
||||
|
||||
GroupFactory(acronym='mars')
|
||||
name = "draft-ietf-mars-testing-tests"
|
||||
rev = "00"
|
||||
group = "mars"
|
||||
|
@ -910,14 +916,12 @@ class SubmitTests(TestCase):
|
|||
self.assertEquals(r.status_code, 200)
|
||||
|
||||
def test_blackout_access(self):
|
||||
make_test_data()
|
||||
|
||||
# get
|
||||
url = urlreverse('ietf.submit.views.upload_submission')
|
||||
# set meeting to today so we're in blackout period
|
||||
|
||||
# Put today in the blackout period
|
||||
meeting = Meeting.get_current_meeting()
|
||||
meeting.date = datetime.datetime.utcnow()
|
||||
meeting.save()
|
||||
meeting.importantdate_set.create(name_id='idcutoff',date=datetime.date.today()-datetime.timedelta(days=2))
|
||||
|
||||
# regular user, no access
|
||||
r = self.client.get(url)
|
||||
|
@ -933,9 +937,6 @@ class SubmitTests(TestCase):
|
|||
self.assertEqual(len(q('input[type=file][name=txt]')), 1)
|
||||
|
||||
def submit_bad_file(self, name, formats):
|
||||
|
||||
make_test_data()
|
||||
|
||||
rev = ""
|
||||
group = None
|
||||
|
||||
|
@ -988,8 +989,6 @@ class SubmitTests(TestCase):
|
|||
self.assertIn('Expected an PS file of type "application/postscript"', m)
|
||||
|
||||
def test_submit_nonascii_name(self):
|
||||
make_test_data()
|
||||
|
||||
name = "draft-authorname-testing-nonascii"
|
||||
rev = "00"
|
||||
group = None
|
||||
|
@ -1018,8 +1017,6 @@ class SubmitTests(TestCase):
|
|||
self.assertIn('The idnits check returned 1 warning', m)
|
||||
|
||||
def test_submit_invalid_yang(self):
|
||||
make_test_data()
|
||||
|
||||
name = "draft-yang-testing-invalid"
|
||||
rev = "00"
|
||||
group = None
|
||||
|
@ -1054,8 +1051,7 @@ class SubmitTests(TestCase):
|
|||
|
||||
class ApprovalsTestCase(TestCase):
|
||||
def test_approvals(self):
|
||||
make_test_data()
|
||||
|
||||
RoleFactory(name_id='chair', group__acronym='mars', person__user__username='marschairman')
|
||||
url = urlreverse('ietf.submit.views.approvals')
|
||||
self.client.login(username="marschairman", password="marschairman+password")
|
||||
|
||||
|
@ -1085,7 +1081,7 @@ class ApprovalsTestCase(TestCase):
|
|||
self.assertEqual(len(q('.recently-approved a:contains("draft-ietf-mars-foo")')), 1)
|
||||
|
||||
def test_add_preapproval(self):
|
||||
make_test_data()
|
||||
RoleFactory(name_id='chair', group__acronym='mars', person__user__username='marschairman')
|
||||
|
||||
url = urlreverse('ietf.submit.views.add_preapproval')
|
||||
login_testing_unauthorized(self, "marschairman", url)
|
||||
|
@ -1110,7 +1106,7 @@ class ApprovalsTestCase(TestCase):
|
|||
self.assertEqual(len(Preapproval.objects.filter(name=name)), 1)
|
||||
|
||||
def test_cancel_preapproval(self):
|
||||
make_test_data()
|
||||
RoleFactory(name_id='chair', group__acronym='mars', person__user__username='marschairman')
|
||||
|
||||
preapproval = Preapproval.objects.create(name="draft-ietf-mars-foo", by=Person.objects.get(user__username="marschairman"))
|
||||
|
||||
|
@ -1131,7 +1127,7 @@ class ApprovalsTestCase(TestCase):
|
|||
|
||||
class ManualPostsTestCase(TestCase):
|
||||
def test_manual_posts(self):
|
||||
make_test_data()
|
||||
GroupFactory(acronym='mars')
|
||||
|
||||
url = urlreverse('ietf.submit.views.manualpost')
|
||||
# Secretariat has access
|
||||
|
|
|
@ -8,19 +8,20 @@ import shutil
|
|||
from django.conf import settings
|
||||
from django.urls import reverse as urlreverse
|
||||
|
||||
from ietf.doc.factories import WgDraftFactory
|
||||
from ietf.doc.models import Document, DocAlias, DocEvent, DeletedEvent, DocTagName, RelatedDocument, State, StateDocEvent
|
||||
from ietf.doc.utils import add_state_change_event
|
||||
from ietf.group.factories import GroupFactory
|
||||
from ietf.person.models import Person
|
||||
from ietf.sync import iana, rfceditor
|
||||
from ietf.utils.mail import outbox, empty_outbox
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.test_utils import login_testing_unauthorized, unicontent
|
||||
from ietf.utils.test_utils import TestCase
|
||||
|
||||
|
||||
class IANASyncTests(TestCase):
|
||||
def test_protocol_page_sync(self):
|
||||
draft = make_test_data()
|
||||
draft = WgDraftFactory()
|
||||
DocAlias.objects.create(name="rfc1234", document=draft)
|
||||
DocEvent.objects.create(doc=draft, rev=draft.rev, type="published_rfc", by=Person.objects.get(name="(System)"))
|
||||
|
||||
|
@ -36,7 +37,7 @@ class IANASyncTests(TestCase):
|
|||
self.assertEqual(DocEvent.objects.filter(doc=draft, type="rfc_in_iana_registry").count(), 1)
|
||||
|
||||
def test_changes_sync(self):
|
||||
draft = make_test_data()
|
||||
draft = WgDraftFactory(ad=Person.objects.get(user__username='ad'))
|
||||
|
||||
data = json.dumps({
|
||||
"changes": [
|
||||
|
@ -91,7 +92,7 @@ class IANASyncTests(TestCase):
|
|||
self.assertEqual(len(warnings), 0)
|
||||
|
||||
def test_changes_sync_errors(self):
|
||||
draft = make_test_data()
|
||||
draft = WgDraftFactory()
|
||||
|
||||
# missing "type"
|
||||
data = json.dumps({
|
||||
|
@ -131,7 +132,7 @@ class IANASyncTests(TestCase):
|
|||
self.assertEqual(len(warnings), 1)
|
||||
|
||||
def test_iana_review_mail(self):
|
||||
draft = make_test_data()
|
||||
draft = WgDraftFactory()
|
||||
|
||||
subject_template = u'Subject: [IANA #12345] Last Call: <%(draft)s-%(rev)s.txt> (Long text) to Informational RFC'
|
||||
msg_template = u"""From: "%(person)s via RT" <drafts-lastcall@iana.org>
|
||||
|
@ -227,11 +228,10 @@ class RFCSyncTests(TestCase):
|
|||
f.write("a" * size)
|
||||
|
||||
def test_rfc_index(self):
|
||||
doc = make_test_data()
|
||||
doc.set_state(State.objects.get(used=True, type="draft-iesg", slug="rfcqueue"))
|
||||
# it's a bit strange to have this set when draft-iesg is set
|
||||
area = GroupFactory(type_id='area')
|
||||
doc = WgDraftFactory(group__parent=area,states=[('draft-iesg','rfcqueue'),('draft-stream-ise','rfc-edit')])
|
||||
# it's a bit strange to have draft-stream-ise set when draft-iesg is set
|
||||
# too, but for testing purposes ...
|
||||
doc.set_state(State.objects.get(used=True, type="draft-stream-ise", slug="rfc-edit"))
|
||||
|
||||
updated_doc = Document.objects.create(name="draft-ietf-something")
|
||||
DocAlias.objects.create(name=updated_doc.name, document=updated_doc)
|
||||
|
@ -358,9 +358,7 @@ class RFCSyncTests(TestCase):
|
|||
|
||||
|
||||
def test_rfc_queue(self):
|
||||
draft = make_test_data()
|
||||
|
||||
draft.set_state(State.objects.get(used=True, type="draft-iesg", slug="ann"))
|
||||
draft = WgDraftFactory(states=[('draft-iesg','ann')])
|
||||
|
||||
t = '''<rfc-editor-queue xmlns="http://www.rfc-editor.org/rfc-editor-queue">
|
||||
<section name="IETF STREAM: WORKING GROUP STANDARDS TRACK">
|
||||
|
@ -423,7 +421,6 @@ class RFCSyncTests(TestCase):
|
|||
|
||||
class DiscrepanciesTests(TestCase):
|
||||
def test_discrepancies(self):
|
||||
make_test_data()
|
||||
|
||||
# draft approved but no RFC Editor state
|
||||
doc = Document.objects.create(name="draft-ietf-test1", type_id="draft")
|
||||
|
@ -462,7 +459,7 @@ class DiscrepanciesTests(TestCase):
|
|||
|
||||
class RFCEditorUndoTests(TestCase):
|
||||
def test_rfceditor_undo(self):
|
||||
draft = make_test_data()
|
||||
draft = WgDraftFactory()
|
||||
|
||||
e1 = add_state_change_event(draft, Person.objects.get(name="(System)"), None,
|
||||
State.objects.get(used=True, type="draft-rfceditor", slug="auth"))
|
||||
|
|
|
@ -26,12 +26,12 @@ from django.urls import reverse as urlreverse
|
|||
|
||||
import debug # pyflakes:ignore
|
||||
|
||||
from ietf.group.factories import GroupFactory
|
||||
from ietf.group.models import Group
|
||||
from ietf.submit.tests import submission_file
|
||||
from ietf.utils.draft import Draft, getmeta
|
||||
from ietf.utils.mail import send_mail_preformatted, send_mail_text, send_mail_mime, outbox
|
||||
from ietf.utils.management.commands import pyflakes
|
||||
from ietf.utils.test_data import make_test_data
|
||||
from ietf.utils.test_runner import get_template_paths, set_coverage_checking
|
||||
from ietf.utils.test_utils import TestCase
|
||||
|
||||
|
@ -299,7 +299,8 @@ class TestWikiGlueManagementCommand(TestCase):
|
|||
shutil.rmtree(os.path.dirname(self.svn_dir_pattern))
|
||||
|
||||
def test_wiki_create_output(self):
|
||||
make_test_data()
|
||||
for type in ['wg','rg','ag','area']:
|
||||
GroupFactory(type_id=type)
|
||||
groups = Group.objects.filter(
|
||||
type__slug__in=['wg','rg','ag','area'],
|
||||
state__slug='active'
|
||||
|
|
Binary file not shown.
Loading…
Reference in a new issue