diff --git a/.env.rizoma b/.env.rizoma new file mode 100644 index 000000000..7fd87243a --- /dev/null +++ b/.env.rizoma @@ -0,0 +1,7 @@ +DEBUG=True +DJANGO_VITE_DEBUG=True +ACTIVE_LOGIN_BACKEND=ldap +COOPS_PT_API_BASE_URL=https://api.demo.coops.pt +COOPS_PT_ADMIN_EMAIL=invalid_email +COOPS_PT_ADMIN_PASSWORD=invalid_password +ENABLE_RIZOMA_CONTENT=True \ No newline at end of file diff --git a/rizoma/static/rizoma-static/css/base.css b/rizoma/static/rizoma-static/css/base.css index a825d0412..7def44329 100644 --- a/rizoma/static/rizoma-static/css/base.css +++ b/rizoma/static/rizoma-static/css/base.css @@ -9,7 +9,10 @@ @import url("./components/nav.css"); @import url("./components/link.css"); @import url("./components/table.css"); +@import url("./components/typography.css"); /* Pages */ @import url("./pages/about.css"); -@import url("./pages/auth.css"); \ No newline at end of file +@import url("./pages/auth.css"); + +@import url("./pages/allShifts.css"); diff --git a/rizoma/static/rizoma-static/css/components/buttons.css b/rizoma/static/rizoma-static/css/components/buttons.css index 0a3713d06..bf53e6682 100644 --- a/rizoma/static/rizoma-static/css/components/buttons.css +++ b/rizoma/static/rizoma-static/css/components/buttons.css @@ -106,4 +106,4 @@ .tapir-btn > .material-icons { font-size: 20px; -} \ No newline at end of file +} diff --git a/rizoma/static/rizoma-static/css/components/icons.css b/rizoma/static/rizoma-static/css/components/icons.css index 181d43a8a..35c2e2fcf 100644 --- a/rizoma/static/rizoma-static/css/components/icons.css +++ b/rizoma/static/rizoma-static/css/components/icons.css @@ -12,7 +12,7 @@ font-family: 'Material Icons'; font-weight: normal; font-style: normal; - font-size: 24px; /* Preferred icon size */ + font-size: 1em; display: inline-block; line-height: 1; text-transform: none; diff --git a/rizoma/static/rizoma-static/css/components/link.css b/rizoma/static/rizoma-static/css/components/link.css index 5ed27c756..4a0a4753c 100644 --- a/rizoma/static/rizoma-static/css/components/link.css +++ b/rizoma/static/rizoma-static/css/components/link.css @@ -1,3 +1,21 @@ a { color: var(--bs-primary); +} + +.tab-links { + display: flex; + gap: 1rem; + +} + +.tab-link { + color: var(--riz-color-gray-medium); + padding: .3rem 1.1rem; + text-decoration: none; + font-weight: 700; +} + +.tab-link__active { + color: var(--bs-primary); + border-bottom: 4px solid var(--bs-primary); } \ No newline at end of file diff --git a/rizoma/static/rizoma-static/css/components/nav.css b/rizoma/static/rizoma-static/css/components/nav.css index e4067d574..27b196f65 100644 --- a/rizoma/static/rizoma-static/css/components/nav.css +++ b/rizoma/static/rizoma-static/css/components/nav.css @@ -9,7 +9,7 @@ } .nav-link { - --bs-nav-link-font-size: 0.95rem; + --bs-nav-link-font-size: 1rem; } /* Sidebar */ @@ -61,6 +61,11 @@ /* padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); */ } +.sidebar .nav-link .material-icons { + font-size: 1.25rem; + margin-right: .25rem; +} + .sidebar .nav-link.active { background-color: var(--riz-color-gray-light); diff --git a/rizoma/static/rizoma-static/css/components/table.css b/rizoma/static/rizoma-static/css/components/table.css index df7489310..f69965a37 100644 --- a/rizoma/static/rizoma-static/css/components/table.css +++ b/rizoma/static/rizoma-static/css/components/table.css @@ -3,7 +3,7 @@ --bs-table-bg-type: initial; --bs-table-color-state: initial; --bs-table-bg-state: initial; - --bs-table-color: var(--bs-emphasis-color); + --bs-table-color: var(--bs-gray-700); --bs-table-bg: var(--bs-body-bg); --bs-table-border-color: var(--bs-border-color); --bs-table-accent-bg: transparent; @@ -13,6 +13,4 @@ --bs-table-active-bg: rgba(var(--bs-emphasis-color-rgb), 0.1); --bs-table-hover-color: var(--bs-emphasis-color); --bs-table-hover-bg: rgba(var(--bs-emphasis-color-rgb), 0.075); - - } diff --git a/rizoma/static/rizoma-static/css/components/typography.css b/rizoma/static/rizoma-static/css/components/typography.css new file mode 100644 index 000000000..ead99a45c --- /dev/null +++ b/rizoma/static/rizoma-static/css/components/typography.css @@ -0,0 +1,11 @@ +.h1 { + font-weight: 700; +} + +.h2 { + font-weight: 700; +} + +.h3 { + font-weight: 700; +} \ No newline at end of file diff --git a/rizoma/static/rizoma-static/css/pages/allShifts.css b/rizoma/static/rizoma-static/css/pages/allShifts.css new file mode 100644 index 000000000..5beda0118 --- /dev/null +++ b/rizoma/static/rizoma-static/css/pages/allShifts.css @@ -0,0 +1,37 @@ + +/* Fix duplicated data */ + +.all-shifts-page .attendances-table { + table-layout: fixed; + max-width: 1200px; +} + +.all-shifts-page .attendances-table th { + background-color: var(--riz-color-gray-lighter); +} + +.all-shifts-page .attendances-table td:first-child { + background-color: var(--riz-color-gray-lighter); +} + +.all-shifts-page .attendances-table th, .all-shifts-page .attendances-table td, .all-shifts-page .attendances-table tr { + border: 1px solid var(--bs-border-color); +} + +.all-shifts-page .shift-attendances > div:not(:first-child) { + display: none !important; +} + +.all-shifts-page .shift-attendances { + font-size: 1rem; +} + +.all-shifts-page .date-picker .btn-group > .btn:first-child { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} + +.all-shifts-page .date-picker .btn-group > .btn-last { + border-top-right-radius: var(--bs-border-radius); + border-bottom-right-radius: var(--bs-border-radius); +} \ No newline at end of file diff --git a/rizoma/templates/accounts/user_detail.html b/rizoma/templates/accounts/user_detail.html index cf9560cbe..236d1221c 100644 --- a/rizoma/templates/accounts/user_detail.html +++ b/rizoma/templates/accounts/user_detail.html @@ -12,106 +12,166 @@ {% load statistics %} {% load rizoma %} {% block head %} - {{ block.super }} - - - +{{ block.super }} + + + {% endblock head %} {% block title %} - {% translate 'Member' %}: {% get_display_name_for_viewer object request.user %} +{% translate 'Member' %}: {% get_display_name_for_viewer object request.user %} {% endblock title %} {% block content %} -
| + {% for time in shift_infos.times %} + | {{ time.start_time|date:"H:i" }} - {{ time.end_time|date:"H:i" }} | + {% endfor %} + + + {% for name in shift_infos.names %} +
|---|---|
| {{ name }} | + + {% for time in shift_infos.times %} +
+ {% for shift in shift_infos.shifts%}
+
+ {% if shift.start_time == time.start_time %}
+
+ {% for attendance in shift.attendances|dictionary_get:name %}
+ {% if attendance.state == "empty" %}
+
+
+ {{_("Empty")}}
+
+
+
+
+ {% else %}
+
+ {{ attendance.user.get_full_name }}
+ {% if attendance.state == "single" %}
+
+ {{ _("Flex") }}
+
+ {% endif %}
+
+ {% endif %}
+ {% endfor %}
+
+ {% endif %}
+ {% endfor %}
+ |
+ {% endfor %}
+
You already used {{ used_solidarity_shifts_current_year }} out of 2 Solidarity Shifts + this year
+ {% endblocktranslate %} + {% elif used_solidarity_shifts_current_year < 2 and user.shift_user_data.get_available_solidarity_shifts and user.shift_user_data.get_account_balance < 0 %} + {% blocktranslate with used_solidarity_shifts_current_year=used_solidarity_shifts_current_year %} +There are Solidarity Shifts available for you to use. You + used {{ used_solidarity_shifts_current_year }} out of 2 Solidarity Shifts this year
+ {% endblocktranslate %} + {% elif used_solidarity_shifts_current_year < 2 and user.shift_user_data.get_available_solidarity_shifts and user.shift_user_data.get_account_balance <= 0 %} + {% blocktranslate %} ++ You cannot receive a Solidarity Shift at the moment
+ {% endblocktranslate %} + {% elif not user.shift_user_data.get_available_solidarity_shifts %} + {% blocktranslate %} +There are no Solidarity Shifts available at the moment
+ {% endblocktranslate %} + {% endif %} +| {% translate 'Date' %} | +{% translate 'Value' %} | +{% translate 'Balance at date' %} | +{% translate 'Description' %} | +
|---|---|---|---|
| {{ entry_data.entry.date|date:"d.m.Y H:i" }} | +{{ entry_data.entry.value }} | +{{ entry_data.balance_at_date }} | +{{ entry_data.entry.description }} | +
| {% translate "Type" %} | +{% translate "Date" %} | +{% translate "Time" %} | +{% translate "Note" %} | +{% translate "Action" %} | +
|---|---|---|---|---|
| + {% if slot.name %} + {{ slot.name }} + {% else %} + {{ shift.name }} + {% endif %} + | +{{ shift.start_time|date:"D, M d" }} | +{{ shift.start_time|date:"H:i" }} - {{ shift.end_time|date:"H:i" }} | ++ {% if shift.description %} + {{ shift.description|truncatechars:50 }} + {% else %} + - + {% endif %} + | ++ + + {% translate "Join" %} + + | +
| {% translate "Type" %} | +{% translate "Date" %} | +{% translate "Time" %} | +{% translate "Note" %} | +{% translate "Action" %} | +
|---|---|---|---|---|
| + {% if slot.name %} + {{ slot.name }} + {% else %} + {{ shift.name }} + {% endif %} + | +{{ shift.start_time|date:"D, M d" }} | +{{ shift.start_time|date:"H:i" }} - {{ shift.end_time|date:"H:i" }} | ++ {% if shift.description %} + {{ shift.description|truncatechars:50 }} + {% else %} + - + {% endif %} + | ++ + + {% translate "Join" %} + + | +
{% translate "No available shifts found for the selected period." %}
+ {% translate "Try adjusting your date range or check back later." %} +\n"
-" You also have opportunities to get involved at SuperCoop in addition to your regular shift. To make it as easy\n"
+" You also have opportunities to get involved at SuperCoop in addition to your regular shift. To make it as easy\n"
" as\n"
" possible for you to get started, we have summarized all additional\n"
" working groups in the wiki. Please see the Wiki for further information on how to get involved.\n"
@@ -2176,7 +2176,7 @@ msgid "Share owner"
msgstr "Proprietário da ação"
#: coop/templates/coop/membershipresignation_detail.html:61
-#: shifts/models.py:547
+#: shifts/models.py:552
msgid "Cancellation reason"
msgstr "Motivo da rescisão"
@@ -2415,14 +2415,14 @@ msgstr ""
" "
#: coop/templates/coop/tags/user_coop_share_ownership_list_tag.html:56
-#: shifts/models.py:941 shifts/templates/shifts/shift_day_printable.html:56
+#: shifts/models.py:954 shifts/templates/shifts/shift_day_printable.html:56
#: shifts/templates/shifts/shift_detail.html:281
#: shifts/templates/shifts/shift_detail_printable.html:51
msgid "Attended"
msgstr "Compareceu"
#: coop/templates/coop/tags/user_coop_share_ownership_list_tag.html:58
-#: shifts/models.py:940
+#: shifts/models.py:953
msgid "Pending"
msgstr "Pendente"
@@ -2742,7 +2742,7 @@ msgid "List of all emails"
msgstr "Lista de todos os e-mails"
#: core/templates/core/email_list.html:39 shifts/models.py:56
-#: shifts/models.py:84 shifts/models.py:514 shifts/models.py:1079
+#: shifts/models.py:84 shifts/models.py:519 shifts/models.py:1092
#: shifts/templates/shifts/user_shift_account_log.html:29
msgid "Description"
msgstr "Descrição"
@@ -2945,6 +2945,14 @@ msgstr "Adicionar nota"
msgid "Log Type"
msgstr "Tipo de registo"
+#: rizoma/apps.py:17
+msgid "Admin"
+msgstr ""
+
+#: rizoma/apps.py:20
+msgid "All shifts"
+msgstr "Todos os turnos"
+
#: rizoma/coops_pt_auth_backend.py:43
msgid "Invalid username or password"
msgstr "Nome de utilizador ou palavra-passe inválidos"
@@ -3019,11 +3027,6 @@ msgstr "Enviado a um membro quando o Member Office marca o turno como em falta"
msgid "Shift reminder"
msgstr "Lembrete de turno"
-#: shifts/emails/shift_reminder_email.py:30
-#, python-brace-format
-msgid "Sent to a member {config.REMINDER_EMAIL_DAYS_BEFORE_SHIFT} days before their shift"
-msgstr "Enviado a um membro {config.REMINDER_EMAIL_DAYS_BEFORE_SHIFT} dias antes do seu turno"
-
#: shifts/emails/stand_in_found_email.py:23
msgid "Stand-in found"
msgstr "Substituto encontrado"
@@ -3066,11 +3069,6 @@ msgstr "Avisos"
msgid "I have read the warning about the missing qualification and confirm that the user should get registered to the shift"
msgstr "Li o aviso sobre a qualificação em falta e confirmo que o utilizador deve ser registado no turno"
-#: shifts/forms.py:199
-#, python-brace-format
-msgid "The selected user is missing the required qualification for this shift : {missing_capabilities}"
-msgstr "O utilizador selecionado não possui a qualificação necessária para este turno: {missing_capabilities}"
-
#: shifts/forms.py:242
msgid "Please set the chosen time after the start of the shift"
msgstr "Defina a hora escolhida após o início do turno"
@@ -3099,11 +3097,6 @@ msgstr "Este turno foi eliminado. Não é possível registar-se nele."
msgid "I am aware that the member will be unregistered from their ABCD shift"
msgstr "Tenho conhecimento de que o membro será removido do seu turno ABCD"
-#: shifts/forms.py:403
-#, python-brace-format
-msgid "{own_name} is already partner of {partner_of_name}, they can't have a partner of their own"
-msgstr "{own_name} já é parceiro de {partner_of_name}, não pode ter um parceiro próprio"
-
#: shifts/forms.py:414
msgid "The selected member must be an investing member."
msgstr "O membro selecionado deve ser um membro investidor."
@@ -3120,11 +3113,6 @@ msgstr "Li o aviso sobre as presenças canceladas e confirmo que a isenção dev
msgid "I have read the warning about the cancelled ABCD attendances and confirm that the exemption should be created"
msgstr "Li o aviso sobre as presenças ABCD canceladas e confirmo que a isenção deve ser criada"
-#: shifts/forms.py:555
-#, python-brace-format
-msgid "The member will be unregistered from the following shifts because they are within the range of the exemption : {attendances_display}"
-msgstr "O membro será removido dos seguintes turnos por estarem dentro do período da isenção: {attendances_display}"
-
#: shifts/forms.py:580
#, python-format
msgid "The user will be unregistered from the following ABCD shifts because the exemption is longer than %(number_of_cycles)s cycles: %(attendances_display)s "
@@ -3154,18 +3142,18 @@ msgstr "Idioma"
msgid "This determines from which date shifts should be generated from this ABCD shift."
msgstr "Determina a partir de que data os turnos devem ser gerados a partir deste turno ABCD."
-#: shifts/models.py:198 shifts/models.py:522
+#: shifts/models.py:198 shifts/models.py:527
#: shifts/templates/shifts/shift_block_tag.html:9
msgid "Flexible time"
msgstr "Horário flexível"
-#: shifts/models.py:200 shifts/models.py:524
+#: shifts/models.py:200 shifts/models.py:529
msgid "If enabled, members who register for that shift can choose themselves the time where they come do their shift."
msgstr "Se ativado, os membros que se registam nesse turno podem escolher a hora a que vêm fazer o turno."
-#: shifts/models.py:418 shifts/models.py:832
+#: shifts/models.py:418 shifts/models.py:842
#: shifts/templates/shifts/shift_detail.html:95
-#: shifts/templates/shifts/shift_template_detail.html:42
+#: shifts/templates/shifts/shift_template_detail.html:43
msgid "Chosen time"
msgstr "Hora escolhida"
@@ -3173,66 +3161,66 @@ msgstr "Hora escolhida"
msgid "This shift lets you choose at what time you come during the day of the shift. In order to help organising the attendance, please specify when you expect to come.Setting or updating this field will set the time for all individual shifts generated from this ABCD shift.You can update the time of a single shift individually and at any time on the shift page."
msgstr "Este turno permite-lhe escolher a hora a que vem no dia do turno. Para ajudar a organizar as presenças, indique quando prevê vir. Definir ou atualizar este campo definirá a hora para todos os turnos individuais gerados a partir deste turno ABCD. Pode atualizar a hora de um turno específico a qualquer momento na página do turno."
-#: shifts/models.py:504
+#: shifts/models.py:509
msgid "Number of required attendances"
msgstr "Número de presenças necessárias"
-#: shifts/models.py:506
+#: shifts/models.py:511
msgid "If there are less members registered to a shift than that number, it will be highlighted in the shift calendar."
msgstr "Se houver menos membros registados num turno do que esse número, o turno será destacado no calendário."
-#: shifts/models.py:515
+#: shifts/models.py:520
msgid "Is shown on the shift page below the title"
msgstr "É mostrado na página do turno abaixo do título"
-#: shifts/models.py:535 shifts/models.py:541
+#: shifts/models.py:540 shifts/models.py:546
msgid "If 'flexible time' is enabled, then the time component is ignored"
msgstr "Se o 'horário flexível' estiver ativado, o componente de hora é ignorado"
-#: shifts/models.py:834
+#: shifts/models.py:844
msgid "This shift lets you choose at what time you come during the day of the shift. In order to help organising the attendance, please specify when you expect to come."
msgstr "Este turno permite-lhe escolher a hora a que vem no dia do turno. Para ajudar na organização das presenças, indique quando prevê vir."
-#: shifts/models.py:942 shifts/templates/shifts/shift_day_printable.html:57
+#: shifts/models.py:955 shifts/templates/shifts/shift_day_printable.html:57
#: shifts/templates/shifts/shift_detail.html:291
#: shifts/templates/shifts/shift_detail_printable.html:52
msgid "Missed"
msgstr "Em falta"
-#: shifts/models.py:943 shifts/templates/shifts/shift_day_printable.html:58
+#: shifts/models.py:956 shifts/templates/shifts/shift_day_printable.html:58
#: shifts/templates/shifts/shift_detail.html:321
#: shifts/templates/shifts/shift_detail_printable.html:53
msgid "Excused"
msgstr "Justificado"
-#: shifts/models.py:944 shifts/templates/shifts/shift_detail.html:329
+#: shifts/models.py:957 shifts/templates/shifts/shift_detail.html:329
msgid "Cancelled"
msgstr "Cancelado"
-#: shifts/models.py:945 shifts/templates/shifts/shift_day_printable.html:97
+#: shifts/models.py:958 shifts/templates/shifts/shift_day_printable.html:97
#: shifts/templates/shifts/shift_detail.html:313
#: shifts/templates/shifts/shift_detail_printable.html:94
#: shifts/templates/shifts/shift_filters.html:83
msgid "Looking for a stand-in"
msgstr "À procura de substituto"
-#: shifts/models.py:978
+#: shifts/models.py:991
msgid "🏠 ABCD"
msgstr "🏠 ABCD"
-#: shifts/models.py:979
+#: shifts/models.py:992
msgid "✈ Flying"
msgstr "✈ Flex"
-#: shifts/models.py:980
+#: shifts/models.py:993
msgid "❄ Frozen"
msgstr "❄ Suspenso"
-#: shifts/models.py:1006
+#: shifts/models.py:1019
msgid "Is frozen"
msgstr "Está suspenso"
-#: shifts/models.py:1185
+#: shifts/models.py:1198
msgid "Cycle start date"
msgstr "Data de início do ciclo"
@@ -3933,7 +3921,7 @@ msgstr "Horário flexível não especificado"
#: shifts/templates/shifts/shift_day_printable.html:94
#: shifts/templates/shifts/shift_detail.html:122
#: shifts/templates/shifts/shift_detail_printable.html:90
-#: shifts/templates/shifts/shift_template_detail.html:64
+#: shifts/templates/shifts/shift_template_detail.html:66
msgid "Shift partner: "
msgstr "Parceiro de turno: "
@@ -3985,12 +3973,12 @@ msgid "Number"
msgstr "Número"
#: shifts/templates/shifts/shift_detail.html:89
-#: shifts/templates/shifts/shift_template_detail.html:38
+#: shifts/templates/shifts/shift_template_detail.html:39
msgid "Details"
msgstr "Detalhes"
#: shifts/templates/shifts/shift_detail.html:90
-#: shifts/templates/shifts/shift_template_detail.html:40
+#: shifts/templates/shifts/shift_template_detail.html:41
msgid "Registered user"
msgstr "Utilizador registado"
@@ -4003,7 +3991,7 @@ msgid "Do you meet the requirements?"
msgstr "Cumpre os requisitos?"
#: shifts/templates/shifts/shift_detail.html:98
-#: shifts/templates/shifts/shift_template_detail.html:45
+#: shifts/templates/shifts/shift_template_detail.html:46
msgid "Member-Office actions"
msgstr "Ações do Escritório de Membros"
@@ -4039,8 +4027,7 @@ msgid ""
" you can't\n"
" attend, contact your shift leader as soon as\n"
" possible."
-msgstr ""
-"Só pode procurar um substituto até %(NB_DAYS_FOR_SELF_LOOK_FOR_STAND_IN)s dias antes do turno. Se não puder participar, contacte o seu responsável de turno o mais rapidamente possível."
+msgstr "Só pode procurar um substituto até %(NB_DAYS_FOR_SELF_LOOK_FOR_STAND_IN)s dias antes do turno. Se não puder participar, contacte o seu responsável de turno o mais rapidamente possível."
#: shifts/templates/shifts/shift_detail.html:183
msgid "Look for a stand-in"
@@ -4058,8 +4045,7 @@ msgid ""
" attend, look for a stand-in or contact your shift leader as soon\n"
" as\n"
" possible."
-msgstr ""
-"Só pode cancelar a sua inscrição até %(NB_DAYS_FOR_SELF_UNREGISTER)s dias antes do turno. Além disso, os turnos ABCD não podem ser cancelados. Se não puder participar, procure um substituto ou contacte o seu responsável de turno o mais rapidamente possível."
+msgstr "Só pode cancelar a sua inscrição até %(NB_DAYS_FOR_SELF_UNREGISTER)s dias antes do turno. Além disso, os turnos ABCD não podem ser cancelados. Se não puder participar, procure um substituto ou contacte o seu responsável de turno o mais rapidamente possível."
#: shifts/templates/shifts/shift_detail.html:207
msgid "Unregister myself"
@@ -4084,7 +4070,7 @@ msgstr ""
"- O turno não tiver sido cancelado (férias, etc.)
"
#: shifts/templates/shifts/shift_detail.html:254
-#: shifts/templates/shifts/shift_template_detail.html:95
+#: shifts/templates/shifts/shift_template_detail.html:98
msgid "Not specified"
msgstr "Não especificado"
@@ -4222,23 +4208,23 @@ msgstr "Configuração"
msgid "ABCD Shift"
msgstr "Turno ABCD"
-#: shifts/templates/shifts/shift_template_detail.html:34
+#: shifts/templates/shifts/shift_template_detail.html:35
msgid "List of slots for this ABCD shifts"
msgstr "Lista de lugares para este turno ABCD"
-#: shifts/templates/shifts/shift_template_detail.html:39
+#: shifts/templates/shifts/shift_template_detail.html:40
msgid "Requirements"
msgstr "Requisitos"
-#: shifts/templates/shifts/shift_template_detail.html:73
+#: shifts/templates/shifts/shift_template_detail.html:75
msgid "Unregister"
msgstr "Cancelar inscrição"
-#: shifts/templates/shifts/shift_template_detail.html:122
+#: shifts/templates/shifts/shift_template_detail.html:125
msgid "Future generated Shifts"
msgstr "Turnos futuros gerados"
-#: shifts/templates/shifts/shift_template_detail.html:132
+#: shifts/templates/shifts/shift_template_detail.html:135
msgid "Past generated Shifts"
msgstr "Turnos passados gerados"
@@ -4567,32 +4553,27 @@ msgctxt "No shift partner"
msgid "None"
msgstr "Nenhum"
-#: shifts/templatetags/shifts.py:61 shifts/templatetags/shifts.py:165
-#: shifts/views/views.py:148
+#: shifts/templatetags/shifts.py:57 shifts/templatetags/shifts.py:154
+#: shifts/views/views.py:149
msgid "General"
msgstr "Geral"
-#: shifts/utils.py:163
-#, python-brace-format
-msgid "Unknown mode {attendance_mode}"
-msgstr "Modo desconhecido {attendance_mode}"
-
-#: shifts/views/attendance.py:197 shifts/views/attendance.py:341
+#: shifts/views/attendance.py:202 shifts/views/attendance.py:347
#, python-format
msgid "Shift attendance: %(name)s"
msgstr "Presença no turno: %(name)s"
-#: shifts/views/attendance.py:203 shifts/views/attendance.py:347
+#: shifts/views/attendance.py:208 shifts/views/attendance.py:353
#, python-format
msgid "Updating shift attendance: %(member_link)s, %(slot_link)s"
msgstr "A atualizar presença no turno: %(member_link)s, %(slot_link)s"
-#: shifts/views/attendance.py:381
+#: shifts/views/attendance.py:387
#, python-format
msgid "ABCD attendance: %(name)s"
msgstr "Presença ABCD: %(name)s"
-#: shifts/views/attendance.py:388
+#: shifts/views/attendance.py:394
#, python-format
msgid "Updating ABCD attendance: %(member_link)s, %(slot_link)s"
msgstr "A atualizar presença ABCD: %(member_link)s, %(slot_link)s"
@@ -4660,22 +4641,22 @@ msgstr "Não foi possível encontrar uma presença de turno para usar como turno
msgid "Solidarity Shift given. Account Balance debited with -1."
msgstr "Turno solidário doado. Saldo da conta debitado em -1."
-#: shifts/views/views.py:128 shifts/views/views.py:133
+#: shifts/views/views.py:129 shifts/views/views.py:134
#, python-format
msgid "Edit user shift data: %(name)s"
msgstr "Editar dados de turnos do utilizador: %(name)s"
-#: shifts/views/views.py:201
+#: shifts/views/views.py:202
#, python-format
msgid "Shift account: %(name)s"
msgstr "Conta de turnos: %(name)s"
-#: shifts/views/views.py:207
+#: shifts/views/views.py:208
#, python-format
msgid "Create manual shift account entry for: %(link)s"
msgstr "Criar registo manual na conta de turnos para: %(link)s"
-#: shifts/views/views.py:358
+#: shifts/views/views.py:367
msgid "Frozen statuses updated."
msgstr "Estados suspensos atualizados."
@@ -5019,7 +5000,6 @@ msgstr ""
"\n"
" O seu crédito atual é %(credit)s€.\n"
" "
-
#: statistics/templates/statistics/tags/credit_account_card.html:14
msgid "List of last charged credits"
msgstr "Lista dos últimos créditos carregados"
@@ -6066,7 +6046,7 @@ msgstr "NOME INDISPONÍVEL"
#: welcomedesk/apps.py:21 welcomedesk/apps.py:24
#: welcomedesk/templates/welcomedesk/welcome_desk_search.html:14
msgid "Welcome Desk"
-msgstr ""
+msgstr "Welcome Desk"
#: welcomedesk/services/welcome_desk_reasons_cannot_shop_service.py:44
#, python-format
diff --git a/tapir/translations/locale/pt/LC_MESSAGES/djangojs.po b/tapir/translations/locale/pt/LC_MESSAGES/djangojs.po
index 608ff0348..d9797f6e0 100644
--- a/tapir/translations/locale/pt/LC_MESSAGES/djangojs.po
+++ b/tapir/translations/locale/pt/LC_MESSAGES/djangojs.po
@@ -188,7 +188,7 @@ msgstr ""
#: dist/assets/welcome_desk-OgiTR3jj.js:1
msgid "Welcome Desk"
-msgstr ""
+msgstr "Welcome Desk"
#: dist/assets/welcome_desk-OgiTR3jj.js:1
msgid "Name or member ID"
diff --git a/tapir/urls.py b/tapir/urls.py
index 9e165ff03..388f37159 100644
--- a/tapir/urls.py
+++ b/tapir/urls.py
@@ -23,10 +23,11 @@
from tapir.settings import ENABLE_SILK_PROFILING
urlpatterns = [
- path("", generic.RedirectView.as_view(pattern_name="accounts:index")),
+ path("", generic.RedirectView.as_view(url=settings.LOGIN_REDIRECT_URL)),
path("admin/", admin.site.urls),
path("accounts/", include("tapir.accounts.urls")),
path("shifts/", include("tapir.shifts.urls")),
+ path("rizoma/", include("tapir.rizoma.urls")),
path("coop/", include("tapir.coop.urls")),
path("log/", include("tapir.log.urls")),
path("core/", include("tapir.core.urls")),