docs: fix spelling errors (pre-commit)

environments/review-docs-docs-detqeo/deployments/15752
jo 2022-11-24 01:32:57 +01:00
rodzic bdd02cf2fa
commit 054a9e54f5
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B2FEC9B22722B984
91 zmienionych plików z 179 dodań i 163 usunięć

Wyświetl plik

@ -0,0 +1,12 @@
followings
inforce
keypair
nam
nd
readby
serie
upto
# Names
nin
noe

Wyświetl plik

@ -401,7 +401,7 @@ Due to a bug in our CI Pipeline frontend artifacts are not available at
https://dev.funkwhale.audio/funkwhale/funkwhale/builds/artifacts/1.2.0/download?job=build_front as they would usually.
Please use this URL to get your frontend build: https://dev.funkwhale.audio/funkwhale/funkwhale/-/jobs/81069/artifacts/download
If you are running the All-in-One-Container since a longer time, you probably need to manually migrate your database information. If thats the case, you will get a message like this:
If you are running the All-in-One-Container since a longer time, you probably need to manually migrate your database information. If that's the case, you will get a message like this:
`DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 13.5.`
@ -409,7 +409,7 @@ Make sure the Funkwhale version is set to `1.1.4` in `docker-compose.yml`. Now y
`docker-compose exec -T funkwhale pg_dump -c -U funkwhale > "db.dump"`
Now you can update the Funkwhale version in `docker-compose.yml` to `1.2.0`. Additionally you should save your `data` directory, eg by running `mv data data.bak && mkdir data`. Stop Funkwhale and start it again with the new version, by using `docker-compose down && docker-compose up -d`. This will initialize a fresh DB and applies all migrations. Now you can restore your database with the following command: `cat db.dump | docker-compose exec -T funkwhale psql -U funkwhale`. Thats it, enjoy!
Now you can update the Funkwhale version in `docker-compose.yml` to `1.2.0`. Additionally you should save your `data` directory, eg by running `mv data data.bak && mkdir data`. Stop Funkwhale and start it again with the new version, by using `docker-compose down && docker-compose up -d`. This will initialize a fresh DB and applies all migrations. Now you can restore your database with the following command: `cat db.dump | docker-compose exec -T funkwhale psql -U funkwhale`. That's it, enjoy!
Features:
@ -446,7 +446,7 @@ Bugfixes:
- Fix showing too long radio descriptions (#1556)
- Fix X-Frame-Options HTTP header for embed and force it to SAMEORIGIN value for other pages (fix #1022)
- Fix before last track starts playing when last track removed (#1485)
- Fix delete account button is not disalbed when missing password (#1591)
- Fix delete account button is not disabled when missing password (#1591)
- Fix omputed properties already defined in components data (#1649)
- Fix the all in one docker image building process, related to #1503
- Fix crash in album moderation interface when missing cover (#1474)
@ -458,7 +458,7 @@ Bugfixes:
- Sanitize remote tracks' saving locations with slashes on their names (#1435)
- Show embed option for channel tracks (#1278)
- Store volume in logarithmic scale and convert when setting it to audio (fixes #1543)
- Use global Howler volume instead of setting it separatly for each track (fixes #1542)
- Use global Howler volume instead of setting it separately for each track (fixes #1542)
Documentation:
@ -916,7 +916,7 @@ Features:
- Allow users to hide compilation artists on the artist search page (#1053)
- Can now launch server import from the UI (#1105)
- Dedicated, advanced search page (#370)
- Persist theme and language settings accross sessions (#996)
- Persist theme and language settings across sessions (#996)
Enhancements:
@ -1008,13 +1008,13 @@ Enhancements:
Bugfixes:
- Fix embedded player not working on channel serie/album (#1175)
- Fix embedded player not working on channel series/album (#1175)
- Fixed broken mimetype detection during import (#1165)
- Fixed crash when loading recent albums via Subsonic (#1158)
- Fixed crash with null help text in admin (#1161)
- Fixed invalid metadata when importing multi-artists tracks/albums (#1104)
- Fixed player crash when using Funkwhale as a PWA (#1157)
- Fixed wrong covert art displaying in some situations (#1138)
- Fixed wrong convert art displaying in some situations (#1138)
- Make channel card updated times more humanly readable, add internationalization (#1089)
Contributors to this release (development, documentation, reviews):
@ -1041,7 +1041,7 @@ Enhancements:
- Fix HTML <title> not including instance name in some situations (#1107)
- Make URL-building logic more resilient against reverse proxy misconfiguration (#1085)
- Removed unused masonry dependency (#1112)
- Support for specifying itunes:email and itunes:name in channels for compatibiliy with third-party platforms (#1154)
- Support for specifying itunes:email and itunes:name in channels for compatibility with third-party platforms (#1154)
- Updated the /api/v1/libraries endpoint to support listing public libraries from other users/pods (#1151)
@ -1234,7 +1234,7 @@ Upgrade from Postgres 10 to 11 [manual action required, docker all-in-one only]
With our upgrade to Alpine 3.10, the ``funkwhale/all-in-one`` image now includes PostgreSQL 11.
In order to update to Funkwhale 0.21, you will first need to uprade Funkwhale's PostgreSQL database, following the steps below::
In order to update to Funkwhale 0.21, you will first need to upgrade Funkwhale's PostgreSQL database, following the steps below::
# open a shell as the Funkwhale user
sudo -u funkwhale -H bash
@ -1611,7 +1611,7 @@ Then reload the configuration change with ``sudo systemctl daemon-reload`` and `
Content-Security-Policy and additional security headers [manual action suggested]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To improve the security and reduce the attack surface in case of a successfull exploit, we suggest
To improve the security and reduce the attack surface in case of a successful exploit, we suggest
you add the following Content-Security-Policy to your nginx configuration.
..note::
@ -1664,7 +1664,7 @@ Then reload nginx with ``systemctl reload nginx``.
# Simply copy-paste the /front/ location, but replace the following lines:
location /front/embed.html {
add_header X-Frame-Options "ALLOW";
alias /frontent/embed.html;
alias /frontend/embed.html;
}
}
@ -1676,7 +1676,7 @@ Rate limiting
With this release, rate-limiting on the API is enabled by default, with high enough limits to ensure
regular users of the app aren't affected. Requests beyond allowed limits are answered with a 429 HTTP error.
For anonymous requests, the limit is applied to the IP adress of the client, and for authenticated requests, the limit
For anonymous requests, the limit is applied to the IP address of the client, and for authenticated requests, the limit
is applied to the corresponding user account. By default, anonymous requests get a lower limit than authenticated requests.
You can disable the rate-limiting feature by adding `THROTTLING_ENABLED=false` to your ``.env`` file and restarting the
@ -1825,7 +1825,7 @@ Bugfixes:
- Use ASCII filename before upload to S3 to avoid playback issues (#847)
Contributors to this release (commiters and reviewers):
Contributors to this release (committers and reviewers):
- Ciarán Ainsworth
- Creak
@ -1986,7 +1986,7 @@ Enhancements:
- Expose an instance-level actor (service@domain) in nodeinfo endpoint (#689)
- Improved readability of logo (#385)
- Keep persistent connections to the database instead of recreating a new one for each request
- Labels for privacy levels are now consistently grabbed from a common source instead of being hardcoded everytime they are needed.
- Labels for privacy levels are now consistently grabbed from a common source instead of being hardcoded every time they are needed.
- Merged artist/album buttons with title text on artist and album pages (#725)
- Now honor maxBitrate parameter in Subsonic API (#802)
- Preload next track in queue (#572)
@ -2008,7 +2008,7 @@ Bugfixes:
- Do not consider tracks as duplicates during import if they have different positions (#740)
- Ensure all our ActivityPub fetches are authenticated (#758)
- Ensure correct track duration and playable status when browsing radios (#812)
- Fixed alignement/size issue with some buttons (#702)
- Fixed alignment/size issue with some buttons (#702)
- Fixed an encoding issue with instance name on about page (#828)
- Fixed cover not showing in queue/player when playing tracks from "albums" tab (#795)
- Fixed crashing upload processing on invalid date format (#718)
@ -2028,7 +2028,7 @@ Documentation:
- Document how to use Redis over unix sockets (#770)
Contributors to this release (commiters and translators):
Contributors to this release (committers and translators):
- Ale London
- Alexander
@ -2090,7 +2090,7 @@ Enhancements:
Bugfixes:
- Avoid mixed content when deploying mono-container behind HTTPS proxy (thetarkus/docker-funkwhale#19)
- Display new notifications immediatly on notifications page (#729)
- Display new notifications immediately on notifications page (#729)
- Ensure cover art from uploaded files is picked up properly on existing albums (#757)
- Fixed a crash when federating a track with unspecified position
- Fixed broken Activity and Actor modules in django admin (#767)
@ -2232,7 +2232,7 @@ Bugfixes:
- Fix transcoding of in-place imported tracks (#688)
- Fixed celery worker defaulting to development settings instead of production
- Fixed crashing Django admin when loading track detail page (#666)
- Fixed list icon alignement on landing page (#668)
- Fixed list icon alignment on landing page (#668)
- Fixed overescaping issue in notifications and album page (#676)
- Fixed wrong number of affected elements in bulk action modal (#683)
- Fixed wrong URL in documentation for funkwhale_proxy.conf file when deploying using Docker
@ -2257,7 +2257,7 @@ Many thanks to the dozens of people that contributed to this release: translator
bug hunters, admins and backers. You made it possible!
Upgrade instructions are available at
https://docs.funkwhale.audio/admin/upgrading.html, ensure you also execute the intructions
https://docs.funkwhale.audio/admin/upgrading.html, ensure you also execute the instructions
marked with ``[manual action required]`` and ``[manual action suggested]``.
See ``Full changelog`` below for an exhaustive list of changes!
@ -2477,7 +2477,7 @@ Enhancements:
- Load env file in config/.env automatically to avoid sourcing it by hand (#626)
- More resilient date parsing during audio import, will not crash anymore on
invalid dates (#622)
- Now start radios immediatly, skipping any existing tracks in queue (#585)
- Now start radios immediately, skipping any existing tracks in queue (#585)
- Officially support connecting to a password protected redis server, with
the redis://:password@localhost:6379/0 scheme (#640)
- Performance improvement when fetching favorites, down to a single, small http request
@ -2505,11 +2505,11 @@ Bugfixes:
- Allow opus file upload (#598)
- Do not display "view on MusicBrainz" button if we miss the mbid (#422)
- Do not try to create unaccent extension if it's already present (#663)
- Ensure admin links in sidebar are displayed for users with relavant permissions, and only them (#597)
- Fix broken websocket connexion under Chrome browser (#589)
- Ensure admin links in sidebar are displayed for users with relevant permissions, and only them (#597)
- Fix broken websocket connection under Chrome browser (#589)
- Fix play button not starting playback with empty queue (#632)
- Fixed a styling inconsistency on about page when instance description was missing (#659)
- Fixed a UI discrepency in playlist tracks count (#647)
- Fixed a UI discrepancy in playlist tracks count (#647)
- Fixed greyed tracks in radio builder and detail page (#637)
- Fixed inconsistencies in subsonic error responses (#616)
- Fixed incorrect icon for "next track" in player control (#613)
@ -2517,7 +2517,7 @@ Bugfixes:
- Fixed missing track count on various library cards (#581)
- Fixed skipped track when appending multiple tracks to the queue under certain conditions (#209)
- Fixed wrong album/track count on artist page (#599)
- Hide unplayable/emtpy playlists in "Browse playlist" pages (#424)
- Hide unplayable/empty playlists in "Browse playlist" pages (#424)
- Initial UI render using correct language from browser (#644)
- Invalid URI for reverse proxy websocket with apache (#617)
- Properly encode Wikipedia and lyrics search urls (#470)
@ -2566,7 +2566,7 @@ Bugfixes:
or adding tracks to queue (#464)
- Fix broken icons in playlist editor (#515)
- Fixed a few untranslated strings (#559)
- Fixed splitted album when importing from federation (#346)
- Fixed split album when importing from federation (#346)
- Fixed toggle mute in volume bar does not restore previous volume level (#514)
- Fixed wrong env file URL and display bugs in deployment documentation (#520)
- Fixed wrong title in PlayButton (#435)
@ -2841,7 +2841,7 @@ Features:
- Complete redesign of the library home and playlist pages (#284)
- Expose ActivityPub actors for users (#317)
- Implemented a basic but functionnal Github-like search on federated tracks
- Implemented a basic but functional Github-like search on federated tracks
list (#344)
- Internationalized interface as well as translations for Arabic, French,
Esperanto, Italian, Occitan, Polish, Portuguese and Swedish (#161, #167)
@ -3002,7 +3002,7 @@ This is the type of query you can run:
- ``artist:"System of a Down" domain:instance.funkwhale`` search for results where artist name equals "System of a Down" and inside "instance.funkwhale" library
Ensure MEDIA_ROOT, STATIC_ROOT and MUSIC_DIRECTORY_* are set explicitely [Manual action required]
Ensure MEDIA_ROOT, STATIC_ROOT and MUSIC_DIRECTORY_* are set explicitly [Manual action required]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
In our default .env file, MEDIA_ROOT and STATIC_ROOT were commented by default, causing
@ -3122,10 +3122,10 @@ Invitations generation and management requires the "settings" permission.
Removed front-end and back-end coupling
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Eventhough Funkwhale's front-end has always been a Single Page Application,
Even though Funkwhale's front-end has always been a Single Page Application,
talking to an API, it was only able to talk to an API on the same domain.
There was no real technical justification behind this (only lazyness), and it was
There was no real technical justification behind this (only laziness), and it was
also blocking interesting use cases:
- Use multiple customized versions of the front-end with the same instance
@ -3168,7 +3168,7 @@ Bugfixes:
- Ensure radios can only be edited and deleted by their owners (#311)
- Fixed admin menu not showing after login (#245)
- Fixed broken pagination in Subsonic API (#295)
- Fixed duplicated websocket connexion on timeline (#287)
- Fixed duplicated websocket connection on timeline (#287)
Documentation:
@ -3404,7 +3404,7 @@ Bugfixes:
(#106)
- Fixed a few broken translations strings (#227)
- Fixed broken ordering in front-end lists (#179)
- Fixed ignored page_size paremeter on artist and favorites list (#240)
- Fixed ignored page_size parameter on artist and favorites list (#240)
- Read ID3Tag Tracknumber from TRCK (#220)
- We now fetch album covers regardless of the import methods (#231)
@ -3426,7 +3426,7 @@ This is the first bit of an ongoing work that will span several releases, to
bring more powerful library management features to Funkwhale. This iteration
includes a basic file management interface where users with the "library"
permission can list and search available files, order them using
various criterias (size, bitrate, duration...) and delete them.
various criteria (size, bitrate, duration...) and delete them.
New "upload" permission
^^^^^^^^^^^^^^^^^^^^^^^
@ -3534,10 +3534,10 @@ tend to be a lot bigger than other files, you may want to increase the
``client_max_body_size`` value in your Nginx configuration if you plan
to upload flac files.
Missing subsonic configuration bloc in vhost files
Missing subsonic configuration block in vhost files
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Because of a missing bloc in the sample Nginx and Apache configurations,
Because of a missing block in the sample Nginx and Apache configurations,
instances that were deployed after the 0.13 release are likely to be unable
to answer to Subsonic clients (the missing bits were properly documented
in the changelog).
@ -3620,7 +3620,7 @@ additional information about audio files:
- Duration
This change is not retroactive, meaning already imported files will lack those
informations. The interface and API should work as before in such case, however,
information. The interface and API should work as before in such case, however,
we offer a command to deal with legacy files and populate the missing values.
On docker setups:
@ -3724,7 +3724,7 @@ Most advanced Subsonic clients support offline caching of music files,
playlist management and search, which makes them well-suited for nomadic use.
Please see `our list of supported apps <https://funkwhale.audio/en_US/apps>`_
for more informations about supported clients and user instructions.
for more information about supported clients and user instructions.
At the instance-level, the Subsonic API is enabled by default, but require
and additional endpoint to be added in you reverse-proxy configuration.
@ -3907,7 +3907,7 @@ of emails:
- Password reset emails, enabling user to reset their password without an admin's intervention
Email sending is disabled by default, as it requires additional configuration.
In this mode, emails are simply outputed on stdout.
In this mode, emails are simply outputted on stdout.
If you want to actually send those emails to your users, you should edit your
.env file and tweak the ``EMAIL_CONFIG`` variable. See :data:`EMAIL_CONFIG <config.settings.common.EMAIL_CONFIG>`
@ -4046,7 +4046,7 @@ This is for real this time, and includes:
- Following other Funkwhale libraries
- Importing tracks from remote libraries (tracks are hotlinked, and only cached for a short amount of time)
- Searching accross federated catalogs
- Searching across federated catalogs
Note that by default, federation is opt-in, on a per-instance basis:
instances will request access to your catalog, and you can accept or refuse
@ -4196,7 +4196,7 @@ Bugfixes:
- Fixed broken import request admin (#115)
- Fixed forced redirection to login event with
API_AUTHENTICATION_REQUIRED=False (#119)
- Fixed position not being reseted properly when playing the same track
- Fixed position not being reset properly when playing the same track
multiple times in a row
- Fixed synchronized start/stop radio buttons for all custom radios (#103)
- Fixed typo and missing icon on homepage (#96)
@ -4269,7 +4269,7 @@ To prepare for new realtime features and enable websocket support in Funkwhale,
we are now using django-channels and daphne to serve HTTP and websocket traffic.
This replaces gunicorn and the switch should be easy assuming you
follow the upgrade process described bellow.
follow the upgrade process described below.
If you are using docker, please remove the command instruction inside the
api service, as the up-to-date command is now included directly in the image
@ -4400,7 +4400,7 @@ Basic transcoding is now available to/from the following formats : ogg and mp3.
This relies internally on FFMPEG and can put some load on your server.
It's definitely recommended you setup some caching for the transcoded files
at your webserver level. Check the the exemple nginx file at deploy/nginx.conf
at your webserver level. Check the the example nginx file at deploy/nginx.conf
for an implementation.
On the frontend, usage of transcoding should be transparent in the player.
@ -4454,7 +4454,7 @@ an import is made.
0.3.1
------------------
- Revamped all import logic, everything is more tested and consistend
- Revamped all import logic, everything is more tested and consistent
- Can now use Acoustid in file imports to automatically grab metadata from musicbrainz
- Brand new file import wizard
@ -4513,7 +4513,7 @@ Tech:
Features:
- Models: now store relese group mbid on Album model (#7)
- Models: now store release group mbid on Album model (#7)
- Models: now bind import job to track files (#44)
Bugfixes:

Wyświetl plik

@ -5,7 +5,7 @@ set -e
# environment variables just to support cookiecutter out of the box. That makes no sense, so this little entrypoint
# does all this for us.
if [ -z "$DATABASE_URL" ]; then
# the official postgres image uses 'postgres' as default user if not set explictly.
# the official postgres image uses 'postgres' as default user if not set explicitly.
if [ -z "$POSTGRES_ENV_POSTGRES_USER" ]; then
export POSTGRES_ENV_POSTGRES_USER=postgres
fi

Wyświetl plik

@ -81,7 +81,7 @@ Path to a .env file to load
"""
if env_file:
logger.info("Loading specified env file at %s", env_file)
# we have an explicitely specified env file
# we have an explicitly specified env file
# so we try to load and it fail loudly if it does not exist
env.read_env(env_file)
else:
@ -493,7 +493,7 @@ bucket.
ACLs and bucket policies are distinct concepts, and some storage
providers (ie Linode, Scaleway) will always apply the most restrictive between
a bucket's ACL and policy, meaning a default private ACL will supercede
a bucket's ACL and policy, meaning a default private ACL will supersede
a relaxed bucket policy.
If present, the value should be a valid canned ACL.
@ -1258,7 +1258,7 @@ able to read this directory.
Dont insert a slash at the end of this path.
"""
# When this is set to default=True, we need to reenable migration music/0042
# When this is set to default=True, we need to re-enable migration music/0042
# to ensure data is populated correctly on existing pods
MUSIC_USE_DENORMALIZATION = env.bool("MUSIC_USE_DENORMALIZATION", default=True)

Wyświetl plik

@ -11,7 +11,7 @@ QUERY_REGEX = re.compile(r'(((?P<key>\w+):)?(?P<value>"[^"]+"|[\S]+))')
def parse_query(query):
"""
Given a search query such as "hello is:issue status:opened",
returns a list of dictionnaries discribing each query token
returns a list of dictionaries describing each query token
"""
matches = [m.groupdict() for m in QUERY_REGEX.finditer(query.lower())]
for m in matches:
@ -25,7 +25,7 @@ def normalize_query(
findterms=re.compile(r'"([^"]+)"|(\S+)').findall,
normspace=re.compile(r"\s{2,}").sub,
):
"""Splits the query string in invidual keywords, getting rid of unecessary spaces
"""Splits the query string in individual keywords, getting rid of unnecessary spaces
and grouping quoted words together.
Example:

Wyświetl plik

@ -138,7 +138,7 @@ def chunk_queryset(source_qs, chunk_size):
def join_url(start, end):
if end.startswith("http://") or end.startswith("https://"):
# alread a full URL, joining makes no sense
# already a full URL, joining makes no sense
return end
if start.endswith("/") and end.startswith("/"):
return start + end[1:]

Wyświetl plik

@ -97,7 +97,7 @@ class FileValidator:
"MIME type '%(mimetype)s' is not valid. Allowed types are: %(allowed_mimetypes)s."
)
min_size_message = _(
"The current file %(size)s, which is too small. The minumum file size is %(allowed_size)s."
"The current file %(size)s, which is too small. The minimum file size is %(allowed_size)s."
)
max_size_message = _(
"The current file %(size)s, which is too large. The maximum file size is %(allowed_size)s."

Wyświetl plik

@ -59,7 +59,7 @@ def submit_scrobble_v1(session, scrobble_time, track, session_key, scrobble_url)
else:
raise ScrobblerException(response.text)
PLUGIN["logger"].debug("Scrobble successfull!")
PLUGIN["logger"].debug("Scrobble successful!")
def submit_now_playing_v1(session, track, session_key, now_playing_url):
@ -75,7 +75,7 @@ def submit_now_playing_v1(session, track, session_key, now_playing_url):
else:
raise ScrobblerException(response.text)
PLUGIN["logger"].debug("Now playing successfull!")
PLUGIN["logger"].debug("Now playing successful!")
def get_scrobble_payload(track, date, suffix="[0]"):

Wyświetl plik

@ -424,7 +424,7 @@ def is_allowed_url(url, allowed_domains):
def prepare_deliveries_and_inbox_items(recipient_list, type, allowed_domains=None):
"""
Given a list of recipients (
either actor instances, public adresses, a dictionnary with a "type" and "target"
either actor instances, public addresses, a dictionary with a "type" and "target"
keys for followers collections)
returns a list of deliveries, alist of inbox_items and a list
of urls to persist in the activity in place of the initial recipient list.

Wyświetl plik

@ -96,7 +96,7 @@ async def fetch_many(*ids, references=None):
"""
Given a list of object ids, will fetch the remote
representations for those objects, expand them
and return a dictionnary with id as the key and expanded document as the values
and return a dictionary with id as the key and expanded document as the values
"""
ids = set(ids)
results = references if references is not None else {}
@ -122,7 +122,7 @@ DEFAULT_PREPARE_CONFIG = {
def dereference(value, references):
"""
Given a payload and a dictonary containing ids and objects, will replace
Given a payload and a dictionary containing ids and objects, will replace
all the matching objects in the payload by the one in the references dictionary.
"""
@ -166,10 +166,10 @@ def get_value(value, keep=None, attr=None):
def prepare_for_serializer(payload, config, fallbacks={}):
"""
Json-ld payloads, as returned by expand are quite complex to handle, because
every attr is basically a list of dictionnaries. To make code simpler,
every attr is basically a list of dictionaries. To make code simpler,
we use this function to clean the payload a little bit, base on the config object.
Config is a dictionnary, with keys being serializer field names, and values
Config is a dictionary, with keys being serializer field names, and values
being dictionaries describing how to handle this field.
"""
final_payload = {}

Wyświetl plik

@ -30,7 +30,7 @@ MODELS = [
class Command(BaseCommand):
help = """
Find and replace wrong protocal/domain in local federation ids.
Find and replace wrong protocol/domain in local federation ids.
Use with caution and only if you know what you are doing.
"""

Wyświetl plik

@ -328,7 +328,7 @@ def fetch(fetch_obj):
auth = None
try:
if url.startswith("webfinger://"):
# we first grab the correpsonding webfinger representation
# we first grab the corresponding webfinger representation
# to get the ActivityPub actor ID
webfinger_data = webfinger.get_resource(
"acct:" + url.replace("webfinger://", "")
@ -552,8 +552,8 @@ def fetch_collection(url, max_pages, channel, is_page=False):
"total": 0,
}
if is_page:
# starting immediatly from a page, no need to fetch the wrapping collection
logger.debug("Fetch collection page immediatly at %s", url)
# starting immediately from a page, no need to fetch the wrapping collection
logger.debug("Fetch collection page immediately at %s", url)
results["next_page"] = url
else:
logger.debug("Fetching collection object at %s", url)
@ -644,7 +644,7 @@ def check_single_remote_instance_availability(domain):
except Exception as e:
logger.info(
f"Domain {domain.name} could not be reached because of the following error : {e}. \
Setting domain as unreacheable."
Setting domain as unreachable."
)
domain.reachable = False
domain.save()
@ -657,7 +657,7 @@ def check_single_remote_instance_availability(domain):
return domain.reachable
else:
logger.info(
f"Domain {domain.name} is not reacheable at the moment. Setting domain as unreacheable."
f"Domain {domain.name} is not reachable at the moment. Setting domain as unreachable."
)
domain.reachable = False
domain.save()

Wyświetl plik

@ -16,7 +16,7 @@ class AllowListEnabled(types.BooleanPreference):
section = moderation
name = "allow_list_enabled"
verbose_name = "Enable allow-listing"
help_text = "If enabled, only interactions with explicitely allowed domains will be authorized."
help_text = "If enabled, only interactions with explicitly allowed domains will be authorized."
default = False

Wyświetl plik

@ -84,7 +84,7 @@ class Command(BaseCommand):
)
)
if not dry_run:
self.stdout.write("[mimetypes] commiting...")
self.stdout.write("[mimetypes] committing...")
qs.update(mimetype=mimetype)
def fix_file_data(self, dry_run, **kwargs):

Wyświetl plik

@ -63,5 +63,5 @@ class Command(BaseCommand):
actor_ids=actor_ids,
upload_and_track_ids=[],
)
print("Commiting changes…")
print("Committing changes…")
TrackActor.objects.bulk_create(objs, batch_size=5000, ignore_conflicts=True)

Wyświetl plik

@ -742,7 +742,7 @@ class Upload(models.Model):
default=empty_dict, max_length=50000, encoder=DjangoJSONEncoder, blank=True
)
import_date = models.DateTimeField(null=True, blank=True)
# optionnal metadata provided during import
# optional metadata provided during import
import_metadata = JSONField(
default=empty_dict, max_length=50000, encoder=DjangoJSONEncoder, blank=True
)
@ -754,7 +754,7 @@ class Upload(models.Model):
# in the same import
import_reference = models.CharField(max_length=50, default=get_import_reference)
# optionnal metadata about import results (error messages, etc.)
# optional metadata about import results (error messages, etc.)
import_details = JSONField(
default=empty_dict, max_length=50000, encoder=DjangoJSONEncoder, blank=True
)

Wyświetl plik

@ -811,7 +811,7 @@ def albums_set_tags_from_tracks(ids=None, dry_run=False):
)
logger.info("Found automatic tags for %s albums…", len(data))
if dry_run:
logger.info("Running in dry-run mode, not commiting")
logger.info("Running in dry-run mode, not committing")
return
tags_tasks.add_tags_batch(
@ -836,7 +836,7 @@ def artists_set_tags_from_tracks(ids=None, dry_run=False):
)
logger.info("Found automatic tags for %s artists…", len(data))
if dry_run:
logger.info("Running in dry-run mode, not commiting")
logger.info("Running in dry-run mode, not committing")
return
tags_tasks.add_tags_batch(

Wyświetl plik

@ -517,7 +517,7 @@ def should_transcode(upload, format, max_bitrate=None):
# upload should have a mimetype, otherwise we cannot transcode
format_need_transcoding = False
elif upload.mimetype == utils.EXTENSION_TO_MIMETYPE[format]:
# requested format sould be different than upload mimetype, otherwise
# requested format should be different than upload mimetype, otherwise
# there is no need to transcode
format_need_transcoding = False

Wyświetl plik

@ -15,7 +15,7 @@ class DeleteAccountMutationSerializer(mutations.MutationSerializer):
if not obj.is_local or not obj.user:
raise mutations.serializers.ValidationError("Cannot delete this account")
# delete oauth apps / reset all passwords immediatly
# delete oauth apps / reset all passwords immediately
obj.user.set_unusable_password()
obj.user.subsonic_api_token = None
# force logout

Wyświetl plik

@ -20,7 +20,7 @@ function usage_message()
echo -e "\thelp\t\tPrint this help"
echo -e "\n\tCommands that require superuser permission:"
echo -e "\tinstall\t\tInstall packages defined on ${OS_REQUIREMENTS_FILENAME} file. Note: This\n\t\t\t does not upgrade the packages already installed for new\n\t\t\t versions, even if new version is available in the repository."
echo -e "\tupgrade\t\tSame that install, but upgrate the already installed packages,\n\t\t\t if new version is available."
echo -e "\tupgrade\t\tSame that install, but upgrade the already installed packages,\n\t\t\t if new version is available."
}

Wyświetl plik

@ -13,7 +13,7 @@ if __name__ == "__main__":
# we're doing this here since otherwise, missing environment
# files in settings result in AttributeError being raised, generating
# a cryptic django.core.exceptions.AppRegistryNotReady error.
# To prevent that, we explicitely load settings here before anything
# To prevent that, we explicitly load settings here before anything
# else, so we fail fast with a relevant error. See #140 for more details.
django.setup()

Wyświetl plik

@ -100,7 +100,7 @@ def local_cache():
@pytest.fixture
def factories(db):
"""
Returns a dictionnary containing all registered factories with keys such as
Returns a dictionary containing all registered factories with keys such as
users.User or music.Track
"""
from funkwhale_api import factories
@ -117,7 +117,7 @@ def factories(db):
@pytest.fixture
def nodb_factories():
"""
Returns a dictionnary containing all registered factories with a build strategy
Returns a dictionary containing all registered factories with a build strategy
that does not require access to the database
"""
from funkwhale_api import factories

Wyświetl plik

@ -153,11 +153,11 @@ def test_import_track_with_different_artist_than_release(factories, mocker):
@pytest.mark.parametrize(
"extention,mimetype", [("ogg", "audio/ogg"), ("mp3", "audio/mpeg")]
"extension,mimetype", [("ogg", "audio/ogg"), ("mp3", "audio/mpeg")]
)
def test_audio_track_mime_type(extention, mimetype, factories):
def test_audio_track_mime_type(extension, mimetype, factories):
name = ".".join(["test", extention])
name = ".".join(["test", extension])
path = os.path.join(DATA_DIR, name)
upload = factories["music.Upload"](audio_file__from_path=path, mimetype=None)

Wyświetl plik

@ -140,7 +140,7 @@ def test_can_use_radio_session_to_filter_choices(factories):
for i in range(10):
radio.pick(filter_playable=False)
# ensure 10 differents tracks have been suggested
# ensure 10 different tracks have been suggested
tracks_id = [
session_track.track.pk for session_track in session.session_tracks.all()
]

Wyświetl plik

@ -1 +1 @@
Fixed upload form VUE erros (#1738) (1738)
Fixed upload form VUE errors (#1738) (1738)

Wyświetl plik

@ -1 +1 @@
Allow arbritrary length names for artists, albums and tracks
Allow arbitrary length names for artists, albums and tracks

Wyświetl plik

@ -16,7 +16,7 @@ curl -L -o /srv/funkwhale/docker-compose.yml "https://dev.funkwhale.audio/funkwh
Docker's resolver <https://docs.funkwhale.audio/admin/external-storages.html#no-resolver-found>`_, you can mount your
custom nginx configuration into the container. Uncomment the commented volumes in the `nginx` section of your `docker-compose.yml`.
Additionally you need to update the paths in `nginx/funkwhale.template`.
Replace all occurances of `/funkwhale` by `/usr/share/nginx/html`.
Replace all occurrences of `/funkwhale` by `/usr/share/nginx/html`.
This loads the templates from your `nginx` folder and overrides the template files in the Docker container.
```

Wyświetl plik

@ -1 +1 @@
Fix conent form autofocus despite `autofocus` prop being set to `false` (#1924)
Fix content form autofocus despite `autofocus` prop being set to `false` (#1924)

Wyświetl plik

@ -48,7 +48,7 @@ sudo ENV_FILE=/srv/funkwhale-demo/.env ./setup.sh
## Automate
You'll probaby want to reset the demo every now and then. You can do that
You'll probably want to reset the demo every now and then. You can do that
using a cronjob:
```

Wyświetl plik

@ -55,7 +55,7 @@ type: String
value: cn=admin,dc=domain,dc=com
---
LDAP user {abbr}`DN (Distinguised Name)` to bind on so you can perform searches.
LDAP user {abbr}`DN (Distinguished Name)` to bind on so you can perform searches.
```
```{py:data} LDAP_BIND_PASSWORD
@ -64,7 +64,7 @@ type: String
value: bindpassword
---
LDAP user password for bind {abbr}`DN (Distinguised Name)`.
LDAP user password for bind {abbr}`DN (Distinguished Name)`.
```
```{py:data} LDAP_SEARCH_FILTER
@ -91,7 +91,7 @@ type: String
value: dc=domain,dc=com
---
The LDAP search root {abbr}`DN (Distinguised Name)`. Supports several entries in a comma-delimited list.
The LDAP search root {abbr}`DN (Distinguished Name)`. Supports several entries in a comma-delimited list.
```
```{py:data} LDAP_USER_ATTR_MAP
@ -126,7 +126,7 @@ type: String
value: ou=groups,dc=domain,dc=com
---
The LDAP group search root {abbr}`DN (Distinguised Name)`. This needs to be set to `True` to enable group features.
The LDAP group search root {abbr}`DN (Distinguished Name)`. This needs to be set to `True` to enable group features.
```
```{py:data} LDAP_GROUP_FILTER

Wyświetl plik

@ -177,7 +177,7 @@ You need to initialize the postgres container on your {term}`destination server`
## 5. Check your DNS settings
Before you start Funkwhale on your {term}`destination server`, check your DNS changes have propogated. Once your hostname is pointing to your {term}`destination server's <destination server>` IP address, proceed to the next step.
Before you start Funkwhale on your {term}`destination server`, check your DNS changes have propagated. Once your hostname is pointing to your {term}`destination server's <destination server>` IP address, proceed to the next step.
## 6. Start your new Funkwhale installation

Wyświetl plik

@ -60,7 +60,7 @@ docker-compose run --rm api python manage.py create_library username1 --name="Li
Created library Library 1 for user username1 with UUID 436da05b-8cb1-4a4d-b870-4a3b235d8517
```
### Create a new library wth no name or privacy level
### Create a new library with no name or privacy level
You can create a library using only a username. The script substitutes default values for the library name and privacy level.

Wyświetl plik

@ -77,7 +77,7 @@ Actor:
fid:
type: string
format: uri
description: "The actor Federation ID (unique accross federation)"
description: "The actor Federation ID (unique across federation)"
uuid:
type: string
format: uuid
@ -131,7 +131,7 @@ BaseArtist:
fid:
type: string
format: uri
description: "The artist Federation ID (unique accross federation)"
description: "The artist Federation ID (unique across federation)"
name:
type: "string"
example: "System of a Down"
@ -140,7 +140,7 @@ BaseArtist:
format: "date-time"
is_local:
type: "boolean"
description: "Indicates if the object was initally created locally or on another server"
description: "Indicates if the object was initially created locally or on another server"
Artist:
type: "object"
@ -177,7 +177,7 @@ BaseAlbum:
fid:
type: string
format: uri
description: "The album Federation ID (unique accross federation)"
description: "The album Federation ID (unique across federation)"
artist:
type: "integer"
format: "int64"
@ -198,7 +198,7 @@ BaseAlbum:
$ref: "#/Attachment"
is_local:
type: "boolean"
description: "Indicates if the object was initally created locally or on another server"
description: "Indicates if the object was initially created locally or on another server"
Album:
type: "object"
@ -332,7 +332,7 @@ Library:
fid:
type: string
format: uri
description: "The library Federation ID (unique accross federation)"
description: "The library Federation ID (unique across federation)"
uuid:
type: string
format: uuid
@ -427,7 +427,7 @@ BaseTrack:
fid:
type: string
format: uri
description: "The track Federation ID (unique accross federation)"
description: "The track Federation ID (unique across federation)"
artist:
type: "integer"
format: "int64"
@ -462,7 +462,7 @@ BaseTrack:
example: "cc-by-nc-nd-4.0"
is_local:
type: "boolean"
description: "Indicates if the object was initally created locally or on another server"
description: "Indicates if the object was initially created locally or on another server"
AlbumTrack:
type: "object"
@ -557,7 +557,7 @@ Upload:
description: "URL to stream the upload"
is_local:
type: "boolean"
description: "Indicates if the object was initally created locally or on another server"
description: "Indicates if the object was initially created locally or on another server"
OwnedLibraryCreate:
type: "object"

Wyświetl plik

@ -92,7 +92,7 @@ tags:
content_category:
type: "string"
description: Used to what kind of content is published in a chanel
description: Used to what kind of content is published in a channel
enum:
- music
- podcast

Wyświetl plik

@ -38,7 +38,7 @@ When creating an application you need to define the [**scopes**](https://www.rfc
- `read:<scope>`: grants read-only access to the resource
- `write:<scope>`: grants write-only access to the resource
`read` rights are required to fetch information using a `GET` request. All other actions (`POST`, `PATCH`, `PUT`, and `DELETE`) require `write` priviliges. You may give an application **both** `read` and `write` access to any scope.
`read` rights are required to fetch information using a `GET` request. All other actions (`POST`, `PATCH`, `PUT`, and `DELETE`) require `write` privileges. You may give an application **both** `read` and `write` access to any scope.
```{list-table}
:header-rows: 1

Wyświetl plik

@ -39,7 +39,7 @@ If you want to make changes to the frontend, you can use Vite to run a developme
yarn i18n-compile
```
5. Launch the devlopment server:
5. Launch the development server:
```sh
yarn dev

Wyświetl plik

@ -6228,7 +6228,7 @@ msgid ""
"This new permission is helpful if you want to give upload/import rights "
"to some users, but don't want them to be able to manage the library as a "
"whole: although there are no controls yet for managing library in the "
"fron-end, subsequent release will introduce management interfaces for "
"front-end, subsequent release will introduce management interfaces for "
"artists, files, etc."
msgstr ""

Wyświetl plik

@ -6225,7 +6225,7 @@ msgid ""
"This new permission is helpful if you want to give upload/import rights "
"to some users, but don't want them to be able to manage the library as a "
"whole: although there are no controls yet for managing library in the "
"fron-end, subsequent release will introduce management interfaces for "
"front-end, subsequent release will introduce management interfaces for "
"artists, files, etc."
msgstr ""

Wyświetl plik

@ -6225,7 +6225,7 @@ msgid ""
"This new permission is helpful if you want to give upload/import rights "
"to some users, but don't want them to be able to manage the library as a "
"whole: although there are no controls yet for managing library in the "
"fron-end, subsequent release will introduce management interfaces for "
"front-end, subsequent release will introduce management interfaces for "
"artists, files, etc."
msgstr ""

Wyświetl plik

@ -5406,7 +5406,7 @@ msgid "New \"upload\" permission"
msgstr ""
#: ../../../CHANGELOG:3375
msgid "This new permission is helpful if you want to give upload/import rights to some users, but don't want them to be able to manage the library as a whole: although there are no controls yet for managing library in the fron-end, subsequent release will introduce management interfaces for artists, files, etc."
msgid "This new permission is helpful if you want to give upload/import rights to some users, but don't want them to be able to manage the library as a whole: although there are no controls yet for managing library in the front-end, subsequent release will introduce management interfaces for artists, files, etc."
msgstr ""
#: ../../../CHANGELOG:3381

Wyświetl plik

@ -257,9 +257,9 @@ paths:
$ref: "#/components/responses/200"
/api/v1/users/me/:
get:
summary: Retrive profile information
summary: Retrieve profile information
description: |
Retrieve profile informations of the current user
Retrieve profile information of the current user
tags:
- "Auth and security"
@ -322,7 +322,7 @@ paths:
/api/v1/rate-limit/:
get:
summary: Retrive rate-limit information and current usage status
summary: Retrieve rate-limit information and current usage status
tags:
- "Auth and security"
@ -1658,7 +1658,7 @@ paths:
type: boolean
default: false
description: |
Wether to raise an error when the same track is added
Whether to raise an error when the same track is added
multiple time in the playlist
responses:
201:

Wyświetl plik

@ -53,7 +53,7 @@ This guide shows you how to tag your content with MusicBrainz Picard.
Used if no license found in the `License` tag.
- `CC-BY 3.0: http://creativecommons.org/licenses/cc-by/3.0/`
* - `Pictures`
- The first embeded picture found is used as the album cover.
- The first embedded picture found is used as the album cover.
-
* - `MusicBrainz Recording ID`
- The MusicBrainz ID for the recording.

Wyświetl plik

@ -7930,7 +7930,7 @@ msgstr ""
#: src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8502,7 +8502,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8221,7 +8221,7 @@ msgstr "Es tancarà la sessió daquest compte i hauràs diniciar sessió a
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
#, fuzzy
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Es redirigirà a <strong>%{ url }</strong>"

Wyświetl plik

@ -8391,7 +8391,7 @@ msgstr "Budete odhlášeni z tohoto sezení a musíte se přihlásit znovu"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
#, fuzzy
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Budete přesměrováni na <strong>%{ url }</strong>"

Wyświetl plik

@ -8098,7 +8098,7 @@ msgstr "Du wirst von dieser Sitzung abgemeldet und du musst dich mit deinem neue
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Du wirst zur Authentifizierung zu %{ url } weitergeleitet."

Wyświetl plik

@ -8105,7 +8105,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8254,7 +8254,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "You will be redirected to %{ domain } to authenticate."

Wyświetl plik

@ -8407,7 +8407,7 @@ msgstr "Vi estos elŝaluta el tiu seanco kaj devus ensaluti denove"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8376,7 +8376,7 @@ msgstr "Se cerrará esta sesión y tendrás que reiniciar sesión con la nueva c
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8068,7 +8068,7 @@ msgstr "Saio hau amaituko zaizu eta berriarekin hasi beharko duzu"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "%{ domain } domeinura birbideratua izango zara baimentzeko."

Wyświetl plik

@ -8065,7 +8065,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8135,7 +8135,7 @@ msgstr "Vous allez être déconnecté⋅e de cette session et vous devrez vous c
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Vous allez être redirigé·e vers %{ domain } pour vous authentifier."

Wyświetl plik

@ -7904,7 +7904,7 @@ msgid "You will be logged out from this session and have to log in with the new
msgstr ""
#: front/src/components/auth/LoginForm.vue:49 src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8098,7 +8098,7 @@ msgstr "Pecharemos esta sesión e deberás acceder co novo"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Ímoste redirixir a %{ domain } para autenticarte."

Wyświetl plik

@ -8119,7 +8119,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -7903,7 +7903,7 @@ msgid "You will be logged out from this session and have to log in with the new
msgstr ""
#: front/src/components/auth/LoginForm.vue:49 src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8102,7 +8102,7 @@ msgstr "Sarai disconnesso da questa sessione e dovrai accedere con una nuova"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Sarai reindirizzato su %{ domain } per autenticarti."

Wyświetl plik

@ -8075,7 +8075,7 @@ msgstr "このセッションからログアウトされ、新しくログイン
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "認証のために%{ domain }にリダイレクトされます。"

Wyświetl plik

@ -8144,7 +8144,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8041,7 +8041,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8094,7 +8094,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8565,7 +8565,7 @@ msgstr "Du vil bli logget ut av denne økta, og må logge inn i den nye"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8217,7 +8217,7 @@ msgstr "Je wordt uitgelogd uit deze sessie moet inloggen op de nieuwe"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Je wordt doorgestuurd naar %{ domain } om te authenticeren."

Wyświetl plik

@ -8060,7 +8060,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8100,7 +8100,7 @@ msgstr "Sètz per èsser desconnectat daquesta session e vos caldrà vos conn
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Seretz mandat a <strong>%{ url }</strong>."

Wyświetl plik

@ -8098,7 +8098,7 @@ msgstr "Zostaniesz wylogowany i będziesz musiał zalogować się nowym hasłem"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Zostaniesz przekierowany do %{ domain } w celu uwierzytelnienia."

Wyświetl plik

@ -8213,7 +8213,7 @@ msgstr "Você sairá desta conta e precisará entrar novamente"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
#, fuzzy
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Você será redirecionado para <strong>%{ url }</strong>"

Wyświetl plik

@ -8411,7 +8411,7 @@ msgstr "Você será desconectado desta sessão e precisará fazer login com o no
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8097,7 +8097,7 @@ msgstr "Вы будете отключены от этого сеанса и В
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "Вы будете перенаправлены на %{ domain } для входа."

Wyświetl plik

@ -8060,7 +8060,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8749,7 +8749,7 @@ msgstr "Du kommer att loggas ut från den här sessionen och måste logga in med
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -7904,7 +7904,7 @@ msgid "You will be logged out from this session and have to log in with the new
msgstr ""
#: front/src/components/auth/LoginForm.vue:49 src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -8040,7 +8040,7 @@ msgstr "您将立刻被登出,需要重新登录"
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr "您将会被跳转到 %{ domain } 以授权登录。"

Wyświetl plik

@ -8063,7 +8063,7 @@ msgstr ""
#: front/src/components/auth/LoginForm.vue:49
#: src/components/auth/LoginForm.vue:2
msgctxt "Contant/Auth/Paragraph"
msgctxt "Content/Auth/Paragraph"
msgid "You will be redirected to %{ domain } to authenticate."
msgstr ""

Wyświetl plik

@ -62,7 +62,7 @@
// NOTE: Filter out repeating and unplayable media types
.filter(({ mimetype }, index, array) => array.findIndex((upload) => upload.mimetype === mimetype) === index)
.filter(({ mimetype }) => ['probably', 'maybe'].includes(audio.element?.canPlayType(mimetype)))
// NOTE: For backwards compatibilty, prepend the baseUrl if listen_url starts with a slash
// NOTE: For backwards compatibility, prepend the baseUrl if listen_url starts with a slash
.map(source => ({
...source,
listen_url: source.listen_url[0] === '/'

Wyświetl plik

@ -217,7 +217,7 @@ Given the previous config, the following style sheet:
.. code-block:: css
.unsed.variation {
.unused.variation {
color: yellow;
}
@ -837,7 +837,7 @@ def set_vars(component_name, rules):
for rule in rules:
if rule["lines"][0].startswith("@media"):
# manual handling of media queries, becaues our parser is really
# manual handling of media queries, because our parser is really
# simplistic
internal_rules = rules_from_media_query(rule)
internal_rules = set_vars(component_name, internal_rules)

Wyświetl plik

@ -103,7 +103,7 @@ onMounted(() => {
const openMenu = () => {
// little magic to ensure the menu is always visible in the viewport
// By default, try to diplay it on the right if there is enough room
// By default, try to display it on the right if there is enough room
const menu = dropdown.value.find('.menu')
const viewportOffset = menu.get(0)?.getBoundingClientRect() ?? { right: 0, left: 0 }
const viewportWidth = document.documentElement.clientWidth

Wyświetl plik

@ -115,7 +115,7 @@ const fetchData = async () => {
try {
const response = await axios.get('tracks/', { params })
// TODO (wvffle): Fetch continously?
// TODO (wvffle): Fetch continuously?
fetchDataUrl.value = response.data.next
additionalTracks.value = response.data.results
totalTracks.value = response.data.count

Wyświetl plik

@ -137,7 +137,7 @@ const submit = async () => {
<template v-else>
<p>
<translate
translate-context="Contant/Auth/Paragraph"
translate-context="Content/Auth/Paragraph"
:translate-params="{domain: $store.getters['instance/domain']}"
>
You will be redirected to %{ domain } to authenticate.

Wyświetl plik

@ -961,7 +961,7 @@ fetchOwnedApps()
<div>
<p>
<translate translate-context="Popup/Settings/Paragraph">
This is irreversible and will permanently remove your data from our servers. You will we immediatly logged out.
This is irreversible and will permanently remove your data from our servers. You will we immediately logged out.
</translate>
</p>
</div>

Wyświetl plik

@ -98,7 +98,7 @@ const toggleCheck = (event: MouseEvent, id: string, index: number) => {
selectAll.value = false
}
// Add inbetween ids to the list of affected ids
// Add in between ids to the list of affected ids
if (event.shiftKey && lastCheckedIndex.value !== -1) {
const boundaries = [index, lastCheckedIndex.value].sort((a, b) => a - b)
for (const object of props.objectsData.results.slice(boundaries[0], boundaries[1] + 1)) {

Wyświetl plik

@ -67,7 +67,7 @@ const targets = reactive({
const fetchTargets = async () => {
// we request target data via the API so we can display previous state
// additionnal data next to the edit card
// additional data next to the edit card
type Config = { url: string, ids: number[] }
const typesAndIds: Record<Targets, Config> = {
artist: { url: 'artists/', ids: [] },

Wyświetl plik

@ -43,7 +43,7 @@ export const usePlayer = createGlobalState(() => {
sound.pause()
})
// Create first track when we initalize the page
// Create first track when we initialize the page
// NOTE: We want to have it called only once, hence we're using createGlobalState
const initializeFirstTrack = createGlobalState(() => tryOnMounted(() => {
const { initialize } = useTracks()

Wyświetl plik

@ -16,7 +16,7 @@ async function useErrorHandler (error: Error | BackendError, eventId?: string):
? 'Unexpected API error'
: 'Unexpected error'
let content = $pgettext('App/Message/Paragraph', 'An unexpected error occured.')
let content = $pgettext('App/Message/Paragraph', 'An unexpected error occurred.')
if ('backendErrors' in error) {
logger.error(title, error, error.backendErrors)
@ -35,7 +35,7 @@ async function useErrorHandler (error: Error | BackendError, eventId?: string):
const { get } = useCookies()
if (get(COOKIE) === 'yes') {
content = $pgettext('App/Message/Paragraph', 'An unexpected error occured. <br><sub>To help us understand why it happened, please attach a detailed description of what you did that has triggered the error.</sub>')
content = $pgettext('App/Message/Paragraph', 'An unexpected error occurred. <br><sub>To help us understand why it happened, please attach a detailed description of what you did that has triggered the error.</sub>')
const user = store.state.auth.authenticated
? {
name: store.state.auth.username,

Wyświetl plik

@ -1,6 +1,6 @@
@use "./_vars" as *;
// not in vars because not meant to be overriden
// not in vars because not meant to be overridden
$desktop-sidebar-width: 275px;
$widedesktop-sidebar-width: 275px;
$bottom-player-height: 4rem;

Wyświetl plik

@ -85,7 +85,7 @@ const updateObj = async (attr: string) => {
try {
await axios.patch(`manage/library/libraries/${props.id}/`, params)
logger.info(`${attr} was updated succcessfully to ${params[attr]}`)
logger.info(`${attr} was updated successfully to ${params[attr]}`)
} catch (error) {
logger.error(`Error while setting ${attr} to ${params[attr]}`, error)
// TODO (wvffle): Use error handler with custom msg

Wyświetl plik

@ -127,7 +127,7 @@ const updateUser = async (attr: string, toNull = false) => {
try {
await axios.patch(`manage/users/users/${object.value.user.id}/`, params)
logger.info(`${attr} was updated succcessfully to ${newValue}`)
logger.info(`${attr} was updated successfully to ${newValue}`)
} catch (error) {
logger.error(`Error while setting ${attr} to ${newValue}`, error)
// TODO: Use error handler

Wyświetl plik

@ -65,3 +65,7 @@ force-exclude = "(api/.*/migrations/.*)" # pre-commit pass files as args
profile = "black"
extend_skip_glob = ["api/*/migrations/*"]
known_first_party = ["funkwhale_api", "config"]
[tool.codespell]
ignore-words = ".codespellignore"
skip = "*.po,*.pot,*.lock,api/funkwhale_api/common/locales.py"

Wyświetl plik

@ -30,7 +30,7 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="""
Exit with code 0 if the given version matches the latest one
fron the list of releases found in releases_json. Primary use
from the list of releases found in releases_json. Primary use
is to check whether the current version can be safely pushed
as the latest one on the docker Hub.
"""