Compare View

switch
from
...
to
 
Commits (27)
README.rst
... ... @@ -50,8 +50,18 @@ First install the dependencies and than the project it self:
50 50  
51 51 .. code-block::
52 52  
53   - pip install -r requirements.txt
54   - pip install .
  53 + pip install -e .
  54 +
  55 +Development environment
  56 +-----------------------
  57 +
  58 +You must install vagrant to set up the development environment. With vagrant available you should run:
  59 +
  60 +.. code-block::
  61 +
  62 + vagrant up
  63 +
  64 +During the process you should choose the vagrant box that you want to use. In the end you should have a virtual machine with development environment set up.
55 65  
56 66  
57 67  
... ... @@ -60,13 +70,17 @@ Running Colab
60 70  
61 71 To run Colab with development server you will have to:
62 72  
63   -1- Create the example configuration file:
  73 +1- Log in virtual machine:
64 74  
65 75 .. code-block::
66 76  
67   - colab-admin initconfig > /etc/colab/settings.py
  77 + vagrant ssh
68 78  
69   -2- Edit the configuration file. Make sure you set everything you need including **database** credentials.
  79 +2- Use colab virtualenv:
  80 +
  81 +.. code-block::
  82 +
  83 + workon colab
70 84  
71 85 3- Run the development server:
72 86  
... ... @@ -74,6 +88,7 @@ To run Colab with development server you will have to:
74 88  
75 89 colab-admin runserver 0.0.0.0:8000
76 90  
  91 +Now you can access colab in your browser via http://localhost:8000
77 92  
78 93 **NOTE**: In case you want to keep the configuration file else where just set the
79 94 desired location in environment variable **COLAB_SETTINGS**.
... ... @@ -84,12 +99,33 @@ About test
84 99 How to write a test
85 100 --------------------
86 101 Inside of each folder on /vagrant/colab/<folder> you can create a folder called
87   -"tests", and inside of it implements the code for test each file.
  102 +"tests" and inside of it implements the code for test each file. Remember that you should create __init__.py file.
88 103  
89 104 How to run the tests
90 105 --------------------
91 106  
92 107 Follow the steps below:
93 108  
94   -* Go to vagrant/colab/
95   -* run: ./runtests.sh
  109 +1- Log in virtual machine:
  110 +
  111 +.. code-block::
  112 +
  113 + vagrant ssh
  114 +
  115 +2- Use colab virtualenv:
  116 +
  117 +.. code-block::
  118 +
  119 + workon colab
  120 +
  121 +3- Enter into colab source code directory:
  122 +
  123 +.. code-block::
  124 +
  125 + cd /vagrant
  126 +
  127 +4- Run tests with setup.py:
  128 +
  129 +.. code-block::
  130 +
  131 + python setup.py test
... ...
colab/accounts/forms.py
... ... @@ -237,6 +237,7 @@ class UserChangeForm(forms.ModelForm):
237 237 help_text=_("Required. 30 characters or fewer. Letters and digits."),
238 238 error_messages={
239 239 'invalid': _("This value may contain only letters and numbers.")})
  240 + # TODO: remove this hardcoded URL from here
240 241 password = ReadOnlyPasswordHashField(label=_("Password"),
241 242 help_text=_("Raw passwords are not"
242 243 " stored, so there is no"
... ...
colab/accounts/templates/accounts/user_update_form.html
1 1 {% extends "base.html" %}
2   -{% load i18n gravatar %}
  2 +{% load i18n gravatar plugins %}
3 3  
4 4 {% block head_js %}
5 5 <script>
... ... @@ -102,6 +102,14 @@ $(function() {
102 102 </script>
103 103 {% endblock %}
104 104  
  105 +{% block head %}
  106 + {{ block.super }}
  107 +
  108 + {% for widget in widgets %}
  109 + {{ widget.get_header }}
  110 + {% endfor %}
  111 +
  112 +{% endblock %}
105 113  
106 114 {% block main-content %}
107 115  
... ... @@ -118,83 +126,115 @@ $(function() {
118 126 <br>
119 127 <br>
120 128  
121   - <form method="post">
122   - {% csrf_token %}
123   -
124   - <div class="row">
125   - <div class="col-lg-8 col-md-7 col-sm-12 col-xm-12">
126   - {% for field in form %}
127   - <div class="col-lg-6 col-md-6 col-sm-12 col-xm-12">
128   - <div class="form-group{% if field.field.required %} required{% endif %}{% if field.errors %} alert alert-danger has-error{% endif %}">
129   - <label for="{{ field.name }}" class="control-label">
130   - {{ field.label }}
131   - </label>
132   - {{ field }}
133   - {{ field.errors }}
134   - </div>
135   - </div>
136   - {% endfor %}
137   - </div>
  129 + <!-- Start of navs -->
  130 + <ul class="nav nav-tabs">
  131 + <li class="active"><a data-toggle="pill" href="#profile">Profile</a></li>
  132 + {% for widget in widgets %}
  133 + <li>
  134 + <a data-toggle="pill" href="#{{ widget.identifier }}">{{ widget.name }}</a>
  135 + </li>
  136 + {% endfor %}
  137 + </ul>
  138 + <!-- End of navs -->
  139 + <style type="text/css">
  140 + .tab-pane{
  141 + border: 1px solid #DDD;
  142 + border-top: none;
  143 + padding: 10px;
  144 + }
138 145  
139   - <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12">
140   - <div class="panel panel-default">
141   - <div class="panel-heading">
142   - <h3 class="panel-title">{% trans "Emails" %}</h3>
143   - </div>
144   - <div class="panel-body">
145   - <ul class="unstyled-list emails">
146   - {% for email in user_.emails.iterator %}
147   - <li>
148   - {% gravatar user_.email 30 %}
149   - <span class="email-address">{{ email.address }}</span>
150   - {% if email.address == user_.email %}
151   - <span class="label label-success">{% trans "Primary" %}</span>
152   - {% else %}
153   - <div class="text-right">
154   - <button class="btn btn-default set-primary" data-loading-text="{% trans 'Setting...' %}">{% trans "Set as Primary" %}</button>
155   - <button class="btn btn-danger delete-email" data-loading-text="{% trans 'Deleting...' %}">{% trans "Delete" %}</button>
156   - </div>
157   - {% endif %}
158   - <hr />
159   - </li>
  146 + .nav-tabs a:focus {
  147 + outline: none;
  148 + }
  149 + </style>
  150 + <div class="tab-content">
  151 + <div id="profile" class="tab-pane fade in active">
  152 + <form method="post">
  153 + {% csrf_token %}
  154 +
  155 + <div class="row">
  156 + <div class="col-lg-8 col-md-7 col-sm-12 col-xm-12">
  157 + {% for field in form %}
  158 + <div class="col-lg-6 col-md-6 col-sm-12 col-xm-12">
  159 + <div class="form-group{% if field.field.required %} required{% endif %}{% if field.errors %} alert alert-danger has-error{% endif %}">
  160 + <label for="{{ field.name }}" class="control-label">
  161 + {{ field.label }}
  162 + </label>
  163 + {{ field }}
  164 + {{ field.errors }}
  165 + </div>
  166 + </div>
160 167 {% endfor %}
161   - {% for email in user_.emails_not_validated.iterator %}
162   - <li>
163   - {% gravatar user_.email 30 %}
164   - <span class="email-address">{{ email.address }}</span>
165   - <div class="text-right">
166   - <button class="btn btn-default verify-email" data-loading-text="{% trans 'Sending verification...' %}"><span class="icon-warning-sign"></span> {% trans "Verify" %}</button>
167   - <button class="btn btn-danger delete-email">{% trans "Delete" %}</button>
  168 + </div>
  169 +
  170 + <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12">
  171 + <div class="panel panel-default">
  172 + <div class="panel-heading">
  173 + <h3 class="panel-title">{% trans "Emails" %}</h3>
  174 + </div>
  175 + <div class="panel-body">
  176 + <ul class="unstyled-list emails">
  177 + {% for email in user_.emails.iterator %}
  178 + <li>
  179 + {% gravatar user_.email 30 %}
  180 + <span class="email-address">{{ email.address }}</span>
  181 + {% if email.address == user_.email %}
  182 + <span class="label label-success">{% trans "Primary" %}</span>
  183 + {% else %}
  184 + <div class="text-right">
  185 + <button class="btn btn-default set-primary" data-loading-text="{% trans 'Setting...' %}">{% trans "Set as Primary" %}</button>
  186 + <button class="btn btn-danger delete-email" data-loading-text="{% trans 'Deleting...' %}">{% trans "Delete" %}</button>
  187 + </div>
  188 + {% endif %}
  189 + <hr />
  190 + </li>
  191 + {% endfor %}
  192 + {% for email in user_.emails_not_validated.iterator %}
  193 + <li>
  194 + {% gravatar user_.email 30 %}
  195 + <span class="email-address">{{ email.address }}</span>
  196 + <div class="text-right">
  197 + <button class="btn btn-default verify-email" data-loading-text="{% trans 'Sending verification...' %}"><span class="icon-warning-sign"></span> {% trans "Verify" %}</button>
  198 + <button class="btn btn-danger delete-email">{% trans "Delete" %}</button>
  199 + </div>
  200 + <hr />
  201 + </li>
  202 + {% endfor %}
  203 + </ul>
  204 + <div class="form-group">
  205 + <label for="new_email">{% trans "Add another email address:" %}</label>
  206 + <input id="new_email" name="new_email" class="form-control" autocomplete="off" />
168 207 </div>
169   - <hr />
170   - </li>
171   - {% endfor %}
172   - </ul>
173   - <div class="form-group">
174   - <label for="new_email">{% trans "Add another email address:" %}</label>
175   - <input id="new_email" name="new_email" class="form-control" autocomplete="off" />
  208 + <button class="btn btn-primary pull-right" id="add-email">{% trans "Add" %}</button>
  209 + </div>
176 210 </div>
177   - <button class="btn btn-primary pull-right" id="add-email">{% trans "Add" %}</button>
178 211 </div>
179   - </div>
180   - </div>
181   - <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12">
182   - <div class="panel panel-default">
183   - <div class="panel-heading">
184   - <h3 class="panel-title">
185   - {% trans 'Change Password' %}
186   - </h3>
  212 + <div class="col-lg-4 col-md-5 col-sm-12 col-xm-12">
  213 + <div class="panel panel-default">
  214 + <div class="panel-heading">
  215 + <h3 class="panel-title">
  216 + {% trans 'Change Password' %}
  217 + </h3>
  218 + </div>
  219 + <div class="panel-body">
  220 + <a href="{% url 'password_change' %}" class="btn btn-default btn-primary pull-right btn-block">{% trans "Change Password" %}</a>
  221 + </div>
  222 + </div>
187 223 </div>
188   - <div class="panel-body">
189   - <a href="{% url 'password_change' %}" class="btn btn-default btn-primary pull-right btn-block">{% trans "Change Password" %}</a>
  224 + </div>
  225 + <div class="row">
  226 + <div class="submit">
  227 + <button type="submit" class="btn btn-primary btn-lg btn-block">{% trans "Update" %}</button>
190 228 </div>
191 229 </div>
192   - </div>
  230 + </form>
193 231 </div>
194   - <div class="row">
195   - <div class="submit">
196   - <button type="submit" class="btn btn-primary btn-lg btn-block">{% trans "Update" %}</button>
  232 + {% for widget in widgets %}
  233 + <div id="{{ widget.identifier }}" class="tab-pane fade">
  234 + <h2>{{ widget.name }}</h2>
  235 + {{ widget.get_body }}
197 236 </div>
198   - </div>
199   - </form>
  237 + {% endfor %}
  238 + </div>
  239 +
200 240 {% endblock %}
... ...
colab/accounts/views.py
... ... @@ -15,6 +15,7 @@ from colab.super_archives.models import (EmailAddress,
15 15 EmailAddressValidation)
16 16 from colab.search.utils import get_collaboration_data, get_visible_threads
17 17 from colab.accounts.models import User
  18 +from colab.widgets.widget_manager import WidgetManager
18 19  
19 20 from .forms import (UserCreationForm, ListsForm, UserUpdateForm)
20 21 from .utils import mailman
... ... @@ -42,6 +43,12 @@ class UserProfileUpdateView(UserProfileBaseMixin, UpdateView):
42 43  
43 44 return obj
44 45  
  46 + def get_context_data(self, **kwargs):
  47 + context = {}
  48 + context['widgets'] = WidgetManager.get_widgets('profile', self.request)
  49 + context.update(kwargs)
  50 + return super(UserProfileUpdateView, self).get_context_data(**context)
  51 +
45 52  
46 53 class UserProfileDetailView(UserProfileBaseMixin, DetailView):
47 54 template_name = 'accounts/user_detail.html'
... ...
colab/locale/en/LC_MESSAGES/django.mo
No preview for this file type
colab/locale/en/LC_MESSAGES/django.po
1 1 # SOME DESCRIPTIVE TITLE.
2 2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 3 # This file is distributed under the same license as the PACKAGE package.
4   -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
5   -#
6   -#, fuzzy
  4 +#
  5 +# Translators:
7 6 msgid ""
8 7 msgstr ""
9   -"Project-Id-Version: PACKAGE VERSION\n"
  8 +"Project-Id-Version: colab\n"
10 9 "Report-Msgid-Bugs-To: \n"
11   -"POT-Creation-Date: 2014-11-21 17:05+0000\n"
12   -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13   -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14   -"Language-Team: LANGUAGE <LL@li.org>\n"
15   -"Language: \n"
  10 +"POT-Creation-Date: 2015-09-01 13:15+0000\n"
  11 +"PO-Revision-Date: 2015-09-04 19:21+0000\n"
  12 +"Last-Translator: Lucas Kanashiro Duarte <kanashiro.duarte@gmail.com>\n"
  13 +"Language-Team: English (http://www.transifex.com/colab/colab/language/en/)\n"
16 14 "MIME-Version: 1.0\n"
17 15 "Content-Type: text/plain; charset=UTF-8\n"
18 16 "Content-Transfer-Encoding: 8bit\n"
  17 +"Language: en\n"
  18 +"Plural-Forms: nplurals=2; plural=(n != 1);\n"
19 19  
20   -#: accounts/admin.py:40
  20 +#: accounts/admin.py:18
21 21 msgid "Personal info"
22   -msgstr ""
  22 +msgstr "Personal info"
23 23  
24   -#: accounts/admin.py:43
  24 +#: accounts/admin.py:24
25 25 msgid "Permissions"
26   -msgstr ""
  26 +msgstr "Permissions"
27 27  
28   -#: accounts/admin.py:45
  28 +#: accounts/admin.py:28
29 29 msgid "Important dates"
30   -msgstr ""
  30 +msgstr "Important dates"
31 31  
32   -#: accounts/forms.py:25
  32 +#: accounts/forms.py:37
33 33 msgid "Social account does not exist"
34   -msgstr ""
  34 +msgstr "Social account does not exist"
35 35  
36   -#: accounts/forms.py:61 accounts/templates/accounts/user_detail.html:38
  36 +#: accounts/forms.py:65 accounts/forms.py:71 accounts/forms.py:77
  37 +msgid "This field cannot be blank."
  38 +msgstr "This field cannot be blank."
  39 +
  40 +#: accounts/forms.py:118 accounts/templates/accounts/user_detail.html:38
37 41 msgid "Bio"
38   -msgstr ""
  42 +msgstr "Bio"
39 43  
40   -#: accounts/forms.py:62
  44 +#: accounts/forms.py:119
41 45 msgid "Write something about you in 200 characters or less."
42   -msgstr ""
  46 +msgstr "Write something about you in 200 characters or less."
43 47  
44   -#: accounts/forms.py:81
  48 +#: accounts/forms.py:148
45 49 msgid "Mailing lists"
46   -msgstr ""
  50 +msgstr "Mailing lists"
  51 +
  52 +#: accounts/forms.py:161
  53 +#, python-format
  54 +msgid "Email already used. Is it you? Please <a href='%(url)s'>login</a>"
  55 +msgstr "Email already used. Is it you? Please <a href='%(url)s'>login</a>"
  56 +
  57 +#: accounts/forms.py:163
  58 +msgid "A user with that username already exists."
  59 +msgstr "A user with that username already exists."
  60 +
  61 +#: accounts/forms.py:164 accounts/forms.py:401 accounts/forms.py:465
  62 +msgid "The two password fields didn't match."
  63 +msgstr "The two password fields didn't match."
  64 +
  65 +#: accounts/forms.py:166 accounts/forms.py:236 search/forms.py:38
  66 +msgid "Username"
  67 +msgstr "Username"
47 68  
48   -#: accounts/forms.py:88
  69 +#: accounts/forms.py:173 accounts/forms.py:240 accounts/forms.py:277
  70 +#: accounts/forms.py:467
49 71 msgid "Password"
50   -msgstr ""
  72 +msgstr "Password"
51 73  
52   -#: accounts/forms.py:90
  74 +#: accounts/forms.py:175
53 75 msgid "Password confirmation"
54   -msgstr ""
  76 +msgstr "Password confirmation"
55 77  
56   -#: accounts/forms.py:92
57   -msgid "Enter the same password as above, for verification."
58   -msgstr ""
  78 +#: accounts/forms.py:237 accounts/models.py:78
  79 +msgid "Required. 30 characters or fewer. Letters and digits."
  80 +msgstr "Required. 30 characters or fewer. Letters and digits."
59 81  
60   -#: accounts/forms.py:110
61   -msgid "Password mismatch"
62   -msgstr ""
  82 +#: accounts/forms.py:239
  83 +msgid "This value may contain only letters and numbers."
  84 +msgstr "This value may contain only letters and numbers."
  85 +
  86 +#: accounts/forms.py:241
  87 +msgid ""
  88 +"Raw passwords are not stored, so there is no way to see this user's "
  89 +"password, but you can change the password using <a href=\"password/\">this "
  90 +"form</a>."
  91 +msgstr "Raw passwords are not stored, so there is no way to see this user's password, but you can change the password using <a href=\"password/\">this form</a>."
63 92  
64   -#: accounts/management/commands/delete_invalid.py:42
  93 +#: accounts/forms.py:280
65 94 #, python-format
66   -msgid "%(count)s users deleted."
67   -msgstr ""
  95 +msgid ""
  96 +"Please enter a correct %(username)s and password. Note that both fields may "
  97 +"be case-sensitive."
  98 +msgstr "Please enter a correct %(username)s and password. Note that both fields may be case-sensitive."
68 99  
69   -#: accounts/models.py:65
70   -msgid "Required. 30 characters or fewer. Letters, digits and ./+/-/_ only."
71   -msgstr ""
  100 +#: accounts/forms.py:282
  101 +msgid "This account is inactive."
  102 +msgstr "This account is inactive."
72 103  
73   -#: accounts/models.py:70
74   -msgid "Enter a valid username."
75   -msgstr ""
  104 +#: accounts/forms.py:345
  105 +msgid "Email"
  106 +msgstr "Email"
76 107  
77   -#: accounts/templates/accounts/change_password.html:8
78   -msgid "Change XMPP Client and SVN Password"
79   -msgstr ""
  108 +#: accounts/forms.py:403
  109 +msgid "New password"
  110 +msgstr "New password"
80 111  
81   -#: accounts/templates/accounts/change_password.html:17
82   -#: accounts/templates/accounts/user_update_form.html:188
83   -#: accounts/templates/accounts/user_update_form.html:195
84   -msgid "Change Password"
85   -msgstr ""
  112 +#: accounts/forms.py:405
  113 +msgid "New password confirmation"
  114 +msgstr "New password confirmation"
86 115  
87   -#: accounts/templates/accounts/login.html:7
88   -msgid "To login please click in the link below:"
89   -msgstr ""
  116 +#: accounts/forms.py:436
  117 +msgid "Your old password was entered incorrectly. Please enter it again."
  118 +msgstr "Your old password was entered incorrectly. Please enter it again."
90 119  
91   -#: accounts/templates/accounts/login.html:8 templates/base.html:182
92   -#: templates/base.html.py:187
93   -msgid "Login"
94   -msgstr ""
  120 +#: accounts/forms.py:439
  121 +msgid "Old password"
  122 +msgstr "Old password"
  123 +
  124 +#: accounts/forms.py:469
  125 +msgid "Password (again)"
  126 +msgstr "Password (again)"
  127 +
  128 +#: accounts/models.py:82
  129 +msgid "Enter a valid username."
  130 +msgstr "Enter a valid username."
95 131  
96 132 #: accounts/templates/accounts/manage_subscriptions.html:6
97 133 msgid "Group Subscriptions"
98   -msgstr ""
  134 +msgstr "Group Subscriptions"
99 135  
100 136 #: accounts/templates/accounts/manage_subscriptions.html:36
101 137 msgid "Update subscriptions"
102   -msgstr ""
  138 +msgstr "Update subscriptions"
103 139  
104 140 #: accounts/templates/accounts/user_create_form.html:5
105 141 msgid "Sign up"
106   -msgstr ""
  142 +msgstr "Sign up"
107 143  
108 144 #: accounts/templates/accounts/user_create_form.html:10
109   -msgid "Please correct the errors below and try again"
110   -msgstr ""
  145 +#: accounts/templates/registration/login.html:14
  146 +#: accounts/templates/registration/password_change_form_custom.html:12
  147 +#: accounts/templates/registration/password_reset_confirm_custom.html:14
  148 +#: accounts/templates/registration/password_reset_form_custom.html:9
  149 +msgid "Please correct the errors below and try again."
  150 +msgstr "Please correct the errors below and try again."
111 151  
112 152 #: accounts/templates/accounts/user_create_form.html:17
113 153 msgid "Required fields"
114   -msgstr ""
  154 +msgstr "Required fields"
115 155  
116 156 #: accounts/templates/accounts/user_create_form.html:29
117 157 msgid "Personal Information"
118   -msgstr ""
  158 +msgstr "Personal Information"
119 159  
120 160 #: accounts/templates/accounts/user_create_form.html:46
121 161 msgid "Subscribe to groups"
122   -msgstr ""
  162 +msgstr "Subscribe to groups"
123 163  
124 164 #: accounts/templates/accounts/user_create_form.html:60
125   -#: templates/base.html:181 templates/base.html.py:186
  165 +#: templates/base.html:100 templates/base.html.py:105 templates/header.html:40
  166 +#: templates/header.html.py:45
126 167 msgid "Register"
127   -msgstr ""
  168 +msgstr "Register"
128 169  
129 170 #: accounts/templates/accounts/user_detail.html:8
130 171 msgid "Messages"
131   -msgstr ""
  172 +msgstr "Messages"
132 173  
133   -#: accounts/templates/accounts/user_detail.html:9
  174 +#: accounts/templates/accounts/user_detail.html:9 templates/home.html:7
134 175 msgid "Contributions"
135   -msgstr ""
  176 +msgstr "Contributions"
136 177  
137 178 #: accounts/templates/accounts/user_detail.html:29
138 179 msgid "edit profile"
139   -msgstr ""
  180 +msgstr "edit profile"
140 181  
141 182 #: accounts/templates/accounts/user_detail.html:30
142 183 msgid "group membership"
143   -msgstr ""
  184 +msgstr "group membership"
144 185  
145   -#: accounts/templates/accounts/user_detail.html:65
  186 +#: accounts/templates/accounts/user_detail.html:66
146 187 msgid "Twitter account"
147   -msgstr ""
  188 +msgstr "Twitter account"
148 189  
149   -#: accounts/templates/accounts/user_detail.html:68
  190 +#: accounts/templates/accounts/user_detail.html:69
150 191 msgid "Facebook account"
151   -msgstr ""
  192 +msgstr "Facebook account"
152 193  
153   -#: accounts/templates/accounts/user_detail.html:73
  194 +#: accounts/templates/accounts/user_detail.html:74
154 195 msgid "Google talk account"
155   -msgstr ""
  196 +msgstr "Google talk account"
156 197  
157   -#: accounts/templates/accounts/user_detail.html:77
  198 +#: accounts/templates/accounts/user_detail.html:78
158 199 msgid "Github account"
159   -msgstr ""
  200 +msgstr "Github account"
160 201  
161   -#: accounts/templates/accounts/user_detail.html:81
  202 +#: accounts/templates/accounts/user_detail.html:82
162 203 msgid "Personal webpage"
163   -msgstr ""
  204 +msgstr "Personal webpage"
164 205  
165   -#: accounts/templates/accounts/user_detail.html:87
  206 +#: accounts/templates/accounts/user_detail.html:88
166 207 msgid "Groups: "
167   -msgstr ""
  208 +msgstr "Groups: "
168 209  
169   -#: accounts/templates/accounts/user_detail.html:100
  210 +#: accounts/templates/accounts/user_detail.html:101
170 211 msgid "Collaborations by Type"
171   -msgstr ""
  212 +msgstr "Collaborations by Type"
172 213  
173   -#: accounts/templates/accounts/user_detail.html:116
  214 +#: accounts/templates/accounts/user_detail.html:117
174 215 msgid "Participation by Group"
175   -msgstr ""
176   -
177   -#: accounts/templates/accounts/user_detail.html:132
178   -msgid "Badges"
179   -msgstr ""
  216 +msgstr "Participation by Group"
180 217  
181   -#: accounts/templates/accounts/user_detail.html:151
  218 +#: accounts/templates/accounts/user_detail.html:133
182 219 msgid "Latest posted"
183   -msgstr ""
  220 +msgstr "Latest posted"
184 221  
185   -#: accounts/templates/accounts/user_detail.html:156
  222 +#: accounts/templates/accounts/user_detail.html:138
186 223 msgid "There are no posts by this user so far."
187   -msgstr ""
  224 +msgstr "There are no posts by this user so far."
188 225  
189   -#: accounts/templates/accounts/user_detail.html:160
  226 +#: accounts/templates/accounts/user_detail.html:142
190 227 msgid "View more posts..."
191   -msgstr ""
  228 +msgstr "View more posts..."
192 229  
193   -#: accounts/templates/accounts/user_detail.html:166
  230 +#: accounts/templates/accounts/user_detail.html:148
194 231 msgid "Latest contributions"
195   -msgstr ""
  232 +msgstr "Latest contributions"
196 233  
197   -#: accounts/templates/accounts/user_detail.html:171
  234 +#: accounts/templates/accounts/user_detail.html:153
198 235 msgid "No contributions of this user so far."
199   -msgstr ""
  236 +msgstr "No contributions of this user so far."
200 237  
201   -#: accounts/templates/accounts/user_detail.html:175
  238 +#: accounts/templates/accounts/user_detail.html:157
202 239 msgid "View more contributions..."
203   -msgstr ""
  240 +msgstr "View more contributions..."
204 241  
205 242 #: accounts/templates/accounts/user_update_form.html:65
206 243 msgid "We sent a verification email to "
207   -msgstr ""
  244 +msgstr "We sent a verification email to "
208 245  
209 246 #: accounts/templates/accounts/user_update_form.html:66
210 247 msgid "Please follow the instructions in it."
211   -msgstr ""
  248 +msgstr "Please follow the instructions in it."
212 249  
213 250 #: accounts/templates/accounts/user_update_form.html:110
214 251 msgid "profile information"
215   -msgstr ""
  252 +msgstr "profile information"
216 253  
217 254 #: accounts/templates/accounts/user_update_form.html:115
218 255 msgid "Change your avatar at Gravatar.com"
219   -msgstr ""
  256 +msgstr "Change your avatar at Gravatar.com"
220 257  
221   -#: accounts/templates/accounts/user_update_form.html:142 search/utils.py:8
  258 +#: accounts/templates/accounts/user_update_form.html:142 search/utils.py:56
222 259 msgid "Emails"
223   -msgstr ""
  260 +msgstr "Emails"
224 261  
225 262 #: accounts/templates/accounts/user_update_form.html:151
226 263 msgid "Primary"
227   -msgstr ""
  264 +msgstr "Primary"
228 265  
229 266 #: accounts/templates/accounts/user_update_form.html:154
230 267 msgid "Setting..."
231   -msgstr ""
  268 +msgstr "Setting..."
232 269  
233 270 #: accounts/templates/accounts/user_update_form.html:154
234 271 msgid "Set as Primary"
235   -msgstr ""
  272 +msgstr "Set as Primary"
236 273  
237 274 #: accounts/templates/accounts/user_update_form.html:155
238 275 msgid "Deleting..."
239   -msgstr ""
  276 +msgstr "Deleting..."
240 277  
241 278 #: accounts/templates/accounts/user_update_form.html:155
242 279 #: accounts/templates/accounts/user_update_form.html:167
243 280 msgid "Delete"
244   -msgstr ""
  281 +msgstr "Delete"
245 282  
246 283 #: accounts/templates/accounts/user_update_form.html:166
247 284 msgid "Sending verification..."
248   -msgstr ""
  285 +msgstr "Sending verification..."
249 286  
250 287 #: accounts/templates/accounts/user_update_form.html:166
251 288 msgid "Verify"
252   -msgstr ""
  289 +msgstr "Verify"
253 290  
254 291 #: accounts/templates/accounts/user_update_form.html:174
255 292 msgid "Add another email address:"
256   -msgstr ""
  293 +msgstr "Add another email address:"
257 294  
258 295 #: accounts/templates/accounts/user_update_form.html:177
259 296 msgid "Add"
260   -msgstr ""
  297 +msgstr "Add"
261 298  
262   -#: accounts/templates/accounts/user_update_form.html:193
263   -msgid ""
264   -"This feature is available only for those who need to change the password for "
265   -"some reason as having an old user with the same username, forgot your "
266   -"password to commit, usage of other XMPP Client for connection. Usually, you "
267   -"won't need to change this password. Only change it if you are sure about "
268   -"what you are doing."
269   -msgstr ""
  299 +#: accounts/templates/accounts/user_update_form.html:185
  300 +#: accounts/templates/accounts/user_update_form.html:189
  301 +#: accounts/templates/registration/password_change_form_custom.html:26
  302 +#: accounts/templates/registration/password_reset_confirm_custom.html:28
  303 +msgid "Change Password"
  304 +msgstr "Change Password"
270 305  
271   -#: accounts/templates/accounts/user_update_form.html:203
  306 +#: accounts/templates/accounts/user_update_form.html:196
272 307 msgid "Update"
273   -msgstr ""
  308 +msgstr "Update"
  309 +
  310 +#: accounts/templates/registration/login.html:10
  311 +#: accounts/templates/registration/password_change_form_custom.html:10
  312 +#: accounts/templates/registration/password_reset_confirm_custom.html:12
  313 +msgid "Please correct the error below and try again."
  314 +msgstr "Please correct the error below and try again."
  315 +
  316 +#: accounts/templates/registration/login.html:34
  317 +#: accounts/templates/registration/login.html:54 templates/base.html:99
  318 +#: templates/base.html.py:101 templates/base.html:104
  319 +#: templates/base.html.py:106 templates/header.html:39
  320 +#: templates/header.html.py:41 templates/header.html:44
  321 +#: templates/header.html.py:46
  322 +msgid "Login"
  323 +msgstr "Login"
274 324  
275   -#: accounts/views.py:148
276   -msgid "Your profile has been created!"
277   -msgstr ""
  325 +#: accounts/templates/registration/login.html:56
  326 +msgid "Forgot Password?"
  327 +msgstr "Forgot Password?"
  328 +
  329 +#: accounts/templates/registration/password_change_form_custom.html:54
  330 +#: accounts/templates/registration/password_reset_confirm_custom.html:51
  331 +msgid "Change my password"
  332 +msgstr "Change my password"
  333 +
  334 +#: accounts/templates/registration/password_reset_confirm_custom.html:3
  335 +msgid "Setting New password"
  336 +msgstr "Setting New password"
278 337  
279   -#: accounts/views.py:149
  338 +#: accounts/templates/registration/password_reset_form_custom.html:23
280 339 msgid ""
281   -"You must login to validated your profile. Profiles not validated are deleted "
282   -"in 24h."
283   -msgstr ""
  340 +"Forgotten your password? Enter your email address below, and we'll email "
  341 +"instructions for setting a new one."
  342 +msgstr "Forgotten your password? Enter your email address below, and we'll email instructions for setting a new one."
284 343  
285   -#: accounts/views.py:233
286   -msgid "Could not change your password. Please, try again later."
287   -msgstr ""
  344 +#: accounts/templates/registration/password_reset_form_custom.html:26
  345 +msgid "Email address:"
  346 +msgstr "Email address:"
288 347  
289   -#: accounts/views.py:242
290   -msgid "You've changed your password successfully!"
291   -msgstr ""
  348 +#: accounts/templates/registration/password_reset_form_custom.html:37
  349 +msgid "Reset password"
  350 +msgstr "Reset password"
292 351  
293   -#: settings.py:160
294   -msgid "Image"
295   -msgstr ""
  352 +#: accounts/views.py:126
  353 +msgid "Your profile has been created!"
  354 +msgstr "Your profile has been created!"
296 355  
297   -#: search/templates/search/includes/search_filters.html:122
298   -msgid "Ticket"
299   -msgstr ""
  356 +#: accounts/views.py:186
  357 +msgid "Your password was changed."
  358 +msgstr "Your password was changed."
300 359  
301   -#: search/forms.py:18
302   -msgid "Type"
303   -msgstr ""
  360 +#: accounts/views.py:202
  361 +msgid "Your password has been set. You may go ahead and log in now."
  362 +msgstr "Your password has been set. You may go ahead and log in now."
304 363  
305   -#: home/context_processors.py:15
  364 +#: home/context_processors.py:20
306 365 msgid "Fork me!"
307   -msgstr ""
  366 +msgstr "Fork me!"
  367 +
  368 +#: plugins/gitlab/models.py:27
  369 +msgid "Gitlab Project"
  370 +msgstr "Gitlab Project"
  371 +
  372 +#: plugins/gitlab/models.py:28
  373 +msgid "Gitlab Projects"
  374 +msgstr "Gitlab Projects"
  375 +
  376 +#: plugins/gitlab/models.py:54
  377 +msgid "Gitlab Group"
  378 +msgstr "Gitlab Group"
  379 +
  380 +#: plugins/gitlab/models.py:55
  381 +msgid "Gitlab Groups"
  382 +msgstr "Gitlab Groups"
  383 +
  384 +#: plugins/gitlab/models.py:91
  385 +msgid "Gitlab Merge Request"
  386 +msgstr "Gitlab Merge Request"
  387 +
  388 +#: plugins/gitlab/models.py:92
  389 +msgid "Gitlab Merge Requests"
  390 +msgstr "Gitlab Merge Requests"
  391 +
  392 +#: plugins/gitlab/models.py:120
  393 +msgid "Gitlab Issue"
  394 +msgstr "Gitlab Issue"
  395 +
  396 +#: plugins/gitlab/models.py:121
  397 +msgid "Gitlab Issues"
  398 +msgstr "Gitlab Issues"
  399 +
  400 +#: plugins/gitlab/models.py:176 plugins/gitlab/models.py:177
  401 +msgid "Gitlab Comments"
  402 +msgstr "Gitlab Comments"
  403 +
  404 +#: plugins/noosfero/models.py:39
  405 +msgid "Community"
  406 +msgstr "Community"
  407 +
  408 +#: plugins/noosfero/models.py:40
  409 +msgid "Communities"
  410 +msgstr "Communities"
  411 +
  412 +#: plugins/noosfero/models.py:67
  413 +msgid "Article"
  414 +msgstr "Article"
  415 +
  416 +#: plugins/noosfero/models.py:68
  417 +msgid "Articles"
  418 +msgstr "Articles"
308 419  
309 420 #: rss/feeds.py:13
310 421 msgid "Latest Discussions"
311   -msgstr ""
  422 +msgstr "Latest Discussions"
312 423  
313 424 #: rss/feeds.py:32
314 425 msgid "Discussions Most Relevance"
315   -msgstr ""
  426 +msgstr "Discussions Most Relevance"
316 427  
317 428 #: rss/feeds.py:51
318 429 msgid "Latest collaborations"
319   -msgstr ""
  430 +msgstr "Latest collaborations"
320 431  
321 432 #: search/forms.py:16 search/templates/search/search.html:46
322   -#: templates/base.html:171
  433 +#: templates/base.html:89 templates/header.html:29
323 434 msgid "Search"
324   -msgstr ""
  435 +msgstr "Search"
  436 +
  437 +#: search/forms.py:18
  438 +msgid "Type"
  439 +msgstr "Type"
325 440  
326   -#: search/forms.py:19 search/views.py:22
  441 +#: search/forms.py:19 search/views.py:20
327 442 msgid "Author"
328   -msgstr ""
  443 +msgstr "Author"
329 444  
330 445 #: search/forms.py:20
331 446 msgid "Modified by"
332   -msgstr ""
  447 +msgstr "Modified by"
333 448  
334 449 #: search/forms.py:22
335 450 msgid "Status"
336   -msgstr ""
  451 +msgstr "Status"
337 452  
338   -#: search/forms.py:26 search/views.py:25
  453 +#: search/forms.py:26 search/views.py:23
339 454 msgid "Mailinglist"
340   -msgstr ""
  455 +msgstr "Mailinglist"
341 456  
342 457 #: search/forms.py:30
343 458 msgid "Milestone"
344   -msgstr ""
  459 +msgstr "Milestone"
345 460  
346 461 #: search/forms.py:31
347 462 msgid "Priority"
348   -msgstr ""
  463 +msgstr "Priority"
349 464  
350 465 #: search/forms.py:32
351 466 msgid "Component"
352   -msgstr ""
  467 +msgstr "Component"
353 468  
354 469 #: search/forms.py:33
355 470 msgid "Severity"
356   -msgstr ""
  471 +msgstr "Severity"
357 472  
358 473 #: search/forms.py:34
359 474 msgid "Reporter"
360   -msgstr ""
  475 +msgstr "Reporter"
361 476  
362 477 #: search/forms.py:35
363 478 msgid "Keywords"
364   -msgstr ""
  479 +msgstr "Keywords"
365 480  
366 481 #: search/forms.py:36
367 482 msgid "Collaborators"
368   -msgstr ""
  483 +msgstr "Collaborators"
369 484  
370   -#: search/forms.py:37 templates/base.html:103
  485 +#: search/forms.py:37
371 486 msgid "Repository"
372   -msgstr ""
373   -
374   -#: search/forms.py:38
375   -msgid "Username"
376   -msgstr ""
  487 +msgstr "Repository"
377 488  
378 489 #: search/forms.py:39
379 490 msgid "Name"
380   -msgstr ""
  491 +msgstr "Name"
381 492  
382 493 #: search/forms.py:40
383 494 msgid "Institution"
384   -msgstr ""
  495 +msgstr "Institution"
385 496  
386 497 #: search/forms.py:41
387 498 msgid "Role"
388   -msgstr ""
  499 +msgstr "Role"
389 500  
390   -#: search/forms.py:42 search/templates/search/includes/search_filters.html:154
391   -#: search/templates/search/includes/search_filters.html:156
392   -#: search/templates/search/includes/search_filters.html:188
393   -#: search/templates/search/includes/search_filters.html:189
  501 +#: search/forms.py:42 search/templates/search/includes/search_filters.html:132
  502 +#: search/templates/search/includes/search_filters.html:134
  503 +#: search/templates/search/includes/search_filters.html:166
  504 +#: search/templates/search/includes/search_filters.html:167
394 505 msgid "Since"
395   -msgstr ""
  506 +msgstr "Since"
396 507  
397   -#: search/forms.py:43 search/templates/search/includes/search_filters.html:163
398   -#: search/templates/search/includes/search_filters.html:165
399   -#: search/templates/search/includes/search_filters.html:192
400   -#: search/templates/search/includes/search_filters.html:193
  508 +#: search/forms.py:43 search/templates/search/includes/search_filters.html:141
  509 +#: search/templates/search/includes/search_filters.html:143
  510 +#: search/templates/search/includes/search_filters.html:170
  511 +#: search/templates/search/includes/search_filters.html:171
401 512 msgid "Until"
402   -msgstr ""
  513 +msgstr "Until"
403 514  
404 515 #: search/forms.py:44
405 516 msgid "Filename"
406   -msgstr ""
  517 +msgstr "Filename"
407 518  
408 519 #: search/forms.py:45
409 520 msgid "Used by"
410   -msgstr ""
  521 +msgstr "Used by"
411 522  
412 523 #: search/forms.py:46
413 524 msgid "File type"
414   -msgstr ""
  525 +msgstr "File type"
415 526  
416 527 #: search/forms.py:47
417 528 msgid "Size"
418   -msgstr ""
  529 +msgstr "Size"
419 530  
420 531 #: search/templates/search/includes/search_filters.html:5
421 532 #: search/templates/search/includes/search_filters.html:33
422 533 #: search/templates/search/includes/search_filters.html:51
423 534 #: search/templates/search/includes/search_filters.html:69
424 535 msgid "Remove filter"
425   -msgstr ""
  536 +msgstr "Remove filter"
426 537  
427 538 #: search/templates/search/includes/search_filters.html:88
428   -#: search/templates/search/includes/search_filters.html:174
429   -#: search/templates/search/includes/search_filters.html:198
  539 +#: search/templates/search/includes/search_filters.html:152
  540 +#: search/templates/search/includes/search_filters.html:176
430 541 msgid "Filter"
431   -msgstr ""
  542 +msgstr "Filter"
432 543  
433 544 #: search/templates/search/includes/search_filters.html:94
434 545 msgid "Sort by"
435   -msgstr ""
  546 +msgstr "Sort by"
436 547  
437 548 #: search/templates/search/includes/search_filters.html:111
438 549 msgid "Types"
439   -msgstr ""
440   -
441   -#: search/templates/search/includes/search_filters.html:118 search/utils.py:7
442   -#: templates/open-data.html:130
443   -msgid "Wiki"
444   -msgstr ""
445   -
446   -#: search/templates/search/includes/search_filters.html:126
447   -msgid "Changeset"
448   -msgstr ""
449   -
450   -#: search/templates/search/includes/search_filters.html:130
451   -msgid "User"
452   -msgstr ""
453   -
454   -#: search/templates/search/includes/search_filters.html:134
455   -msgid "Attachment"
456   -msgstr ""
  550 +msgstr "Types"
457 551  
458   -#: search/templates/search/includes/search_filters.html:139 search/views.py:20
  552 +#: search/templates/search/includes/search_filters.html:117 search/views.py:18
459 553 msgid "Discussion"
460   -msgstr ""
  554 +msgstr "Discussion"
461 555  
462 556 #: search/templates/search/search.html:5
463 557 msgid "search"
464   -msgstr ""
  558 +msgstr "search"
465 559  
466 560 #: search/templates/search/search.html:51
467 561 msgid "documents found"
468   -msgstr ""
  562 +msgstr "documents found"
469 563  
470 564 #: search/templates/search/search.html:62
471 565 msgid "Search here"
472   -msgstr ""
  566 +msgstr "Search here"
473 567  
474 568 #: search/templates/search/search.html:74
475 569 #: search/templates/search/search.html:84
476 570 msgid "Filters"
477   -msgstr ""
  571 +msgstr "Filters"
478 572  
479 573 #: search/templates/search/search.html:105
480 574 msgid "No results for your search."
481   -msgstr ""
  575 +msgstr "No results for your search."
482 576  
483 577 #: search/templates/search/search.html:107
484 578 msgid "You are searching for"
485   -msgstr ""
486   -
487   -#: search/utils.py:9 settings.py:157
488   -msgid "Code"
489   -msgstr ""
490   -
491   -#: search/utils.py:10
492   -msgid "Tickets"
493   -msgstr ""
494   -
495   -#: search/utils.py:11
496   -msgid "Attachments"
497   -msgstr ""
  579 +msgstr "You are searching for"
498 580  
499   -#: settings.py:115
  581 +#: settings.py:113
500 582 msgid "English"
501   -msgstr ""
  583 +msgstr "English"
502 584  
503   -#: settings.py:116
  585 +#: settings.py:114
504 586 msgid "Portuguese"
505   -msgstr ""
  587 +msgstr "Portuguese"
506 588  
507   -#: settings.py:117
  589 +#: settings.py:115
508 590 msgid "Spanish"
509   -msgstr ""
  591 +msgstr "Spanish"
510 592  
511   -#: settings.py:140
  593 +#: settings.py:138
512 594 msgid "Recent activity"
513   -msgstr ""
  595 +msgstr "Recent activity"
514 596  
515   -#: settings.py:144
  597 +#: settings.py:142
516 598 msgid "Relevance"
517   -msgstr ""
  599 +msgstr "Relevance"
518 600  
519   -#: settings.py:153
  601 +#: settings.py:151
520 602 msgid "Document"
521   -msgstr ""
  603 +msgstr "Document"
522 604  
523   -#: settings.py:155
  605 +#: settings.py:153
524 606 msgid "Presentation"
525   -msgstr ""
  607 +msgstr "Presentation"
526 608  
527   -#: settings.py:156
  609 +#: settings.py:154
528 610 msgid "Text"
529   -msgstr ""
530   -
531   -#: settings.py:159
532   -msgid "Compressed"
533   -msgstr ""
534   -
535   -#: settings.py:162
536   -msgid "Spreadsheet"
537   -msgstr ""
538   -
539   -#: settings.py:254
540   -msgid "Planet Colab"
541   -msgstr ""
542   -
543   -#: settings.py:255
544   -msgid "Colab blog aggregator"
545   -msgstr ""
546   -
547   -#: settings.py:288
548   -msgid "One Time Snippet"
549   -msgstr ""
  611 +msgstr "Text"
550 612  
551   -#: settings.py:289
552   -msgid "In one hour"
553   -msgstr ""
  613 +#: settings.py:155
  614 +msgid "Code"
  615 +msgstr "Code"
554 616  
555   -#: settings.py:290
556   -msgid "In one week"
557   -msgstr ""
  617 +#: settings.py:157
  618 +msgid "Compressed"
  619 +msgstr "Compressed"
558 620  
559   -#: settings.py:291
560   -msgid "In one month"
561   -msgstr ""
  621 +#: settings.py:158
  622 +msgid "Image"
  623 +msgstr "Image"
562 624  
563   -#: settings.py:292
564   -msgid "Never"
565   -msgstr ""
  625 +#: settings.py:160
  626 +msgid "Spreadsheet"
  627 +msgstr "Spreadsheet"
566 628  
567 629 #: templates/404.html:5
568 630 msgid "Not found. Keep searching! :)"
569   -msgstr ""
  631 +msgstr "Not found. Keep searching! :)"
570 632  
571 633 #: templates/500.html:2
572 634 msgid "Ooopz... something went wrong!"
573   -msgstr ""
  635 +msgstr "Ooopz... something went wrong!"
574 636  
575   -#: templates/base.html:87
576   -msgid "Timeline"
577   -msgstr ""
578   -
579   -#: templates/base.html:92 templates/base.html.py:110
  637 +#: templates/base.html:83 templates/header.html:21
580 638 msgid "Groups"
581   -msgstr ""
582   -
583   -#: templates/base.html:97
584   -msgid "Blogs"
585   -msgstr ""
586   -
587   -#: templates/base.html:105
588   -msgid "Public Projects"
589   -msgstr ""
590   -
591   -#: templates/base.html:107 templates/base.html.py:136
592   -msgid "Profile"
593   -msgstr ""
594   -
595   -#: templates/base.html:108
596   -msgid "New Project"
597   -msgstr ""
598   -
599   -#: templates/base.html:109
600   -msgid "Projects"
601   -msgstr ""
602   -
603   -#: templates/base.html:111
604   -msgid "Issues"
605   -msgstr ""
606   -
607   -#: templates/base.html:112
608   -msgid "Merge Requests"
609   -msgstr ""
610   -
611   -#: templates/base.html:120
612   -msgid "Social"
613   -msgstr ""
614   -
615   -#: templates/base.html:125
616   -msgid "Users"
617   -msgstr ""
618   -
619   -#: templates/base.html:130
620   -msgid "Communities"
621   -msgstr ""
622   -
623   -#: templates/base.html:141
624   -msgid "Control panel"
625   -msgstr ""
  639 +msgstr "Groups"
626 640  
627   -#: templates/base.html:150
628   -msgid "Contribute"
629   -msgstr ""
630   -
631   -#: templates/base.html:154
632   -msgid "New Wiki Page"
633   -msgstr ""
634   -
635   -#: templates/base.html:156
636   -msgid "View Tickets"
637   -msgstr ""
638   -
639   -#: templates/base.html:158
640   -msgid "New Ticket"
641   -msgstr ""
642   -
643   -#: templates/base.html:160
644   -msgid "Roadmap"
645   -msgstr ""
646   -
647   -#: templates/base.html:163
648   -msgid "Browse Source"
649   -msgstr ""
650   -
651   -#: templates/base.html:165
652   -msgid "Continuous Integration"
653   -msgstr ""
654   -
655   -#: templates/base.html:201
  641 +#: templates/base.html:119 templates/header.html:59
656 642 msgid "My Profile"
657   -msgstr ""
  643 +msgstr "My Profile"
658 644  
659   -#: templates/base.html:202
  645 +#: templates/base.html:120 templates/base.html.py:121 templates/header.html:60
  646 +#: templates/header.html.py:61
660 647 msgid "Logout"
661   -msgstr ""
  648 +msgstr "Logout"
662 649  
663   -#: templates/base.html:214 templates/base.html.py:217
  650 +#: templates/base.html:132 templates/base.html.py:135 templates/header.html:72
  651 +#: templates/header.html.py:75
664 652 msgid "Search here..."
665   -msgstr ""
  653 +msgstr "Search here..."
666 654  
667   -#: templates/base.html:231
  655 +#: templates/base.html:149
668 656 msgid "The login has failed. Please, try again."
669   -msgstr ""
  657 +msgstr "The login has failed. Please, try again."
670 658  
671   -#: templates/base.html:256
  659 +#: templates/footer.html:6
672 660 msgid "Last email imported at"
673   -msgstr ""
  661 +msgstr "Last email imported at"
674 662  
675   -#: templates/base.html:263
  663 +#: templates/footer.html:12
676 664 msgid "The contents of this site is published under license"
677   -msgstr ""
  665 +msgstr "The contents of this site is published under license"
678 666  
679   -#: templates/base.html:266
  667 +#: templates/footer.html:15
680 668 msgid "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual"
681   -msgstr ""
  669 +msgstr "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual"
  670 +
  671 +#: templates/header.html:26
  672 +msgid "Paste"
  673 +msgstr "Paste"
682 674  
683 675 #: templates/home.html:17
684 676 msgid "Latest Collaborations"
685   -msgstr ""
  677 +msgstr "Latest Collaborations"
686 678  
687 679 #: templates/home.html:21
688 680 msgid "RSS - Latest collaborations"
689   -msgstr ""
  681 +msgstr "RSS - Latest collaborations"
690 682  
691 683 #: templates/home.html:30
692 684 msgid "View more collaborations..."
693   -msgstr ""
  685 +msgstr "View more collaborations..."
694 686  
695 687 #: templates/home.html:37
696 688 msgid "Collaboration Graph"
697   -msgstr ""
  689 +msgstr "Collaboration Graph"
698 690  
699 691 #: templates/home.html:48
700 692 msgid "Most Relevant Threads"
701   -msgstr ""
  693 +msgstr "Most Relevant Threads"
702 694  
703 695 #: templates/home.html:52
704 696 msgid "RSS - Most Relevant Threads"
705   -msgstr ""
  697 +msgstr "RSS - Most Relevant Threads"
706 698  
707 699 #: templates/home.html:60 templates/home.html.py:79
708 700 msgid "View more discussions..."
709   -msgstr ""
  701 +msgstr "View more discussions..."
710 702  
711 703 #: templates/home.html:67
712 704 msgid "Latest Threads"
713   -msgstr ""
  705 +msgstr "Latest Threads"
714 706  
715 707 #: templates/home.html:71
716 708 msgid "RSS - Latest Threads"
717   -msgstr ""
718   -
719   -#: templates/open-data.html:6
720   -msgid "OpenData - Communities"
721   -msgstr ""
722   -
723   -#: templates/open-data.html:7
724   -msgid ""
725   -"If you are interested in any other data that is not provided by this API, "
726   -"please contact us via the ticketing system (you must be registered in order "
727   -"to create a ticket)."
728   -msgstr ""
729   -
730   -#: templates/open-data.html:9
731   -msgid "Retrieving data via API"
732   -msgstr ""
733   -
734   -#: templates/open-data.html:10
735   -msgid "Colab API works through HTTP/REST, always returning JSON objects."
736   -msgstr ""
737   -
738   -#: templates/open-data.html:12
739   -msgid "The base API URL is"
740   -msgstr ""
741   -
742   -#: templates/open-data.html:19
743   -msgid ""
744   -"Each model listed below has a resource_uri field available, which is the "
745   -"object's data URI."
746   -msgstr ""
747   -
748   -#: templates/open-data.html:20
749   -msgid ""
750   -"The following list contains the available models to retrieve data and its "
751   -"fields available for filtering"
752   -msgstr ""
753   -
754   -#: templates/open-data.html:24 templates/open-data.html.py:39
755   -#: templates/open-data.html:50 templates/open-data.html.py:62
756   -#: templates/open-data.html:74 templates/open-data.html.py:95
757   -msgid "Fields"
758   -msgstr ""
759   -
760   -#: templates/open-data.html:25
761   -msgid ""
762   -"The email field is not shown for user's privacy, but you can use it to filter"
763   -msgstr ""
764   -
765   -#: templates/open-data.html:27
766   -msgid "The user's username"
767   -msgstr ""
768   -
769   -#: templates/open-data.html:28
770   -msgid "The user's email address"
771   -msgstr ""
772   -
773   -#: templates/open-data.html:29
774   -msgid "What is the user's institution"
775   -msgstr ""
776   -
777   -#: templates/open-data.html:30
778   -msgid "What is the user's role"
779   -msgstr ""
780   -
781   -#: templates/open-data.html:31
782   -msgid "The user's first name"
783   -msgstr ""
784   -
785   -#: templates/open-data.html:32
786   -msgid "The user's last name"
787   -msgstr ""
788   -
789   -#: templates/open-data.html:33
790   -msgid "A mini bio of the user"
791   -msgstr ""
792   -
793   -#: templates/open-data.html:40
794   -msgid ""
795   -"The address field is not shown for user's privacy, but you can use it to "
796   -"filter"
797   -msgstr ""
798   -
799   -#: templates/open-data.html:42
800   -msgid "It has a relationshop with the user described above"
801   -msgstr ""
802   -
803   -#: templates/open-data.html:43
804   -msgid "An email address"
805   -msgstr ""
806   -
807   -#: templates/open-data.html:44
808   -msgid "The user's real name"
809   -msgstr ""
810   -
811   -#: templates/open-data.html:52
812   -msgid "It has a relationship with the emailaddress described above"
813   -msgstr ""
814   -
815   -#: templates/open-data.html:53
816   -msgid "The message's body"
817   -msgstr ""
818   -
819   -#: templates/open-data.html:54
820   -msgid "The message's subject"
821   -msgstr ""
822   -
823   -#: templates/open-data.html:55
824   -msgid "The message's id"
825   -msgstr ""
826   -
827   -#: templates/open-data.html:56
828   -msgid "The message's received time"
829   -msgstr ""
830   -
831   -#: templates/open-data.html:64
832   -msgid "The revision's author username"
833   -msgstr ""
834   -
835   -#: templates/open-data.html:65
836   -msgid "When the revision's were created"
837   -msgstr ""
838   -
839   -#: templates/open-data.html:66
840   -msgid "The revision's key"
841   -msgstr ""
842   -
843   -#: templates/open-data.html:67
844   -msgid "The revision's message"
845   -msgstr ""
846   -
847   -#: templates/open-data.html:68
848   -msgid "The revision's repository name"
849   -msgstr ""
850   -
851   -#: templates/open-data.html:76
852   -msgid "The ticket's author username"
853   -msgstr ""
854   -
855   -#: templates/open-data.html:77
856   -msgid "The ticket's component"
857   -msgstr ""
858   -
859   -#: templates/open-data.html:78
860   -msgid "When the ticket's were created"
861   -msgstr ""
862   -
863   -#: templates/open-data.html:79
864   -msgid "The ticket's description"
865   -msgstr ""
866   -
867   -#: templates/open-data.html:80
868   -msgid "The ticket's id"
869   -msgstr ""
870   -
871   -#: templates/open-data.html:81
872   -msgid "The ticket's keywords"
873   -msgstr ""
874   -
875   -#: templates/open-data.html:82
876   -msgid "The ticket's milestone"
877   -msgstr ""
878   -
879   -#: templates/open-data.html:83 templates/open-data.html.py:99
880   -msgid "The time of the last modification"
881   -msgstr ""
882   -
883   -#: templates/open-data.html:84
884   -msgid "The username of the last user who modified the ticket"
885   -msgstr ""
886   -
887   -#: templates/open-data.html:85
888   -msgid "The ticket's priority"
889   -msgstr ""
890   -
891   -#: templates/open-data.html:86
892   -msgid "The ticket's severity"
893   -msgstr ""
894   -
895   -#: templates/open-data.html:87
896   -msgid "The ticket's status"
897   -msgstr ""
898   -
899   -#: templates/open-data.html:88
900   -msgid "The ticket's summary"
901   -msgstr ""
902   -
903   -#: templates/open-data.html:89
904   -msgid "The ticket's version"
905   -msgstr ""
906   -
907   -#: templates/open-data.html:97
908   -msgid "The wiki's author username"
909   -msgstr ""
910   -
911   -#: templates/open-data.html:98
912   -msgid "When the wiki's were created"
913   -msgstr ""
914   -
915   -#: templates/open-data.html:100
916   -msgid "The username of the last user who modified the wiki"
917   -msgstr ""
918   -
919   -#: templates/open-data.html:101
920   -msgid "The wiki's name"
921   -msgstr ""
922   -
923   -#: templates/open-data.html:102
924   -msgid "the wiki's content"
925   -msgstr ""
926   -
927   -#: templates/open-data.html:109
928   -msgid "Parameters"
929   -msgstr ""
930   -
931   -#: templates/open-data.html:112
932   -msgid "Results per page"
933   -msgstr ""
934   -
935   -#: templates/open-data.html:113
936   -msgid "Number of results to be displayed per page."
937   -msgstr ""
938   -
939   -#: templates/open-data.html:114
940   -msgid "Default: 20"
941   -msgstr ""
942   -
943   -#: templates/open-data.html:118
944   -msgid "Starts of n element"
945   -msgstr ""
946   -
947   -#: templates/open-data.html:119
948   -msgid "Where n is the index of the first result to appear in the page."
949   -msgstr ""
950   -
951   -#: templates/open-data.html:120
952   -msgid "Default: 0"
953   -msgstr ""
954   -
955   -#: templates/open-data.html:122
956   -msgid "Filtering"
957   -msgstr ""
958   -
959   -#: templates/open-data.html:124
960   -msgid "The field name"
961   -msgstr ""
962   -
963   -#: templates/open-data.html:125
964   -msgid ""
965   -"If you are looking for a specific wiki, and you know the wiki's name, you "
966   -"can filter it as below"
967   -msgstr ""
968   -
969   -#: templates/open-data.html:126
970   -msgid "WikiName"
971   -msgstr ""
972   -
973   -#: templates/open-data.html:127
974   -msgid ""
975   -"Where &quot;name&quot; is the fieldname and &quot;WikiName&quot; is the "
976   -"value you want to filter."
977   -msgstr ""
978   -
979   -#: templates/open-data.html:128
980   -msgid "Usage"
981   -msgstr ""
982   -
983   -#: templates/open-data.html:129
984   -msgid ""
985   -"You can also filter using Django lookup fields with the double underscores, "
986   -"just as below"
987   -msgstr ""
988   -
989   -#: templates/open-data.html:131 templates/open-data.html.py:132
990   -msgid "test"
991   -msgstr ""
992   -
993   -#: templates/open-data.html:133
994   -msgid "Usage with relationships"
995   -msgstr ""
996   -
997   -#: templates/open-data.html:134
998   -msgid ""
999   -"You can use related fields to filter too. So, you can filter by any field of "
1000   -"emailaddress using the 'from_address' field of message, which has a relation "
1001   -"to emailaddress. You will achieve the related fields by using double "
1002   -"underscore and the field's name. See the example below"
1003   -msgstr ""
1004   -
1005   -#: templates/open-data.html:136
1006   -msgid ""
1007   -"So, real_name is a field of emailaddress, and you had access to this field "
1008   -"by a message field called from_address and using double underscore to say "
1009   -"you want to use a field of that relationship"
1010   -msgstr ""
1011   -
1012   -#: templates/open-data.html:137
1013   -msgid ""
1014   -"Note: email filters must be exact. Which means that __contains, "
1015   -"__startswith, __endswith and others won't work"
1016   -msgstr ""
1017   -
1018   -#: templates/open-data.html:138
1019   -msgid ""
1020   -"Another example of usage with relations. Used to retrieve all messages of a "
1021   -"given user, using the username or the email field"
1022   -msgstr ""
  709 +msgstr "RSS - Latest Threads"
... ...
colab/locale/pt_BR/LC_MESSAGES/django.mo
No preview for this file type
colab/locale/pt_BR/LC_MESSAGES/django.po
1 1 # SOME DESCRIPTIVE TITLE.
2 2 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
3 3 # This file is distributed under the same license as the PACKAGE package.
4   -#
  4 +#
5 5 # Translators:
  6 +# Lucas Kanashiro Duarte <kanashiro.duarte@gmail.com>, 2015
  7 +# macártur de sousa carvalho <macartur.sc@gmail.com>, 2015
6 8 # Sergio Oliveira <seocam@seocam.com>, 2014
7 9 msgid ""
8 10 msgstr ""
9 11 "Project-Id-Version: colab\n"
10 12 "Report-Msgid-Bugs-To: \n"
11   -"POT-Creation-Date: 2015-01-21 13:55+0000\n"
12   -"PO-Revision-Date: 2014-11-21 17:31+0000\n"
13   -"Last-Translator: Sergio Oliveira <seocam@seocam.com>\n"
14   -"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
15   -"colab/language/pt_BR/)\n"
16   -"Language: pt_BR\n"
  13 +"POT-Creation-Date: 2015-09-01 13:15+0000\n"
  14 +"PO-Revision-Date: 2015-09-07 19:13+0000\n"
  15 +"Last-Translator: Lucas Kanashiro Duarte <kanashiro.duarte@gmail.com>\n"
  16 +"Language-Team: Portuguese (Brazil) (http://www.transifex.com/colab/colab/language/pt_BR/)\n"
17 17 "MIME-Version: 1.0\n"
18 18 "Content-Type: text/plain; charset=UTF-8\n"
19 19 "Content-Transfer-Encoding: 8bit\n"
  20 +"Language: pt_BR\n"
20 21 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
21 22  
22   -#: colab/accounts/admin.py:40
  23 +#: accounts/admin.py:18
23 24 msgid "Personal info"
24 25 msgstr "Informações Pessoais"
25 26  
26   -#: colab/accounts/admin.py:43
  27 +#: accounts/admin.py:24
27 28 msgid "Permissions"
28 29 msgstr "Permissões"
29 30  
30   -#: colab/accounts/admin.py:45
  31 +#: accounts/admin.py:28
31 32 msgid "Important dates"
32 33 msgstr "Datas importantes"
33 34  
34   -#: colab/accounts/forms.py:25
  35 +#: accounts/forms.py:37
35 36 msgid "Social account does not exist"
36 37 msgstr "Conta social não existe"
37 38  
38   -#: colab/accounts/forms.py:61
  39 +#: accounts/forms.py:65 accounts/forms.py:71 accounts/forms.py:77
39 40 msgid "This field cannot be blank."
40   -msgstr ""
41   -
42   -#: colab/accounts/forms.py:67 colab/accounts/forms.py:128
43   -msgid "Password"
44   -msgstr "Senha"
  41 +msgstr "Este campo não pode ficar em branco."
45 42  
46   -#: colab/accounts/forms.py:68
47   -msgid "Confirm Password "
48   -msgstr "Confirmar senha"
49   -
50   -#: colab/accounts/forms.py:79
51   -msgid "The two password fields didn't match."
52   -msgstr ""
53   -
54   -#: colab/accounts/forms.py:96
55   -#: colab/accounts/templates/accounts/user_detail.html:38
  43 +#: accounts/forms.py:118 accounts/templates/accounts/user_detail.html:38
56 44 msgid "Bio"
57 45 msgstr "Bio"
58 46  
59   -#: colab/accounts/forms.py:97
  47 +#: accounts/forms.py:119
60 48 msgid "Write something about you in 200 characters or less."
61 49 msgstr "Escreva algo sobre você em 200 caracteres ou menos."
62 50  
63   -#: colab/accounts/forms.py:121
  51 +#: accounts/forms.py:148
64 52 msgid "Mailing lists"
65 53 msgstr "Listas de e-mail"
66 54  
67   -#: colab/accounts/forms.py:130
  55 +#: accounts/forms.py:161
  56 +#, python-format
  57 +msgid "Email already used. Is it you? Please <a href='%(url)s'>login</a>"
  58 +msgstr "Este email ja está sendo utilizado.Caso seja o seu efetue o <a href='%(url)s'>login</a>"
  59 +
  60 +#: accounts/forms.py:163
  61 +msgid "A user with that username already exists."
  62 +msgstr "Já existe um usuário com este nome."
  63 +
  64 +#: accounts/forms.py:164 accounts/forms.py:401 accounts/forms.py:465
  65 +msgid "The two password fields didn't match."
  66 +msgstr "Os dois campos de senha não conferem."
  67 +
  68 +#: accounts/forms.py:166 accounts/forms.py:236 search/forms.py:38
  69 +msgid "Username"
  70 +msgstr "Usuário"
  71 +
  72 +#: accounts/forms.py:173 accounts/forms.py:240 accounts/forms.py:277
  73 +#: accounts/forms.py:467
  74 +msgid "Password"
  75 +msgstr "Senha"
  76 +
  77 +#: accounts/forms.py:175
68 78 msgid "Password confirmation"
69 79 msgstr "Confirmação de senha"
70 80  
71   -#: colab/accounts/forms.py:132
72   -msgid "Enter the same password as above, for verification."
73   -msgstr "Digite a mesma senha que acima, para verificação."
  81 +#: accounts/forms.py:237 accounts/models.py:78
  82 +msgid "Required. 30 characters or fewer. Letters and digits."
  83 +msgstr "Obrigatório. 30 caracteres ou menos. Letras ou digitos."
74 84  
75   -#: colab/accounts/forms.py:150
76   -msgid "Password mismatch"
77   -msgstr "Senhas diferentes"
  85 +#: accounts/forms.py:239
  86 +msgid "This value may contain only letters and numbers."
  87 +msgstr "Este campo pode conter apenas letras e números."
78 88  
79   -#: colab/accounts/models.py:66
80   -msgid "Required. 30 characters or fewer. Letters, digits and ./+/-/_ only."
81   -msgstr ""
82   -"Obrigatório. 30 caracteres ou menos. Letras, números e ./+/-/_ somente."
  89 +#: accounts/forms.py:241
  90 +msgid ""
  91 +"Raw passwords are not stored, so there is no way to see this user's "
  92 +"password, but you can change the password using <a href=\"password/\">this "
  93 +"form</a>."
  94 +msgstr "Senhas em claro não são armazenadas, então não será possível visualizar sua senha, no entanto você poderá modificar sua senha utilizando <a href=\\\"password/\\\">este formulário</a>."
83 95  
84   -#: colab/accounts/models.py:71
85   -msgid "Enter a valid username."
86   -msgstr "Insira um nome de usuário válido."
  96 +#: accounts/forms.py:280
  97 +#, python-format
  98 +msgid ""
  99 +"Please enter a correct %(username)s and password. Note that both fields may "
  100 +"be case-sensitive."
  101 +msgstr "Por favor entre com um %(username)s e senha. Note que ambos os campos diferenciam letras maiúsculas de minúsculas"
87 102  
88   -#: colab/accounts/templates/accounts/change_password.html:8
89   -msgid "Change XMPP Client and SVN Password"
90   -msgstr "Trocar senha do Repositório e do Mensageiro"
91   -
92   -#: colab/accounts/templates/accounts/change_password.html:17
93   -#: colab/accounts/templates/accounts/user_update_form.html:186
94   -#: colab/accounts/templates/accounts/user_update_form.html:190
95   -#: colab/accounts/templates/accounts/user_update_form.html:202
96   -#: colab/accounts/templates/accounts/user_update_form.html:209
97   -#: colab/accounts/templates/registration/password_change_form_custom.html:27
98   -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:29
99   -msgid "Change Password"
100   -msgstr "Trocar senha"
  103 +#: accounts/forms.py:282
  104 +msgid "This account is inactive."
  105 +msgstr "Esta conta está inativa."
101 106  
102   -#: colab/accounts/templates/accounts/login.html:7
103   -msgid "To login please click in the link below:"
104   -msgstr "Para acessar por favor clique no link abaixo:"
  107 +#: accounts/forms.py:345
  108 +msgid "Email"
  109 +msgstr "Email"
105 110  
106   -#: colab/accounts/templates/accounts/login.html:8
107   -#: colab/accounts/templates/registration/login.html:34
108   -#: colab/accounts/templates/registration/login.html:54
109   -#: colab/templates/base.html:185 colab/templates/base.html.py:190
110   -#: colab/templates/base.html:194 colab/templates/base.html.py:199
111   -msgid "Login"
112   -msgstr "Entrar"
  111 +#: accounts/forms.py:403
  112 +msgid "New password"
  113 +msgstr "Nova senha"
  114 +
  115 +#: accounts/forms.py:405
  116 +msgid "New password confirmation"
  117 +msgstr "Confirmar nova senha"
  118 +
  119 +#: accounts/forms.py:436
  120 +msgid "Your old password was entered incorrectly. Please enter it again."
  121 +msgstr "Sua senha atual está incorreta. Por favor tente novamente."
113 122  
114   -#: colab/accounts/templates/accounts/manage_subscriptions.html:6
  123 +#: accounts/forms.py:439
  124 +msgid "Old password"
  125 +msgstr "Senha atual"
  126 +
  127 +#: accounts/forms.py:469
  128 +msgid "Password (again)"
  129 +msgstr "Senha (novamente)"
  130 +
  131 +#: accounts/models.py:82
  132 +msgid "Enter a valid username."
  133 +msgstr "Insira um nome de usuário válido."
  134 +
  135 +#: accounts/templates/accounts/manage_subscriptions.html:6
115 136 msgid "Group Subscriptions"
116 137 msgstr "Inscrições em grupos"
117 138  
118   -#: colab/accounts/templates/accounts/manage_subscriptions.html:36
  139 +#: accounts/templates/accounts/manage_subscriptions.html:36
119 140 msgid "Update subscriptions"
120 141 msgstr "Atualizar inscrições"
121 142  
122   -#: colab/accounts/templates/accounts/user_create_form.html:5
  143 +#: accounts/templates/accounts/user_create_form.html:5
123 144 msgid "Sign up"
124 145 msgstr "Cadastrar"
125 146  
126   -#: colab/accounts/templates/accounts/user_create_form.html:10
127   -#: colab/accounts/templates/registration/login.html:14
128   -#: colab/accounts/templates/registration/password_change_form_custom.html:13
129   -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:15
130   -#: colab/accounts/templates/registration/password_reset_form_custom.html:9
  147 +#: accounts/templates/accounts/user_create_form.html:10
  148 +#: accounts/templates/registration/login.html:14
  149 +#: accounts/templates/registration/password_change_form_custom.html:12
  150 +#: accounts/templates/registration/password_reset_confirm_custom.html:14
  151 +#: accounts/templates/registration/password_reset_form_custom.html:9
131 152 msgid "Please correct the errors below and try again."
132   -msgstr "Por favor, corrija os erros abaixo e tente novamente."
  153 +msgstr "Por favor corrija os erros abaixo e tente novamente."
133 154  
134   -#: colab/accounts/templates/accounts/user_create_form.html:17
  155 +#: accounts/templates/accounts/user_create_form.html:17
135 156 msgid "Required fields"
136 157 msgstr "Campos obrigatórios"
137 158  
138   -#: colab/accounts/templates/accounts/user_create_form.html:29
  159 +#: accounts/templates/accounts/user_create_form.html:29
139 160 msgid "Personal Information"
140 161 msgstr "Informações pessoais"
141 162  
142   -#: colab/accounts/templates/accounts/user_create_form.html:46
  163 +#: accounts/templates/accounts/user_create_form.html:46
143 164 msgid "Subscribe to groups"
144 165 msgstr "Inscreva-se nos grupos"
145 166  
146   -#: colab/accounts/templates/accounts/user_create_form.html:60
147   -#: colab/templates/base.html:189 colab/templates/base.html.py:198
  167 +#: accounts/templates/accounts/user_create_form.html:60
  168 +#: templates/base.html:100 templates/base.html.py:105 templates/header.html:40
  169 +#: templates/header.html.py:45
148 170 msgid "Register"
149 171 msgstr "Cadastre-se"
150 172  
151   -#: colab/accounts/templates/accounts/user_detail.html:8
  173 +#: accounts/templates/accounts/user_detail.html:8
152 174 msgid "Messages"
153 175 msgstr "Mensagens"
154 176  
155   -#: colab/accounts/templates/accounts/user_detail.html:9
156   -#: colab/templates/home.html:7
  177 +#: accounts/templates/accounts/user_detail.html:9 templates/home.html:7
157 178 msgid "Contributions"
158 179 msgstr "Contribuições"
159 180  
160   -#: colab/accounts/templates/accounts/user_detail.html:29
  181 +#: accounts/templates/accounts/user_detail.html:29
161 182 msgid "edit profile"
162 183 msgstr "editar perfil"
163 184  
164   -#: colab/accounts/templates/accounts/user_detail.html:30
  185 +#: accounts/templates/accounts/user_detail.html:30
165 186 msgid "group membership"
166 187 msgstr "Inscrições nos grupos"
167 188  
168   -#: colab/accounts/templates/accounts/user_detail.html:65
  189 +#: accounts/templates/accounts/user_detail.html:66
169 190 msgid "Twitter account"
170 191 msgstr "Conta Twitter"
171 192  
172   -#: colab/accounts/templates/accounts/user_detail.html:68
  193 +#: accounts/templates/accounts/user_detail.html:69
173 194 msgid "Facebook account"
174 195 msgstr "Conta Facebook"
175 196  
176   -#: colab/accounts/templates/accounts/user_detail.html:73
  197 +#: accounts/templates/accounts/user_detail.html:74
177 198 msgid "Google talk account"
178   -msgstr "Conta Google"
  199 +msgstr "Conta Google talk"
179 200  
180   -#: colab/accounts/templates/accounts/user_detail.html:77
  201 +#: accounts/templates/accounts/user_detail.html:78
181 202 msgid "Github account"
182 203 msgstr "Conta Github"
183 204  
184   -#: colab/accounts/templates/accounts/user_detail.html:81
  205 +#: accounts/templates/accounts/user_detail.html:82
185 206 msgid "Personal webpage"
186 207 msgstr "Página web pessoal"
187 208  
188   -#: colab/accounts/templates/accounts/user_detail.html:87
  209 +#: accounts/templates/accounts/user_detail.html:88
189 210 msgid "Groups: "
190 211 msgstr "Grupos: "
191 212  
192   -#: colab/accounts/templates/accounts/user_detail.html:100
  213 +#: accounts/templates/accounts/user_detail.html:101
193 214 msgid "Collaborations by Type"
194 215 msgstr "Colaborações por tipo"
195 216  
196   -#: colab/accounts/templates/accounts/user_detail.html:116
  217 +#: accounts/templates/accounts/user_detail.html:117
197 218 msgid "Participation by Group"
198 219 msgstr "Participação por grupo"
199 220  
200   -#: colab/accounts/templates/accounts/user_detail.html:132
201   -msgid "Badges"
202   -msgstr "Medalhas"
203   -
204   -#: colab/accounts/templates/accounts/user_detail.html:151
  221 +#: accounts/templates/accounts/user_detail.html:133
205 222 msgid "Latest posted"
206 223 msgstr "Últimas postagens"
207 224  
208   -#: colab/accounts/templates/accounts/user_detail.html:156
  225 +#: accounts/templates/accounts/user_detail.html:138
209 226 msgid "There are no posts by this user so far."
210 227 msgstr "Não há posts deste usuário até agora."
211 228  
212   -#: colab/accounts/templates/accounts/user_detail.html:160
  229 +#: accounts/templates/accounts/user_detail.html:142
213 230 msgid "View more posts..."
214 231 msgstr "Ver mais postagens..."
215 232  
216   -#: colab/accounts/templates/accounts/user_detail.html:166
  233 +#: accounts/templates/accounts/user_detail.html:148
217 234 msgid "Latest contributions"
218 235 msgstr "Últimas colaborações"
219 236  
220   -#: colab/accounts/templates/accounts/user_detail.html:171
  237 +#: accounts/templates/accounts/user_detail.html:153
221 238 msgid "No contributions of this user so far."
222   -msgstr "Não há posts deste usuário até agora."
  239 +msgstr "Não há contribuições deste usuário até agora."
223 240  
224   -#: colab/accounts/templates/accounts/user_detail.html:175
  241 +#: accounts/templates/accounts/user_detail.html:157
225 242 msgid "View more contributions..."
226 243 msgstr "Ver mais colaborações..."
227 244  
228   -#: colab/accounts/templates/accounts/user_update_form.html:65
  245 +#: accounts/templates/accounts/user_update_form.html:65
229 246 msgid "We sent a verification email to "
230 247 msgstr "Enviamos um email de verificação para "
231 248  
232   -#: colab/accounts/templates/accounts/user_update_form.html:66
  249 +#: accounts/templates/accounts/user_update_form.html:66
233 250 msgid "Please follow the instructions in it."
234 251 msgstr "Por favor, siga as instruções."
235 252  
236   -#: colab/accounts/templates/accounts/user_update_form.html:110
  253 +#: accounts/templates/accounts/user_update_form.html:110
237 254 msgid "profile information"
238 255 msgstr "informações do perfil"
239 256  
240   -#: colab/accounts/templates/accounts/user_update_form.html:115
  257 +#: accounts/templates/accounts/user_update_form.html:115
241 258 msgid "Change your avatar at Gravatar.com"
242 259 msgstr "Troque seu avatar em Gravatar.com"
243 260  
244   -#: colab/accounts/templates/accounts/user_update_form.html:142
245   -#: colab/search/utils.py:8
  261 +#: accounts/templates/accounts/user_update_form.html:142 search/utils.py:56
246 262 msgid "Emails"
247   -msgstr "E-mails"
  263 +msgstr "Emails"
248 264  
249   -#: colab/accounts/templates/accounts/user_update_form.html:151
  265 +#: accounts/templates/accounts/user_update_form.html:151
250 266 msgid "Primary"
251 267 msgstr "Primário"
252 268  
253   -#: colab/accounts/templates/accounts/user_update_form.html:154
  269 +#: accounts/templates/accounts/user_update_form.html:154
254 270 msgid "Setting..."
255 271 msgstr "Definindo..."
256 272  
257   -#: colab/accounts/templates/accounts/user_update_form.html:154
  273 +#: accounts/templates/accounts/user_update_form.html:154
258 274 msgid "Set as Primary"
259 275 msgstr "Definir como Primário"
260 276  
261   -#: colab/accounts/templates/accounts/user_update_form.html:155
  277 +#: accounts/templates/accounts/user_update_form.html:155
262 278 msgid "Deleting..."
263   -msgstr "Deletando..."
  279 +msgstr "Apagando..."
264 280  
265   -#: colab/accounts/templates/accounts/user_update_form.html:155
266   -#: colab/accounts/templates/accounts/user_update_form.html:167
  281 +#: accounts/templates/accounts/user_update_form.html:155
  282 +#: accounts/templates/accounts/user_update_form.html:167
267 283 msgid "Delete"
268 284 msgstr "Apagar"
269 285  
270   -#: colab/accounts/templates/accounts/user_update_form.html:166
  286 +#: accounts/templates/accounts/user_update_form.html:166
271 287 msgid "Sending verification..."
272 288 msgstr "Enviando verificação..."
273 289  
274   -#: colab/accounts/templates/accounts/user_update_form.html:166
  290 +#: accounts/templates/accounts/user_update_form.html:166
275 291 msgid "Verify"
276 292 msgstr "Verificar"
277 293  
278   -#: colab/accounts/templates/accounts/user_update_form.html:174
  294 +#: accounts/templates/accounts/user_update_form.html:174
279 295 msgid "Add another email address:"
280   -msgstr "Adicionar outro endereço de e-mail"
  296 +msgstr "Adicionar outro endereço de email"
281 297  
282   -#: colab/accounts/templates/accounts/user_update_form.html:177
  298 +#: accounts/templates/accounts/user_update_form.html:177
283 299 msgid "Add"
284 300 msgstr "Adicionar"
285 301  
286   -#: colab/accounts/templates/accounts/user_update_form.html:207
287   -msgid ""
288   -"This feature is available only for those who need to change the password for "
289   -"some reason as having an old user with the same username, forgot your "
290   -"password to commit, usage of other XMPP Client for connection. Usually, you "
291   -"won't need to change this password. Only change it if you are sure about "
292   -"what you are doing."
293   -msgstr ""
294   -"Este recurso está disponível para quem precisa trocar a senha por algum "
295   -"motivo como ter um usuário antigo com mesmo nome de usuário, esqueceu da "
296   -"senha antiga para commit, uso de outro cliente XMPP para conexão. "
297   -"Normalmente, você não terá que trocar essa senha. Somente troque essa senha "
298   -"se tiver certeza do que está fazendo."
  302 +#: accounts/templates/accounts/user_update_form.html:185
  303 +#: accounts/templates/accounts/user_update_form.html:189
  304 +#: accounts/templates/registration/password_change_form_custom.html:26
  305 +#: accounts/templates/registration/password_reset_confirm_custom.html:28
  306 +msgid "Change Password"
  307 +msgstr "Trocar senha"
299 308  
300   -#: colab/accounts/templates/accounts/user_update_form.html:217
  309 +#: accounts/templates/accounts/user_update_form.html:196
301 310 msgid "Update"
302 311 msgstr "Atualizar"
303 312  
304   -#: colab/accounts/templates/registration/login.html:10
305   -#: colab/accounts/templates/registration/password_change_form_custom.html:11
306   -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:12
  313 +#: accounts/templates/registration/login.html:10
  314 +#: accounts/templates/registration/password_change_form_custom.html:10
  315 +#: accounts/templates/registration/password_reset_confirm_custom.html:12
307 316 msgid "Please correct the error below and try again."
308   -msgstr "Por favor, corrija o erro abaixo e tente novamente."
  317 +msgstr "Por favor corrija o erro abaixo e tente novamente."
  318 +
  319 +#: accounts/templates/registration/login.html:34
  320 +#: accounts/templates/registration/login.html:54 templates/base.html:99
  321 +#: templates/base.html.py:101 templates/base.html:104
  322 +#: templates/base.html.py:106 templates/header.html:39
  323 +#: templates/header.html.py:41 templates/header.html:44
  324 +#: templates/header.html.py:46
  325 +msgid "Login"
  326 +msgstr "Entrar"
309 327  
310   -#: colab/accounts/templates/registration/login.html:56
  328 +#: accounts/templates/registration/login.html:56
311 329 msgid "Forgot Password?"
312   -msgstr "Esqueceu sua senha?"
  330 +msgstr "Esqueci minha Senha?"
313 331  
314   -#: colab/accounts/templates/registration/password_change_form_custom.html:55
315   -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:52
316   -#, fuzzy
317   -#| msgid "Change Password"
  332 +#: accounts/templates/registration/password_change_form_custom.html:54
  333 +#: accounts/templates/registration/password_reset_confirm_custom.html:51
318 334 msgid "Change my password"
319   -msgstr "Trocar senha"
  335 +msgstr "Alterar minha senha"
320 336  
321   -#: colab/accounts/templates/registration/password_reset_confirm_custom.html:3
322   -#, fuzzy
323   -#| msgid "Change Password"
  337 +#: accounts/templates/registration/password_reset_confirm_custom.html:3
324 338 msgid "Setting New password"
325   -msgstr "Trocar senha"
  339 +msgstr "Definir Nova Senha"
326 340  
327   -#: colab/accounts/templates/registration/password_reset_form_custom.html:23
328   -msgid "Forgotten your password? Enter your email address below, and we'll email "
  341 +#: accounts/templates/registration/password_reset_form_custom.html:23
  342 +msgid ""
  343 +"Forgotten your password? Enter your email address below, and we'll email "
329 344 "instructions for setting a new one."
330   -msgstr "Esqueceu sua senha? Entre com seu endereço de email abaixo e nós iremos lhe enviar instruções para configurar uma nova senha"
  345 +msgstr "Esqueceu sua senha? Digite seu email abaixo, e enviaremos instruções para redefinir sua senha."
331 346  
332   -#: colab/accounts/templates/registration/password_reset_form_custom.html:26
333   -#, fuzzy
334   -#| msgid "An email address"
  347 +#: accounts/templates/registration/password_reset_form_custom.html:26
335 348 msgid "Email address:"
336   -msgstr "Um endereço de e-mail"
  349 +msgstr "Endereço de email: "
337 350  
338   -#: colab/accounts/templates/registration/password_reset_form_custom.html:37
  351 +#: accounts/templates/registration/password_reset_form_custom.html:37
339 352 msgid "Reset password"
340 353 msgstr "Redefinir senha"
341 354  
342   -#: colab/accounts/views.py:180
  355 +#: accounts/views.py:126
343 356 msgid "Your profile has been created!"
344 357 msgstr "Seu perfil foi criado!"
345 358  
346   -#: colab/accounts/views.py:264
347   -msgid "Could not change your password. Please, try again later."
348   -msgstr "Não conseguimos alterar sua senha. Por favor, tente novamente mais tarde."
  359 +#: accounts/views.py:186
  360 +msgid "Your password was changed."
  361 +msgstr "Sua senha foi modificada."
349 362  
350   -#: colab/accounts/views.py:273
351   -msgid "You've changed your password successfully!"
352   -msgstr "Senha alterada com sucesso!"
  363 +#: accounts/views.py:202
  364 +msgid "Your password has been set. You may go ahead and log in now."
  365 +msgstr "Sua senha foi modificada. Você já pode efetuar o login agora."
353 366  
354   -#: colab/accounts/views.py:279
355   -msgid "Your password was changed."
356   -msgstr "Sua senha foi alterada"
  367 +#: home/context_processors.py:20
  368 +msgid "Fork me!"
  369 +msgstr "Fork me!"
357 370  
358   -#: colab/accounts/views.py:286
359   -msgid "We've emailed you instructions for setting your password. You should be receiving them shortly."
360   -msgstr "Nos enviamos o email com as intruções para mudança de senha. Em breve você deve recebê-lo."
  371 +#: plugins/gitlab/models.py:27
  372 +msgid "Gitlab Project"
  373 +msgstr "Projeto no Gitlab"
361 374  
362   -#: colab/accounts/views.py:292
363   -msgid "Your password has been set. You may go ahead and log in now."
364   -msgstr "Sua senha foi redefinida. Você pode prosseguir e autenticar agora."
  375 +#: plugins/gitlab/models.py:28
  376 +msgid "Gitlab Projects"
  377 +msgstr "Projetos no Gitlab"
365 378  
366   -#: colab/settings.py:160
367   -msgid "Image"
368   -msgstr "Imagem"
  379 +#: plugins/gitlab/models.py:54
  380 +msgid "Gitlab Group"
  381 +msgstr "Grupo no Gitlab"
369 382  
370   -#: colab/search/templates/search/includes/search_filters.html:122
371   -msgid "Ticket"
372   -msgstr "Tíquetes"
  383 +#: plugins/gitlab/models.py:55
  384 +msgid "Gitlab Groups"
  385 +msgstr "Grupos no Gitlab"
373 386  
374   -#: colab/search/forms.py:18
375   -msgid "Type"
376   -msgstr "Tipo"
  387 +#: plugins/gitlab/models.py:91
  388 +msgid "Gitlab Merge Request"
  389 +msgstr "Envio de Contribuição no Gitlab"
377 390  
378   -#: colab/home/context_processors.py:20
379   -msgid "Fork me!"
380   -msgstr "Fork me!"
  391 +#: plugins/gitlab/models.py:92
  392 +msgid "Gitlab Merge Requests"
  393 +msgstr "Envio de Contribuições no Gitlab"
  394 +
  395 +#: plugins/gitlab/models.py:120
  396 +msgid "Gitlab Issue"
  397 +msgstr "Tíquete no Gitlab"
  398 +
  399 +#: plugins/gitlab/models.py:121
  400 +msgid "Gitlab Issues"
  401 +msgstr "Tíquetes no Gitlab"
381 402  
382   -#: colab/rss/feeds.py:13
  403 +#: plugins/gitlab/models.py:176 plugins/gitlab/models.py:177
  404 +msgid "Gitlab Comments"
  405 +msgstr "Comentários no Gitlab"
  406 +
  407 +#: plugins/noosfero/models.py:39
  408 +msgid "Community"
  409 +msgstr "Comunidade"
  410 +
  411 +#: plugins/noosfero/models.py:40
  412 +msgid "Communities"
  413 +msgstr "Comunidades"
  414 +
  415 +#: plugins/noosfero/models.py:67
  416 +msgid "Article"
  417 +msgstr "Artigo"
  418 +
  419 +#: plugins/noosfero/models.py:68
  420 +msgid "Articles"
  421 +msgstr "Artigos"
  422 +
  423 +#: rss/feeds.py:13
383 424 msgid "Latest Discussions"
384 425 msgstr "Últimas discussões"
385 426  
386   -#: colab/rss/feeds.py:32
  427 +#: rss/feeds.py:32
387 428 msgid "Discussions Most Relevance"
388 429 msgstr "Discussões Mais Relevantes"
389 430  
390   -#: colab/rss/feeds.py:51
  431 +#: rss/feeds.py:51
391 432 msgid "Latest collaborations"
392 433 msgstr "Últimas colaborações"
393 434  
394   -#: colab/search/forms.py:16 colab/search/templates/search/search.html:46
395   -#: colab/templates/base.html:175
  435 +#: search/forms.py:16 search/templates/search/search.html:46
  436 +#: templates/base.html:89 templates/header.html:29
396 437 msgid "Search"
397 438 msgstr "Busca"
398 439  
399   -#: colab/search/forms.py:19 colab/search/views.py:22
  440 +#: search/forms.py:18
  441 +msgid "Type"
  442 +msgstr "Tipo"
  443 +
  444 +#: search/forms.py:19 search/views.py:20
400 445 msgid "Author"
401 446 msgstr "Autor"
402 447  
403   -#: colab/search/forms.py:20
  448 +#: search/forms.py:20
404 449 msgid "Modified by"
405 450 msgstr "Modificado por"
406 451  
407   -#: colab/search/forms.py:22
  452 +#: search/forms.py:22
408 453 msgid "Status"
409 454 msgstr "Status"
410 455  
411   -#: colab/search/forms.py:26 colab/search/views.py:25
  456 +#: search/forms.py:26 search/views.py:23
412 457 msgid "Mailinglist"
413   -msgstr "Grupo"
  458 +msgstr "Lista de discussão"
414 459  
415   -#: colab/search/forms.py:30
  460 +#: search/forms.py:30
416 461 msgid "Milestone"
417   -msgstr "Etapa"
  462 +msgstr "Marco"
418 463  
419   -#: colab/search/forms.py:31
  464 +#: search/forms.py:31
420 465 msgid "Priority"
421 466 msgstr "Prioridade"
422 467  
423   -#: colab/search/forms.py:32
  468 +#: search/forms.py:32
424 469 msgid "Component"
425 470 msgstr "Componente"
426 471  
427   -#: colab/search/forms.py:33
  472 +#: search/forms.py:33
428 473 msgid "Severity"
429   -msgstr "Seriedade"
  474 +msgstr "Severidade"
430 475  
431   -#: colab/search/forms.py:34
  476 +#: search/forms.py:34
432 477 msgid "Reporter"
433 478 msgstr "Relator"
434 479  
435   -#: colab/search/forms.py:35
  480 +#: search/forms.py:35
436 481 msgid "Keywords"
437   -msgstr "Palavras chaves"
  482 +msgstr "Palavras chave"
438 483  
439   -#: colab/search/forms.py:36
  484 +#: search/forms.py:36
440 485 msgid "Collaborators"
441 486 msgstr "Colaboradores"
442 487  
443   -#: colab/search/forms.py:37 colab/templates/base.html:107
  488 +#: search/forms.py:37
444 489 msgid "Repository"
445 490 msgstr "Repositório"
446 491  
447   -#: colab/search/forms.py:38
448   -msgid "Username"
449   -msgstr "Usuário"
450   -
451   -#: colab/search/forms.py:39
  492 +#: search/forms.py:39
452 493 msgid "Name"
453 494 msgstr "Nome"
454 495  
455   -#: colab/search/forms.py:40
  496 +#: search/forms.py:40
456 497 msgid "Institution"
457 498 msgstr "Instituição"
458 499  
459   -#: colab/search/forms.py:41
  500 +#: search/forms.py:41
460 501 msgid "Role"
461   -msgstr "Cargo"
  502 +msgstr "Papel"
462 503  
463   -#: colab/search/forms.py:42
464   -#: colab/search/templates/search/includes/search_filters.html:154
465   -#: colab/search/templates/search/includes/search_filters.html:156
466   -#: colab/search/templates/search/includes/search_filters.html:188
467   -#: colab/search/templates/search/includes/search_filters.html:189
  504 +#: search/forms.py:42 search/templates/search/includes/search_filters.html:132
  505 +#: search/templates/search/includes/search_filters.html:134
  506 +#: search/templates/search/includes/search_filters.html:166
  507 +#: search/templates/search/includes/search_filters.html:167
468 508 msgid "Since"
469 509 msgstr "Desde"
470 510  
471   -#: colab/search/forms.py:43
472   -#: colab/search/templates/search/includes/search_filters.html:163
473   -#: colab/search/templates/search/includes/search_filters.html:165
474   -#: colab/search/templates/search/includes/search_filters.html:192
475   -#: colab/search/templates/search/includes/search_filters.html:193
  511 +#: search/forms.py:43 search/templates/search/includes/search_filters.html:141
  512 +#: search/templates/search/includes/search_filters.html:143
  513 +#: search/templates/search/includes/search_filters.html:170
  514 +#: search/templates/search/includes/search_filters.html:171
476 515 msgid "Until"
477 516 msgstr "Até"
478 517  
479   -#: colab/search/forms.py:44
  518 +#: search/forms.py:44
480 519 msgid "Filename"
481 520 msgstr "Nome do arquivo"
482 521  
483   -#: colab/search/forms.py:45
  522 +#: search/forms.py:45
484 523 msgid "Used by"
485 524 msgstr "Usado por"
486 525  
487   -#: colab/search/forms.py:46
  526 +#: search/forms.py:46
488 527 msgid "File type"
489 528 msgstr "Tipo do arquivo"
490 529  
491   -#: colab/search/forms.py:47
  530 +#: search/forms.py:47
492 531 msgid "Size"
493 532 msgstr "Tamanho"
494 533  
495   -#: colab/search/templates/search/includes/search_filters.html:5
496   -#: colab/search/templates/search/includes/search_filters.html:33
497   -#: colab/search/templates/search/includes/search_filters.html:51
498   -#: colab/search/templates/search/includes/search_filters.html:69
  534 +#: search/templates/search/includes/search_filters.html:5
  535 +#: search/templates/search/includes/search_filters.html:33
  536 +#: search/templates/search/includes/search_filters.html:51
  537 +#: search/templates/search/includes/search_filters.html:69
499 538 msgid "Remove filter"
500 539 msgstr "Remover filtro"
501 540  
502   -#: colab/search/templates/search/includes/search_filters.html:88
503   -#: colab/search/templates/search/includes/search_filters.html:174
504   -#: colab/search/templates/search/includes/search_filters.html:198
  541 +#: search/templates/search/includes/search_filters.html:88
  542 +#: search/templates/search/includes/search_filters.html:152
  543 +#: search/templates/search/includes/search_filters.html:176
505 544 msgid "Filter"
506 545 msgstr "Filtro"
507 546  
508   -#: colab/search/templates/search/includes/search_filters.html:94
  547 +#: search/templates/search/includes/search_filters.html:94
509 548 msgid "Sort by"
510 549 msgstr "Ordenar por"
511 550  
512   -#: colab/search/templates/search/includes/search_filters.html:111
  551 +#: search/templates/search/includes/search_filters.html:111
513 552 msgid "Types"
514 553 msgstr "Tipos"
515 554  
516   -#: colab/search/templates/search/includes/search_filters.html:118
517   -#: colab/search/utils.py:7 colab/templates/open-data.html:130
518   -msgid "Wiki"
519   -msgstr "Wiki"
520   -
521   -#: colab/search/templates/search/includes/search_filters.html:126
522   -msgid "Changeset"
523   -msgstr "Conjunto de Mudanças"
524   -
525   -#: colab/search/templates/search/includes/search_filters.html:130
526   -msgid "User"
527   -msgstr "Usuário"
528   -
529   -#: colab/search/templates/search/includes/search_filters.html:134
530   -msgid "Attachment"
531   -msgstr "Anexo"
532   -
533   -#: colab/search/templates/search/includes/search_filters.html:139
534   -#: colab/search/views.py:20
  555 +#: search/templates/search/includes/search_filters.html:117 search/views.py:18
535 556 msgid "Discussion"
536   -msgstr "Discussões"
  557 +msgstr "Discussão"
537 558  
538   -#: colab/search/templates/search/search.html:5
  559 +#: search/templates/search/search.html:5
539 560 msgid "search"
540 561 msgstr "busca"
541 562  
542   -#: colab/search/templates/search/search.html:51
  563 +#: search/templates/search/search.html:51
543 564 msgid "documents found"
544 565 msgstr "documentos encontrados"
545 566  
546   -#: colab/search/templates/search/search.html:62
  567 +#: search/templates/search/search.html:62
547 568 msgid "Search here"
548 569 msgstr "Pesquise aqui"
549 570  
550   -#: colab/search/templates/search/search.html:74
551   -#: colab/search/templates/search/search.html:84
  571 +#: search/templates/search/search.html:74
  572 +#: search/templates/search/search.html:84
552 573 msgid "Filters"
553 574 msgstr "Filtros"
554 575  
555   -#: colab/search/templates/search/search.html:105
  576 +#: search/templates/search/search.html:105
556 577 msgid "No results for your search."
557 578 msgstr "Não há resultados para sua busca."
558 579  
559   -#: colab/search/templates/search/search.html:107
  580 +#: search/templates/search/search.html:107
560 581 msgid "You are searching for"
561 582 msgstr "Você está procurando por"
562 583  
563   -#: colab/search/utils.py:9 colab/settings.py:157
564   -msgid "Code"
565   -msgstr "Código"
566   -
567   -#: colab/search/utils.py:10
568   -msgid "Tickets"
569   -msgstr "Tíquetes"
570   -
571   -#: colab/search/utils.py:11
572   -msgid "Attachments"
573   -msgstr "Anexos"
574   -
575   -#: colab/settings.py:115
  584 +#: settings.py:113
576 585 msgid "English"
577 586 msgstr "Inglês"
578 587  
579   -#: colab/settings.py:116
  588 +#: settings.py:114
580 589 msgid "Portuguese"
581 590 msgstr "Português"
582 591  
583   -#: colab/settings.py:117
  592 +#: settings.py:115
584 593 msgid "Spanish"
585 594 msgstr "Espanhol"
586 595  
587   -#: colab/settings.py:140
  596 +#: settings.py:138
588 597 msgid "Recent activity"
589 598 msgstr "Atividade recente"
590 599  
591   -#: colab/settings.py:144
  600 +#: settings.py:142
592 601 msgid "Relevance"
593 602 msgstr "Relevância"
594 603  
595   -#: colab/settings.py:153
  604 +#: settings.py:151
596 605 msgid "Document"
597 606 msgstr "Documento"
598 607  
599   -#: colab/settings.py:155
  608 +#: settings.py:153
600 609 msgid "Presentation"
601 610 msgstr "Apresentação"
602 611  
603   -#: colab/settings.py:156
  612 +#: settings.py:154
604 613 msgid "Text"
605 614 msgstr "Texto"
606 615  
607   -#: colab/settings.py:159
  616 +#: settings.py:155
  617 +msgid "Code"
  618 +msgstr "Código"
  619 +
  620 +#: settings.py:157
608 621 msgid "Compressed"
609 622 msgstr "Compactado"
610 623  
611   -#: colab/settings.py:162
  624 +#: settings.py:158
  625 +msgid "Image"
  626 +msgstr "Imagem"
  627 +
  628 +#: settings.py:160
612 629 msgid "Spreadsheet"
613 630 msgstr "Planilha"
614 631  
615   -#: colab/settings.py:260
616   -msgid "Planet Colab"
617   -msgstr "Planet Colab"
618   -
619   -#: colab/settings.py:261
620   -msgid "Colab blog aggregator"
621   -msgstr "Agregador de blog Colab"
622   -
623   -#: colab/settings.py:295
624   -msgid "One Time Snippet"
625   -msgstr "Uma única visualização"
626   -
627   -#: colab/settings.py:296
628   -msgid "In one hour"
629   -msgstr "Em uma hora"
630   -
631   -#: colab/settings.py:297
632   -msgid "In one week"
633   -msgstr "Em uma semana"
634   -
635   -#: colab/settings.py:298
636   -msgid "In one month"
637   -msgstr "Em um mês"
638   -
639   -#: colab/settings.py:299
640   -msgid "Never"
641   -msgstr "Nunca"
642   -
643   -#: colab/templates/404.html:5
  632 +#: templates/404.html:5
644 633 msgid "Not found. Keep searching! :)"
645 634 msgstr "Não encontrado. Continue procurando! :)"
646 635  
647   -#: colab/templates/500.html:2
  636 +#: templates/500.html:2
648 637 msgid "Ooopz... something went wrong!"
649   -msgstr "Opa... algo saiu errado!"
  638 +msgstr "Ooopa... algo saiu errado!"
650 639  
651   -#: colab/templates/base.html:91
652   -msgid "Timeline"
653   -msgstr "Linha do Tempo"
654   -
655   -#: colab/templates/base.html:96 colab/templates/base.html.py:114
  640 +#: templates/base.html:83 templates/header.html:21
656 641 msgid "Groups"
657 642 msgstr "Grupos"
658 643  
659   -#: colab/templates/base.html:101
660   -msgid "Blogs"
661   -msgstr "Blogs"
662   -
663   -#: colab/templates/base.html:109
664   -msgid "Public Projects"
665   -msgstr "Projetos Públicos"
666   -
667   -#: colab/templates/base.html:111 colab/templates/base.html.py:140
668   -msgid "Profile"
669   -msgstr "Perfil"
670   -
671   -#: colab/templates/base.html:112
672   -msgid "New Project"
673   -msgstr "Novo Projeto"
674   -
675   -#: colab/templates/base.html:113
676   -msgid "Projects"
677   -msgstr "Projetos"
678   -
679   -#: colab/templates/base.html:115
680   -msgid "Issues"
681   -msgstr "Tiquetes"
682   -
683   -#: colab/templates/base.html:116
684   -msgid "Merge Requests"
685   -msgstr "Merge Requests"
686   -
687   -#: colab/templates/base.html:124
688   -msgid "Social"
689   -msgstr "Social"
690   -
691   -#: colab/templates/base.html:129
692   -msgid "Users"
693   -msgstr "Usuários"
694   -
695   -#: colab/templates/base.html:134
696   -msgid "Communities"
697   -msgstr "Comunidades"
698   -
699   -#: colab/templates/base.html:145
700   -msgid "Control panel"
701   -msgstr "Painel de Controle"
702   -
703   -#: colab/templates/base.html:154
704   -msgid "Contribute"
705   -msgstr "Contribua"
706   -
707   -#: colab/templates/base.html:158
708   -msgid "New Wiki Page"
709   -msgstr "Nova Página Wiki"
710   -
711   -#: colab/templates/base.html:160
712   -msgid "View Tickets"
713   -msgstr "Ver Tiquetes"
714   -
715   -#: colab/templates/base.html:162
716   -msgid "New Ticket"
717   -msgstr "Novo Tíquete"
718   -
719   -#: colab/templates/base.html:164
720   -msgid "Roadmap"
721   -msgstr "Planejamento"
722   -
723   -#: colab/templates/base.html:167
724   -msgid "Browse Source"
725   -msgstr "Códigos Fontes"
726   -
727   -#: colab/templates/base.html:169
728   -msgid "Continuous Integration"
729   -msgstr "Integração Contínua"
730   -
731   -#: colab/templates/base.html:213
  644 +#: templates/base.html:119 templates/header.html:59
732 645 msgid "My Profile"
733 646 msgstr "Meu Perfil"
734 647  
735   -#: colab/templates/base.html:214 colab/templates/base.html.py:218
  648 +#: templates/base.html:120 templates/base.html.py:121 templates/header.html:60
  649 +#: templates/header.html.py:61
736 650 msgid "Logout"
737 651 msgstr "Sair"
738 652  
739   -#: colab/templates/base.html:230 colab/templates/base.html.py:233
  653 +#: templates/base.html:132 templates/base.html.py:135 templates/header.html:72
  654 +#: templates/header.html.py:75
740 655 msgid "Search here..."
741 656 msgstr "Pesquise aqui..."
742 657  
743   -#: colab/templates/base.html:247
  658 +#: templates/base.html:149
744 659 msgid "The login has failed. Please, try again."
745 660 msgstr "O login falhou. Por favor, tente novamente."
746 661  
747   -#: colab/templates/base.html:272
  662 +#: templates/footer.html:6
748 663 msgid "Last email imported at"
749   -msgstr "Último e-mail importado em"
  664 +msgstr "Último email importado em"
750 665  
751   -#: colab/templates/base.html:279
  666 +#: templates/footer.html:12
752 667 msgid "The contents of this site is published under license"
753 668 msgstr "O conteúdo deste site está publicado sob a licença"
754 669  
755   -#: colab/templates/base.html:282
  670 +#: templates/footer.html:15
756 671 msgid "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual"
757 672 msgstr "Creative Commons 4.0 Brasil - Atribuir Fonte - Compartilhar Igual"
758 673  
759   -#: colab/templates/dpaste/snippet_details.html:37
760   -#, fuzzy
761   -#| msgid "Comparison"
762   -msgid "Compare"
763   -msgstr "Comparação"
764   -
765   -#: colab/templates/dpaste/snippet_details.html:47
766   -#, python-format
767   -msgid "Expires in: %(date)s"
768   -msgstr "Expira em: %(date)s"
769   -
770   -#: colab/templates/dpaste/snippet_details.html:49
771   -msgid "Snippet never expires"
772   -msgstr "Snippet nunca expira"
773   -
774   -#: colab/templates/dpaste/snippet_details.html:51
775   -#, fuzzy
776   -#| msgid "One Time Snippet"
777   -msgid "One-time snippet"
778   -msgstr "Uma única visualização"
779   -
780   -#: colab/templates/dpaste/snippet_details.html:56
781   -msgid "Really delete this snippet?"
782   -msgstr "Deseja realmente deletar esse snippet?"
783   -
784   -#: colab/templates/dpaste/snippet_details.html:58
785   -#, fuzzy
786   -#| msgid "Delete"
787   -msgid "Delete Now"
788   -msgstr "Apagar"
789   -
790   -#: colab/templates/dpaste/snippet_details.html:63
791   -#: colab/templates/dpaste/snippet_details.html:65
792   -#, fuzzy
793   -#| msgid "One Time Snippet"
794   -msgid "Compare Snippets"
795   -msgstr "Uma única visualização"
796   -
797   -#: colab/templates/dpaste/snippet_details.html:69
798   -#: colab/templates/dpaste/snippet_details.html:71
799   -msgid "View Raw"
800   -msgstr "Ver código"
801   -
802   -#: colab/templates/dpaste/snippet_details.html:75
803   -msgid "Gist"
804   -msgstr "Gist"
805   -
806   -#: colab/templates/dpaste/snippet_details.html:88
807   -msgid "This is a one-time snippet."
808   -msgstr "Esste é um snippet que será usado apenas uma vez."
809   -
810   -#: colab/templates/dpaste/snippet_details.html:90
811   -msgid "It will automatically get deleted after {{ remaining }} further views."
812   -msgstr "Isso será automaticamente deletado depois de {{ remaining }} visualizações."
813   -
814   -#: colab/templates/dpaste/snippet_details.html:92
815   -msgid "It will automatically get deleted after the next view."
816   -msgstr "Isso será automaticamente deletado após a próxima visualização."
817   -
818   -#: colab/templates/dpaste/snippet_details.html:94
819   -msgid "It cannot be viewed again."
820   -msgstr "Isso não pode ser visto novamente."
821   -
822   -#: colab/templates/dpaste/snippet_details.html:109
823   -msgid "Reply to this snippet"
824   -msgstr "Responda esse snippet"
825   -
826   -#: colab/templates/dpaste/snippet_diff.html:5
827   -#, python-format
828   -msgid ""
829   -"\n"
830   -" Diff between <a href=\"%(filea_url)s\">#%(filea_id)s</a> and <a href="
831   -"\"%(fileb_url)s\">#%(fileb_id)s</a>\n"
832   -" "
833   -msgstr ""
834   -"\n"
835   - " Diferença entre <a href=\"%(filea_url)s\">#%(filea_id)s</a> e <a href="
836   - "\"%(fileb_url)s\">#%(fileb_id)s</a>\n"
837   - " "
838   -
839   -#: colab/templates/dpaste/snippet_form.html:28
840   -msgid "Paste it"
  674 +#: templates/header.html:26
  675 +msgid "Paste"
841 676 msgstr "Cole aqui"
842 677  
843   -#: colab/templates/home.html:17
  678 +#: templates/home.html:17
844 679 msgid "Latest Collaborations"
845 680 msgstr "Últimas Colaborações"
846 681  
847   -#: colab/templates/home.html:21
  682 +#: templates/home.html:21
848 683 msgid "RSS - Latest collaborations"
849 684 msgstr "RSS - Últimas Colaborações"
850 685  
851   -#: colab/templates/home.html:30
  686 +#: templates/home.html:30
852 687 msgid "View more collaborations..."
853 688 msgstr "Ver mais colaborações..."
854 689  
855   -#: colab/templates/home.html:37
  690 +#: templates/home.html:37
856 691 msgid "Collaboration Graph"
857 692 msgstr "Gráfico de Colaborações"
858 693  
859   -#: colab/templates/home.html:48
  694 +#: templates/home.html:48
860 695 msgid "Most Relevant Threads"
861 696 msgstr "Discussões Mais Relevantes"
862 697  
863   -#: colab/templates/home.html:52
  698 +#: templates/home.html:52
864 699 msgid "RSS - Most Relevant Threads"
865 700 msgstr "RSS - Discussões Mais Relevantes"
866 701  
867   -#: colab/templates/home.html:60 colab/templates/home.html.py:79
  702 +#: templates/home.html:60 templates/home.html.py:79
868 703 msgid "View more discussions..."
869 704 msgstr "Ver mais discussões..."
870 705  
871   -#: colab/templates/home.html:67
  706 +#: templates/home.html:67
872 707 msgid "Latest Threads"
873 708 msgstr "Últimas Discussões"
874 709  
875   -#: colab/templates/home.html:71
  710 +#: templates/home.html:71
876 711 msgid "RSS - Latest Threads"
877 712 msgstr "RSS - Últimas Discussões"
878   -
879   -#: colab/templates/open-data.html:6
880   -msgid "OpenData - Communities"
881   -msgstr "OpenData - Comunidades"
882   -
883   -#: colab/templates/open-data.html:7
884   -msgid ""
885   -"If you are interested in any other data that is not provided by this API, "
886   -"please contact us via the ticketing system (you must be registered in order "
887   -"to create a ticket)."
888   -msgstr ""
889   -"Se você estiver interessado por qualquer outra informação não provida por "
890   -"esta API, por favor nos contacte através do nosso sistema de tíquetes (você "
891   -"deve estar logado para conseguir criar um tíquete). "
892   -
893   -#: colab/templates/open-data.html:9
894   -msgid "Retrieving data via API"
895   -msgstr "Recuperando informação através da API"
896   -
897   -#: colab/templates/open-data.html:10
898   -msgid "Colab API works through HTTP/REST, always returning JSON objects."
899   -msgstr ""
900   -"A API do Colab funciona com a utilização de HTTP/REST e sempre retorna "
901   -"objetos JSON."
902   -
903   -#: colab/templates/open-data.html:12
904   -msgid "The base API URL is"
905   -msgstr "A URL base da API é"
906   -
907   -#: colab/templates/open-data.html:19
908   -msgid ""
909   -"Each model listed below has a resource_uri field available, which is the "
910   -"object's data URI."
911   -msgstr ""
912   -"Cada modelo listado abaixo tem um resource_uri que representa a URI do objeto"
913   -
914   -#: colab/templates/open-data.html:20
915   -msgid ""
916   -"The following list contains the available models to retrieve data and its "
917   -"fields available for filtering"
918   -msgstr ""
919   -"A lista abaixo contém a lista de modelo disponíveis para pesquisa e os "
920   -"campos disponíveis para filtro"
921   -
922   -#: colab/templates/open-data.html:24 colab/templates/open-data.html.py:39
923   -#: colab/templates/open-data.html:50 colab/templates/open-data.html.py:62
924   -#: colab/templates/open-data.html:74 colab/templates/open-data.html.py:95
925   -msgid "Fields"
926   -msgstr "Campos"
927   -
928   -#: colab/templates/open-data.html:25
929   -msgid ""
930   -"The email field is not shown for user's privacy, but you can use it to filter"
931   -msgstr ""
932   -"O campo email não é exibido por uma questão de privacidade do usuário, por "
933   -"outro lado ele poderá ser utilizado em filtros"
934   -
935   -#: colab/templates/open-data.html:27
936   -msgid "The user's username"
937   -msgstr "O username do usuário"
938   -
939   -#: colab/templates/open-data.html:28
940   -msgid "The user's email address"
941   -msgstr "O endereço e-mail do usuário"
942   -
943   -#: colab/templates/open-data.html:29
944   -msgid "What is the user's institution"
945   -msgstr "Instituição do usuário"
946   -
947   -#: colab/templates/open-data.html:30
948   -msgid "What is the user's role"
949   -msgstr "Posição do usuário"
950   -
951   -#: colab/templates/open-data.html:31
952   -msgid "The user's first name"
953   -msgstr "Primeiro nome do usuário"
954   -
955   -#: colab/templates/open-data.html:32
956   -msgid "The user's last name"
957   -msgstr "Último nome do usuário"
958   -
959   -#: colab/templates/open-data.html:33
960   -msgid "A mini bio of the user"
961   -msgstr "O mini bio do usuário"
962   -
963   -#: colab/templates/open-data.html:40
964   -msgid ""
965   -"The address field is not shown for user's privacy, but you can use it to "
966   -"filter"
967   -msgstr ""
968   -"O campo email não é exibido por uma questão de privacidade do usuário, por "
969   -"outro lado ele poderá ser utilizado em filtros"
970   -
971   -#: colab/templates/open-data.html:42
972   -msgid "It has a relationshop with the user described above"
973   -msgstr "Tem um relacionamento com usuário como descrito acima"
974   -
975   -#: colab/templates/open-data.html:43
976   -msgid "An email address"
977   -msgstr "Um endereço de e-mail"
978   -
979   -#: colab/templates/open-data.html:44
980   -msgid "The user's real name"
981   -msgstr "O nome real do usuário"
982   -
983   -#: colab/templates/open-data.html:52
984   -msgid "It has a relationship with the emailaddress described above"
985   -msgstr "Tem um relacionamento com emailaddress como descrito acima"
986   -
987   -#: colab/templates/open-data.html:53
988   -msgid "The message's body"
989   -msgstr "O corpo da mensagem"
990   -
991   -#: colab/templates/open-data.html:54
992   -msgid "The message's subject"
993   -msgstr "O título da mensagem"
994   -
995   -#: colab/templates/open-data.html:55
996   -msgid "The message's id"
997   -msgstr "O ID da mensagem"
998   -
999   -#: colab/templates/open-data.html:56
1000   -msgid "The message's received time"
1001   -msgstr "A hora que a mensagem foi recebida"
1002   -
1003   -#: colab/templates/open-data.html:64
1004   -msgid "The revision's author username"
1005   -msgstr "O username do autor da revisão"
1006   -
1007   -#: colab/templates/open-data.html:65
1008   -msgid "When the revision's were created"
1009   -msgstr "Quando a revisão foi criada"
1010   -
1011   -#: colab/templates/open-data.html:66
1012   -msgid "The revision's key"
1013   -msgstr "A chave da revisão"
1014   -
1015   -#: colab/templates/open-data.html:67
1016   -msgid "The revision's message"
1017   -msgstr "A mensagem da revisão"
1018   -
1019   -#: colab/templates/open-data.html:68
1020   -msgid "The revision's repository name"
1021   -msgstr "O nome do repositório da revisão"
1022   -
1023   -#: colab/templates/open-data.html:76
1024   -msgid "The ticket's author username"
1025   -msgstr "O nome do autor do tíquete"
1026   -
1027   -#: colab/templates/open-data.html:77
1028   -msgid "The ticket's component"
1029   -msgstr "O componente do tíquete"
1030   -
1031   -#: colab/templates/open-data.html:78
1032   -msgid "When the ticket's were created"
1033   -msgstr "Quando o tíquete foi criado"
1034   -
1035   -#: colab/templates/open-data.html:79
1036   -msgid "The ticket's description"
1037   -msgstr "A descrição do tíquete"
1038   -
1039   -#: colab/templates/open-data.html:80
1040   -msgid "The ticket's id"
1041   -msgstr "O ID do tíquete"
1042   -
1043   -#: colab/templates/open-data.html:81
1044   -msgid "The ticket's keywords"
1045   -msgstr "As keywords do tíquete"
1046   -
1047   -#: colab/templates/open-data.html:82
1048   -msgid "The ticket's milestone"
1049   -msgstr "O milestone do tíquete"
1050   -
1051   -#: colab/templates/open-data.html:83 colab/templates/open-data.html.py:99
1052   -msgid "The time of the last modification"
1053   -msgstr "A hora da última modificação"
1054   -
1055   -#: colab/templates/open-data.html:84
1056   -msgid "The username of the last user who modified the ticket"
1057   -msgstr "O username do último usuário que modificou o tíquete"
1058   -
1059   -#: colab/templates/open-data.html:85
1060   -msgid "The ticket's priority"
1061   -msgstr "A prioridade do tíquete"
1062   -
1063   -#: colab/templates/open-data.html:86
1064   -msgid "The ticket's severity"
1065   -msgstr "A gravidade do tíquete"
1066   -
1067   -#: colab/templates/open-data.html:87
1068   -msgid "The ticket's status"
1069   -msgstr "O status do tíquete"
1070   -
1071   -#: colab/templates/open-data.html:88
1072   -msgid "The ticket's summary"
1073   -msgstr "O resumo do tíquete"
1074   -
1075   -#: colab/templates/open-data.html:89
1076   -msgid "The ticket's version"
1077   -msgstr "A versão do tíquete"
1078   -
1079   -#: colab/templates/open-data.html:97
1080   -msgid "The wiki's author username"
1081   -msgstr "O username do autor da wiki"
1082   -
1083   -#: colab/templates/open-data.html:98
1084   -msgid "When the wiki's were created"
1085   -msgstr "Quando a wiki foi criada"
1086   -
1087   -#: colab/templates/open-data.html:100
1088   -msgid "The username of the last user who modified the wiki"
1089   -msgstr "O username do último usuário a modificar a wiki"
1090   -
1091   -#: colab/templates/open-data.html:101
1092   -msgid "The wiki's name"
1093   -msgstr "O nome da wiki"
1094   -
1095   -#: colab/templates/open-data.html:102
1096   -msgid "the wiki's content"
1097   -msgstr "O conteúdo da wiki"
1098   -
1099   -#: colab/templates/open-data.html:109
1100   -msgid "Parameters"
1101   -msgstr "Parâmetros"
1102   -
1103   -#: colab/templates/open-data.html:112
1104   -msgid "Results per page"
1105   -msgstr "Resultados por página"
1106   -
1107   -#: colab/templates/open-data.html:113
1108   -msgid "Number of results to be displayed per page."
1109   -msgstr "Número de resultados a serem exibidos por página."
1110   -
1111   -#: colab/templates/open-data.html:114
1112   -msgid "Default: 20"
1113   -msgstr "Padrão: 20"
1114   -
1115   -#: colab/templates/open-data.html:118
1116   -msgid "Starts of n element"
1117   -msgstr "Inicia pelo n-ésimo elemento"
1118   -
1119   -#: colab/templates/open-data.html:119
1120   -msgid "Where n is the index of the first result to appear in the page."
1121   -msgstr "Onde n é o índice do primeiro resultado a ser exibido na página."
1122   -
1123   -#: colab/templates/open-data.html:120
1124   -msgid "Default: 0"
1125   -msgstr "Padrão: 0"
1126   -
1127   -#: colab/templates/open-data.html:122
1128   -msgid "Filtering"
1129   -msgstr "Filtrando"
1130   -
1131   -#: colab/templates/open-data.html:124
1132   -msgid "The field name"
1133   -msgstr "O nome do campo"
1134   -
1135   -#: colab/templates/open-data.html:125
1136   -msgid ""
1137   -"If you are looking for a specific wiki, and you know the wiki's name, you "
1138   -"can filter it as below"
1139   -msgstr ""
1140   -"Se você está buscando especificamente por uma wiki e você sabe o nome da "
1141   -"wiki, você pode utilizar o filtro abaixo"
1142   -
1143   -#: colab/templates/open-data.html:126
1144   -msgid "WikiName"
1145   -msgstr "WikiName"
1146   -
1147   -#: colab/templates/open-data.html:127
1148   -msgid ""
1149   -"Where &quot;name&quot; is the fieldname and &quot;WikiName&quot; is the "
1150   -"value you want to filter."
1151   -msgstr ""
1152   -"Onde &quot;name&quot; é o fieldname e &quot;WikiName&quot; é o value que "
1153   -"você quer filtrar."
1154   -
1155   -#: colab/templates/open-data.html:128
1156   -msgid "Usage"
1157   -msgstr "Uso"
1158   -
1159   -#: colab/templates/open-data.html:129
1160   -msgid ""
1161   -"You can also filter using Django lookup fields with the double underscores, "
1162   -"just as below"
1163   -msgstr ""
1164   -"Você também pode filtrar usando lookup fields do Django com underscores "
1165   -"duplos, como demonstrado abaixo"
1166   -
1167   -#: colab/templates/open-data.html:131 colab/templates/open-data.html.py:132
1168   -msgid "test"
1169   -msgstr "test"
1170   -
1171   -#: colab/templates/open-data.html:133
1172   -msgid "Usage with relationships"
1173   -msgstr "Uso com relacionamentos"
1174   -
1175   -#: colab/templates/open-data.html:134
1176   -msgid ""
1177   -"You can use related fields to filter too. So, you can filter by any field of "
1178   -"emailaddress using the 'from_address' field of message, which has a relation "
1179   -"to emailaddress. You will achieve the related fields by using double "
1180   -"underscore and the field's name. See the example below"
1181   -msgstr ""
1182   -"Você pode também pode utilizar campos relacionados para filtrar. Você pode "
1183   -"filtrar por qualquer campo de emailaddress utilizando o 'from_address' da "
1184   -"mensagem, que tem relação com emailaddress. Para tal você precisará utilizar "
1185   -"os underscores duplos e o nome do campo desejado. Veja o exemplo abaixo"
1186   -
1187   -#: colab/templates/open-data.html:136
1188   -msgid ""
1189   -"So, real_name is a field of emailaddress, and you had access to this field "
1190   -"by a message field called from_address and using double underscore to say "
1191   -"you want to use a field of that relationship"
1192   -msgstr ""
1193   -"real_name é um campo de emailaddress e você pode acessá-lo através de um "
1194   -"campo do do objeto message, from_address, e underscores duplos para "
1195   -"referenciar que este campo pertence ao modelo relacionado"
1196   -
1197   -#: colab/templates/open-data.html:137
1198   -msgid ""
1199   -"Note: email filters must be exact. Which means that __contains, "
1200   -"__startswith, __endswith and others won't work"
1201   -msgstr ""
1202   -"Nota: os filtros de email devem ser exatos. Isso significa que __contains, "
1203   -"__startswith, __endswith e outros métodos de busca parcial não funcionarão"
1204   -
1205   -#: colab/templates/open-data.html:138
1206   -msgid ""
1207   -"Another example of usage with relations. Used to retrieve all messages of a "
1208   -"given user, using the username or the email field"
1209   -msgstr ""
1210   -"Outro exemplo de uso com relacionamento. Usado para recuperar todos as "
1211   -"mensagem de um dado usuário usando o campo username ou email"
1212   -
1213   -
1214   -#: colab/accounts/forms.py:276
1215   -msgid "This value may contain only letters and numbers."
1216   -msgstr "Esse campo só pode conter letras e/ou numeros."
1217   -
1218   -#~ msgid "Please correct the errors below and try again"
1219   -#~ msgstr "Por favor, corrija os erros abaixo e tente novamente"
1220   -
1221   -#, fuzzy
1222   -#~| msgid "Please correct the error below and try again"
1223   -#~ msgid "Please correct the error below and try again"
1224   -#~ msgstr "Por favor, corrija o erro abaixo e tente novamente"
1225   -
1226   -#~ msgid "%(count)s users deleted."
1227   -#~ msgstr "%(count)s usuários deletados."
1228   -
1229   -#~ msgid ""
1230   -#~ "You must login to validated your profile. Profiles not validated are "
1231   -#~ "deleted in 24h."
1232   -#~ msgstr ""
1233   -#~ "Você deve se logar para validar seu perfil. Perfis não validados serão "
1234   -#~ "deletados em 24h."
... ...
colab/plugins/gitlab/__init__.py 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +
  2 +
  3 +default_app_config = 'colab.plugins.gitlab.apps.ProxyGitlabAppConfig'
  4 +
  5 +from colab.plugins.utils.widget_manager import WidgetManager
  6 +from colab.plugins.gitlab.widgets import GitlabProfileWidget
  7 +
  8 +WidgetManager.register_widget('profile', GitlabProfileWidget())
... ...
colab/plugins/gitlab/profile/diazo.xml 0 → 100644
... ... @@ -0,0 +1,36 @@
  1 +<rules
  2 + xmlns="http://namespaces.plone.org/diazo"
  3 + xmlns:css="http://namespaces.plone.org/diazo/css"
  4 + xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  5 +
  6 + <xsl:variable name="username" select="str:replace(//a/@href[(contains(., '/gitlab/u/'))], '/gitlab/u/', '')" />
  7 + <xsl:template match="a/@href[(contains(., '/profile/'))]">
  8 + <xsl:attribute name="href">/account/<xsl:value-of select="$username"/>/edit?code=<xsl:value-of select="."/>/</xsl:attribute>
  9 + </xsl:template>
  10 + <xsl:template match="form/@action[(contains(., '/gitlab/'))]">
  11 + <xsl:attribute name="action">/account/<xsl:value-of select="$username"/>/edit?code=<xsl:value-of select="."/>/</xsl:attribute>
  12 + </xsl:template>
  13 +
  14 + <!-- Drop colab stuff -->
  15 + <drop css:theme="nav.navbar-fixed-top" />
  16 + <drop css:theme="div.footer" />
  17 +
  18 + <!-- Drop unused tabs on gitlab -->
  19 + <drop content="div[@class='container']/ul/li[1]" />
  20 + <drop content="div[@class='container']/ul/li[3]" />
  21 + <drop content="div[@class='container']/ul/li[4]" />
  22 + <drop content="div[@class='container']/ul/li[7]" />
  23 + <drop content="fieldset[@class='update-username']" />
  24 +
  25 + <before theme-children="/html/head" content-children="/html/head" />
  26 + <before css:theme-children="#main-content" css:content-children="body" />
  27 +
  28 + <merge attributes="class" css:theme="body" css:content="body" />
  29 +
  30 + <!-- Add gitlab properties -->
  31 + <merge attributes="data-page" css:theme="body" css:content="body" />
  32 + <merge attributes="data-project-id" css:theme="body" css:content="body" />
  33 +
  34 + <drop css:content="#top-panel" />
  35 + <drop css:content=".navbar-gitlab" />
  36 +</rules>
... ...
colab/plugins/gitlab/templates/proxy/gitlab_profile.html 0 → 100644
... ... @@ -0,0 +1,49 @@
  1 +
  2 +{% load static from staticfiles %}
  3 +
  4 +{% block head_css %}
  5 +<style>
  6 + /* Reset left and with for .modal-dialog style (like gitlab does),
  7 + the bootstrap.css one makes it small */
  8 + @media screen and (min-width: 768px) {
  9 + .modal-dialog {
  10 + left: auto;
  11 + width: auto;
  12 + }
  13 + }
  14 +
  15 + div#main-content div.container {
  16 + width: 1110px;
  17 + }
  18 + div#main-content div.flash-container{
  19 + width: 85%;
  20 + }
  21 + #breadcrumbs {
  22 + border: 0 !important;
  23 + }
  24 +
  25 + #right-top-nav {
  26 + margin-right: 5em !important;
  27 + }
  28 +</style>
  29 +{% endblock %}
  30 +
  31 +{% block head_js %}
  32 +<script>jQuery.noConflict();</script>
  33 +{% endblock %}
  34 +
  35 +<div id="main-content"></div>
  36 +<script type="text/javascript">
  37 + jQuery(function(){
  38 + // bootstrap.css forces .hide {display:none!important}, and this makes
  39 + // gitlab .hide elements NEVER have a display:block, so
  40 + // instead of editing bootstrap.css, we just removed '.hide' css class and
  41 + // toggled
  42 + jQuery('.hide').removeClass('hide').css('display', 'none');
  43 + });
  44 +
  45 + // Extremelly ugly solutions to add Colab's CSRF token to Gitlab forms
  46 + // add CSRF token to HTTP header***
  47 + jQuery('div#code form').append(jQuery("input[name='csrfmiddlewaretoken']"));
  48 + $('a.delete-key').attr('data-method', 'delete\" type=\"hidden\" /> <input name=\"csrfmiddlewaretoken\" value=\"' + jQuery("input[name='csrfmiddlewaretoken']").val());
  49 +</script>
... ...
colab/plugins/gitlab/urls.py 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +
  2 +from django.conf.urls import patterns, url
  3 +
  4 +from .views import GitlabProxyView, GitlabProfileProxyView
  5 +
  6 +urlpatterns = patterns('',
  7 + url(r'^(?P<path>.*)$', GitlabProxyView.as_view(), name='gitlab'),
  8 +)
... ...
colab/plugins/gitlab/views.py 0 → 100644
... ... @@ -0,0 +1,22 @@
  1 +
  2 +from ..utils.views import ColabProxyView
  3 +import os, sys
  4 +
  5 +
  6 +class GitlabProxyView(ColabProxyView):
  7 + app_label = 'gitlab'
  8 + diazo_theme_template = 'proxy/gitlab.html'
  9 +
  10 +
  11 +class GitlabProfileProxyView(ColabProxyView):
  12 + app_label = 'gitlab'
  13 + diazo_theme_template = 'proxy/gitlab_profile.html'
  14 +
  15 + @property
  16 + def diazo_rules(self):
  17 + child_class_file = sys.modules[self.__module__].__file__
  18 + app_path = os.path.abspath(os.path.dirname(child_class_file))
  19 + diazo_path = os.path.join(app_path, 'profile/diazo.xml')
  20 +
  21 + self.log.debug("diazo_rules: %s", diazo_path)
  22 + return diazo_path
... ...
colab/plugins/gitlab/widgets.py 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +from colab.plugins.gitlab.views import GitlabProxyView, GitlabProfileProxyView
  2 +from colab.plugins.utils.widget_manager import Widget
  3 +from django.utils.safestring import mark_safe
  4 +
  5 +
  6 +class GitlabProfileWidget(GitlabProxyView, Widget):
  7 + identifier = 'code'
  8 + name = 'Gitlab Profile'
  9 + default_url = '/gitlab/profile/account'
  10 +
  11 + def get_body(self):
  12 + start = self.content.find('<body')
  13 + start = self.content.find('>', start)
  14 + end = self.content.find('</body>')
  15 + print "start = " + str(start) + ", end = " + str(end)
  16 + print "content = " + self.content
  17 +
  18 + if -1 in [start, end]:
  19 + return ''
  20 +
  21 + body = self.content[start + len('>'):end]
  22 + return mark_safe(body)
  23 +
  24 + def generate_content(self, request):
  25 + requested_url = request.GET.get('code', self.default_url)
  26 + g = GitlabProfileProxyView()
  27 + r = g.dispatch(request, requested_url)
  28 +
  29 + if r.status_code == 302:
  30 + location = r.get('Location')
  31 + requested_url = location[location.find('/{}/'.format(self.app_label)):]
  32 + request.method = 'GET'
  33 + r = g.dispatch(request, requested_url)
  34 +
  35 + self.content = r.content
... ...
colab/settings.py
... ... @@ -241,10 +241,9 @@ SUPER_ARCHIVES_LOCK_FILE = &#39;/var/lock/colab/import_emails.lock&#39;
241 241 # Mailman API settings
242 242 MAILMAN_API_URL = 'http://localhost:8124/v2/'
243 243  
244   -LOGIN_URL = '/user/login'
  244 +LOGIN_URL = '/account/login'
  245 +LOGOUT_URL = '/account/logout'
245 246 LOGIN_REDIRECT_URL = '/'
246   -LOGIN_REDIRECT_URL_FAILURE = '/?bid_login_failed=true'
247   -LOGOUT_REDIRECT_URL = '/'
248 247  
249 248 REVPROXY_ADD_REMOTE_USER = True
250 249  
... ... @@ -294,3 +293,5 @@ TEMPLATE_DIRS += (
294 293 )
295 294  
296 295 conf.validate_database(DATABASES, DEFAULT_DATABASE, DEBUG)
  296 +
  297 +conf.load_widgets_settings()
... ...
colab/super_archives/locale/en/LC_MESSAGES/django.mo 0 → 100644
No preview for this file type
colab/super_archives/locale/en/LC_MESSAGES/django.po
... ... @@ -8,7 +8,7 @@ msgid &quot;&quot;
8 8 msgstr ""
9 9 "Project-Id-Version: PACKAGE VERSION\n"
10 10 "Report-Msgid-Bugs-To: \n"
11   -"POT-Creation-Date: 2014-11-21 17:05+0000\n"
  11 +"POT-Creation-Date: 2015-09-01 13:15+0000\n"
12 12 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
13 13 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
14 14 "Language-Team: LANGUAGE <LL@li.org>\n"
... ... @@ -21,65 +21,65 @@ msgstr &quot;&quot;
21 21 msgid "[Colab] Warning - Email sent with a blank subject."
22 22 msgstr ""
23 23  
24   -#: super_archives/models.py:61
  24 +#: super_archives/models.py:77
25 25 #: super_archives/templates/message-preview.html:62
26 26 #: super_archives/templates/message-thread.html:4
27 27 msgid "Anonymous"
28 28 msgstr ""
29 29  
30   -#: super_archives/models.py:111
  30 +#: super_archives/models.py:133
31 31 msgid "Mailing List"
32 32 msgstr ""
33 33  
34   -#: super_archives/models.py:112
  34 +#: super_archives/models.py:134
35 35 msgid "The Mailing List where is the thread"
36 36 msgstr ""
37 37  
38   -#: super_archives/models.py:115
  38 +#: super_archives/models.py:137
39 39 msgid "Latest message"
40 40 msgstr ""
41 41  
42   -#: super_archives/models.py:116
  42 +#: super_archives/models.py:138
43 43 msgid "Latest message posted"
44 44 msgstr ""
45 45  
46   -#: super_archives/models.py:117
  46 +#: super_archives/models.py:139
47 47 msgid "Score"
48 48 msgstr ""
49 49  
50   -#: super_archives/models.py:117
  50 +#: super_archives/models.py:140
51 51 msgid "Thread score"
52 52 msgstr ""
53 53  
54   -#: super_archives/models.py:126
  54 +#: super_archives/models.py:153
55 55 msgid "Thread"
56 56 msgstr ""
57 57  
58   -#: super_archives/models.py:127
  58 +#: super_archives/models.py:154
59 59 msgid "Threads"
60 60 msgstr ""
61 61  
62   -#: super_archives/models.py:241
  62 +#: super_archives/models.py:267
63 63 msgid "Subject"
64 64 msgstr ""
65 65  
66   -#: super_archives/models.py:242
  66 +#: super_archives/models.py:268
67 67 msgid "Please enter a message subject"
68 68 msgstr ""
69 69  
70   -#: super_archives/models.py:245
  70 +#: super_archives/models.py:271
71 71 msgid "Message body"
72 72 msgstr ""
73 73  
74   -#: super_archives/models.py:246
  74 +#: super_archives/models.py:272
75 75 msgid "Please enter a message body"
76 76 msgstr ""
77 77  
78   -#: super_archives/models.py:256
  78 +#: super_archives/models.py:282
79 79 msgid "Message"
80 80 msgstr ""
81 81  
82   -#: super_archives/models.py:257
  82 +#: super_archives/models.py:283
83 83 msgid "Messages"
84 84 msgstr ""
85 85  
... ... @@ -208,16 +208,16 @@ msgstr &quot;&quot;
208 208 msgid "%(number_of_users)s members"
209 209 msgstr ""
210 210  
211   -#: super_archives/templates/superarchives/thread-dashboard.html:23
  211 +#: super_archives/templates/superarchives/thread-dashboard.html:20
212 212 msgid "latest"
213 213 msgstr ""
214 214  
215   -#: super_archives/templates/superarchives/thread-dashboard.html:31
216   -#: super_archives/templates/superarchives/thread-dashboard.html:45
  215 +#: super_archives/templates/superarchives/thread-dashboard.html:28
  216 +#: super_archives/templates/superarchives/thread-dashboard.html:42
217 217 msgid "more..."
218 218 msgstr ""
219 219  
220   -#: super_archives/templates/superarchives/thread-dashboard.html:37
  220 +#: super_archives/templates/superarchives/thread-dashboard.html:34
221 221 msgid "most relevant"
222 222 msgstr ""
223 223  
... ... @@ -225,45 +225,45 @@ msgstr &quot;&quot;
225 225 msgid "Please verify your email "
226 226 msgstr ""
227 227  
228   -#: super_archives/views.py:92
  228 +#: super_archives/views.py:112
229 229 msgid "Error trying to connect to Mailman API"
230 230 msgstr ""
231 231  
232   -#: super_archives/views.py:95
  232 +#: super_archives/views.py:115
233 233 msgid "Timeout trying to connect to Mailman API"
234 234 msgstr ""
235 235  
236   -#: super_archives/views.py:99
  236 +#: super_archives/views.py:119
237 237 msgid ""
238 238 "Your message was sent to this topic. It may take some minutes before it's "
239 239 "delivered by email to the group. Why don't you breath some fresh air in the "
240 240 "meanwhile?"
241 241 msgstr ""
242 242  
243   -#: super_archives/views.py:108
  243 +#: super_archives/views.py:128
244 244 msgid "You cannot send an empty email"
245 245 msgstr ""
246 246  
247   -#: super_archives/views.py:110
  247 +#: super_archives/views.py:130
248 248 msgid "Mailing list does not exist"
249 249 msgstr ""
250 250  
251   -#: super_archives/views.py:112
  251 +#: super_archives/views.py:133
252 252 msgid "Unknown error trying to connect to Mailman API"
253 253 msgstr ""
254 254  
255   -#: super_archives/views.py:152
  255 +#: super_archives/views.py:188
256 256 msgid ""
257 257 "The email address you are trying to verify either has already been verified "
258 258 "or does not exist."
259 259 msgstr ""
260 260  
261   -#: super_archives/views.py:163
  261 +#: super_archives/views.py:199
262 262 msgid ""
263 263 "The email address you are trying to verify is already an active email "
264 264 "address."
265 265 msgstr ""
266 266  
267   -#: super_archives/views.py:173
  267 +#: super_archives/views.py:213
268 268 msgid "Email address verified!"
269 269 msgstr ""
... ...
colab/super_archives/locale/es/LC_MESSAGES/django.mo 0 → 100644
No preview for this file type
colab/super_archives/locale/pt_BR/LC_MESSAGES/django.mo
No preview for this file type
colab/super_archives/locale/pt_BR/LC_MESSAGES/django.po
... ... @@ -8,7 +8,7 @@ msgid &quot;&quot;
8 8 msgstr ""
9 9 "Project-Id-Version: colab\n"
10 10 "Report-Msgid-Bugs-To: \n"
11   -"POT-Creation-Date: 2015-01-21 13:55+0000\n"
  11 +"POT-Creation-Date: 2015-09-01 13:15+0000\n"
12 12 "PO-Revision-Date: 2014-11-21 17:38+0000\n"
13 13 "Last-Translator: Sergio Oliveira <seocam@seocam.com>\n"
14 14 "Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
... ... @@ -19,137 +19,137 @@ msgstr &quot;&quot;
19 19 "Content-Transfer-Encoding: 8bit\n"
20 20 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
21 21  
22   -#: colab/super_archives/management/commands/import_emails.py:213
  22 +#: super_archives/management/commands/import_emails.py:213
23 23 msgid "[Colab] Warning - Email sent with a blank subject."
24 24 msgstr "[Colab] Atenção - Email enviado sem assunto."
25 25  
26   -#: colab/super_archives/models.py:68
27   -#: colab/super_archives/templates/message-preview.html:62
28   -#: colab/super_archives/templates/message-thread.html:4
  26 +#: super_archives/models.py:77
  27 +#: super_archives/templates/message-preview.html:62
  28 +#: super_archives/templates/message-thread.html:4
29 29 msgid "Anonymous"
30 30 msgstr "Anônimo"
31 31  
32   -#: colab/super_archives/models.py:118
  32 +#: super_archives/models.py:133
33 33 msgid "Mailing List"
34 34 msgstr "Lista de discussão"
35 35  
36   -#: colab/super_archives/models.py:119
  36 +#: super_archives/models.py:134
37 37 msgid "The Mailing List where is the thread"
38 38 msgstr "Lista de emails da discussão"
39 39  
40   -#: colab/super_archives/models.py:122
  40 +#: super_archives/models.py:137
41 41 msgid "Latest message"
42 42 msgstr "Última mensagem"
43 43  
44   -#: colab/super_archives/models.py:123
  44 +#: super_archives/models.py:138
45 45 msgid "Latest message posted"
46 46 msgstr "Última mensagem enviada"
47 47  
48   -#: colab/super_archives/models.py:124
  48 +#: super_archives/models.py:139
49 49 msgid "Score"
50 50 msgstr "Pontuação"
51 51  
52   -#: colab/super_archives/models.py:124
  52 +#: super_archives/models.py:140
53 53 msgid "Thread score"
54 54 msgstr "Pontuação da discussão"
55 55  
56   -#: colab/super_archives/models.py:133
  56 +#: super_archives/models.py:153
57 57 msgid "Thread"
58 58 msgstr "Discussão"
59 59  
60   -#: colab/super_archives/models.py:134
  60 +#: super_archives/models.py:154
61 61 msgid "Threads"
62 62 msgstr "Discussões"
63 63  
64   -#: colab/super_archives/models.py:248
  64 +#: super_archives/models.py:267
65 65 msgid "Subject"
66 66 msgstr "Assuntos"
67 67  
68   -#: colab/super_archives/models.py:249
  68 +#: super_archives/models.py:268
69 69 msgid "Please enter a message subject"
70 70 msgstr "Por favor digite um assunto de email"
71 71  
72   -#: colab/super_archives/models.py:252
  72 +#: super_archives/models.py:271
73 73 msgid "Message body"
74 74 msgstr "Corpo do email"
75 75  
76   -#: colab/super_archives/models.py:253
  76 +#: super_archives/models.py:272
77 77 msgid "Please enter a message body"
78 78 msgstr "Por favor digite o corpo do email"
79 79  
80   -#: colab/super_archives/models.py:263
  80 +#: super_archives/models.py:282
81 81 msgid "Message"
82 82 msgstr "Mensagem"
83 83  
84   -#: colab/super_archives/models.py:264
  84 +#: super_archives/models.py:283
85 85 msgid "Messages"
86 86 msgstr "Mensagens"
87 87  
88   -#: colab/super_archives/templates/message-preview.html:42
89   -#: colab/super_archives/templates/message-preview.html:62
  88 +#: super_archives/templates/message-preview.html:42
  89 +#: super_archives/templates/message-preview.html:62
90 90 msgid "by"
91 91 msgstr "por"
92 92  
93   -#: colab/super_archives/templates/message-preview.html:65
94   -#: colab/super_archives/templates/message-thread.html:161
  93 +#: super_archives/templates/message-preview.html:65
  94 +#: super_archives/templates/message-thread.html:161
95 95 msgid "ago"
96 96 msgstr "atrás"
97 97  
98   -#: colab/super_archives/templates/message-thread.html:35
  98 +#: super_archives/templates/message-thread.html:35
99 99 msgid "You must login before voting."
100 100 msgstr "Você deve logar antes de votar."
101 101  
102   -#: colab/super_archives/templates/message-thread.html:132
  102 +#: super_archives/templates/message-thread.html:132
103 103 msgid "Order by"
104 104 msgstr "Ordenar por"
105 105  
106   -#: colab/super_archives/templates/message-thread.html:136
  106 +#: super_archives/templates/message-thread.html:136
107 107 msgid "Votes"
108 108 msgstr "Votos"
109 109  
110   -#: colab/super_archives/templates/message-thread.html:140
  110 +#: super_archives/templates/message-thread.html:140
111 111 msgid "Date"
112 112 msgstr "Data"
113 113  
114   -#: colab/super_archives/templates/message-thread.html:145
  114 +#: super_archives/templates/message-thread.html:145
115 115 msgid "Related:"
116 116 msgstr "Relacionado:"
117 117  
118   -#: colab/super_archives/templates/message-thread.html:156
  118 +#: super_archives/templates/message-thread.html:156
119 119 msgid "Statistics:"
120 120 msgstr "Estatísticas:"
121 121  
122   -#: colab/super_archives/templates/message-thread.html:160
  122 +#: super_archives/templates/message-thread.html:160
123 123 msgid "started at"
124 124 msgstr "iniciada em"
125 125  
126   -#: colab/super_archives/templates/message-thread.html:166
  126 +#: super_archives/templates/message-thread.html:166
127 127 msgid "viewed"
128 128 msgstr "vizualizada"
129 129  
130   -#: colab/super_archives/templates/message-thread.html:167
131   -#: colab/super_archives/templates/message-thread.html:172
132   -#: colab/super_archives/templates/message-thread.html:177
  130 +#: super_archives/templates/message-thread.html:167
  131 +#: super_archives/templates/message-thread.html:172
  132 +#: super_archives/templates/message-thread.html:177
133 133 msgid "times"
134 134 msgstr "vezes"
135 135  
136   -#: colab/super_archives/templates/message-thread.html:171
  136 +#: super_archives/templates/message-thread.html:171
137 137 msgid "answered"
138 138 msgstr "respondida"
139 139  
140   -#: colab/super_archives/templates/message-thread.html:176
  140 +#: super_archives/templates/message-thread.html:176
141 141 msgid "voted"
142 142 msgstr "votada"
143 143  
144   -#: colab/super_archives/templates/message-thread.html:182
  144 +#: super_archives/templates/message-thread.html:182
145 145 msgid "Tags:"
146 146 msgstr "Tags:"
147 147  
148   -#: colab/super_archives/templates/superarchives/emails/email_blank_subject.txt:2
  148 +#: super_archives/templates/superarchives/emails/email_blank_subject.txt:2
149 149 msgid "Hello"
150 150 msgstr "Olá"
151 151  
152   -#: colab/super_archives/templates/superarchives/emails/email_blank_subject.txt:3
  152 +#: super_archives/templates/superarchives/emails/email_blank_subject.txt:3
153 153 #, python-format
154 154 msgid ""
155 155 "\n"
... ... @@ -172,7 +172,7 @@ msgstr &quot;&quot;
172 172 "\n"
173 173 "Obrigado.\n"
174 174  
175   -#: colab/super_archives/templates/superarchives/emails/email_verification.txt:2
  175 +#: super_archives/templates/superarchives/emails/email_verification.txt:2
176 176 #, python-format
177 177 msgid ""
178 178 "Hey, we want to verify that you are indeed \"%(fullname)s (%(username)s)\". "
... ... @@ -181,7 +181,7 @@ msgstr &quot;&quot;
181 181 "Ei, nós queremos verificar que você é realmente \"%(fullname)s "
182 182 "(%(username)s)\". Se este for o caso, por favor clique no link abaixo:"
183 183  
184   -#: colab/super_archives/templates/superarchives/emails/email_verification.txt:6
  184 +#: super_archives/templates/superarchives/emails/email_verification.txt:6
185 185 #, python-format
186 186 msgid ""
187 187 "If you're not %(username)s or didn't request verification you can ignore "
... ... @@ -190,20 +190,20 @@ msgstr &quot;&quot;
190 190 "Se você não é %(username)s ou não solicitou verificação apenas ignore este "
191 191 "email."
192 192  
193   -#: colab/super_archives/templates/superarchives/includes/message.html:17
194   -#: colab/super_archives/templates/superarchives/includes/message.html:18
  193 +#: super_archives/templates/superarchives/includes/message.html:17
  194 +#: super_archives/templates/superarchives/includes/message.html:18
195 195 msgid "Link to this message"
196 196 msgstr "Link para esta mensagem"
197 197  
198   -#: colab/super_archives/templates/superarchives/includes/message.html:46
  198 +#: super_archives/templates/superarchives/includes/message.html:46
199 199 msgid "Reply"
200 200 msgstr "Responder"
201 201  
202   -#: colab/super_archives/templates/superarchives/includes/message.html:63
  202 +#: super_archives/templates/superarchives/includes/message.html:63
203 203 msgid "Send a message"
204 204 msgstr "Enviar mensagem"
205 205  
206   -#: colab/super_archives/templates/superarchives/includes/message.html:66
  206 +#: super_archives/templates/superarchives/includes/message.html:66
207 207 msgid ""
208 208 "After sending a message it will take few minutes before it shows up in here. "
209 209 "Why don't you grab a coffee?"
... ... @@ -211,46 +211,46 @@ msgstr &quot;&quot;
211 211 "Após enviar uma mensagem pode levar alguns minutos até que ela seja exibida "
212 212 "aqui. Por que você não busca um café enquanto isso?"
213 213  
214   -#: colab/super_archives/templates/superarchives/includes/message.html:69
  214 +#: super_archives/templates/superarchives/includes/message.html:69
215 215 msgid "Send"
216 216 msgstr "Enviar"
217 217  
218   -#: colab/super_archives/templates/superarchives/thread-dashboard.html:4
219   -#: colab/super_archives/templates/superarchives/thread-dashboard.html:7
  218 +#: super_archives/templates/superarchives/thread-dashboard.html:4
  219 +#: super_archives/templates/superarchives/thread-dashboard.html:7
220 220 msgid "Groups"
221 221 msgstr "Grupos"
222 222  
223   -#: colab/super_archives/templates/superarchives/thread-dashboard.html:14
  223 +#: super_archives/templates/superarchives/thread-dashboard.html:14
224 224 #, python-format
225 225 msgid "%(number_of_users)s members"
226 226 msgstr "%(number_of_users)s membros"
227 227  
228   -#: colab/super_archives/templates/superarchives/thread-dashboard.html:23
  228 +#: super_archives/templates/superarchives/thread-dashboard.html:20
229 229 msgid "latest"
230 230 msgstr "última"
231 231  
232   -#: colab/super_archives/templates/superarchives/thread-dashboard.html:31
233   -#: colab/super_archives/templates/superarchives/thread-dashboard.html:45
  232 +#: super_archives/templates/superarchives/thread-dashboard.html:28
  233 +#: super_archives/templates/superarchives/thread-dashboard.html:42
234 234 msgid "more..."
235 235 msgstr "mais..."
236 236  
237   -#: colab/super_archives/templates/superarchives/thread-dashboard.html:37
  237 +#: super_archives/templates/superarchives/thread-dashboard.html:34
238 238 msgid "most relevant"
239 239 msgstr "Mais relevante"
240 240  
241   -#: colab/super_archives/utils/email.py:14
  241 +#: super_archives/utils/email.py:14
242 242 msgid "Please verify your email "
243 243 msgstr "Por favor verifique seu email"
244 244  
245   -#: colab/super_archives/views.py:93
  245 +#: super_archives/views.py:112
246 246 msgid "Error trying to connect to Mailman API"
247 247 msgstr "Erro tentando conectar à API do Mailman"
248 248  
249   -#: colab/super_archives/views.py:96
  249 +#: super_archives/views.py:115
250 250 msgid "Timeout trying to connect to Mailman API"
251   -msgstr "Timeout tentando conectar à API do Mailman"
  251 +msgstr "Tempo excedido tentando conectar à API do Mailman"
252 252  
253   -#: colab/super_archives/views.py:100
  253 +#: super_archives/views.py:119
254 254 msgid ""
255 255 "Your message was sent to this topic. It may take some minutes before it's "
256 256 "delivered by email to the group. Why don't you breath some fresh air in the "
... ... @@ -260,19 +260,19 @@ msgstr &quot;&quot;
260 260 "minutos até que ela seja enviada por email para o grupo. Por que você não "
261 261 "respira um ar fresco enquanto isso?"
262 262  
263   -#: colab/super_archives/views.py:109
  263 +#: super_archives/views.py:128
264 264 msgid "You cannot send an empty email"
265 265 msgstr "Você não pode enviar um email vazio"
266 266  
267   -#: colab/super_archives/views.py:111
  267 +#: super_archives/views.py:130
268 268 msgid "Mailing list does not exist"
269 269 msgstr "Lista de email inexistente"
270 270  
271   -#: colab/super_archives/views.py:113
  271 +#: super_archives/views.py:133
272 272 msgid "Unknown error trying to connect to Mailman API"
273 273 msgstr "Erro desconhecido tentando conectar à API do Mailman"
274 274  
275   -#: colab/super_archives/views.py:153
  275 +#: super_archives/views.py:188
276 276 msgid ""
277 277 "The email address you are trying to verify either has already been verified "
278 278 "or does not exist."
... ... @@ -280,12 +280,12 @@ msgstr &quot;&quot;
280 280 "O email que você está tentando verificar não existe ou já foi verificado "
281 281 "anteriormente. "
282 282  
283   -#: colab/super_archives/views.py:164
  283 +#: super_archives/views.py:199
284 284 msgid ""
285 285 "The email address you are trying to verify is already an active email "
286 286 "address."
287 287 msgstr "O email que você está tentando verificar já é um email ativo."
288 288  
289   -#: colab/super_archives/views.py:178
  289 +#: super_archives/views.py:213
290 290 msgid "Email address verified!"
291 291 msgstr "Endereço de email verificado!"
... ...
colab/templates/base.html
... ... @@ -50,7 +50,7 @@
50 50 </head>
51 51  
52 52 <!-- data-no-turbolink will disable Rails TurboLinks for all pages under Colab -->
53   - <body class="container" data-no-turbolink>
  53 + <body data-no-turbolink>
54 54  
55 55 {% block ribbon %}
56 56 {% if ribbon %}
... ... @@ -62,84 +62,8 @@
62 62 {% endif %}
63 63 {% endblock %}
64 64  
65   - {% block navbar %}
66   - <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
67   - <div class="container">
68   - <div class="navbar-header">
69   -
70   - <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-main">
71   - <span class="sr-only">Toggle navigation</span>
72   - <span class="icon-bar"></span>
73   - <span class="icon-bar"></span>
74   - <span class="icon-bar"></span>
75   - <span class="icon-bar"></span>
76   - </button>
77   - <a class="navbar-brand" href="/"><img alt="Colab" src="{% static 'img/logo.svg' %}"></a>
78   - </div>
79   - <div class="collapse navbar-collapse navbar-main">
80   - <ul class="nav navbar-nav">
81   -
82   - <li>
83   - <a href="{% url 'thread_list' %}">{% trans "Groups" %}</a>
84   - </li>
85   -
86   - {% plugins_menu %}
87   -
88   - <li class="hidden-lg hidden-md">
89   - <a href="{% url 'haystack_search' %}?q=">{% trans "Search" %}</a>
90   - </li>
91   - </ul>
92   -
93   - <ul class="nav navbar-nav navbar-right">
94   - {% if not user.is_authenticated %}
95   -
96   - <li class="dropdown hidden-xs hidden-lg">
97   - <a href="#" class="dropdown-toggle" data-toggle="dropdown">Acesso <b class="caret"></b></a>
98   - <ul class="dropdown-menu">
99   - {% trans 'Login' as login_text %}
100   - <li><a href="{% url 'signup' %}">{% trans "Register" %}</a></li>
101   - <li><a href="{% url 'login' %}">{% trans "Login" %}</a></li>
102   - </ul>
103   - </li>
104   - {% trans 'Login' as login_text %}
105   - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'signup' %}">{% trans "Register" %}</a></li>
106   - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'login' %}">{% trans "Login" %}</a></li>
107   - {% else %}
108   - <li id="user-menu" class="dropdown">
109   - <a href="#" class="dropdown-toggle user" data-toggle="dropdown">{% gravatar user.email 40 %} <b class="caret"></b>&nbsp;&nbsp;</a>
110   - <ul class="dropdown-menu" role="menu">
111   - <li>
112   - <div class="wrapper">
113   - <div class="thumbnail">{% gravatar user.email 100 %}</div>
114   - <div class="user-info">
115   - <span><b>{{ user.get_full_name }}</b></span>
116   - <span class="quiet">{{ user.email }}</span>
117   - </div>
118   - <div>
119   - <a class="btn btn-info pull-left" href="{% url 'user_profile' user.username %}">{% trans "My Profile" %}</a>
120   - {% trans 'Logout' as logout_text %}
121   - <a class="btn btn-default pull-right" href="{% url 'logout' %}"> {% trans "Logout" %}</a>
122   - </div>
123   - </div>
124   - </li>
125   - </ul>
126   - </li>
127   - {% endif %}
128   - </ul>
129   -
130   - <form action="{% url 'haystack_search' %}" method="GET" id="search-form" class="navbar-form navbar-right hidden-xs hidden-sm" role="search">
131   - <div class="form-group">
132   - <label class="sr-only" for="header-searchbox">{% trans 'Search here...' %}</label>
133   - <input name="q" id="header-searchbox"
134   - class="form-control" value="{{ request.GET.q }}"
135   - type="search" placeholder="{% trans 'Search here...' %}" />
136   - </div>
137   - <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
138   - </form>
139   - </div>
140   - </div>
141   - </nav>
142   -
  65 + {% block header %}
  66 + {% include 'header.html' %}
143 67 {% endblock %}
144 68  
145 69 {% block messages %}
... ... @@ -166,8 +90,6 @@
166 90 {% block main-content %}{% endblock %}
167 91 </div>
168 92  
169   - <div class="row">&nbsp;</div>
170   -
171 93 {% block footer %}
172 94  
173 95 {% include "footer.html" %}
... ...
colab/templates/header.html
... ... @@ -23,8 +23,6 @@
23 23  
24 24 {% plugins_menu %}
25 25  
26   - <li><a href="/paste">{% trans "Paste" %}</a></li>
27   -
28 26 <li class="hidden-lg hidden-md">
29 27 <a href="{% url 'haystack_search' %}?q=">{% trans "Search" %}</a>
30 28 </li>
... ... @@ -42,8 +40,8 @@
42 40 </ul>
43 41 </li>
44 42 {% trans 'Login' as login_text %}
45   - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'signup' %}">{% trans "Register" %}</a></li>
46   - <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'login' %}">{% trans "Login" %}</a></li>
  43 + <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'signup' %}">{% trans "Register" %}</a></li>
  44 + <li class="visible-xs hidden-sm hidden-md"><a href="{% url 'login' %}">{% trans "Login" %}</a></li>
47 45 {% else %}
48 46 <li id="user-menu" class="dropdown">
49 47 <a href="#" class="dropdown-toggle user" data-toggle="dropdown">{% gravatar user.email 40 %} <b class="caret"></b>&nbsp;&nbsp;</a>
... ... @@ -71,8 +69,8 @@
71 69 <div class="form-group">
72 70 <label class="sr-only" for="header-searchbox">{% trans 'Search here...' %}</label>
73 71 <input name="q" id="header-searchbox"
74   - class="form-control" value="{{ request.GET.q }}"
75   - type="search" placeholder="{% trans 'Search here...' %}" />
  72 + class="form-control" value="{{ request.GET.q }}"
  73 + type="search" placeholder="{% trans 'Search here...' %}" />
76 74 </div>
77 75 <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
78 76 </form>
... ...
colab/urls.py
... ... @@ -3,7 +3,7 @@ from django.conf import settings
3 3 from django.views.generic import TemplateView
4 4 from django.contrib import admin
5 5 from django.views.generic import RedirectView
6   -
  6 +from accounts.views import UserProfileUpdateView
7 7  
8 8 admin.autodiscover()
9 9  
... ...
colab/utils/conf.py
... ... @@ -127,7 +127,7 @@ def load_colab_apps():
127 127  
128 128 fields = ['verbose_name', 'upstream', 'urls',
129 129 'menu_urls', 'middlewares', 'dependencies',
130   - 'context_processors', 'private_token', 'name']
  130 + 'context_processors', 'private_token', 'name', 'extra']
131 131  
132 132 for key in fields:
133 133 value = py_settings_d.get(key)
... ... @@ -137,6 +137,43 @@ def load_colab_apps():
137 137 return {'COLAB_APPS': COLAB_APPS}
138 138  
139 139  
  140 +def load_widgets_settings():
  141 + settings_file = os.getenv('COLAB_WIDGETS_SETTINGS',
  142 + '/etc/colab/widgets_settings.py')
  143 + settings_module = settings_file.split('.')[-2].split('/')[-1]
  144 + py_path = "/".join(settings_file.split('/')[:-1])
  145 + logger.info('Widgets Settings file: %s', settings_file)
  146 +
  147 + if not os.path.exists(py_path):
  148 + return
  149 +
  150 + original_path = sys.path
  151 + sys.path.append(py_path)
  152 + importlib.import_module(settings_module)
  153 +
  154 + # Read settings from widgets.d
  155 + settings_dir = os.getenv('COLAB_WIDGETS',
  156 + '/etc/colab/widgets.d')
  157 + logger.info('Widgets Settings directory: %s', settings_dir)
  158 + sys.path = original_path
  159 +
  160 + if not os.path.exists(settings_dir):
  161 + return
  162 +
  163 + for file_name in os.listdir(settings_dir):
  164 + if not file_name.endswith('.py'):
  165 + continue
  166 +
  167 + original_path = sys.path
  168 + sys.path.append(settings_dir)
  169 +
  170 + file_module = file_name.split('.')[0]
  171 + importlib.import_module(file_module)
  172 + logger.info('Loaded %s/%s', settings_dir, file_name)
  173 +
  174 + sys.path = original_path
  175 +
  176 +
140 177 def validate_database(database_dict, default_db, debug):
141 178 db_name = database_dict.get('default', {}).get('NAME')
142 179 if not debug and db_name == default_db:
... ...
colab/widgets/__init__.py 0 → 100644
colab/widgets/admin.py 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +from django.contrib import admin
  2 +
  3 +# Register your models here.
... ...
colab/widgets/migrations/__init__.py 0 → 100644
colab/widgets/models.py 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +from django.db import models
  2 +
  3 +# Create your models here.
... ...
colab/widgets/tests/__init__.py 0 → 100644
colab/widgets/tests/test_widget_manager.py 0 → 100644
... ... @@ -0,0 +1,12 @@
  1 +from django.test import TestCase
  2 +
  3 +from colab.widgets.widget_manager import WidgetManager, Widget
  4 +
  5 +class WidgetManagerTest(TestCase):
  6 +
  7 + def test_add_widgets_to_key_area(self):
  8 + area = 'profile'
  9 + WidgetManager.register_widget(area, Widget())
  10 +
  11 + self.assertEqual(len(WidgetManager.get_widgets(area)), 1)
  12 +
... ...
colab/widgets/views.py 0 → 100644
... ... @@ -0,0 +1,3 @@
  1 +from django.shortcuts import render
  2 +
  3 +# Create your views here.
... ...
colab/widgets/widget_manager.py 0 → 100644
... ... @@ -0,0 +1,53 @@
  1 +from django.utils.safestring import mark_safe
  2 +
  3 +class Widget(object):
  4 + identifier = None
  5 + name = None
  6 + default_url = None
  7 + content = ''
  8 +
  9 + def get_body(self):
  10 + # avoiding regex in favor of performance
  11 + start = self.content.find('<body>')
  12 + end = self.content.find('</body>')
  13 +
  14 + if -1 in [start, end]:
  15 + return ''
  16 +
  17 + body = self.content[start + len('<body>'):end]
  18 + return mark_safe(body)
  19 +
  20 + def get_header(self):
  21 + # avoiding regex in favor of performance
  22 + start = self.content.find('<head>')
  23 + end = self.content.find('</head>')
  24 +
  25 + if -1 in [start, end]:
  26 + return ''
  27 +
  28 + head = self.content[start + len('<head>'):end]
  29 + return mark_safe(head)
  30 +
  31 + def generate_content(self, request=None):
  32 + self.content = ''
  33 +
  34 +
  35 +class WidgetManager(object):
  36 + widget_categories = {}
  37 +
  38 + @staticmethod
  39 + def register_widget(category, widget):
  40 + if not WidgetManager.widget_categories.has_key(category):
  41 + WidgetManager.widget_categories[category] = []
  42 +
  43 + WidgetManager.widget_categories[category].append(widget)
  44 +
  45 + @staticmethod
  46 + def get_widgets(category, request=None):
  47 + if not WidgetManager.widget_categories.has_key(category):
  48 + return []
  49 +
  50 + widgets = WidgetManager.widget_categories[category]
  51 + for widget in widgets:
  52 + widget.generate_content(request)
  53 + return widgets
... ...
diagrama_classes.asta 0 → 100644
No preview for this file type
misc/etc/cron.d/colab
... ... @@ -2,8 +2,6 @@
2 2  
3 3 34 2 * * * colab colab-admin rebuild_index --noinput &> /dev/null
4 4  
5   -* * * * * colab colab-admin import_proxy_data &> /dev/null
6   -
7 5 27 3 * * * colab colab-admin clearsessions &> /dev/null
8 6  
9 7 * * * * * colab colab-admin import_emails &> /dev/null
... ...
misc/lib/systemd/system/colab.service
... ... @@ -3,6 +3,7 @@ Description=Colab
3 3  
4 4 [Service]
5 5 User=colab
  6 +EnvironmentFile=-/etc/sysconfig/colab
6 7 PermissionsStartOnly=true
7 8 ExecStartPre=/usr/bin/mkdir -p /var/lock/colab
8 9 ExecStartPre=/usr/bin/chown -R colab:colab /var/lock/colab
... ...
setup.py
... ... @@ -24,6 +24,7 @@ REQUIREMENTS = [
24 24 'django-taggit>=0.12.1',
25 25 'html2text>=3.200.3',
26 26 'chardet>=2.3.0',
  27 + 'requests>=2.7.0'
27 28 ]
28 29  
29 30 TEST_REQUIREMENTS = [
... ... @@ -41,7 +42,7 @@ EXCLUDE_FROM_PACKAGES = []
41 42  
42 43 setup(
43 44 name='colab',
44   - version='1.10.1',
  45 + version='1.11',
45 46 url='https://github.com/colab-community/colab',
46 47 author='Sergio Oliveira',
47 48 author_email='sergio@tracy.com.br',
... ...
tests/run.py
... ... @@ -5,7 +5,9 @@ import sys
5 5  
6 6 os.environ['DJANGO_SETTINGS_MODULE'] = 'colab.settings'
7 7 os.environ['COLAB_SETTINGS'] = 'tests/colab_settings.py'
  8 +os.environ['COLAB_WIDGETS_SETTINGS'] = 'tests/widgets_settings.py'
8 9 os.environ['COLAB_PLUGINS'] = 'tests/plugins.d'
  10 +os.environ['COLAB_WIDGETS'] = 'tests/widgets.d'
9 11 os.environ['COVERAGE_PROCESS_START'] = '.coveragerc'
10 12  
11 13  
... ...
tests/widgets_settings.py 0 → 100644