def test_plain_views_are_cacheable(self, mocked_api_session): mocked_api_session().get().json.return_value = { 'count': 1, 'results': [{ 'nomis_id': 'AAA', 'short_name': 'Prison', 'name': 'HMP Prison' }], } view_names = [ 'help_area:help', 'help_area:help-new-payment', 'help_area:help-sent-payment', 'help_area:prison_list', 'terms', 'privacy', 'js-i18n', 'sitemap_xml', 'accessibility' ] for view_name in view_names: response = self.client.get(reverse(view_name)) self.assertGreaterEqual(get_max_age(response), 3600, msg=f'{view_name} should be cacheable') with override_lang('cy'): response = self.client.get(reverse(view_name)) self.assertGreaterEqual(get_max_age(response), 3600, msg=f'{view_name} should be cacheable')
def test_happy_scenario(self): value = 'Submit' with override_lang('eo'): with patch('util.i18n.ugettext') as patched_ugettext: result = force_translate( value, ugettext_noop('Submit'), ugettext_noop('Cancel'), ) self.assertNotEqual(value, unicode(result)) patched_ugettext.assert_called_once_with('Submit')
def test_not_in_the_list(self, patched_ugettext): value = 'Submit' with override_lang('eo'): with patch('util.i18n.ugettext') as patched_ugettext: force_translate( value, ugettext_noop('Name'), ugettext_noop('Cancel'), ) self.assertFalse(patched_ugettext.called, 'ugettext should not be called!') result = force_translate( value, ugettext_noop('Name'), ugettext_noop('Cancel'), ) self.assertEqual(value, result)
def test_spanish_code(self): with override_lang('es-419'): assert utils.generate_offer_data( self.user, self.overview)['code'] == 'BIENVENIDOAEDX'
def full_xls_list( request ): # create an output stream output = io.BytesIO() # create an excel file wb = xlsxwriter.workbook.Workbook(output) # ... with bold as format bold = wb.add_format({'bold': True}) textwrap = wb.add_format() textwrap.set_text_wrap() # add a worksheet ws = wb.add_worksheet() widths = {} def w_write( row, col, content, fmt = None ): if content: if fmt: ws.write(row, col, str(content), fmt) else: ws.write(row, col, str(content)) if content: try: if widths[col] < len(str(content)): widths[col] = len(str(content)) except KeyError: widths[col] = len(str(content)) HEADROW = 1 # Pseudo-constants as for columns NAME = 0 w_write(HEADROW,NAME,'Name', bold) VORNAME = NAME + 1 # 1 w_write(HEADROW,VORNAME,'Vorname', bold) TITEL = VORNAME + 1 # 2 w_write(HEADROW,TITEL,'Titel', bold) NI = TITEL + 1 #3 w_write(HEADROW,NI,'NI', bold) NT = NI + 1 #4 w_write(HEADROW,NT,'NT', bold) STED = NT + 1#5 w_write(HEADROW,STED,'Mikroskopie', bold) UNIVERSITAET = STED + 1#6 w_write(HEADROW,UNIVERSITAET,'Universität', bold) INSTITUT = UNIVERSITAET + 1#7 w_write(HEADROW,INSTITUT,'Institut', bold) ARBEITSGRUPPE = INSTITUT+1#8 w_write(HEADROW,ARBEITSGRUPPE,'Arbeitsgruppe', bold) AGLEITER = ARBEITSGRUPPE+1#9 w_write(HEADROW,AGLEITER,'Leitung der Arbeitsgruppe', bold) MITARBEITER = AGLEITER + 1#10 w_write(HEADROW,MITARBEITER,'Mitarbeiter', bold) NUTZER = MITARBEITER + 1#11 w_write(HEADROW,NUTZER,'Nutzer', bold) LEITUNG = NUTZER + 1#12 w_write(HEADROW,LEITUNG,'AG-Leiter', bold) BEIRAT = LEITUNG + 1 #13 w_write(HEADROW,BEIRAT,'Beirat', bold) MITGLIED = BEIRAT + 1#14 w_write(HEADROW,MITGLIED,'RUBION-Mitglied', bold) MITGLIEDERVERSAMMLUNG = MITGLIED+1#15 w_write(HEADROW,MITGLIEDERVERSAMMLUNG,'Einladung MV', bold) SONSTIGE = MITGLIEDERVERSAMMLUNG+1#16 w_write(HEADROW,SONSTIGE,'Sonstige', bold) RMETHODS = SONSTIGE+1#17 w_write(HEADROW,RMETHODS,'Methoden', bold) RAUM = RMETHODS+1#18 w_write(HEADROW,RAUM,'Raum', bold) TELEFON = RAUM+1 w_write(HEADROW,TELEFON,'Telefon', bold) EMAIL = TELEFON+1 w_write(HEADROW,EMAIL,'E-Mail', bold) AKTIV = EMAIL+1 w_write(HEADROW,AKTIV,'Aktiv', bold) WOHNORT = AKTIV+1 w_write(HEADROW,WOHNORT,'Wohnort', bold) STRASSE = WOHNORT+1 w_write(HEADROW,STRASSE,'Straße', bold) GEBURTSTAG = STRASSE+1 w_write(HEADROW,GEBURTSTAG,'Geburtstag', bold) GEBURTSORT = GEBURTSTAG+1 w_write(HEADROW,GEBURTSORT,'Geburtsort', bold) FRUEHERERNAME = GEBURTSORT+1 w_write(HEADROW,FRUEHERERNAME,'Früherer Name', bold) SCHLUESSEL = FRUEHERERNAME+1 w_write(HEADROW,SCHLUESSEL,'Schlüssel', bold) DOSEMETER = SCHLUESSEL + 1 w_write(HEADROW,DOSEMETER,'Art des Dosimeters', bold) nextpos = DOSEMETER + 1 SICOORDINATES = {} with override_lang('de'): for instruction in SI.AVAILABLE_SAFETY_INSTRUCTIONS: SICOORDINATES.update({ instruction : nextpos }) ws.merge_range( HEADROW-1, nextpos, HEADROW-1, nextpos+1, str(SI.SAFETYINSTRUCTION_NAMES[instruction]), bold) w_write(HEADROW,nextpos,'benötigt?', bold) w_write(HEADROW,nextpos+1,'letzte Auffrischung', bold) nextpos = nextpos + 2 BEMERKUNGEN1 = nextpos w_write(HEADROW,BEMERKUNGEN1,'Bemerkungen 1', bold) BEMERKUNGEN2 = BEMERKUNGEN1 + 1 w_write(HEADROW,BEMERKUNGEN2,'Bemerkungen 2', bold) # end pseudo-constants # maximum column number MAXCOL = BEMERKUNGEN2 # internal function for writing safety instruction information def write_safety_information(row, user): informations = SI.get_instruction_information( user ) for instruction, information in informations.items(): if information['required']: w_write( row, SICOORDINATES[instruction], "✓" ) w_write( row, SICOORDINATES[instruction]+1, information['last'] ) # internal function for writing staff information def write_staff_user(row, staff): w_write(row, NAME, staff.get_last_name()) w_write(row, VORNAME, staff.get_first_name()) w_write(row, EMAIL, staff.mail) w_write(row, AKTIV, '✓') try: ru = RUBIONUser.objects.filter(linked_user = staff.user).first() except RUBIONUser.DoesNotExist: ru = None if is_beirat(staff) or is_beirat(ru): w_write(row, BEIRAT, "✓") w_write(row, MITGLIEDERVERSAMMLUNG, '✓') beirat = True else: beirat = False if staff.get_parent().specific.show_in_list: w_write(row, MITARBEITER, "✓") w_write(row, MITGLIED, '✓') w_write(row, MITGLIEDERVERSAMMLUNG, '✓') else: if not beirat: w_write(row, SONSTIGE, "✓") w_write(row, SCHLUESSEL, staff.key_number) w_write(row, TITEL, staff.grade) w_write(row, RAUM, staff.room) w_write(row, TELEFON, str(staff.phone)) write_safety_information( row, staff ) # internal function for writing user information def write_rubion_user(row, ru): w_write(row, NAME, ru.last_name) w_write(row, VORNAME, ru.first_name) w_write(row, TITEL, ru.get_academic_title_display()) w_write(row, EMAIL, ru.email) if ru.expire_at == None or ru.expire_at >= datetime.datetime.now(): w_write(row, AKTIV, '✓'); w_write(row, NUTZER, '✓') if ru.is_leader: w_write(row, LEITUNG, '✓') wg = ru.get_workgroup() w_write(row, UNIVERSITAET, wg.university) w_write(row, INSTITUT, wg.institute) w_write(row, ARBEITSGRUPPE, wg.title_trans) rm = wg.get_methods() r_methods = '' for method in rm: r_methods = r_methods + str(method) + '\n' # this fails for people retrieving the data in german #if ( str(method) == 'Working with unstable isotopes' or # str(method) == 'Other' #) : if re.match(r'.*(unstable|instabil|other|sonstige).*', str(method)): w_write(row, NI, '✓') else: w_write(row, NT, '✓') w_write(row, RMETHODS, r_methods) head = wg.get_head() if head: w_write(row, AGLEITER, "{} {}".format(head.first_name, head.last_name)) w_write(row, GEBURTSORT, ru.place_of_birth) w_write(row, GEBURTSTAG, ru.date_of_birth) w_write(row, FRUEHERERNAME, ru.previous_names) try: su = StaffUser.objects.filter(user = ru.linked_user).first() except StaffUser.DoesNotExist: su = None if ru.linked_user == None: su = None beirat = is_beirat(ru) or is_beirat(su) if not su: w_write(row, SCHLUESSEL, ru.key_number) if ru.phone: w_write(row, TELEFON, str(ru.phone)) if beirat: w_write(row, BEIRAT, '✓') if (ru.is_rub and ru.is_leader): w_write(row, MITGLIED, '✓') w_write(row, MITGLIEDERVERSAMMLUNG, '✓') if beirat: w_write(row, MITGLIEDERVERSAMMLUNG, '✓') w_write(row, FRUEHERERNAME, ru.previous_names) w_write(row, DOSEMETER, ru.get_dosemeter_display()) w_write(row, BEMERKUNGEN1, ru.internal_rubion_comment.replace('<br/>','\n').replace('</p>','\n'), textwrap) write_safety_information(row, ru) row = HEADROW + 1 allstaff = StaffUser.objects.all() linked_users = [] for staff in allstaff: write_staff_user(row, staff) if staff.linked_user: linked_users.append(staff.linked_user) try: write_rubion_user(row, RUBIONUser.objects.get(linked_user = staff.linked_user)) except RUBIONUser.DoesNotExist: pass row=row+1 rubionusers = RUBIONUser.objects.exclude(linked_user__in = linked_users) for ru in rubionusers: write_rubion_user(row, ru) row=row+1 ws.autofilter(HEADROW,0,row,MAXCOL) for i in range(MAXCOL+1): try: if widths[i] > 9: ws.set_column(i,i, widths[i]*1.2) else: ws.set_column(i,i, 12) except KeyError: ws.set_column(i,i, 12) wb.close() output.seek(0) response = HttpResponse(output.read(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') response['Content-Disposition'] = "attachment; filename=nutzer-{}-.xlsx".format(datetime.datetime.now()) output.close() return response