chore: remove deprecated_api_upload_bluesheet method (#8443)
* chore: remove deprecated_api_upload_bluesheet() * test: remove test of removed method
This commit is contained in:
parent
65a96948dc
commit
3ec94225e3
|
@ -554,98 +554,6 @@ class CustomApiTests(TestCase):
|
|||
newdoccontent = get_unicode_document_content(newdoc.name, Path(session.meeting.get_materials_path()) / type_id / newdoc.uploaded_filename)
|
||||
self.assertEqual(json.loads(content), json.loads(newdoccontent))
|
||||
|
||||
def test_deprecated_api_upload_bluesheet(self):
|
||||
url = urlreverse('ietf.meeting.views.api_upload_bluesheet')
|
||||
recmanrole = RoleFactory(group__type_id='ietf', name_id='recman')
|
||||
recman = recmanrole.person
|
||||
meeting = MeetingFactory(type_id='ietf')
|
||||
session = SessionFactory(group__type_id='wg', meeting=meeting)
|
||||
group = session.group
|
||||
apikey = PersonalApiKeyFactory(endpoint=url, person=recman)
|
||||
|
||||
people = [
|
||||
{"name": "Andrea Andreotti", "affiliation": "Azienda"},
|
||||
{"name": "Bosse Bernadotte", "affiliation": "Bolag"},
|
||||
{"name": "Charles Charlemagne", "affiliation": "Compagnie"},
|
||||
]
|
||||
for i in range(3):
|
||||
faker = random_faker()
|
||||
people.append(dict(name=faker.name(), affiliation=faker.company()))
|
||||
bluesheet = json.dumps(people)
|
||||
|
||||
# error cases
|
||||
r = self.client.post(url, {})
|
||||
self.assertContains(r, "Missing apikey parameter", status_code=400)
|
||||
|
||||
badrole = RoleFactory(group__type_id='ietf', name_id='ad')
|
||||
badapikey = PersonalApiKeyFactory(endpoint=url, person=badrole.person)
|
||||
badrole.person.user.last_login = timezone.now()
|
||||
badrole.person.user.save()
|
||||
r = self.client.post(url, {'apikey': badapikey.hash()})
|
||||
self.assertContains(r, "Restricted to roles: Recording Manager, Secretariat", status_code=403)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash()})
|
||||
self.assertContains(r, "Too long since last regular login", status_code=400)
|
||||
recman.user.last_login = timezone.now()
|
||||
recman.user.save()
|
||||
|
||||
r = self.client.get(url, {'apikey': apikey.hash()})
|
||||
self.assertContains(r, "Method not allowed", status_code=405)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'group': group.acronym})
|
||||
self.assertContains(r, "Missing meeting parameter", status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, })
|
||||
self.assertContains(r, "Missing group parameter", status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, 'group': group.acronym})
|
||||
self.assertContains(r, "Missing item parameter", status_code=400)
|
||||
|
||||
r = self.client.post(url,
|
||||
{'apikey': apikey.hash(), 'meeting': meeting.number, 'group': group.acronym, 'item': '1'})
|
||||
self.assertContains(r, "Missing bluesheet parameter", status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': '1', 'group': group.acronym,
|
||||
'item': '1', 'bluesheet': bluesheet, })
|
||||
self.assertContains(r, "No sessions found for meeting", status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, 'group': 'bogous',
|
||||
'item': '1', 'bluesheet': bluesheet, })
|
||||
self.assertContains(r, "No sessions found in meeting '%s' for group 'bogous'" % meeting.number, status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, 'group': group.acronym,
|
||||
'item': '1', 'bluesheet': "foobar", })
|
||||
self.assertContains(r, "Invalid json value: 'foobar'", status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, 'group': group.acronym,
|
||||
'item': '5', 'bluesheet': bluesheet, })
|
||||
self.assertContains(r, "No item '5' found in list of sessions for group", status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, 'group': group.acronym,
|
||||
'item': 'foo', 'bluesheet': bluesheet, })
|
||||
self.assertContains(r, "Expected a numeric value for 'item', found 'foo'", status_code=400)
|
||||
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, 'group': group.acronym,
|
||||
'item': '1', 'bluesheet': bluesheet, })
|
||||
self.assertContains(r, "Done", status_code=200)
|
||||
|
||||
# Submit again, with slightly different content, as an updated version
|
||||
people[1]['affiliation'] = 'Bolaget AB'
|
||||
bluesheet = json.dumps(people)
|
||||
r = self.client.post(url, {'apikey': apikey.hash(), 'meeting': meeting.number, 'group': group.acronym,
|
||||
'item': '1', 'bluesheet': bluesheet, })
|
||||
self.assertContains(r, "Done", status_code=200)
|
||||
|
||||
bluesheet = session.presentations.filter(document__type__slug='bluesheets').first().document
|
||||
# We've submitted an update; check that the rev is right
|
||||
self.assertEqual(bluesheet.rev, '01')
|
||||
# Check the content
|
||||
with open(bluesheet.get_file_name()) as file:
|
||||
text = file.read()
|
||||
for p in people:
|
||||
self.assertIn(p['name'], html.unescape(text))
|
||||
self.assertIn(p['affiliation'], html.unescape(text))
|
||||
|
||||
def test_api_upload_bluesheet(self):
|
||||
url = urlreverse("ietf.meeting.views.api_upload_bluesheet")
|
||||
recmanrole = RoleFactory(group__type_id="ietf", name_id="recman")
|
||||
|
|
|
@ -4666,11 +4666,6 @@ def api_upload_bluesheet(request):
|
|||
content="Method not allowed", content_type="text/plain", permitted_methods=('POST',)
|
||||
)
|
||||
|
||||
# Temporary: fall back to deprecated interface if we have old-style parameters.
|
||||
# Do away with this once meetecho is using the new pk-based interface.
|
||||
if any(k in request.POST for k in ['meeting', 'group', 'item']):
|
||||
return deprecated_api_upload_bluesheet(request)
|
||||
|
||||
session_id = request.POST.get('session_id', None)
|
||||
if session_id is None:
|
||||
return err(400, 'Missing session_id parameter')
|
||||
|
@ -4707,65 +4702,6 @@ def api_upload_bluesheet(request):
|
|||
return HttpResponse("Done", status=200, content_type='text/plain')
|
||||
|
||||
|
||||
def deprecated_api_upload_bluesheet(request):
|
||||
def err(code, text):
|
||||
return HttpResponse(text, status=code, content_type='text/plain')
|
||||
if request.method == 'POST':
|
||||
# parameters:
|
||||
# apikey: the poster's personal API key
|
||||
# meeting: number as string, i.e., '101', or 'interim-2018-quic-02'
|
||||
# group: acronym or special, i.e., 'quic' or 'plenary'
|
||||
# item: '1', '2', '3' (the group's first, second, third etc.
|
||||
# session during the week)
|
||||
# bluesheet: json blob with
|
||||
# [{'name': 'Name', 'affiliation': 'Organization', }, ...]
|
||||
for item in ['meeting', 'group', 'item', 'bluesheet',]:
|
||||
value = request.POST.get(item)
|
||||
if not value:
|
||||
return err(400, "Missing %s parameter" % item)
|
||||
number = request.POST.get('meeting')
|
||||
sessions = Session.objects.filter(meeting__number=number)
|
||||
if not sessions.exists():
|
||||
return err(400, "No sessions found for meeting '%s'" % (number, ))
|
||||
acronym = request.POST.get('group')
|
||||
sessions = sessions.filter(group__acronym=acronym)
|
||||
if not sessions.exists():
|
||||
return err(400, "No sessions found in meeting '%s' for group '%s'" % (number, acronym))
|
||||
session_times = [ (s.official_timeslotassignment().timeslot.time, s.id, s) for s in sessions if s.official_timeslotassignment() ]
|
||||
session_times.sort()
|
||||
item = request.POST.get('item')
|
||||
if not item.isdigit():
|
||||
return err(400, "Expected a numeric value for 'item', found '%s'" % (item, ))
|
||||
n = int(item)-1 # change 1-based to 0-based
|
||||
try:
|
||||
time, __, session = session_times[n]
|
||||
except IndexError:
|
||||
return err(400, "No item '%s' found in list of sessions for group" % (item, ))
|
||||
bjson = request.POST.get('bluesheet')
|
||||
try:
|
||||
data = json.loads(bjson)
|
||||
except json.decoder.JSONDecodeError:
|
||||
return err(400, "Invalid json value: '%s'" % (bjson, ))
|
||||
|
||||
text = render_to_string('meeting/bluesheet.txt', {
|
||||
'data': data,
|
||||
'session': session,
|
||||
})
|
||||
|
||||
fd, name = tempfile.mkstemp(suffix=".txt", text=True)
|
||||
os.close(fd)
|
||||
with open(name, "w") as file:
|
||||
file.write(text)
|
||||
with open(name, "br") as file:
|
||||
save_err = save_bluesheet(request, session, file)
|
||||
if save_err:
|
||||
return err(400, save_err)
|
||||
else:
|
||||
return err(405, "Method not allowed")
|
||||
|
||||
return HttpResponse("Done", status=200, content_type='text/plain')
|
||||
|
||||
|
||||
def important_dates(request, num=None, output_format=None):
|
||||
assert num is None or num.isdigit()
|
||||
preview_roles = ['Area Director', 'Secretariat', 'IETF Chair', 'IAD', ]
|
||||
|
|
Loading…
Reference in a new issue