Commit 565f50f577534830862fee996b532b2f7444a113
1 parent
d7359554
Exists in
master
Versão inicial da lógica de perfis.
Showing
11 changed files
with
308 additions
and
183 deletions
Show diff stats
... | ... | @@ -0,0 +1,48 @@ |
1 | +"""create profile table | |
2 | + | |
3 | +Revision ID: 2dcee6dfae9d | |
4 | +Revises: 4f12d8650050 | |
5 | +Create Date: 2016-05-24 14:30:22.687206 | |
6 | + | |
7 | +""" | |
8 | + | |
9 | +# revision identifiers, used by Alembic. | |
10 | +revision = '2dcee6dfae9d' | |
11 | +down_revision = '4f12d8650050' | |
12 | + | |
13 | +from alembic import op | |
14 | +import sqlalchemy as sa | |
15 | +from sqlalchemy.dialects.postgresql import ARRAY | |
16 | +import datetime | |
17 | + | |
18 | + | |
19 | +def make_timestamp(): | |
20 | + now = datetime.datetime.utcnow() | |
21 | + return now.isoformat() | |
22 | + | |
23 | + | |
24 | +def upgrade(): | |
25 | + op.create_table( | |
26 | + 'profile', | |
27 | + sa.Column('id', sa.Integer, primary_key=True), | |
28 | + sa.Column('name', sa.Text, nullable=False, unique=True), | |
29 | + sa.Column('description', sa.Text, nullable=False), | |
30 | + sa.Column('access', ARRAY(sa.Text), nullable=False), | |
31 | + sa.Column('created', sa.Text, server_default=make_timestamp()), | |
32 | + ) | |
33 | + | |
34 | + # Add two categories | |
35 | + query = 'INSERT INTO profile (name, description, access) VALUES (\'Colaborador\', \'Colaborador geral\', \'{wikilibras}\')' | |
36 | + op.execute(query) | |
37 | + query = 'INSERT INTO profile (name, description, access) VALUES (\'Animador\', \'Animador 3D\', \'{wikilibras, corretor_sinais}\')' | |
38 | + op.execute(query) | |
39 | + query = 'INSERT INTO profile (name, description, access) VALUES (\'Especialista\', \'Especialista em LIBRAS\', \'{wikilibras, validador_sinais}\')' | |
40 | + op.execute(query) | |
41 | + | |
42 | + op.add_column('user', sa.Column('profile_id', sa.Integer, sa.ForeignKey('profile.id'), server_default="1")) | |
43 | + | |
44 | + | |
45 | +def downgrade(): | |
46 | + op.drop_column('user', 'profile_id') | |
47 | + op.drop_table('profile') | |
48 | + | |
0 | 49 | \ No newline at end of file | ... | ... |
pybossa/forms/forms.py
... | ... | @@ -279,7 +279,11 @@ class RegisterForm(Form): |
279 | 279 | [validators.Required(err_msg), |
280 | 280 | validators.EqualTo('confirm', err_msg_2)]) |
281 | 281 | |
282 | - confirm = PasswordField(lazy_gettext('Repeat Password')) | |
282 | + confirm = PasswordField(lazy_gettext('Repeat Password')) | |
283 | + profile = SelectField(lazy_gettext('You want to participate as')) | |
284 | + | |
285 | + def set_profile_choices(self, choices): | |
286 | + self.profile.choices = choices | |
283 | 287 | |
284 | 288 | |
285 | 289 | class UpdateProfileForm(Form): | ... | ... |
... | ... | @@ -0,0 +1,41 @@ |
1 | +# -*- coding: utf8 -*- | |
2 | +# This file is part of PyBossa. | |
3 | +# | |
4 | +# Copyright (C) 2015 SciFabric LTD. | |
5 | +# | |
6 | +# PyBossa is free software: you can redistribute it and/or modify | |
7 | +# it under the terms of the GNU Affero General Public License as published by | |
8 | +# the Free Software Foundation, either version 3 of the License, or | |
9 | +# (at your option) any later version. | |
10 | +# | |
11 | +# PyBossa is distributed in the hope that it will be useful, | |
12 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | +# GNU Affero General Public License for more details. | |
15 | +# | |
16 | +# You should have received a copy of the GNU Affero General Public License | |
17 | +# along with PyBossa. If not, see <http://www.gnu.org/licenses/>. | |
18 | + | |
19 | +from sqlalchemy import Integer, Text | |
20 | +from sqlalchemy.schema import Column, ForeignKey | |
21 | +from sqlalchemy.dialects.postgresql import ARRAY | |
22 | + | |
23 | +from pybossa.core import db | |
24 | +from pybossa.model import DomainObject, make_timestamp | |
25 | + | |
26 | + | |
27 | +class Profile(db.Model, DomainObject): | |
28 | + '''A Table with Profiles for Users.''' | |
29 | + | |
30 | + __tablename__ = 'profile' | |
31 | + | |
32 | + #: Category ID | |
33 | + id = Column(Integer, primary_key=True) | |
34 | + #: Name of the Profile | |
35 | + name = Column(Text, nullable=False, unique=True) | |
36 | + #: Description of the Profile | |
37 | + description = Column(Text, nullable=False) | |
38 | + #: Set of allowed projects for the profile | |
39 | + access = Column(ARRAY(Text), nullable=False) | |
40 | + #: UTC timestamp when the Category was created | |
41 | + created = Column(Text, default=make_timestamp) | ... | ... |
pybossa/model/user.py
... | ... | @@ -61,11 +61,13 @@ class User(db.Model, DomainObject, UserMixin): |
61 | 61 | confirmation_email_sent = Column(Boolean, default=False) |
62 | 62 | subscribed = Column(Boolean, default=True) |
63 | 63 | info = Column(MutableDict.as_mutable(JSON), default=dict()) |
64 | - | |
64 | + profile_id = Column(Integer, ForeignKey('profile.id')) | |
65 | + | |
65 | 66 | ## Relationships |
66 | 67 | task_runs = relationship(TaskRun, backref='user') |
67 | 68 | projects = relationship(Project, backref='owner') |
68 | 69 | blogposts = relationship(Blogpost, backref='owner') |
70 | + profile = relationship("Profile") | |
69 | 71 | |
70 | 72 | |
71 | 73 | def get_id(self): | ... | ... |
pybossa/repositories/user_repository.py
... | ... | @@ -20,6 +20,7 @@ from sqlalchemy import or_, func |
20 | 20 | from sqlalchemy.exc import IntegrityError |
21 | 21 | |
22 | 22 | from pybossa.model.user import User |
23 | +from pybossa.model.profile import Profile | |
23 | 24 | from pybossa.exc import WrongObjectError, DBIntegrityError |
24 | 25 | |
25 | 26 | |
... | ... | @@ -86,3 +87,17 @@ class UserRepository(object): |
86 | 87 | name = user.__class__.__name__ |
87 | 88 | msg = '%s cannot be %s by %s' % (name, action, self.__class__.__name__) |
88 | 89 | raise WrongObjectError(msg) |
90 | + | |
91 | + # Methods for Profile objects | |
92 | + def get_profile(self, id=None): | |
93 | + if id is None: | |
94 | + return self.db.session.query(Profile).first() | |
95 | + return self.db.session.query(Profile).get(id) | |
96 | + | |
97 | + def get_profile_by(self, **attributes): | |
98 | + return self.db.session.query(Profile).filter_by(**attributes).first() | |
99 | + | |
100 | + def profile_has_access(self, user, project_name): | |
101 | + profile = self.get_profile(user.profile_id) | |
102 | + return user.admin or project_name in profile.access | |
103 | + | ... | ... |
pybossa/themes/default/templates/account/register.html
... | ... | @@ -20,6 +20,7 @@ |
20 | 20 | {{ render_field(form.email_addr, placeholder= _('hello@mywebsite.org')) }} |
21 | 21 | {{ render_field(form.password, placeholder= _('my secret password')) }} |
22 | 22 | {{ render_field(form.confirm, placeholder= _('my secret password')) }} |
23 | + {{ render_field(form.profile) }} | |
23 | 24 | <div class="form-actions"> |
24 | 25 | <input type="submit" value="{{ _('Create an account') }}" class="btn btn-primary btn-lg" /> |
25 | 26 | <input type="reset" value="{{ _('Cancel') }}" class="btn btn-default" /> | ... | ... |
pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.mo
No preview for this file type
pybossa/themes/default/translations/pt_BR/LC_MESSAGES/messages.po
... | ... | @@ -8,7 +8,7 @@ msgstr "" |
8 | 8 | "Project-Id-Version: PROJECT VERSION\n" |
9 | 9 | "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" |
10 | 10 | "POT-Creation-Date: 2015-08-20 13:26-0300\n" |
11 | -"PO-Revision-Date: 2016-05-19 13:51-0300\n" | |
11 | +"PO-Revision-Date: 2016-05-24 18:51-0300\n" | |
12 | 12 | "Language-Team: pt_BR <LL@li.org>\n" |
13 | 13 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" |
14 | 14 | "MIME-Version: 1.0\n" |
... | ... | @@ -21,8 +21,7 @@ msgstr "" |
21 | 21 | |
22 | 22 | #: core.py:413 |
23 | 23 | msgid "Please update your e-mail address in your profile page, right now it is empty!" |
24 | -msgstr "" | |
25 | -"Por favor atualize seu endereço de e-mail em seu perfil, faça-o agora pois ele está vazio!" | |
24 | +msgstr "Por favor atualize seu endereço de e-mail em seu perfil, faça-o agora pois ele está vazio!" | |
26 | 25 | |
27 | 26 | #: importers.py:93 |
28 | 27 | msgid "The file you uploaded has two headers with the same name." |
... | ... | @@ -72,22 +71,19 @@ msgstr "Usuários Autenticados" |
72 | 71 | |
73 | 72 | #: exporter/csv_export.py:91 |
74 | 73 | msgid "" |
75 | -"Oops, the project does not have tasks to export, if you are the " | |
76 | -"owner add some tasks" | |
74 | +"Oops, the project does not have tasks to export, if you are the owner add " | |
75 | +"some tasks" | |
77 | 76 | msgstr "" |
78 | -"Oops, o projeto não tem tarefas para exportar, se você é o " | |
79 | -"priprietário adicione algumas tarefas" | |
77 | +"Oops, o projeto não tem tarefas para exportar, se você é o priprietário " | |
78 | +"adicione algumas tarefas" | |
80 | 79 | |
81 | 80 | #: exporter/csv_export.py:97 |
82 | 81 | msgid "" |
83 | -"Oops, there are no Task Runs yet to export, invite some users to " | |
84 | -"participate" | |
82 | +"Oops, there are no Task Runs yet to export, invite some users to participate" | |
85 | 83 | msgstr "" |
86 | -"Oops, não existem execuções para exportar, convide usuários para " | |
87 | -"participar" | |
84 | +"Oops, não existem execuções para exportar, convide usuários para participar" | |
88 | 85 | |
89 | -#: forms/forms.py:40 forms/forms.py:346 | |
90 | -#: themes/pybossa-contribua-theme/templates/stats/index.html:18 | |
86 | +#: forms/forms.py:40 forms/forms.py:346 themes/pybossa-contribua-theme/templates/stats/index.html:18 | |
91 | 87 | msgid "Name" |
92 | 88 | msgstr "Nome" |
93 | 89 | |
... | ... | @@ -145,41 +141,35 @@ msgstr "Senha (deixe em branco para nenhuma alteração)" |
145 | 141 | msgid "Webhook" |
146 | 142 | msgstr "" |
147 | 143 | |
148 | -#: forms/forms.py:80 | |
149 | -#: themes/pybossa-contribua-theme/templates/projects/task_settings.html:41 | |
144 | +#: forms/forms.py:80 themes/pybossa-contribua-theme/templates/projects/task_settings.html:41 | |
150 | 145 | #: view/projects.py:1206 |
151 | 146 | msgid "Redundancy" |
152 | 147 | msgstr "Redundância" |
153 | 148 | |
154 | 149 | #: forms/forms.py:84 |
155 | 150 | msgid "" |
156 | -"Number of answers should be a " | |
157 | -"value between 1 and 1,000" | |
151 | +"Number of answers should be a value between 1 " | |
152 | +"and 1,000" | |
158 | 153 | msgstr "" |
159 | -"Número de respostas deve ser um " | |
160 | -"valor entre 1 e 1,000" | |
154 | +"Número de respostas deve ser um valor entre 1 " | |
155 | +"e 1,000" | |
161 | 156 | |
162 | 157 | #: forms/forms.py:89 |
163 | 158 | msgid "Task IDs" |
164 | 159 | msgstr "IDs das tarefas" |
165 | 160 | |
166 | -#: forms/forms.py:93 | |
167 | -#: themes/pybossa-contribua-theme/templates/projects/task_settings.html:25 | |
161 | +#: forms/forms.py:93 themes/pybossa-contribua-theme/templates/projects/task_settings.html:25 | |
168 | 162 | msgid "Priority" |
169 | 163 | msgstr "Prioridade" |
170 | 164 | |
171 | 165 | #: forms/forms.py:96 |
172 | 166 | msgid "" |
173 | -"Priority should be a value between " | |
174 | -"0.0 and 1.0" | |
167 | +"Priority should be a value between 0.0 and 1.0" | |
175 | 168 | msgstr "" |
176 | -"Prioridade deve ser um valor entre " | |
177 | -"0.0 e 1.0" | |
169 | +"Prioridade deve ser um valor entre 0.0 e 1.0" | |
178 | 170 | |
179 | -#: forms/forms.py:103 | |
180 | -#: themes/pybossa-contribua-theme/templates/projects/task_scheduler.html:11 | |
181 | -#: themes/pybossa-contribua-theme/templates/projects/task_settings.html:16 | |
182 | -#: view/projects.py:1238 | |
171 | +#: forms/forms.py:103 themes/pybossa-contribua-theme/templates/projects/task_scheduler.html:11 | |
172 | +#: themes/pybossa-contribua-theme/templates/projects/task_settings.html:16 view/projects.py:1238 | |
183 | 173 | msgid "Task Scheduler" |
184 | 174 | msgstr "Escalonador de tarefas" |
185 | 175 | |
... | ... | @@ -503,19 +493,18 @@ msgstr "Só mais um passo, por favor" |
503 | 493 | |
504 | 494 | #: themes/pybossa-contribua-theme/templates/account/account_validation.html:7 |
505 | 495 | msgid "" |
506 | -"In order to confirm your identity, we've sent an email to the address you just provided. " | |
507 | -"Please, check it out and click on the link you'll find to create your account at" | |
496 | +"In order to confirm your identity, we've sent an email to the address you just provided. Please, " | |
497 | +"check it out and click on the link you'll find to create your account at" | |
508 | 498 | msgstr "" |
509 | -"A fim de confirmar sua identidade, nós enviamos um email para o endereço que você " | |
510 | -"forneceu. Por favor, verifique e clique no link que você encontrar para criar sua conta em" | |
499 | +"A fim de confirmar sua identidade, nós enviamos um email para o endereço que você forneceu. Por " | |
500 | +"favor, verifique e clique no link que você encontrar para criar sua conta em" | |
511 | 501 | |
512 | 502 | #: themes/pybossa-contribua-theme/templates/account/account_validation.html:8 |
513 | 503 | msgid "" |
514 | -"If you are not receiving the email, please check the junk folder. If it's not there " | |
515 | -"please drop us an email to" | |
504 | +"If you are not receiving the email, please check the junk folder. If it's not there please drop us an " | |
505 | +"email to" | |
516 | 506 | msgstr "" |
517 | -"Se você não receber o email, por favor verifique sua lixeira. E se não encontrar, mande " | |
518 | -"um email para" | |
507 | +"Se você não receber o email, por favor verifique sua lixeira. E se não encontrar, mande um email para" | |
519 | 508 | |
520 | 509 | #: themes/pybossa-contribua-theme/templates/account/account_validation.html:9 |
521 | 510 | msgid "In the meantime, you can check some of the amazing" |
... | ... | @@ -868,19 +857,15 @@ msgid "Danger Zone!" |
868 | 857 | msgstr "Zona Perigosa!" |
869 | 858 | |
870 | 859 | #: themes/pybossa-contribua-theme/templates/admin/del_category.html:12 |
871 | -msgid "" | |
872 | -"Deleting the category will remove it from all the projects! This operation cannot be " | |
873 | -"undone!" | |
860 | +msgid "Deleting the category will remove it from all the projects! This operation cannot be undone!" | |
874 | 861 | msgstr "" |
875 | -"Removendo a categoria irá removê-la de todas as aplicações! Esta operação não pode ser " | |
876 | -"desfeita!" | |
862 | +"Removendo a categoria irá removê-la de todas as aplicações! Esta operação não pode ser desfeita!" | |
877 | 863 | |
878 | 864 | #: themes/pybossa-contribua-theme/templates/admin/del_category.html:18 |
879 | 865 | msgid "No, do not delete it" |
880 | 866 | msgstr "Não, não apague isto" |
881 | 867 | |
882 | -#: themes/pybossa-contribua-theme/templates/admin/index.html:14 view/admin.py:388 | |
883 | -#: view/admin.py:401 | |
868 | +#: themes/pybossa-contribua-theme/templates/admin/index.html:14 view/admin.py:388 view/admin.py:401 | |
884 | 869 | msgid "Dashboard" |
885 | 870 | msgstr "" |
886 | 871 | |
... | ... | @@ -958,8 +943,7 @@ msgstr "Gerenciar projetos em destaque" |
958 | 943 | msgid "Update Category" |
959 | 944 | msgstr "Atualizar Categoria" |
960 | 945 | |
961 | -#: themes/pybossa-contribua-theme/templates/admin/users.html:11 view/admin.py:135 | |
962 | -#: view/admin.py:139 | |
946 | +#: themes/pybossa-contribua-theme/templates/admin/users.html:11 view/admin.py:135 view/admin.py:139 | |
963 | 947 | msgid "Manage Admin Users" |
964 | 948 | msgstr "Gerenciar usuários administradores" |
965 | 949 | |
... | ... | @@ -981,19 +965,17 @@ msgstr "Usuários atuais com privilégio de administrador" |
981 | 965 | |
982 | 966 | #: themes/pybossa-contribua-theme/templates/home/_about.html:5 |
983 | 967 | msgid "" |
984 | -"PyBossa is a free, open-source crowd-sourcing and micro-tasking platform. It enables " | |
985 | -"people to create and run projects that utilise online assistance in performing tasks that " | |
986 | -"require human cognition such as image classification, transcription, geocoding and more. " | |
987 | -"PyBossa is there to help researchers, civic hackers and developers to create projects " | |
988 | -"where anyone around the world with some time, interest and an internet connection can " | |
989 | -"contribute." | |
990 | -msgstr "" | |
991 | -"PyBossa é uma plataforma open-source, crowd-sourcing e micro-tasking. Ele permite que as " | |
992 | -"pessoas criem e executem projetos que utilizam assistência online na execução de tarefas " | |
993 | -"que requerem cognição humana, tais como classificação de imagens, transcrição, " | |
994 | -"geocodificação e muito mais. PyBossa foi criado para ajudar pesquisadores, hackers " | |
995 | -"cívicos e desenvolvedores a criar projetos onde qualquer pessoa no mundo com algum tempo, " | |
996 | -"interesse e uma conexão à internet pode contribuir." | |
968 | +"PyBossa is a free, open-source crowd-sourcing and micro-tasking platform. It enables people to create " | |
969 | +"and run projects that utilise online assistance in performing tasks that require human cognition such " | |
970 | +"as image classification, transcription, geocoding and more. PyBossa is there to help researchers, " | |
971 | +"civic hackers and developers to create projects where anyone around the world with some time, " | |
972 | +"interest and an internet connection can contribute." | |
973 | +msgstr "" | |
974 | +"PyBossa é uma plataforma open-source, crowd-sourcing e micro-tasking. Ele permite que as pessoas " | |
975 | +"criem e executem projetos que utilizam assistência online na execução de tarefas que requerem " | |
976 | +"cognição humana, tais como classificação de imagens, transcrição, geocodificação e muito mais. " | |
977 | +"PyBossa foi criado para ajudar pesquisadores, hackers cívicos e desenvolvedores a criar projetos onde " | |
978 | +"qualquer pessoa no mundo com algum tempo, interesse e uma conexão à internet pode contribuir." | |
997 | 979 | |
998 | 980 | #: themes/pybossa-contribua-theme/templates/home/_about.html:8 |
999 | 981 | msgid "PyBossa is different to existing efforts:" |
... | ... | @@ -1006,31 +988,31 @@ msgstr "É 100%% open-source" |
1006 | 988 | |
1007 | 989 | #: themes/pybossa-contribua-theme/templates/home/_about.html:11 |
1008 | 990 | msgid "" |
1009 | -"Unlike, say, “mechanical turk” style projects, PyBossa is not designed to handle payment " | |
1010 | -"or money — it is designed to support volunteer-driven projects." | |
991 | +"Unlike, say, “mechanical turk” style projects, PyBossa is not designed to handle payment or money — " | |
992 | +"it is designed to support volunteer-driven projects." | |
1011 | 993 | msgstr "" |
1012 | -"Ao contrário de, digamos, projetos estilo “mechanical turk”, PyBossa não é projetado para " | |
1013 | -"com pagamento ou dinheiro — se destina a apoiar projetos conduzidos por voluntários." | |
994 | +"Ao contrário de, digamos, projetos estilo “mechanical turk”, PyBossa não é projetado para com " | |
995 | +"pagamento ou dinheiro — se destina a apoiar projetos conduzidos por voluntários." | |
1014 | 996 | |
1015 | 997 | #: themes/pybossa-contribua-theme/templates/home/_about.html:13 |
1016 | 998 | msgid "" |
1017 | -"It's designed as a platform and framework for developing deploying crowd-sourcing and " | |
1018 | -"microtasking project rather than being a crowd-sourcing project itself. Individual crowd-" | |
1019 | -"sourcing projects are written as simple snippets of Javascript and HTML which are then " | |
1020 | -"deployed on a PyBossa instance (such as" | |
999 | +"It's designed as a platform and framework for developing deploying crowd-sourcing and microtasking " | |
1000 | +"project rather than being a crowd-sourcing project itself. Individual crowd-sourcing projects are " | |
1001 | +"written as simple snippets of Javascript and HTML which are then deployed on a PyBossa instance (such " | |
1002 | +"as" | |
1021 | 1003 | msgstr "" |
1022 | -"Ele foi projetado como uma estrutura e plataforma para desenvolver a implantação de " | |
1023 | -"projetos de crowd-sourcing e microtasking ao invés de ser em sí um projeto de crowd-" | |
1024 | -"sourcing.Projetos crowd-sourcing individuais são escritos como trechos simples em " | |
1025 | -"Javascript e HTML que são implantados em uma instância PyBossa(como o" | |
1004 | +"Ele foi projetado como uma estrutura e plataforma para desenvolver a implantação de projetos de crowd-" | |
1005 | +"sourcing e microtasking ao invés de ser em sí um projeto de crowd-sourcing.Projetos crowd-sourcing " | |
1006 | +"individuais são escritos como trechos simples em Javascript e HTML que são implantados em uma " | |
1007 | +"instância PyBossa(como o" | |
1026 | 1008 | |
1027 | 1009 | #: themes/pybossa-contribua-theme/templates/home/_about.html:13 |
1028 | 1010 | msgid "" |
1029 | -"This way one can easily develop custom projects while using the PyBossa platform to store " | |
1030 | -"your data, manage users, and handle workflow" | |
1011 | +"This way one can easily develop custom projects while using the PyBossa platform to store your data, " | |
1012 | +"manage users, and handle workflow" | |
1031 | 1013 | msgstr "" |
1032 | -"Desta forma, pode-se facilmente desenvolver projetos personalizados ao usar a plataforma " | |
1033 | -"PyBossa para armazenar seus dados, gerenciar usuários e lidar com o fluxo de trabalho" | |
1014 | +"Desta forma, pode-se facilmente desenvolver projetos personalizados ao usar a plataforma PyBossa para " | |
1015 | +"armazenar seus dados, gerenciar usuários e lidar com o fluxo de trabalho" | |
1034 | 1016 | |
1035 | 1017 | #: themes/pybossa-contribua-theme/templates/home/_about.html:18 |
1036 | 1018 | msgid "You can read more about the architecture in the" |
... | ... | @@ -1054,10 +1036,8 @@ msgid "Statistics" |
1054 | 1036 | msgstr "Estatísticas" |
1055 | 1037 | |
1056 | 1038 | #: themes/pybossa-contribua-theme/templates/home/_about.html:23 |
1057 | -msgid "" | |
1058 | -" PyBossa provides individual statistics for every project in the system, as well as a" | |
1059 | -msgstr "" | |
1060 | -" PyBossa fornece estatísticas individuais para qualquer projeto do sistema, bem como uma" | |
1039 | +msgid " PyBossa provides individual statistics for every project in the system, as well as a" | |
1040 | +msgstr " PyBossa fornece estatísticas individuais para qualquer projeto do sistema, bem como uma" | |
1061 | 1041 | |
1062 | 1042 | #: themes/pybossa-contribua-theme/templates/home/_about.html:23 |
1063 | 1043 | msgid "general overview about the system like total number of users, tasks, etc" |
... | ... | @@ -1329,10 +1309,8 @@ msgid "If you delete the project and its tasks, it will be gone forever!" |
1329 | 1309 | msgstr "Se você excluir o projeto e suas tarefas, ele não poderar ser recuperado!" |
1330 | 1310 | |
1331 | 1311 | #: themes/pybossa-contribua-theme/templates/projects/delete.html:18 |
1332 | -msgid "" | |
1333 | -"Are you sure you want to delete this project and all its tasks and associated task runs?" | |
1334 | -msgstr "" | |
1335 | -"Você está certo que deseja excluir o projeto, suas tarefas e as execuções das tarefas?" | |
1312 | +msgid "Are you sure you want to delete this project and all its tasks and associated task runs?" | |
1313 | +msgstr "Você está certo que deseja excluir o projeto, suas tarefas e as execuções das tarefas?" | |
1336 | 1314 | |
1337 | 1315 | #: themes/pybossa-contribua-theme/templates/projects/delete.html:21 |
1338 | 1316 | msgid "No, do not delete it!" |
... | ... | @@ -1384,11 +1362,11 @@ msgstr "IMPORTANTE" |
1384 | 1362 | |
1385 | 1363 | #: themes/pybossa-contribua-theme/templates/projects/export.html:55 |
1386 | 1364 | msgid "" |
1387 | -"This export option stills in beta mode and may fail in the CKAN server. If you get an " | |
1388 | -"error, please send an e-mail to info@pybossa.com" | |
1365 | +"This export option stills in beta mode and may fail in the CKAN server. If you get an error, please " | |
1366 | +"send an e-mail to info@pybossa.com" | |
1389 | 1367 | msgstr "" |
1390 | -"Esta opção de exportação está em modo beta e pode não funcionar no servidor CKAN. Se você " | |
1391 | -"receber um erro, por favor mande um e-mail para info@pybossa.com" | |
1368 | +"Esta opção de exportação está em modo beta e pode não funcionar no servidor CKAN. Se você receber um " | |
1369 | +"erro, por favor mande um e-mail para info@pybossa.com" | |
1392 | 1370 | |
1393 | 1371 | #: themes/pybossa-contribua-theme/templates/projects/export.html:60 |
1394 | 1372 | msgid "You don't have a Datahub.io API key in your" |
... | ... | @@ -1453,11 +1431,10 @@ msgid "" |
1453 | 1431 | "it \n" |
1454 | 1432 | " · How? Explain how your project " |
1455 | 1433 | "works \n" |
1456 | -" · How you can help: Explain to the volunteers how they can help and " | |
1457 | -"contribute to the goal of your " | |
1458 | -"project \n" | |
1459 | -" · Will you help make a difference? Explain to the volunteers why their " | |
1460 | -"contribution is essential and how the result of your project can help change " | |
1434 | +" · How you can help: Explain to the volunteers how they can help and contribute to the " | |
1435 | +"goal of your project \n" | |
1436 | +" · Will you help make a difference? Explain to the volunteers why their contribution " | |
1437 | +"is essential and how the result of your project can help change " | |
1461 | 1438 | "things! \n" |
1462 | 1439 | " (you can use Markdown to give format to your description!)" |
1463 | 1440 | msgstr "" |
... | ... | @@ -1466,10 +1443,10 @@ msgstr "" |
1466 | 1443 | "alcançar \n" |
1467 | 1444 | " · Como? Explique como seu projeto " |
1468 | 1445 | "funciona \n" |
1469 | -" · como ajudar: Explique aos voluntátios como eles podem contribuir para o " | |
1470 | -"objetivo do seu projeto \n" | |
1471 | -" · você ajudará a fazer a diferença? Explique aos voluntários porque sua " | |
1472 | -"contribuição é essencial e como o resultado do seu projeto pode mudar as " | |
1446 | +" · como ajudar: Explique aos voluntátios como eles podem contribuir para o objetivo do " | |
1447 | +"seu projeto \n" | |
1448 | +" · você ajudará a fazer a diferença? Explique aos voluntários porque sua contribuição " | |
1449 | +"é essencial e como o resultado do seu projeto pode mudar as " | |
1473 | 1450 | "coisas! \n" |
1474 | 1451 | " (você pode utilizar Markdown para formatar sua descrição!)" |
1475 | 1452 | |
... | ... | @@ -1505,11 +1482,11 @@ msgstr "Enviar" |
1505 | 1482 | |
1506 | 1483 | #: themes/pybossa-contribua-theme/templates/projects/presenter.html:22 |
1507 | 1484 | msgid "" |
1508 | -"Sorry, you've contributed to all the tasks for this project, but this project still needs " | |
1509 | -"more volunteers, so please spread the word!" | |
1485 | +"Sorry, you've contributed to all the tasks for this project, but this project still needs more " | |
1486 | +"volunteers, so please spread the word!" | |
1510 | 1487 | msgstr "" |
1511 | -"Desculpe, você contribuiu para todas as tarefas deste projeto, mas este projeto ainda " | |
1512 | -"precisa de mais voluntários, então convide outros colaboradores!" | |
1488 | +"Desculpe, você contribuiu para todas as tarefas deste projeto, mas este projeto ainda precisa de mais " | |
1489 | +"voluntários, então convide outros colaboradores!" | |
1513 | 1490 | |
1514 | 1491 | #: themes/pybossa-contribua-theme/templates/projects/settings.html:14 |
1515 | 1492 | msgid "Project Settings" |
... | ... | @@ -1696,8 +1673,7 @@ msgid "Close" |
1696 | 1673 | msgstr "Fechar" |
1697 | 1674 | |
1698 | 1675 | #: themes/pybossa-contribua-theme/templates/projects/task_priority.html:13 |
1699 | -#: themes/pybossa-contribua-theme/templates/projects/task_settings.html:23 | |
1700 | -#: view/projects.py:1285 | |
1676 | +#: themes/pybossa-contribua-theme/templates/projects/task_settings.html:23 view/projects.py:1285 | |
1701 | 1677 | msgid "Task Priority" |
1702 | 1678 | msgstr "Prioridade da tarefa" |
1703 | 1679 | |
... | ... | @@ -1710,13 +1686,10 @@ msgid "priority" |
1710 | 1686 | msgstr "prioridade" |
1711 | 1687 | |
1712 | 1688 | #: themes/pybossa-contribua-theme/templates/projects/task_priority.html:14 |
1713 | -msgid "" | |
1714 | -"of one or more tasks, providing a list of task IDs separated by commas. The lowest " | |
1715 | -"priority is" | |
1689 | +msgid "of one or more tasks, providing a list of task IDs separated by commas. The lowest priority is" | |
1716 | 1690 | msgstr "" |
1717 | 1691 | "de uma ou mais tarefas,\n" |
1718 | -" fornecendo uma lista de IDs das tarefas separadas por vírgula. A " | |
1719 | -"prioridade\n" | |
1692 | +" fornecendo uma lista de IDs das tarefas separadas por vírgula. A prioridade\n" | |
1720 | 1693 | " mais baixa é" |
1721 | 1694 | |
1722 | 1695 | #: themes/pybossa-contribua-theme/templates/projects/task_priority.html:14 |
... | ... | @@ -1915,11 +1888,11 @@ msgstr "O primeiro número representa o total de respostas submetidas para a tar |
1915 | 1888 | |
1916 | 1889 | #: themes/pybossa-contribua-theme/templates/projects/tasks_browse.html:18 |
1917 | 1890 | msgid "" |
1918 | -"This redundancy method will help to detect errors, typos, data forging, etc. when the " | |
1919 | -"task has been completed" | |
1891 | +"This redundancy method will help to detect errors, typos, data forging, etc. when the task has been " | |
1892 | +"completed" | |
1920 | 1893 | msgstr "" |
1921 | -"Este método de redundância vai ajudar a detectar erros, erros de digitação, forjamento de " | |
1922 | -"dados, etc., quando a tarefa for concluída" | |
1894 | +"Este método de redundância vai ajudar a detectar erros, erros de digitação, forjamento de dados, " | |
1895 | +"etc., quando a tarefa for concluída" | |
1923 | 1896 | |
1924 | 1897 | #: themes/pybossa-contribua-theme/templates/projects/tasks_browse.html:18 |
1925 | 1898 | msgid "second number" |
... | ... | @@ -1987,11 +1960,10 @@ msgstr "De um arquivo CSV" |
1987 | 1960 | |
1988 | 1961 | #: themes/pybossa-contribua-theme/templates/projects/importers/csv.html:19 |
1989 | 1962 | msgid "" |
1990 | -"Please provide a URL (i.e. DropBox, Box, Ubuntu One, etc. public link) to a CSV file with " | |
1991 | -"data for" | |
1963 | +"Please provide a URL (i.e. DropBox, Box, Ubuntu One, etc. public link) to a CSV file with data for" | |
1992 | 1964 | msgstr "" |
1993 | -"Por favor forneça uma URL (i.e. DropBox, Box, Ubuntu One, etc. link público) para o " | |
1994 | -"arquivo CSV com dados para" | |
1965 | +"Por favor forneça uma URL (i.e. DropBox, Box, Ubuntu One, etc. link público) para o arquivo CSV com " | |
1966 | +"dados para" | |
1995 | 1967 | |
1996 | 1968 | #: themes/pybossa-contribua-theme/templates/projects/importers/csv.html:19 |
1997 | 1969 | #: themes/pybossa-contribua-theme/templates/projects/importers/dropbox.html:25 |
... | ... | @@ -2031,8 +2003,7 @@ msgstr "De um projeto EpiCollect Plus" |
2031 | 2003 | |
2032 | 2004 | #: themes/pybossa-contribua-theme/templates/projects/importers/epicollect.html:19 |
2033 | 2005 | msgid "Please provide an EpiCollect Plus project name to import its data for" |
2034 | -msgstr "" | |
2035 | -"Por favor forneça o nome de um projeto EpiCollect Plus de modo a importar seus dados para" | |
2006 | +msgstr "Por favor forneça o nome de um projeto EpiCollect Plus de modo a importar seus dados para" | |
2036 | 2007 | |
2037 | 2008 | #: themes/pybossa-contribua-theme/templates/projects/importers/epicollect.html:21 |
2038 | 2009 | msgid "The name of the public EpiCollect Plus project" |
... | ... | @@ -2449,13 +2420,12 @@ msgstr "Oooops, email/senha incorreto" |
2449 | 2420 | |
2450 | 2421 | #: view/account.py:112 |
2451 | 2422 | msgid "Ooops, we didn't find you in the system, did you sign up?" |
2452 | -msgstr "" | |
2453 | -"Ooops, não encontramos você no sistema, você se cadastrou?" | |
2423 | +msgstr "Ooops, não encontramos você no sistema, você se cadastrou?" | |
2454 | 2424 | |
2455 | -#: view/account.py:117 view/account.py:216 view/account.py:491 view/account.py:507 | |
2456 | -#: view/account.py:521 view/account.py:554 view/admin.py:268 view/admin.py:349 | |
2457 | -#: view/projects.py:219 view/projects.py:276 view/projects.py:415 view/projects.py:1225 | |
2458 | -#: view/projects.py:1276 view/projects.py:1321 view/projects.py:1396 view/projects.py:1441 | |
2425 | +#: view/account.py:117 view/account.py:216 view/account.py:491 view/account.py:507 view/account.py:521 | |
2426 | +#: view/account.py:554 view/admin.py:268 view/admin.py:349 view/projects.py:219 view/projects.py:276 | |
2427 | +#: view/projects.py:415 view/projects.py:1225 view/projects.py:1276 view/projects.py:1321 | |
2428 | +#: view/projects.py:1396 view/projects.py:1441 | |
2459 | 2429 | msgid "Please correct the errors" |
2460 | 2430 | msgstr "Por favor corrija os erros" |
2461 | 2431 | |
... | ... | @@ -2488,20 +2458,18 @@ msgid "Profile" |
2488 | 2458 | msgstr "Perfil" |
2489 | 2459 | |
2490 | 2460 | #: view/account.py:448 |
2491 | -msgid "" | |
2492 | -"Your avatar has been updated! It may take some minutes to refresh..." | |
2461 | +msgid "Your avatar has been updated! It may take some minutes to refresh..." | |
2493 | 2462 | msgstr "" |
2494 | -"Seu avatar está sendo atualizado! pode demorar alguns minutos para " | |
2495 | -"atualização..." | |
2463 | +"Seu avatar está sendo atualizado! pode demorar alguns minutos para atualização..." | |
2496 | 2464 | |
2497 | 2465 | #: view/account.py:478 |
2498 | 2466 | #, python-format |
2499 | 2467 | msgid "" |
2500 | -"An email has been sent to verify your new email: %s. Once you " | |
2501 | -"verify it, it will be updated.email_addr" | |
2468 | +"An email has been sent to verify your new email: %s. Once you verify it, it " | |
2469 | +"will be updated.email_addr" | |
2502 | 2470 | msgstr "" |
2503 | -"Um email foi enviado para veirificar seu novo email: %s. Uma vez " | |
2504 | -"que você verificar, será atualizado.email_addr" | |
2471 | +"Um email foi enviado para veirificar seu novo email: %s. Uma vez que você " | |
2472 | +"verificar, será atualizado.email_addr" | |
2505 | 2473 | |
2506 | 2474 | #: view/account.py:489 view/account.py:519 |
2507 | 2475 | msgid "Your profile has been updated!" |
... | ... | @@ -2525,11 +2493,11 @@ msgstr "Nós lhe enviamos um email com as instruções para recuperação de sua |
2525 | 2493 | |
2526 | 2494 | #: view/account.py:609 |
2527 | 2495 | msgid "" |
2528 | -"We don't have this email in our records. You may have signed up with a different email or " | |
2529 | -"used Twitter, Facebook, or Google to sign-in" | |
2496 | +"We don't have this email in our records. You may have signed up with a different email or used " | |
2497 | +"Twitter, Facebook, or Google to sign-in" | |
2530 | 2498 | msgstr "" |
2531 | -"Nós não temos este email em nossos registros. Você deve ter entrado com um email " | |
2532 | -"diferente ou usado sua conta do Twitter, Facebook ou Google" | |
2499 | +"Nós não temos este email em nossos registros. Você deve ter entrado com um email diferente ou usado " | |
2500 | +"sua conta do Twitter, Facebook ou Google" | |
2533 | 2501 | |
2534 | 2502 | #: view/account.py:614 |
2535 | 2503 | msgid "Something went wrong, please correct the errors on the form" |
... | ... | @@ -2549,11 +2517,10 @@ msgstr "Categoria removida" |
2549 | 2517 | |
2550 | 2518 | #: view/admin.py:306 |
2551 | 2519 | msgid "" |
2552 | -"Sorry, it is not possible to delete the only available category. You can modify it, " | |
2553 | -"click the edit button" | |
2520 | +"Sorry, it is not possible to delete the only available category. You can modify it, click the edit " | |
2521 | +"button" | |
2554 | 2522 | msgstr "" |
2555 | -"Desculpe, não é possível remover a única categoria disponível. Você pode modificá-la no " | |
2556 | -"botão Editar" | |
2523 | +"Desculpe, não é possível remover a única categoria disponível. Você pode modificá-la no botão Editar" | |
2557 | 2524 | |
2558 | 2525 | #: view/admin.py:345 |
2559 | 2526 | msgid "Category updated" |
... | ... | @@ -2593,11 +2560,9 @@ msgstr "import de CSV" |
2593 | 2560 | |
2594 | 2561 | #: view/projects.py:286 |
2595 | 2562 | msgid "" |
2596 | -" or download the project bundle and run the <strong>createTasks.py</strong> script in " | |
2597 | -"your computer" | |
2563 | +" or download the project bundle and run the <strong>createTasks.py</strong> script in your computer" | |
2598 | 2564 | msgstr "" |
2599 | -" ou faça o download do pacote e execute o script <strong>createTasks.py</strong> em seu " | |
2600 | -"computador" | |
2565 | +" ou faça o download do pacote e execute o script <strong>createTasks.py</strong> em seu computador" | |
2601 | 2566 | |
2602 | 2567 | #: view/projects.py:352 |
2603 | 2568 | msgid "Project deleted!" |
... | ... | @@ -2609,11 +2574,11 @@ msgstr "Projeto atualizado!" |
2609 | 2574 | |
2610 | 2575 | #: view/projects.py:434 |
2611 | 2576 | msgid "" |
2612 | -"Your project thumbnail has been updated! It may take " | |
2613 | -"some minutes to refresh..." | |
2577 | +"Your project thumbnail has been updated! It may take some minutes " | |
2578 | +"to refresh..." | |
2614 | 2579 | msgstr "" |
2615 | -"A miniatura do seu projeto foi atualizada! Pode demorar " | |
2616 | -"alguns minutos para atualização..." | |
2580 | +"A miniatura do seu projeto foi atualizada! Pode demorar alguns " | |
2581 | +"minutos para atualização..." | |
2617 | 2582 | |
2618 | 2583 | #: view/projects.py:437 |
2619 | 2584 | msgid "You must provide a file to change the avatar" |
... | ... | @@ -2625,11 +2590,11 @@ msgstr "Importando tarefas, isto pode demorar um pouco, aguarde..." |
2625 | 2590 | |
2626 | 2591 | #: view/projects.py:573 |
2627 | 2592 | msgid "" |
2628 | -"You're trying to import a large amount of tasks, so please be patient. You " | |
2629 | -"will receive an email when the tasks are ready." | |
2593 | +"You're trying to import a large amount of tasks, so please be patient. You will receive an " | |
2594 | +"email when the tasks are ready." | |
2630 | 2595 | msgstr "" |
2631 | -"Você está tentando importar uma grande quantidade de tarefas, por favor seja " | |
2632 | -"paciente. Você receberá um e-mail quando as tarefas estiverem prontas." | |
2596 | +"Você está tentando importar uma grande quantidade de tarefas, por favor seja paciente. " | |
2597 | +"Você receberá um e-mail quando as tarefas estiverem prontas." | |
2633 | 2598 | |
2634 | 2599 | #: view/projects.py:616 |
2635 | 2600 | msgid "Success! Tasks will be imported daily." |
... | ... | @@ -2641,13 +2606,11 @@ msgstr "Desculpe, senha incorreta" |
2641 | 2606 | |
2642 | 2607 | #: view/projects.py:700 |
2643 | 2608 | msgid "Ooops! You are an anonymous user and will not get any credit for your contributions." |
2644 | -msgstr "" | |
2645 | -"Ooops! Você é um usuário anônimo e não ganhará nenhum crédito por suas contribuições." | |
2609 | +msgstr "Ooops! Você é um usuário anônimo e não ganhará nenhum crédito por suas contribuições." | |
2646 | 2610 | |
2647 | 2611 | #: view/projects.py:719 view/projects.py:771 |
2648 | 2612 | msgid "Sorry, but this project is still a draft and does not have a task presenter." |
2649 | -msgstr "" | |
2650 | -"Desculpe, mas este projeto ainda é um rascunho e não tem nenhum visualizadorde tarefas." | |
2613 | +msgstr "Desculpe, mas este projeto ainda é um rascunho e não tem nenhum visualizadorde tarefas." | |
2651 | 2614 | |
2652 | 2615 | #: view/projects.py:899 |
2653 | 2616 | msgid "All the tasks and associated task runs have been deleted" |
... | ... | @@ -2663,19 +2626,16 @@ msgstr "Dados exportados para " |
2663 | 2626 | |
2664 | 2627 | #: view/projects.py:1063 |
2665 | 2628 | msgid "" |
2666 | -"Oops, the project does not have tasks to export, if you are the owner " | |
2667 | -"add some tasks" | |
2629 | +"Oops, the project does not have tasks to export, if you are the owner add some " | |
2630 | +"tasks" | |
2668 | 2631 | msgstr "" |
2669 | -"Oops, o projeto não tem tarefas para exportar, se você é o " | |
2670 | -"proprietário adicione algumas tarefas" | |
2632 | +"Oops, o projeto não tem tarefas para exportar, se você é o proprietário " | |
2633 | +"adicione algumas tarefas" | |
2671 | 2634 | |
2672 | 2635 | #: view/projects.py:1069 |
2673 | 2636 | msgid "" |
2674 | -"Oops, there are no Task Runs yet to export, invite some users to " | |
2675 | -"participate" | |
2676 | -msgstr "" | |
2677 | -"Oops, não existem execuções para exportar,convide usuários para " | |
2678 | -"participar" | |
2637 | +"Oops, there are no Task Runs yet to export, invite some users to participate" | |
2638 | +msgstr "Oops, não existem execuções para exportar,convide usuários para participar" | |
2679 | 2639 | |
2680 | 2640 | #: view/projects.py:1221 |
2681 | 2641 | msgid "Redundancy of Tasks updated!" |
... | ... | @@ -2801,8 +2761,7 @@ msgid "Our records show that you use your" |
2801 | 2761 | msgstr "" |
2802 | 2762 | |
2803 | 2763 | msgid "" |
2804 | -"account to sign in. Please use the same account to sign-in again. If you forgot the " | |
2805 | -"password to your" | |
2764 | +"account to sign in. Please use the same account to sign-in again. If you forgot the password to your" | |
2806 | 2765 | msgstr "" |
2807 | 2766 | |
2808 | 2767 | msgid "account, please contact" |
... | ... | @@ -2827,8 +2786,8 @@ msgid "Click here to confirm your e-mail address and create your account" |
2827 | 2786 | msgstr "" |
2828 | 2787 | |
2829 | 2788 | msgid "" |
2830 | -"Online assistance in performing tasks that require human cognition, knowledge or " | |
2831 | -"intelligence such as image classification, transcription, geocoding and more!" | |
2789 | +"Online assistance in performing tasks that require human cognition, knowledge or intelligence such as " | |
2790 | +"image classification, transcription, geocoding and more!" | |
2832 | 2791 | msgstr "" |
2833 | 2792 | "Assistência online para execução de tarefas que requerem cognição humana, conhecimento ou " |
2834 | 2793 | "inteligência, como classificação de imagens, transcrição, geocodificação e muito mais!" |
... | ... | @@ -2884,8 +2843,7 @@ msgid "" |
2884 | 2843 | " priority is" |
2885 | 2844 | msgstr "" |
2886 | 2845 | "de uma ou mais tarefas,\n" |
2887 | -" fornecendo uma lista de IDs das tarefas separadas por vírgula. A " | |
2888 | -"prioridade\n" | |
2846 | +" fornecendo uma lista de IDs das tarefas separadas por vírgula. A prioridade\n" | |
2889 | 2847 | " mais baixa é" |
2890 | 2848 | |
2891 | 2849 | msgid "" |
... | ... | @@ -2920,11 +2878,11 @@ msgid "" |
2920 | 2878 | "returns a task\n" |
2921 | 2879 | " randomly --a user could get the same task twice or more\n" |
2922 | 2880 | " times" |
2923 | - | |
2924 | 2881 | msgstr "" |
2925 | 2882 | "Retorna uma tarefa\n" |
2926 | 2883 | " aleatória - um usuário pode receber a tarefa duas ou mais\n" |
2927 | 2884 | " vezes" |
2885 | + | |
2928 | 2886 | msgid "" |
2929 | 2887 | "If you delete all the\n" |
2930 | 2888 | " tasks and task runs they will be gone\n" |
... | ... | @@ -2942,16 +2900,19 @@ msgstr "" |
2942 | 2900 | " nada" |
2943 | 2901 | |
2944 | 2902 | # view/projects.py:807 |
2945 | -msgid "Oops! You have to sign in to participate in <strong>WikiLibras</strong>" | |
2946 | -" project" | |
2903 | +msgid "" | |
2904 | +"Oops! You have to sign in to participate in <strong>WikiLibras</strong> " | |
2905 | +"project" | |
2947 | 2906 | msgstr "Oops! Você precisa se cadastrar para participar do projeto <strong>WikiLibras</strong>" |
2948 | 2907 | |
2949 | -msgid "Oops! You have to sign in to participate in <strong>Corretor de Sinais</strong>" | |
2950 | -" project" | |
2908 | +msgid "" | |
2909 | +"Oops! You have to sign in to participate in <strong>Corretor de Sinais</strong> " | |
2910 | +"project" | |
2951 | 2911 | msgstr "Oops! Você precisa se cadastrar para participar do projeto <strong>Corretor de Sinais</strong>" |
2952 | 2912 | |
2953 | -msgid "Oops! You have to sign in to participate in <strong>Validador de Sinais</strong>" | |
2954 | -" project" | |
2913 | +msgid "" | |
2914 | +"Oops! You have to sign in to participate in <strong>Validador de Sinais</strong> " | |
2915 | +"project" | |
2955 | 2916 | msgstr "Oops! Você precisa se cadastrar para participar do projeto <strong>Validador de Sinais</strong>" |
2956 | 2917 | |
2957 | 2918 | # themes/default/templates/projects/index.html:30 |
... | ... | @@ -2969,3 +2930,30 @@ msgstr "atividade" |
2969 | 2930 | # themes/default/templates/projects/index.html:33 |
2970 | 2931 | msgid "progress" |
2971 | 2932 | msgstr "progresso" |
2933 | + | |
2934 | +# forms/forms.py:283 | |
2935 | +msgid "You want to participate as" | |
2936 | +msgstr "Deseja atuar como" | |
2937 | + | |
2938 | +# view/projects.py:758 | |
2939 | +# view/projects.py:815 | |
2940 | +msgid "" | |
2941 | +"Oops! Your profile <strong>(Colaborador)</strong> does not have access to the <strong>Validador de Sinais</strong> " | |
2942 | +"project" | |
2943 | +msgstr "Oops! O seu perfil <strong>(Colaborador)</strong> não tem acesso ao projeto <strong>Validador de Sinais</strong>" | |
2944 | + | |
2945 | +msgid "" | |
2946 | +"Oops! Your profile <strong>(Colaborador)</strong> does not have access to the <strong>Corretor de Sinais</strong> " | |
2947 | +"project" | |
2948 | +msgstr "Oops! O seu perfil <strong>(Colaborador)</strong> não tem acesso ao projeto <strong>Corretor de Sinais</strong>" | |
2949 | + | |
2950 | +msgid "" | |
2951 | +"Oops! Your profile <strong>(Animador)</strong> does not have access to the <strong>Validador de Sinais</strong> " | |
2952 | +"project" | |
2953 | +msgstr "Oops! O seu perfil <strong>(Animador)</strong> não tem acesso ao projeto <strong>Validador de Sinais</strong>" | |
2954 | + | |
2955 | +msgid "" | |
2956 | +"Oops! Your profile <strong>(Especialista)</strong> does not have access to the <strong>Corretor de Sinais</strong> " | |
2957 | +"project" | |
2958 | +msgstr "Oops! O seu perfil <strong>(Especialista)</strong> não tem acesso ao projeto <strong>Corretor de Sinais</strong>" | |
2959 | + | ... | ... |
pybossa/view/account.py
... | ... | @@ -199,10 +199,12 @@ def register(): |
199 | 199 | |
200 | 200 | """ |
201 | 201 | form = RegisterForm(request.form) |
202 | + form.set_profile_choices(current_app.config.get('PROFILES')) | |
202 | 203 | if request.method == 'POST' and form.validate(): |
203 | 204 | account = dict(fullname=form.fullname.data, name=form.name.data, |
204 | 205 | email_addr=form.email_addr.data, |
205 | - password=form.password.data) | |
206 | + password=form.password.data, profile=form.profile.data, | |
207 | + locale=current_app.config.get('DEFAULT_LOCALE')) | |
206 | 208 | confirm_url = get_email_confirmation_url(account) |
207 | 209 | if current_app.config.get('ACCOUNT_CONFIRMATION_DISABLED'): |
208 | 210 | return _create_account(account) |
... | ... | @@ -268,10 +270,16 @@ def confirm_account(): |
268 | 270 | |
269 | 271 | |
270 | 272 | def _create_account(user_data): |
273 | + profile = user_repo.get_profile_by(name=user_data['profile']) | |
274 | + if profile is None: | |
275 | + return | |
276 | + | |
271 | 277 | new_user = model.user.User(fullname=user_data['fullname'], |
272 | 278 | name=user_data['name'], |
273 | 279 | email_addr=user_data['email_addr'], |
274 | - valid_email=True) | |
280 | + valid_email=True, | |
281 | + profile_id=profile.id, | |
282 | + locale=user_data['locale']) | |
275 | 283 | new_user.set_password(user_data['password']) |
276 | 284 | user_repo.save(new_user) |
277 | 285 | flash(gettext('Thanks for signing-up'), 'success') | ... | ... |
pybossa/view/projects.py
... | ... | @@ -738,7 +738,7 @@ def task_presenter(short_name, task_id): |
738 | 738 | if not project.allow_anonymous_contributors: |
739 | 739 | msg = ("Oops! You have to sign in to participate in " |
740 | 740 | "<strong>%s</strong>" |
741 | - "project" % project.name) | |
741 | + " project" % project.name) | |
742 | 742 | flash(gettext(msg), 'warning') |
743 | 743 | return redirect(url_for('account.signin', |
744 | 744 | next=url_for('.presenter', |
... | ... | @@ -752,6 +752,13 @@ def task_presenter(short_name, task_id): |
752 | 752 | short_name=short_name, task_id=task_id) |
753 | 753 | url = url_for('account.signin', next=next_url) |
754 | 754 | flash(msg_1 + "<a href=\"" + url + "\">Sign in now!</a>", "warning") |
755 | + | |
756 | + if not current_user.is_anonymous() and not user_repo.profile_has_access(current_user, project.short_name): | |
757 | + profile = user_repo.get_profile(current_user.profile_id) | |
758 | + msg = "Oops! Your profile <strong>(%s)</strong> does not have access to the <strong>%s</strong> \ | |
759 | + project" % (profile.name, project.name) | |
760 | + flash(gettext(msg), 'warning') | |
761 | + return redirect(url_for('project.index')) | |
755 | 762 | |
756 | 763 | title = project_title(project, "Contribute") |
757 | 764 | template_args = {"project": project, "title": title, "owner": owner} |
... | ... | @@ -802,6 +809,13 @@ def presenter(short_name): |
802 | 809 | title = project_title(project, "Contribute") |
803 | 810 | template_args = {"project": project, "title": title, "owner": owner, |
804 | 811 | "invite_new_volunteers": invite_new_volunteers(project)} |
812 | + | |
813 | + if not current_user.is_anonymous() and not user_repo.profile_has_access(current_user, project.short_name): | |
814 | + profile = user_repo.get_profile(current_user.profile_id) | |
815 | + msg = "Oops! Your profile <strong>(%s)</strong> does not have access to the <strong>%s</strong> \ | |
816 | + project" % (profile.name, project.name) | |
817 | + flash(gettext(msg), 'warning') | |
818 | + return redirect(url_for('project.index')) | |
805 | 819 | |
806 | 820 | if not project.allow_anonymous_contributors and current_user.is_anonymous(): |
807 | 821 | msg = "Oops! You have to sign in to participate in <strong>%s</strong> \ | ... | ... |
settings_local.py.tmpl
... | ... | @@ -60,11 +60,15 @@ CONTACT_TWITTER = 'PyBossa' |
60 | 60 | ## NOTE: You need to create a symbolic link to the translations folder, otherwise |
61 | 61 | ## this wont work. |
62 | 62 | ## ln -s pybossa/themes/your-theme/translations pybossa/translations |
63 | -DEFAULT_LOCALE = 'pt_BR' | |
63 | +DEFAULT_LOCALE = u'pt_BR' | |
64 | 64 | LOCALES = [('en', 'English'), ('es', u'Español'), |
65 | 65 | ('it', 'Italiano'), ('fr', u'Français'), |
66 | 66 | ('ja', u'日本語'),('pt_BR', u'Português (BR)')] |
67 | 67 | |
68 | +# Profiles | |
69 | +PROFILES = [('Colaborador','Colaborador'), ('Animador','Animador 3D'), ('Especialista', 'Especialista em LIBRAS')] | |
70 | + | |
71 | + | |
68 | 72 | ## list of administrator emails to which error emails get sent |
69 | 73 | # ADMINS = ['me@sysadmin.org'] |
70 | 74 | ... | ... |