Free and open source ticket system written in python
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix issue in username sanitizer and add dutch language

+434 -7
+2
core/utils/general.py
··· 1 + import re 2 + 1 3 def sainitize_username(username: str) -> str: 2 4 """Remove illegal characters from a username""" 3 5 return re.sub(r'[^a-zA-Z0-9-_@]', "", username)
+1 -1
paw/__init__.py
··· 1 1 from django import get_version 2 2 3 - VERSION = (0, 5, 9, "final", 0) 3 + VERSION = (0, 5, 10, "final", 0) 4 4 5 5 __version__ = get_version(VERSION)
+5 -1
paw/locale/de/LC_MESSAGES/django.po
··· 8 8 msgstr "" 9 9 "Project-Id-Version: PACKAGE VERSION\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 - "POT-Creation-Date: 2024-04-07 16:31+0000\n" 11 + "POT-Creation-Date: 2024-04-08 14:59+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" ··· 68 68 69 69 #: paw/settings.py:135 70 70 msgid "German" 71 + msgstr "" 72 + 73 + #: paw/settings.py:136 74 + msgid "Dutch" 71 75 msgstr "" 72 76 73 77 #: paw/templates/base.html:20 paw/templates/dashboard_base.html:40
+5 -1
paw/locale/en/LC_MESSAGES/django.po
··· 8 8 msgstr "" 9 9 "Project-Id-Version: PACKAGE VERSION\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 - "POT-Creation-Date: 2024-04-07 16:31+0000\n" 11 + "POT-Creation-Date: 2024-04-08 14:59+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" ··· 68 68 #: paw/settings.py:135 69 69 msgid "German" 70 70 msgstr "Deutsch" 71 + 72 + #: paw/settings.py:136 73 + msgid "Dutch" 74 + msgstr "" 71 75 72 76 #: paw/templates/base.html:20 paw/templates/dashboard_base.html:40 73 77 msgid "Tickets"
+14 -4
paw/locale/fr/LC_MESSAGES/django.po
··· 8 8 msgstr "" 9 9 "Project-Id-Version: PACKAGE VERSION\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 - "POT-Creation-Date: 2024-04-07 16:31+0000\n" 11 + "POT-Creation-Date: 2024-04-08 14:59+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" ··· 31 31 msgid "" 32 32 "Username can only have alphanumeric characters and underscores and dashes (a-" 33 33 "z, 0-9, _, -, @)" 34 - msgstr "Les noms d’utilisateurs ne peuvent contenir que des caractères alphanumériques, ainsi que des tirets ou des tirets du bas. (a-z, 0-9, -, _, @)" 34 + msgstr "" 35 + "Les noms d’utilisateurs ne peuvent contenir que des caractères " 36 + "alphanumériques, ainsi que des tirets ou des tirets du bas. (a-z, 0-9, -, _, " 37 + "@)" 35 38 36 39 #: core/forms.py:58 37 40 msgid "Password and Confirm Password do not match." ··· 68 71 #: paw/settings.py:135 69 72 msgid "German" 70 73 msgstr "Allemand" 74 + 75 + #: paw/settings.py:136 76 + msgid "Dutch" 77 + msgstr "" 71 78 72 79 #: paw/templates/base.html:20 paw/templates/dashboard_base.html:40 73 80 msgid "Tickets" ··· 379 386 380 387 #: ticketing/forms.py:52 381 388 msgid "File type not supported. Supported types are: .jpg, .png, .pdf" 382 - msgstr "Format du fichier non supporté. Les formats supportés sont: .jpg, .png. .pdf" 389 + msgstr "" 390 + "Format du fichier non supporté. Les formats supportés sont: .jpg, .png. .pdf" 383 391 384 392 #: ticketing/forms.py:73 385 393 msgid "Please enter a title" ··· 400 408 #: ticketing/models.py:31 401 409 msgid "" 402 410 "If a team is selected, new tickets will automatically assigned to this team." 403 - msgstr "Si une équipe est sélectionnée, les nouveaux tickets lui seront automatiquement attribués." 411 + msgstr "" 412 + "Si une équipe est sélectionnée, les nouveaux tickets lui seront " 413 + "automatiquement attribués." 404 414 405 415 #~ msgid "Comment and close" 406 416 #~ msgstr "Commenter et fermer"
+406
paw/locale/nl/LC_MESSAGES/django.po
··· 1 + # SOME DESCRIPTIVE TITLE. 2 + # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 + # This file is distributed under the same license as the PACKAGE package. 4 + # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. 5 + # 6 + #, fuzzy 7 + msgid "" 8 + msgstr "" 9 + "Project-Id-Version: PACKAGE VERSION\n" 10 + "Report-Msgid-Bugs-To: \n" 11 + "POT-Creation-Date: 2024-04-08 15:04+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" 16 + "MIME-Version: 1.0\n" 17 + "Content-Type: text/plain; charset=UTF-8\n" 18 + "Content-Transfer-Encoding: 8bit\n" 19 + "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 + #: core/forms.py:27 core/forms.py:35 paw/templates/core/account_finish.html:33 21 + #: paw/templates/core/login.html:24 paw/templates/core/register.html:24 22 + msgid "Username" 23 + msgstr "" 24 + 25 + #: core/forms.py:31 26 + msgid "Please enter a username" 27 + msgstr "" 28 + 29 + #: core/forms.py:32 30 + msgid "" 31 + "Username can only have alphanumeric characters and underscores and dashes (a-" 32 + "z, 0-9, _, -, @)" 33 + msgstr "" 34 + 35 + #: core/forms.py:58 36 + msgid "Password and Confirm Password do not match." 37 + msgstr "" 38 + 39 + #: core/forms.py:62 40 + msgid "Password must be at least 10 characters long." 41 + msgstr "" 42 + 43 + #: core/forms.py:67 44 + msgid "An account with this username already exists." 45 + msgstr "" 46 + 47 + #: core/forms.py:71 48 + msgid "An account with this email already exists." 49 + msgstr "" 50 + 51 + #: core/forms.py:88 52 + msgid "An account with this username already exists" 53 + msgstr "" 54 + 55 + #: core/models.py:30 56 + msgid "Google SSO User" 57 + msgstr "" 58 + 59 + #: paw/settings.py:133 60 + msgid "English" 61 + msgstr "" 62 + 63 + #: paw/settings.py:134 64 + msgid "French" 65 + msgstr "" 66 + 67 + #: paw/settings.py:135 68 + msgid "German" 69 + msgstr "" 70 + 71 + #: paw/settings.py:136 72 + msgid "Dutch" 73 + msgstr "" 74 + 75 + #: paw/templates/base.html:20 paw/templates/dashboard_base.html:40 76 + msgid "Tickets" 77 + msgstr "" 78 + 79 + #: paw/templates/base.html:21 paw/templates/dashboard_base.html:53 80 + #: paw/templates/ticketing/tickets.html:20 81 + msgid "Status" 82 + msgstr "" 83 + 84 + #: paw/templates/core/account_finish.html:10 paw/templates/core/register.html:6 85 + msgid "Register a new account" 86 + msgstr "" 87 + 88 + #: paw/templates/core/account_finish.html:13 89 + msgid "Authenticate" 90 + msgstr "" 91 + 92 + #: paw/templates/core/account_finish.html:14 93 + msgid "Set up account" 94 + msgstr "" 95 + 96 + #: paw/templates/core/account_finish.html:15 97 + msgid "Done" 98 + msgstr "" 99 + 100 + #: paw/templates/core/account_finish.html:38 101 + #: paw/templates/core/settings.html:55 102 + msgid "Save" 103 + msgstr "" 104 + 105 + #: paw/templates/core/login.html:7 paw/templates/core/login.html:39 106 + msgid "Log In" 107 + msgstr "" 108 + 109 + #: paw/templates/core/login.html:9 110 + msgid "Register Account" 111 + msgstr "" 112 + 113 + #: paw/templates/core/login.html:30 paw/templates/core/register.html:36 114 + msgid "Password" 115 + msgstr "" 116 + 117 + #: paw/templates/core/login.html:35 118 + msgid "Password Reset" 119 + msgstr "" 120 + 121 + #: paw/templates/core/login.html:46 122 + msgid "Log in with Google" 123 + msgstr "" 124 + 125 + #: paw/templates/core/register.html:30 126 + msgid "Email Address" 127 + msgstr "" 128 + 129 + #: paw/templates/core/register.html:42 130 + msgid "Confirm Password" 131 + msgstr "" 132 + 133 + #: paw/templates/core/register.html:47 134 + msgid "Register" 135 + msgstr "" 136 + 137 + #: paw/templates/core/settings.html:7 paw/templates/dashboard_base.html:85 138 + msgid "Settings" 139 + msgstr "" 140 + 141 + #: paw/templates/core/settings.html:12 142 + msgid "Mail Address" 143 + msgstr "" 144 + 145 + #: paw/templates/core/settings.html:23 146 + msgid "Language" 147 + msgstr "" 148 + 149 + #: paw/templates/core/settings.html:30 150 + msgid "Use Darkmode" 151 + msgstr "" 152 + 153 + #: paw/templates/core/settings.html:37 154 + msgid "Receive Email Notifications" 155 + msgstr "" 156 + 157 + #: paw/templates/core/settings.html:44 158 + msgid "Profile Picture" 159 + msgstr "" 160 + 161 + #: paw/templates/core/settings.html:49 162 + #: paw/templates/ticketing/ticket_detail.html:152 163 + msgid "Contact" 164 + msgstr "" 165 + 166 + #: paw/templates/dashboard_base.html:34 167 + #: paw/templates/ticketing/create_ticket.html:50 168 + msgid "Create Ticket" 169 + msgstr "" 170 + 171 + #: paw/templates/dashboard_base.html:46 172 + #: paw/templates/ticketing/tickets_history.html:5 173 + msgid "History" 174 + msgstr "" 175 + 176 + #: paw/templates/dashboard_base.html:79 177 + msgid "Admin" 178 + msgstr "" 179 + 180 + #: paw/templates/dashboard_base.html:89 181 + msgid "Logout" 182 + msgstr "" 183 + 184 + #: paw/templates/partials/assigned_to.html:17 185 + #: paw/templates/ticketing/ticket_detail.html:201 186 + msgid "Unassigned" 187 + msgstr "" 188 + 189 + #: paw/templates/partials/ticket_priority_badge.html:4 ticketing/models.py:45 190 + msgid "Low" 191 + msgstr "" 192 + 193 + #: paw/templates/partials/ticket_priority_badge.html:6 ticketing/models.py:46 194 + msgid "Medium" 195 + msgstr "" 196 + 197 + #: paw/templates/partials/ticket_priority_badge.html:8 ticketing/models.py:47 198 + msgid "High" 199 + msgstr "" 200 + 201 + #: paw/templates/partials/ticket_status_badge.html:4 ticketing/models.py:40 202 + msgid "Open" 203 + msgstr "" 204 + 205 + #: paw/templates/partials/ticket_status_badge.html:6 ticketing/models.py:41 206 + msgid "In Progress" 207 + msgstr "" 208 + 209 + #: paw/templates/partials/ticket_status_badge.html:8 ticketing/models.py:42 210 + msgid "Closed" 211 + msgstr "" 212 + 213 + #: paw/templates/ticketing/create_ticket.html:5 214 + msgid "Create a new ticket" 215 + msgstr "" 216 + 217 + #: paw/templates/ticketing/create_ticket.html:12 218 + #: paw/templates/ticketing/ticket_detail.html:165 219 + #: paw/templates/ticketing/tickets.html:19 220 + #: paw/templates/ticketing/tickets_history.html:19 221 + msgid "Category" 222 + msgstr "" 223 + 224 + #: paw/templates/ticketing/create_ticket.html:19 225 + #: paw/templates/ticketing/tickets.html:17 226 + #: paw/templates/ticketing/tickets_history.html:17 ticketing/forms.py:73 227 + msgid "Title" 228 + msgstr "" 229 + 230 + #: paw/templates/ticketing/create_ticket.html:26 ticketing/forms.py:74 231 + msgid "Description" 232 + msgstr "" 233 + 234 + #: paw/templates/ticketing/create_ticket.html:34 235 + #: paw/templates/ticketing/ticket_detail.html:9 236 + msgid "Attachments" 237 + msgstr "" 238 + 239 + #: paw/templates/ticketing/create_ticket.html:43 240 + msgid "Create as follow-up to a closed ticket" 241 + msgstr "" 242 + 243 + #: paw/templates/ticketing/ticket_detail.html:14 244 + msgid "Attachment" 245 + msgstr "" 246 + 247 + #: paw/templates/ticketing/ticket_detail.html:21 248 + msgid "Follow-Up Ticket to" 249 + msgstr "" 250 + 251 + #: paw/templates/ticketing/ticket_detail.html:28 252 + msgid "Followed-Up by" 253 + msgstr "" 254 + 255 + #: paw/templates/ticketing/ticket_detail.html:36 256 + msgid "Activity" 257 + msgstr "" 258 + 259 + #: paw/templates/ticketing/ticket_detail.html:61 260 + msgid "Internal" 261 + msgstr "" 262 + 263 + #: paw/templates/ticketing/ticket_detail.html:78 264 + msgid "Apply Template" 265 + msgstr "" 266 + 267 + #: paw/templates/ticketing/ticket_detail.html:96 268 + msgid "Add Comment" 269 + msgstr "" 270 + 271 + #: paw/templates/ticketing/ticket_detail.html:98 272 + msgid "Close Ticket" 273 + msgstr "" 274 + 275 + #: paw/templates/ticketing/ticket_detail.html:107 276 + msgid "Make this an internal comment" 277 + msgstr "" 278 + 279 + #: paw/templates/ticketing/ticket_detail.html:116 280 + msgid "Ticket has been closed" 281 + msgstr "" 282 + 283 + #: paw/templates/ticketing/ticket_detail.html:121 284 + msgid "Re-Open Ticket" 285 + msgstr "" 286 + 287 + #: paw/templates/ticketing/ticket_detail.html:132 288 + msgid "Created by" 289 + msgstr "" 290 + 291 + #: paw/templates/ticketing/ticket_detail.html:145 292 + msgid "Created on" 293 + msgstr "" 294 + 295 + #: paw/templates/ticketing/ticket_detail.html:149 296 + msgid "Last updated" 297 + msgstr "" 298 + 299 + #: paw/templates/ticketing/ticket_detail.html:171 300 + #: paw/templates/ticketing/tickets.html:42 301 + #: paw/templates/ticketing/tickets_history.html:42 ticketing/forms.py:81 302 + #: ticketing/forms.py:104 ticketing/models.py:167 ticketing/models.py:180 303 + msgid "General" 304 + msgstr "" 305 + 306 + #: paw/templates/ticketing/ticket_detail.html:177 307 + msgid "Assign to new category" 308 + msgstr "" 309 + 310 + #: paw/templates/ticketing/ticket_detail.html:180 311 + #: paw/templates/ticketing/ticket_detail.html:210 312 + msgid "Assign" 313 + msgstr "" 314 + 315 + #: paw/templates/ticketing/ticket_detail.html:185 316 + msgid "Assignees" 317 + msgstr "" 318 + 319 + #: paw/templates/ticketing/ticket_detail.html:192 320 + msgid "Assign to me" 321 + msgstr "" 322 + 323 + #: paw/templates/ticketing/ticket_detail.html:207 324 + msgid "Assign to new team" 325 + msgstr "" 326 + 327 + #: paw/templates/ticketing/tickets.html:5 328 + msgid "Open Tickets" 329 + msgstr "" 330 + 331 + #: paw/templates/ticketing/tickets.html:7 332 + #: paw/templates/ticketing/tickets_history.html:7 333 + msgid "for" 334 + msgstr "" 335 + 336 + #: paw/templates/ticketing/tickets.html:18 337 + #: paw/templates/ticketing/tickets_history.html:18 338 + msgid "Assigned to" 339 + msgstr "" 340 + 341 + #: paw/templates/ticketing/tickets.html:27 342 + #: paw/templates/ticketing/tickets_history.html:27 343 + msgid "No tickets found" 344 + msgstr "" 345 + 346 + #: paw/templates/ticketing/tickets.html:49 347 + #: paw/templates/ticketing/tickets_history.html:47 348 + msgid "View" 349 + msgstr "" 350 + 351 + #: paw/templates/ticketing/tickets_history.html:20 352 + msgid "Closed on" 353 + msgstr "" 354 + 355 + #: status/templates/status/incident_list.html:11 356 + msgid "Some services might not be fully operational" 357 + msgstr "" 358 + 359 + #: status/templates/status/incident_list.html:16 360 + msgid "All services are operational" 361 + msgstr "" 362 + 363 + #: status/templates/status/incident_list.html:21 364 + msgid "Incidents" 365 + msgstr "" 366 + 367 + #: status/templates/status/incident_list.html:29 368 + msgid "Resolved" 369 + msgstr "" 370 + 371 + #: status/templates/status/incident_list.html:31 372 + msgid "Unresolved" 373 + msgstr "" 374 + 375 + #: status/templates/status/incident_list.html:37 376 + msgid "No incidents yet." 377 + msgstr "" 378 + 379 + #: ticketing/forms.py:39 380 + msgid "File size must be under 5MB." 381 + msgstr "" 382 + 383 + #: ticketing/forms.py:52 384 + msgid "File type not supported. Supported types are: .jpg, .png, .pdf" 385 + msgstr "" 386 + 387 + #: ticketing/forms.py:73 388 + msgid "Please enter a title" 389 + msgstr "" 390 + 391 + #: ticketing/forms.py:74 392 + msgid "Please describe your issue" 393 + msgstr "" 394 + 395 + #: ticketing/forms.py:82 396 + msgid "No Follow-up" 397 + msgstr "" 398 + 399 + #: ticketing/forms.py:99 400 + msgid "No Team" 401 + msgstr "" 402 + 403 + #: ticketing/models.py:31 404 + msgid "" 405 + "If a team is selected, new tickets will automatically assigned to this team." 406 + msgstr ""
+1
paw/settings.py
··· 133 133 ("en", _("English")), 134 134 ("fr", _("French")), 135 135 ("de", _("German")), 136 + ("nl", _("Dutch")), 136 137 ] 137 138 LOCALE_PATHS = [ 138 139 path.join(BASE_DIR, 'paw', 'locale'),