def delete_icon_backend(request: HttpRequest, user_profile: UserProfile) -> HttpResponse: # We don't actually delete the icon because it might still # be needed if the URL was cached and it is rewrited # in any case after next update. do_change_icon_source(user_profile.realm, user_profile.realm.ICON_FROM_GRAVATAR) gravatar_url = realm_icon_url(user_profile.realm) json_result = dict(icon_url=gravatar_url, ) return json_success(json_result)
def delete_icon_backend(request: HttpRequest, user_profile: UserProfile) -> HttpResponse: # We don't actually delete the icon because it might still # be needed if the URL was cached and it is rewrited # in any case after next update. do_change_icon_source(user_profile.realm, user_profile.realm.ICON_FROM_GRAVATAR) gravatar_url = realm_icon_url(user_profile.realm) json_result = dict( icon_url=gravatar_url ) return json_success(json_result)
def upload_icon(request, user_profile): # type: (HttpRequest, UserProfile) -> HttpResponse if len(request.FILES) != 1: return json_error(_("You must upload exactly one icon.")) icon_file = list(request.FILES.values())[0] upload_icon_image(icon_file, user_profile) do_change_icon_source(user_profile.realm, user_profile.realm.ICON_UPLOADED) icon_url = realm_icon_url(user_profile.realm) json_result = dict(icon_url=icon_url) return json_success(json_result)
def test_change_icon_source(self) -> None: test_start = timezone_now() realm = get_realm('zulip') user = self.example_user('hamlet') icon_source = 'G' do_change_icon_source(realm, icon_source, acting_user=user) audit_entries = RealmAuditLog.objects.filter( realm=realm, event_type=RealmAuditLog.REALM_ICON_SOURCE_CHANGED, acting_user=user, event_time__gte=test_start) self.assertEqual(len(audit_entries), 1) self.assertEqual(icon_source, realm.icon_source) self.assertEqual(audit_entries.first().extra_data, "{'icon_source': 'G', 'icon_version': 2}")
def upload_icon(request: HttpRequest, user_profile: UserProfile) -> HttpResponse: if len(request.FILES) != 1: return json_error(_("You must upload exactly one icon.")) icon_file = list(request.FILES.values())[0] if ((settings.MAX_ICON_FILE_SIZE * 1024 * 1024) < icon_file.size): return json_error( _("Uploaded file is larger than the allowed limit of {} MiB"). format(settings.MAX_ICON_FILE_SIZE, )) upload_icon_image(icon_file, user_profile) do_change_icon_source(user_profile.realm, user_profile.realm.ICON_UPLOADED) icon_url = realm_icon_url(user_profile.realm) json_result = dict(icon_url=icon_url, ) return json_success(json_result)
def test_change_icon_source(self) -> None: test_start = timezone_now() realm = get_realm("zulip") user = self.example_user("hamlet") icon_source = "G" do_change_icon_source(realm, icon_source, acting_user=user) audit_entries = RealmAuditLog.objects.filter( realm=realm, event_type=RealmAuditLog.REALM_ICON_SOURCE_CHANGED, acting_user=user, event_time__gte=test_start, ) audit_log = audit_entries.first() assert audit_log is not None self.assert_length(audit_entries, 1) self.assertEqual(icon_source, realm.icon_source) self.assertEqual(audit_log.extra_data, "{'icon_source': 'G', 'icon_version': 2}")
def upload_icon(request: HttpRequest, user_profile: UserProfile) -> HttpResponse: if len(request.FILES) != 1: return json_error(_("You must upload exactly one icon.")) icon_file = list(request.FILES.values())[0] if ((settings.MAX_ICON_FILE_SIZE * 1024 * 1024) < icon_file.size): return json_error(_("Uploaded file is larger than the allowed limit of %s MB") % ( settings.MAX_ICON_FILE_SIZE)) upload_icon_image(icon_file, user_profile) do_change_icon_source(user_profile.realm, user_profile.realm.ICON_UPLOADED) icon_url = realm_icon_url(user_profile.realm) json_result = dict( icon_url=icon_url ) return json_success(json_result)