by roundabout, Monday, 10 June 2024, 13:51:42 (1718027502), pushed by roundabout, Wednesday, 31 July 2024, 06:54:49 (1722408889)
Author identity: vlad <vlad.muntoiu@gmail.com>
7afcb831b60b23a16b899708c83ccc1f9ff57804
api.py
@@ -0,0 +1,40 @@
import uuid
from models import *
from app import app, db, bcrypt
from misc_utils import *
from common import git_command
import os
import shutil
import config
import flask
import git
import subprocess
from flask_httpauth import HTTPBasicAuth
import zlib
import re
import datetime
auth = HTTPBasicAuth(realm=config.AUTH_REALM + " Data API")
api_app = flask.Blueprint("api_app", __name__, template_folder="templates/api/", url_prefix="/data-api/")
@auth.verify_password
def verify_password(username, password):
user = User.query.filter_by(username=username).first()
if user and bcrypt.check_password_hash(user.password_hashed, password):
flask.g.user = username
return True
return False
@api_app.route("/", methods=["GET"])
def welcome():
response = flask.make_response(flask.render_template("welcome.xml"))
response.headers["Content-Type"] = "application/xml"
return response
app.register_blueprint(api_app)
app.py
@@ -71,6 +71,7 @@ migrate = Migrate(app, db)
from misc_utils import *
import git_http
import api
import jinja_utils
import celery_tasks
from celery import Celery, Task
@@ -121,6 +122,7 @@ def default():
"config": config,
"Markup": Markup,
"locale_names": locale_names,
"set": set, # since using {} is impossible in Jinja
}
i18n/messages.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-03 09:47+0300\n"
"POT-Creation-Date: 2024-06-07 16:19+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,79 +17,79 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.14.0\n"
#: app.py:97 templates/default.html:158
#: app.py:98 templates/default.html:158
msgid "English"
msgstr ""
#: app.py:231 app.py:246
#: app.py:232 app.py:247
msgid "Settings saved"
msgstr ""
#: app.py:360
#: app.py:361
msgid "Successfully logged in as {username}"
msgstr ""
#: app.py:367
#: app.py:368
msgid "User not found"
msgstr ""
#: app.py:373
#: app.py:374
msgid "Invalid password"
msgstr ""
#: app.py:388
#: app.py:389
msgid "Usernames may only contain Latin alphabet, numbers and '-'"
msgstr ""
#: app.py:393
#: app.py:394
msgid "Usernames may not contain consecutive hyphens"
msgstr ""
#: app.py:398
#: app.py:399
msgid "Usernames may not start or end with a hyphen"
msgstr ""
#: app.py:404
#: app.py:405
msgid "Sorry, {username} is a system path"
msgstr ""
#: app.py:414
#: app.py:415
msgid "Usernames must be lowercase, so it's been converted automatically"
msgstr ""
#: app.py:421
#: app.py:422
msgid "The username {username} is taken"
msgstr ""
#: app.py:428
#: app.py:429
msgid "Make sure the passwords match"
msgstr ""
#: app.py:438
#: app.py:439
msgid "Successfully created and logged in as {username}"
msgstr ""
#: app.py:463
#: app.py:464
msgid "Repository names may only contain Latin alphabet, numbers, '-' and '_'"
msgstr ""
#: app.py:474
#: app.py:475
msgid "Successfully created repository {name}"
msgstr ""
#: app.py:484
#: app.py:485
msgid "Successfully logged out"
msgstr ""
#: app.py:1444
#: app.py:1445
msgid "Bad branch name"
msgstr ""
#: app.py:1451
#: app.py:1452
msgid "Head can't be restricted"
msgstr ""
#: app.py:1618
#: app.py:1621
msgid ""
"Your repository {repository} has been demoted from a primary site to a "
"regular site because there can only be one primary site per user."
@@ -290,18 +290,6 @@ msgstr ""
msgid "Download file"
msgstr ""
#: templates/forbidden.html:3
msgid "403"
msgstr ""
#: templates/forbidden.html:6
msgid "403 forbidden"
msgstr ""
#: templates/forbidden.html:9
msgid "You are not authorised to access this resource."
msgstr ""
#: templates/home.html:3 templates/repository/repo-file.html:24
#: templates/repository/repo-tree.html:24
msgid "Home"
@@ -385,18 +373,6 @@ msgid ""
" here"
msgstr ""
#: templates/method-not-allowed.html:3
msgid "405"
msgstr ""
#: templates/method-not-allowed.html:6
msgid "405 method not allowed"
msgstr ""
#: templates/method-not-allowed.html:9
msgid "This resource is not intended to be accessed with the current method."
msgstr ""
#: templates/new-repo.html:17
msgid "Name"
msgstr ""
@@ -441,18 +417,6 @@ msgstr ""
msgid "Contact Us"
msgstr ""
#: templates/not-found.html:3
msgid "404"
msgstr ""
#: templates/not-found.html:6
msgid "404 not found"
msgstr ""
#: templates/not-found.html:9
msgid "The resource you have requested is not available on this server."
msgstr ""
#: templates/notifications.html:14
msgid "Mark all as read"
msgstr ""
@@ -534,9 +498,9 @@ msgstr ""
msgid "Remove favourite"
msgstr ""
#: templates/repository/repo-log.html:5 templates/search.html:4
#: templates/search.html:4
#, python-format
msgid "History of %(username)s/%(repository)s"
msgid "Repository listing: %(query)s"
msgstr ""
#: templates/task-monitor.html:3
@@ -549,72 +513,60 @@ msgstr ""
msgid "Task %(result_id)s"
msgstr ""
#: templates/task-monitor.html:11
#: templates/task-monitor.html:12
msgid "Task results"
msgstr ""
#: templates/task-monitor.html:15
#: templates/task-monitor.html:16
msgid "Done"
msgstr ""
#: templates/task-monitor.html:18
#: templates/task-monitor.html:19
msgid "Running..."
msgstr ""
#: templates/task-monitor.html:24
#: templates/task-monitor.html:26 templates/task-monitor.html:37
msgid "Info"
msgstr ""
#: templates/task-monitor.html:28
#: templates/task-monitor.html:30 templates/task-monitor.html:41
msgid "Errors"
msgstr ""
#: templates/task-monitor.html:33
#: templates/task-monitor.html:46
msgid "Cannot merge your branches"
msgstr ""
#: templates/task-monitor.html:35
#: templates/task-monitor.html:48
msgid ""
"Since we can't help you with this yet, you'll need to resolve the merge "
"conflicts on your own computer."
msgstr ""
#: templates/task-monitor.html:38
#: templates/task-monitor.html:51
msgid "In a shell inside your repository execute:"
msgstr ""
#: templates/task-monitor.html:47
#: templates/task-monitor.html:60
msgid "Then fix your conflicts, merge, and finally, run:"
msgstr ""
#: templates/task-monitor.html:52
#: templates/task-monitor.html:65
msgid "and push the changes."
msgstr ""
#: templates/task-monitor.html:59
#: templates/task-monitor.html:72
msgid "Resolve your conflicts and merge, then push."
msgstr ""
#: templates/task-monitor.html:63
#: templates/task-monitor.html:76
msgid "Merge simulation went well; continue?"
msgstr ""
#: templates/repository/repo-prs.html:58 templates/task-monitor.html:64
#: templates/repository/repo-prs.html:58 templates/task-monitor.html:77
msgid "Merge"
msgstr ""
#: templates/teapot.html:3
msgid "418"
msgstr ""
#: templates/teapot.html:6
msgid "418 I'm a teapot"
msgstr ""
#: templates/teapot.html:9
msgid "This server does not implement brewing coffee."
msgstr ""
#: templates/tree-view.html:4
msgid "File name"
msgstr ""
@@ -631,18 +583,6 @@ msgstr ""
msgid "Last commit"
msgstr ""
#: templates/unauthorised.html:3
msgid "401"
msgstr ""
#: templates/unauthorised.html:6
msgid "401 unauthorised"
msgstr ""
#: templates/unauthorised.html:9
msgid "This resource requires authentication, but you are not authenticated."
msgstr ""
#: templates/user-profile-followers.html:23
msgid "This user hasn't got any followers."
msgstr ""
@@ -760,6 +700,119 @@ msgstr ""
msgid "Update preferences"
msgstr ""
#: templates/errors/bad-request.html:3
msgid "400"
msgstr ""
#: templates/errors/bad-request.html:6
msgid "400 bad request"
msgstr ""
#: templates/errors/bad-request.html:9
msgid ""
"Your request does not contain the information required to process it, or "
"it doesn't make sense."
msgstr ""
#: templates/errors/forbidden.html:3
msgid "403"
msgstr ""
#: templates/errors/forbidden.html:6
msgid "403 forbidden"
msgstr ""
#: templates/errors/forbidden.html:9
msgid "You are not authorised to access this resource."
msgstr ""
#: templates/errors/gone.html:3
msgid "410"
msgstr ""
#: templates/errors/gone.html:6
msgid "410 gone"
msgstr ""
#: templates/errors/gone.html:9
msgid "This resource is no longer available. This condition is likely permanent."
msgstr ""
#: templates/errors/media-type.html:3
msgid "415"
msgstr ""
#: templates/errors/media-type.html:6
msgid "415 unsupported media type"
msgstr ""
#: templates/errors/media-type.html:9
msgid "The server does not support the media type that was sent in the request."
msgstr ""
#: templates/errors/method-not-allowed.html:3
msgid "405"
msgstr ""
#: templates/errors/method-not-allowed.html:6
msgid "405 method not allowed"
msgstr ""
#: templates/errors/method-not-allowed.html:9
msgid "This resource is not intended to be accessed with the current method."
msgstr ""
#: templates/errors/not-found.html:3
msgid "404"
msgstr ""
#: templates/errors/not-found.html:6
msgid "404 not found"
msgstr ""
#: templates/errors/not-found.html:9
msgid "The resource you have requested is not available on this server."
msgstr ""
#: templates/errors/server-error.html:3
msgid "500"
msgstr ""
#: templates/errors/server-error.html:6
msgid "500 internal server error"
msgstr ""
#: templates/errors/server-error.html:9
msgid ""
"The program running on the server has crashed. This is a problem with the"
" program; you did nothing wrong. Please send it to the server "
"administrator."
msgstr ""
#: templates/errors/teapot.html:3
msgid "418"
msgstr ""
#: templates/errors/teapot.html:6
msgid "418 I'm a teapot"
msgstr ""
#: templates/errors/teapot.html:9
msgid "This server does not implement brewing coffee."
msgstr ""
#: templates/errors/unauthorised.html:3
msgid "401"
msgstr ""
#: templates/errors/unauthorised.html:6
msgid "401 unauthorised"
msgstr ""
#: templates/errors/unauthorised.html:9
msgid "This resource requires authentication, but you are not authenticated."
msgstr ""
#: templates/repository/repo-branches.html:5
#, python-format
msgid "Branches of %(username)s/%(repository)s"
@@ -780,9 +833,8 @@ msgid "Tags"
msgstr ""
#: templates/repository/repo-commit.html:6
#: templates/repository/repo-file.html:5
#, python-format
msgid "%(basename)s in %(username)s/%(repository)s"
msgid "%(message)s in %(username)s/%(repository)s"
msgstr ""
#: templates/repository/repo-commit.html:19
@@ -824,6 +876,11 @@ msgstr ""
msgid "Add comment"
msgstr ""
#: templates/repository/repo-file.html:5
#, python-format
msgid "%(basename)s in %(username)s/%(repository)s"
msgstr ""
#: templates/repository/repo-file.html:15
#: templates/repository/repo-tree.html:15
msgid "Back"
@@ -868,6 +925,11 @@ msgstr ""
msgid "Post topic"
msgstr ""
#: templates/repository/repo-log.html:5
#, python-format
msgid "History of %(username)s/%(repository)s"
msgstr ""
#: templates/repository/repo-log.html:57
#, python-format
msgid ""
i18n/ro_RO/LC_MESSAGES/messages.po
@@ -7,100 +7,99 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2024-06-03 09:47+0300\n"
"POT-Creation-Date: 2024-06-07 16:19+0300\n"
"PO-Revision-Date: 2024-06-03 09:53+0300\n"
"Last-Translator: roundabout <root@roundabout-host.com>\n"
"Language-Team: ro_RO <LL@li.org>\n"
"Language: ro_RO\n"
"Language-Team: ro_RO <LL@li.org>\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100"
" < 20)) ? 1 : 2);\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < "
"20)) ? 1 : 2);\n"
"Generated-By: Babel 2.14.0\n"
"X-Generator: Poedit 3.4.4\n"
#: app.py:97 templates/default.html:158
#: app.py:98 templates/default.html:158
msgid "English"
msgstr "limba română"
#: app.py:231 app.py:246
#: app.py:232 app.py:247
msgid "Settings saved"
msgstr "Setările au fost salvate"
#: app.py:360
#: app.py:361
msgid "Successfully logged in as {username}"
msgstr "Conectat drept {username} cu succes"
#: app.py:367
#: app.py:368
msgid "User not found"
msgstr "Utilizatorul nu poate fi găsit"
#: app.py:373
#: app.py:374
msgid "Invalid password"
msgstr "Parolă nevalidă"
#: app.py:388
#: app.py:389
msgid "Usernames may only contain Latin alphabet, numbers and '-'"
msgstr "Numele de utilizator pot conține doar alfabetul latin, numere și «-»"
#: app.py:393
#: app.py:394
msgid "Usernames may not contain consecutive hyphens"
msgstr "Numele de utilizator nu pot conține cratime consecutive"
#: app.py:398
#: app.py:399
msgid "Usernames may not start or end with a hyphen"
msgstr "Numele de utilizator nu pot avea o cratimă la început sau la sfârșit"
#: app.py:404
#: app.py:405
msgid "Sorry, {username} is a system path"
msgstr "Scuze, {username} este o cale de sistem"
#: app.py:414
#: app.py:415
msgid "Usernames must be lowercase, so it's been converted automatically"
msgstr ""
"Numele de utilizator trebuie să fie cu minuscule, așa că a fost convertit "
"automat"
"Numele de utilizator trebuie să fie cu minuscule, așa că a fost convertit"
" automat"
#: app.py:421
#: app.py:422
msgid "The username {username} is taken"
msgstr "Numele de utilizator {username} este deja folosit"
#: app.py:428
#: app.py:429
msgid "Make sure the passwords match"
msgstr "Ai grijă ca parolele să se potrivească"
#: app.py:438
#: app.py:439
msgid "Successfully created and logged in as {username}"
msgstr "Creat și conectat drept {username} cu succes"
#: app.py:463
#: app.py:464
msgid "Repository names may only contain Latin alphabet, numbers, '-' and '_'"
msgstr "Numele de depozit pot conține doar alfabetul latin, numere, «-» și «_»"
#: app.py:474
#: app.py:475
msgid "Successfully created repository {name}"
msgstr "Creat depozitul {name} cu succes"
#: app.py:484
#: app.py:485
msgid "Successfully logged out"
msgstr "Ieșit din cont cu succes"
#: app.py:1444
#: app.py:1445
msgid "Bad branch name"
msgstr "Nume de ramificație greșit"
#: app.py:1451
#: app.py:1452
msgid "Head can't be restricted"
msgstr "Vârful nu poate fi restricționat"
#: app.py:1618
#: app.py:1621
msgid ""
"Your repository {repository} has been demoted from a primary site to a regular "
"site because there can only be one primary site per user."
"Your repository {repository} has been demoted from a primary site to a "
"regular site because there can only be one primary site per user."
msgstr ""
"Depozitul tău {repository} a fost retrogradat de la un site primar la un site "
"normal pentru că poate fi un singur site primar pe utilizator."
"Depozitul tău {repository} a fost retrogradat de la un site primar la un "
"site normal pentru că poate fi un singur site primar pe utilizator."
#: templates/about.html:3
msgid "About"
@@ -124,13 +123,13 @@ msgstr "Licențe"
#: templates/about.html:76
msgid ""
"Roundabout is free software available under the GNU AGPLv3. You are free to "
"use, study, modify and/or distribute both the server and client programs, and "
"to host your own instance."
"Roundabout is free software available under the GNU AGPLv3. You are free "
"to use, study, modify and/or distribute both the server and client "
"programs, and to host your own instance."
msgstr ""
"Giratoriul este software liber disponibil sub LPGA GNU v3. Ești liber să "
"folosești, studiezi, modifici și/sau să distribui programele de server sau de "
"client, precum și să-ți găzduiești propria instanță."
"folosești, studiezi, modifici și/sau să distribui programele de server "
"sau de client, precum și să-ți găzduiești propria instanță."
#: templates/about.html:78
msgid "Copyright 2024, Roundabout contributors"
@@ -138,34 +137,36 @@ msgstr "Copyright (drepturi de autor) 2023, contribuitorii giratoriului"
#: templates/about.html:80
msgid ""
"This program is free software: you can redistribute it and/or modify it under "
"the terms of the GNU Affero General Public License as published by the Free "
"Software Foundation, either version 3 of the License, or (at your option) any "
"later version."
"This program is free software: you can redistribute it and/or modify it "
"under the terms of the GNU Affero General Public License as published by "
"the Free Software Foundation, either version 3 of the License, or (at "
"your option) any later version."
msgstr ""
"Acest program este un software liber: îl puteți redistribui și/sau modifica, în "
"condițiile Licenței Publice Generale Affero GNU, așa cum a fost aceasta "
"publicată de către Free Software Foundation, fie versiunea 3 a acestei Licențe, "
"fie (la alegerea dumneavoastră), orice versiune ulterioară."
"Acest program este un software liber: îl puteți redistribui și/sau "
"modifica, în condițiile Licenței Publice Generale Affero GNU, așa cum a "
"fost aceasta publicată de către Free Software Foundation, fie versiunea 3"
" a acestei Licențe, fie (la alegerea dumneavoastră), orice versiune "
"ulterioară."
#: templates/about.html:83
msgid ""
"This program is distributed in the hope that it will be useful, but without any "
"warranty; without even the implied warranty of merchantability or fitness for a "
"particular purpose. See the GNU General Public License for more details."
"This program is distributed in the hope that it will be useful, but "
"without any warranty; without even the implied warranty of "
"merchantability or fitness for a particular purpose. See the GNU General "
"Public License for more details."
msgstr ""
"Acest program este distribuit în speranța că va fi util, dar FĂRĂ NICIO "
"GARANȚIE; chiar și fără garanția implicită de MERCANTILITATE sau de ADECVARE "
"PENTRU UN ANUMIT SCOP. Vezi Licența publică generală GNU pentru mai multe "
"detalii."
"GARANȚIE; chiar și fără garanția implicită de MERCANTILITATE sau de "
"ADECVARE PENTRU UN ANUMIT SCOP. Vezi Licența publică generală GNU pentru "
"mai multe detalii."
#: templates/about.html:86
msgid ""
"You should have received a copy of the GNU General Public License along with "
"this program. If not, see the GNU website."
"You should have received a copy of the GNU General Public License along "
"with this program. If not, see the GNU website."
msgstr ""
"Ar trebui să fi primit o copie a Licenței Publice Generale Affero GNU împreună "
"cu acest program. Dacă nu, vezi site-ul GNU."
"Ar trebui să fi primit o copie a Licenței Publice Generale Affero GNU "
"împreună cu acest program. Dacă nu, vezi site-ul GNU."
#: templates/about.html:88
msgid "Click to view a copy of the GNU AGPL"
@@ -184,8 +185,8 @@ msgstr "Sistem de operare:"
msgid "Notifications"
msgstr "Notificări"
#: templates/default.html:65 templates/default.html:126 templates/new-repo.html:3
#: templates/new-repo.html:11
#: templates/default.html:65 templates/default.html:126
#: templates/new-repo.html:3 templates/new-repo.html:11
msgid "Create repository"
msgstr "Creează depozit"
@@ -193,7 +194,8 @@ msgstr "Creează depozit"
msgid "Your favourites"
msgstr "Preferatele tale"
#: templates/default.html:73 templates/repo.html:74 templates/user-settings.html:6
#: templates/default.html:73 templates/repo.html:74
#: templates/user-settings.html:6
msgid "Settings"
msgstr "Setări"
@@ -201,18 +203,20 @@ msgstr "Setări"
msgid "Log out"
msgstr "Deconectează-te"
#: templates/default.html:82 templates/default.html:138 templates/no-home.html:38
#: templates/default.html:82 templates/default.html:138
#: templates/no-home.html:38
msgid "Log in or sign up"
msgstr "Conectează-te sau înregistrează-te"
#: templates/default.html:97
msgid ""
"By using this site, you agree to have cookies stored on your device, strictly "
"for functional purposes, such as storing your session and preferences."
"By using this site, you agree to have cookies stored on your device, "
"strictly for functional purposes, such as storing your session and "
"preferences."
msgstr ""
"Folosind acest site, ești de acord să stocăm „cookie”-uri pe aparatul tău, "
"strict pentru utilizări funcționale, cum ar fi reținerea sesiunii sau a "
"preferințelor."
"Folosind acest site, ești de acord să stocăm „cookie”-uri pe aparatul "
"tău, strict pentru utilizări funcționale, cum ar fi reținerea sesiunii "
"sau a preferințelor."
#: templates/default.html:100
msgid "Dismiss"
@@ -309,18 +313,6 @@ msgstr "Navigatorul tău nu acceptă formatele multimedia HTML5."
msgid "Download file"
msgstr "Descarcă fișierul"
#: templates/forbidden.html:3
msgid "403"
msgstr "403"
#: templates/forbidden.html:6
msgid "403 forbidden"
msgstr "403 interzis"
#: templates/forbidden.html:9
msgid "You are not authorised to access this resource."
msgstr "Nu ai permisiunea de a accesa această resursă."
#: templates/home.html:3 templates/repository/repo-file.html:24
#: templates/repository/repo-tree.html:24
msgid "Home"
@@ -404,18 +396,6 @@ msgid ""
" here"
msgstr "politicile listate aici"
#: templates/method-not-allowed.html:3
msgid "405"
msgstr "405"
#: templates/method-not-allowed.html:6
msgid "405 method not allowed"
msgstr "405 metodă nepermisă"
#: templates/method-not-allowed.html:9
msgid "This resource is not intended to be accessed with the current method."
msgstr "Această resursă nu este destinată accesării cu metoda actuală."
#: templates/new-repo.html:17
msgid "Name"
msgstr "Nume"
@@ -460,18 +440,6 @@ msgstr "Ajutor și întrebări"
msgid "Contact Us"
msgstr "Contactează-ne"
#: templates/not-found.html:3
msgid "404"
msgstr "404"
#: templates/not-found.html:6
msgid "404 not found"
msgstr "404 nu a fost găsit"
#: templates/not-found.html:9
msgid "The resource you have requested is not available on this server."
msgstr "Resursa dorită nu este disponibilă pe acest server."
#: templates/notifications.html:14
msgid "Mark all as read"
msgstr "Marchează-le pe toate ca citite"
@@ -553,10 +521,10 @@ msgstr "Preferat"
msgid "Remove favourite"
msgstr "Elimină preferatul"
#: templates/repository/repo-log.html:5 templates/search.html:4
#, python-format
msgid "History of %(username)s/%(repository)s"
msgstr "Istoricul %(username)s/%(repository)s"
#: templates/search.html:4
#, fuzzy, python-format
msgid "Repository listing: %(query)s"
msgstr "Găzduirea depozitelor pentru toți."
#: templates/task-monitor.html:3
#, python-format
@@ -568,74 +536,62 @@ msgstr "Monitorul sarcinii %(result_id)s"
msgid "Task %(result_id)s"
msgstr "Sarcina %(result_id)s"
#: templates/task-monitor.html:11
#: templates/task-monitor.html:12
msgid "Task results"
msgstr "Rezultatele sarcinii"
#: templates/task-monitor.html:15
#: templates/task-monitor.html:16
msgid "Done"
msgstr "Gata"
#: templates/task-monitor.html:18
#: templates/task-monitor.html:19
msgid "Running..."
msgstr "Se execută..."
#: templates/task-monitor.html:24
#: templates/task-monitor.html:26 templates/task-monitor.html:37
msgid "Info"
msgstr "Informații"
#: templates/task-monitor.html:28
#: templates/task-monitor.html:30 templates/task-monitor.html:41
msgid "Errors"
msgstr "Erori"
#: templates/task-monitor.html:33
#: templates/task-monitor.html:46
msgid "Cannot merge your branches"
msgstr "Nu-ți putem îmbina ramificațiile"
#: templates/task-monitor.html:35
#: templates/task-monitor.html:48
msgid ""
"Since we can't help you with this yet, you'll need to resolve the merge "
"conflicts on your own computer."
msgstr ""
"Pentru că nu te putem ajuta încă cu aceasta, va trebui să rezolvi conflictele "
"pe propriul calculator."
"Pentru că nu te putem ajuta încă cu aceasta, va trebui să rezolvi "
"conflictele pe propriul calculator."
#: templates/task-monitor.html:38
#: templates/task-monitor.html:51
msgid "In a shell inside your repository execute:"
msgstr "Într-un terminal în depozitul tău execută:"
#: templates/task-monitor.html:47
#: templates/task-monitor.html:60
msgid "Then fix your conflicts, merge, and finally, run:"
msgstr "Apoi rezolvă-ți conflictele, îmbină, și rulează:"
#: templates/task-monitor.html:52
#: templates/task-monitor.html:65
msgid "and push the changes."
msgstr "și trimite schimbările."
#: templates/task-monitor.html:59
#: templates/task-monitor.html:72
msgid "Resolve your conflicts and merge, then push."
msgstr "Rezolvă-ți conflictele și îmbină, apoi trimite."
#: templates/task-monitor.html:63
#: templates/task-monitor.html:76
msgid "Merge simulation went well; continue?"
msgstr "Simularea îmbinării a funcționat; continui?"
#: templates/repository/repo-prs.html:58 templates/task-monitor.html:64
#: templates/repository/repo-prs.html:58 templates/task-monitor.html:77
msgid "Merge"
msgstr "Îmbină"
#: templates/teapot.html:3
msgid "418"
msgstr "418"
#: templates/teapot.html:6
msgid "418 I'm a teapot"
msgstr "418 sunt un ceainic"
#: templates/teapot.html:9
msgid "This server does not implement brewing coffee."
msgstr "Acest server nu este capabil să facă cafea."
#: templates/tree-view.html:4
msgid "File name"
msgstr "Nume de fișier"
@@ -652,18 +608,6 @@ msgstr "Dimensiune"
msgid "Last commit"
msgstr "Ultima comitere"
#: templates/unauthorised.html:3
msgid "401"
msgstr "401"
#: templates/unauthorised.html:6
msgid "401 unauthorised"
msgstr "401 neautorizat"
#: templates/unauthorised.html:9
msgid "This resource requires authentication, but you are not authenticated."
msgstr "Această resursă necesită autentificare, dar tu nu ești autentificat."
#: templates/user-profile-followers.html:23
msgid "This user hasn't got any followers."
msgstr "Acest utilizator nu este urmărit de nimeni."
@@ -765,11 +709,12 @@ msgstr "Preferințe"
#, python-format
msgid ""
"You can change themes by going to <a href=\"/%(username)s/.config\">your "
"configuration repository</a> and pushing a CSS file called <code>theme.css</"
"code>."
"configuration repository</a> and pushing a CSS file called "
"<code>theme.css</code>."
msgstr ""
"Poți schimba temele mergând la <a href=\"/%(username)s/.config\">depozitul tău "
"de configurări</a> și trimițând un fișier CSS denumit <code>theme.css</code>."
"Poți schimba temele mergând la <a "
"href=\"/%(username)s/.config\">depozitul tău de configurări</a> și "
"trimițând un fișier CSS denumit <code>theme.css</code>."
#: templates/user-settings.html:94
msgid "Default number of items to show in paginated lists"
@@ -783,6 +728,122 @@ msgstr "Nivelul maxim de adâncime pentru răspunsurile în forum"
msgid "Update preferences"
msgstr "Actualizează preferințele"
#: templates/errors/bad-request.html:3
#, fuzzy
msgid "400"
msgstr "405"
#: templates/errors/bad-request.html:6
msgid "400 bad request"
msgstr ""
#: templates/errors/bad-request.html:9
msgid ""
"Your request does not contain the information required to process it, or "
"it doesn't make sense."
msgstr ""
#: templates/errors/forbidden.html:3
msgid "403"
msgstr "403"
#: templates/errors/forbidden.html:6
msgid "403 forbidden"
msgstr "403 interzis"
#: templates/errors/forbidden.html:9
msgid "You are not authorised to access this resource."
msgstr "Nu ai permisiunea de a accesa această resursă."
#: templates/errors/gone.html:3
#, fuzzy
msgid "410"
msgstr "418"
#: templates/errors/gone.html:6
msgid "410 gone"
msgstr ""
#: templates/errors/gone.html:9
msgid "This resource is no longer available. This condition is likely permanent."
msgstr ""
#: templates/errors/media-type.html:3
#, fuzzy
msgid "415"
msgstr "418"
#: templates/errors/media-type.html:6
msgid "415 unsupported media type"
msgstr ""
#: templates/errors/media-type.html:9
msgid "The server does not support the media type that was sent in the request."
msgstr ""
#: templates/errors/method-not-allowed.html:3
msgid "405"
msgstr "405"
#: templates/errors/method-not-allowed.html:6
msgid "405 method not allowed"
msgstr "405 metodă nepermisă"
#: templates/errors/method-not-allowed.html:9
msgid "This resource is not intended to be accessed with the current method."
msgstr "Această resursă nu este destinată accesării cu metoda actuală."
#: templates/errors/not-found.html:3
msgid "404"
msgstr "404"
#: templates/errors/not-found.html:6
msgid "404 not found"
msgstr "404 nu a fost găsit"
#: templates/errors/not-found.html:9
msgid "The resource you have requested is not available on this server."
msgstr "Resursa dorită nu este disponibilă pe acest server."
#: templates/errors/server-error.html:3
msgid "500"
msgstr ""
#: templates/errors/server-error.html:6
msgid "500 internal server error"
msgstr ""
#: templates/errors/server-error.html:9
msgid ""
"The program running on the server has crashed. This is a problem with the"
" program; you did nothing wrong. Please send it to the server "
"administrator."
msgstr ""
#: templates/errors/teapot.html:3
msgid "418"
msgstr "418"
#: templates/errors/teapot.html:6
msgid "418 I'm a teapot"
msgstr "418 sunt un ceainic"
#: templates/errors/teapot.html:9
msgid "This server does not implement brewing coffee."
msgstr "Acest server nu este capabil să facă cafea."
#: templates/errors/unauthorised.html:3
msgid "401"
msgstr "401"
#: templates/errors/unauthorised.html:6
msgid "401 unauthorised"
msgstr "401 neautorizat"
#: templates/errors/unauthorised.html:9
msgid "This resource requires authentication, but you are not authenticated."
msgstr "Această resursă necesită autentificare, dar tu nu ești autentificat."
#: templates/repository/repo-branches.html:5
#, python-format
msgid "Branches of %(username)s/%(repository)s"
@@ -802,10 +863,10 @@ msgstr "Vezi arborele"
msgid "Tags"
msgstr "Etichete"
#: templates/repository/repo-commit.html:6 templates/repository/repo-file.html:5
#, python-format
msgid "%(basename)s in %(username)s/%(repository)s"
msgstr "%(basename)s în %(username)s/%(repository)s"
#: templates/repository/repo-commit.html:6
#, fuzzy, python-format
msgid "%(message)s in %(username)s/%(repository)s"
msgstr "%(subject)s în %(username)s/%(repository)s"
#: templates/repository/repo-commit.html:19
#, python-format
@@ -850,19 +911,28 @@ msgstr "De-rezolvă"
msgid "Add comment"
msgstr "Adaugă comentariu"
#: templates/repository/repo-file.html:15 templates/repository/repo-tree.html:15
#: templates/repository/repo-file.html:5
#, python-format
msgid "%(basename)s in %(username)s/%(repository)s"
msgstr "%(basename)s în %(username)s/%(repository)s"
#: templates/repository/repo-file.html:15
#: templates/repository/repo-tree.html:15
msgid "Back"
msgstr "Înapoi"
#: templates/repository/repo-file.html:18 templates/repository/repo-tree.html:18
#: templates/repository/repo-file.html:18
#: templates/repository/repo-tree.html:18
msgid "Forwards"
msgstr "Înainte"
#: templates/repository/repo-file.html:21 templates/repository/repo-tree.html:21
#: templates/repository/repo-file.html:21
#: templates/repository/repo-tree.html:21
msgid "Up"
msgstr "Sus"
#: templates/repository/repo-file.html:27 templates/repository/repo-tree.html:27
#: templates/repository/repo-file.html:27
#: templates/repository/repo-tree.html:27
msgid "Refresh"
msgstr "Reîncarcă"
@@ -890,17 +960,22 @@ msgstr "Forumul %(username)s/%(repository)s"
msgid "Post topic"
msgstr "Postează subiect"
#: templates/repository/repo-log.html:5
#, python-format
msgid "History of %(username)s/%(repository)s"
msgstr "Istoricul %(username)s/%(repository)s"
#: templates/repository/repo-log.html:57
#, python-format
msgid ""
"\n"
" by <a href=\"/"
"%(owner_name)s\">%(owner_name)s</a>,\n"
" by <a "
"href=\"/%(owner_name)s\">%(owner_name)s</a>,\n"
" "
msgstr ""
"\n"
" de <a href=\"/"
"%(owner_name)s\">%(owner_name)s</a>,\n"
" de <a "
"href=\"/%(owner_name)s\">%(owner_name)s</a>,\n"
" "
#: templates/repository/repo-log.html:60
@@ -964,13 +1039,13 @@ msgstr "Ramificația implicită"
#: templates/repository/repo-settings.html:41
msgid ""
"This is the branch the application will redirect to automatically if one is not "
"specified.\n"
" Note that only branch names are supported, not other references like tags "
"or commit hashes."
"This is the branch the application will redirect to automatically if one "
"is not specified.\n"
" Note that only branch names are supported, not other references like "
"tags or commit hashes."
msgstr ""
"Aceasta este ramificația pe care aplicația va redirecționa dacă una nu este "
"specificată.\n"
"Aceasta este ramificația pe care aplicația va redirecționa dacă una nu "
"este specificată.\n"
"Observă că doar numele de ramificație (branch) sunt acceptate, nu alte "
"referințe ca și etichete sau comiteri."
@@ -990,15 +1065,15 @@ msgstr "Fă-l site-ul tău primar"
#, python-format
msgid ""
"\n"
" Host static sites for your projects, for "
"free. The files in your site branch will be served at\n"
" %(site_link)s or %(primary_site_link)s if "
"you make this the primary site.\n"
" Host static sites for your projects, "
"for free. The files in your site branch will be served at\n"
" %(site_link)s or "
"%(primary_site_link)s if you make this the primary site.\n"
" "
msgstr ""
"\n"
"Găzduiește site-uri statice pentru proiectele tale, gratuit. Fișierele din "
"ramificația site-ului vor fi servite la\n"
"Găzduiește site-uri statice pentru proiectele tale, gratuit. Fișierele "
"din ramificația site-ului vor fi servite la\n"
"%(site_link)s sau %(primary_site_link)s dacă îl faci site primar."
#: templates/repository/repo-settings.html:64
@@ -1015,7 +1090,8 @@ msgstr "Arborele %(username)s/%(repository)s"
msgid "Users of %(username)s/%(repository)s"
msgstr "Utilizatorii %(username)s/%(repository)s"
#: templates/repository/repo-users.html:22 templates/repository/repo-users.html:48
#: templates/repository/repo-users.html:22
#: templates/repository/repo-users.html:48
msgid "Administrator / Owner"
msgstr "Administrator / proprietar"
@@ -1023,21 +1099,25 @@ msgstr "Administrator / proprietar"
msgid "Remove"
msgstr "Elimină"
#: templates/repository/repo-users.html:31 templates/repository/repo-users.html:51
#: templates/repository/repo-users.html:31
#: templates/repository/repo-users.html:51
msgid "Contributor"
msgstr "Contribuitor"
#: templates/repository/repo-users.html:33 templates/repository/repo-users.html:53
#: templates/repository/repo-users.html:33
#: templates/repository/repo-users.html:53
#: templates/repository/repo-users.html:75
msgid "Read-only"
msgstr "Doar citire"
#: templates/repository/repo-users.html:36 templates/repository/repo-users.html:56
#: templates/repository/repo-users.html:36
#: templates/repository/repo-users.html:56
#: templates/repository/repo-users.html:77
msgid "Read-write"
msgstr "Citire și scriere"
#: templates/repository/repo-users.html:37 templates/repository/repo-users.html:58
#: templates/repository/repo-users.html:37
#: templates/repository/repo-users.html:58
#: templates/repository/repo-users.html:78
msgid "Administrator"
msgstr "Administrator"
@@ -1061,30 +1141,32 @@ msgstr "Adaugă"
#~ msgid ""
#~ "\n"
#~ " by <a href=\"/"
#~ "%(owner_name)s\">%(owner_name)s</a>,\n"
#~ " <span title=\"received on "
#~ "%(receive_date)s\">\n"
#~ " by <a "
#~ "href=\"/%(owner_name)s\">%(owner_name)s</a>,\n"
#~ " <span title=\"received"
#~ " on %(receive_date)s\">\n"
#~ " %(author_date)s\n"
#~ " </span>\n"
#~ " "
#~ msgstr ""
#~ "\n"
#~ " de <a href=\"/"
#~ "%(owner_name)s\">%(owner_name)s</a>,\n"
#~ " <span title=\"primit la "
#~ "%(receive_date)s\">\n"
#~ " de <a "
#~ "href=\"/%(owner_name)s\">%(owner_name)s</a>,\n"
#~ " <span title=\"primit"
#~ " la %(receive_date)s\">\n"
#~ " %(author_date)s\n"
#~ " </span>\n"
#~ " "
#~ msgid ""
#~ "\n"
#~ " <a href=\"/%(owner_name)s\">%(owner_name)s</a>,<br>\n"
#~ " <a "
#~ "href=\"/%(owner_name)s\">%(owner_name)s</a>,<br>\n"
#~ " "
#~ msgstr ""
#~ "\n"
#~ " <a href=\"/%(owner_name)s\">%(owner_name)s</a>,<br>\n"
#~ " <a "
#~ "href=\"/%(owner_name)s\">%(owner_name)s</a>,<br>\n"
#~ " "
#~ msgid "FAQs"
@@ -1100,17 +1182,24 @@ msgstr "Adaugă"
#~ msgstr "Bine ai venit la giratoriu. Simte-te ca acasă."
#~ msgid ""
#~ "You've just registered for an account at this server. If it wasn't you, "
#~ "write to us and we'll remove this email from our database."
#~ "You've just registered for an account"
#~ " at this server. If it wasn't "
#~ "you, write to us and we'll remove"
#~ " this email from our database."
#~ msgstr ""
#~ "Tocmai te-ai înregistrat pentru un cont pe acest server. Dacă nu ai fost tu, "
#~ "scrie-ne și vom șterge emailul tău din baza noastră de date."
#~ "Tocmai te-ai înregistrat pentru un "
#~ "cont pe acest server. Dacă nu ai"
#~ " fost tu, scrie-ne și vom "
#~ "șterge emailul tău din baza noastră "
#~ "de date."
#~ msgid ""
#~ "No email verification is required; email notifications are provided only for "
#~ "No email verification is required; email"
#~ " notifications are provided only for "
#~ "your convenience."
#~ msgstr ""
#~ "Nu este necesară verificarea emailului. Notificările prin email sunt puse la "
#~ "Nu este necesară verificarea emailului. "
#~ "Notificările prin email sunt puse la "
#~ "dispoziție pentru a te ajuta."
#~ msgid "# Hello, %(username)s!"
@@ -1121,3 +1210,4 @@ msgstr "Adaugă"
#~ msgid "policies listed here"
#~ msgstr "politicile listate aici"
templates/api/welcome.xml
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<info>
<status>OK</status>
<links>
<a href="https://{{ config.BASE_DOMAIN }}{% if config.port not in set([80, 443]) %}:{{ config.port }}{% endif %}/">/</a>
</links>
</info>