You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Edit ticket form is accessible by the ticket's Submitter and Staff. Possible edits include reassigning the ticket, upgrading/downgrading its Priority, editing Description, Tags, Summary.
@@ -203,7 +213,11 @@ Dashboard page allows visual interaction with the tickets data across 6 intercon
203
213
204
214
### KANBAN
205
215
206
-
Tickets are displayed in KANBAN columns by Status: New, In Progress, Resolved, Cancelled. Given that Cancelled tickets may be unimportant to some users, the 'Hide Cancelled' checkbox
216
+
Tickets are displayed in KANBAN columns by Status: New, In Progress, Resolved, Cancelled. Given that Cancelled tickets may be unimportant to some users, the 'Hide Cancelled' checkbox.
217
+
218
+
If Basic users click the KANBAN navigation link, they are redirected to Checkout page.
- Allow the Assignee to set an Estimated Resolved Date for each ticket.
246
260
247
-
# Database
261
+
# Databases
248
262
249
263
Sqlite3 was used during development. For deployment, data tables and data was migrated to a PostgreSQL database.
250
264
@@ -323,39 +337,65 @@ OrderLineItem Model
323
337
| product | CharField |
324
338
| quantity | IntegerField |
325
339
340
+
## Data Migration
341
+
342
+
To ensure a rich dataset for assessment purposes, testing data (including users, tickets) was migrated from sqlite3 to the PostgreSQL database using the following method:
343
+
344
+
Dump existing data into json format:
345
+
346
+
`python3 manage.py dumpdata > datadump.json`
347
+
348
+
Change DATABASES in settings.py to Postgres, then migrate:
349
+
350
+
`python3 manage.py migrate --run-syncdb`
351
+
352
+
Exclude contenttype data:
353
+
354
+
```
355
+
python3 manage.py shell
356
+
>>> from django.contrib.contenttypes.models import ContentType
357
+
>>> ContentType.objects.all().delete()
358
+
>>> quit()
359
+
```
360
+
361
+
Load json data into PostgreSQL:
362
+
363
+
`python3 manage.py loaddata datadump.json`
364
+
326
365
# Technologies
327
366
328
-
-[Autoprefixer CSS Online](https://autoprefixer.github.io/) : to add vendor prefixes.
329
-
-[Balsamiq](https://balsamiq.com/) : to create wireframes.
330
-
-[Bootstrap](https://bootstrap.com/) : for responsive webpages.
331
-
-[Chrome Developer Tools](https://developers.google.com/web/tools/chrome-devtools) : to ensure device responsiveness.
-[W3C Validator](https://jigsaw.w3.org) : validate HTML & CSS.
355
395
356
396
# Testing
357
397
358
-
Extensive automatic and manual testing was conducted to ensure the site functions and looks well on all major browsers (Chrome, Firefox, Safari, Edge) and device sizes.
398
+
Extensive unit and manual testing was conducted to ensure the site functions and looks well on all major browsers (Chrome, Firefox, Safari, Edge) and device sizes.
359
399
360
400
## Unit Testing
361
401
@@ -367,44 +407,43 @@ Extensive automatic and manual testing was conducted to ensure the site function
367
407
368
408
The following manual tests passed:
369
409
370
-
Home
410
+
#### Home
371
411
372
412
- If no user is logged in, 3 'Create Free Account' buttons are displayed
373
413
- If Basic user is logged in, 3 'Go PRO' buttons are displayed.
374
414
- If Pro user is logged in, 3 'Go PRO' buttons are hidden.
375
415
376
-
Tickets
416
+
#### Tickets
377
417
378
418
- Global search input filters in all fields.
379
419
- Reset filters button reloads page.
380
420
- All field-specific search boxes filter correctly.
381
421
- Clicking headings orders by that field. Clicking again changes order direction.
382
422
- Pagination and 'Show x tickets' per page functions correctly.
383
423
- All columns are visible or accessible via horizontal scroll.
384
-
- Tooltips function on hover of Summary, Type, Status.
385
424
- Row colours represent status.
386
425
- Raise Ticket button takes user to Add Ticket page.
387
426
388
-
Dashboard
427
+
#### Dashboard
389
428
390
429
- All 6 charts display with adequate padding.
391
430
- All 6 charts be filtered on click, or range selection.
392
431
- Display updates to show how many tickets are filtered - eg. 12 of 25 Tickets.
393
432
394
-
KANBAN
433
+
#### KANBAN
395
434
396
435
- If user is not PRO user, redirect to Checkout page.
- Ticket count and counts for each column (ticket status) are correct.
399
438
- Quick update dropdown updates status and success message displayed: 'Ticket status updated.'
400
439
401
-
Add Ticket
440
+
#### Add Ticket
402
441
403
442
- If Basic user, message is displayed shows how many tickets have been submitted out of 10 in the current month. If limit has been reached, message is displayed and user is redirected to checkout page.
404
443
- Form is valid and submits even if Tags and Screenshot is blank.
- Submitter and Assignee pill badges show user profile pictures if any, and on click a drop-right menu with 'mailto:' links Zoom links functioning.
@@ -414,51 +453,53 @@ View Ticket
414
453
- If screenshot exists, following link shows the screenshot in a modal. Download button downloads image.
415
454
- Comments can be submitted and success message is displayed: 'Comment shared.'
416
455
417
-
Edit Ticket
456
+
#### Edit Ticket
418
457
419
458
- Only submitter or staff can edit a ticket.
420
459
- Fields are pre-filled with existing values.
421
460
- Submitting form updates all fields.
422
461
- On successful edit, success message is displayed: 'Ticket successfully updated'.
423
462
424
-
Account
463
+
#### Account
425
464
426
465
- User Profile image can be changed via upload. Image is displayed with rounded border.
427
466
- First Name, Last Name can be updated via edit button.
428
467
- If user not Staff, requesting staff access button is displayed, which on click enables Staff access. Note: In a live environment, these requests would be sent to Admin for review before granting permission. For assessment purposes this permission is granted immediately so assessors can edit all tickets.
429
468
- Member Since and PRO Since (if PRO) shows correct dates.
430
469
- On click of Zoom Meeting ID, Zoom Personal Meeting Room is launched.
431
470
432
-
404 Error Page
471
+
#### Team
433
472
434
-
- When an incorrect URL is entered, 404 Page is displayed
435
-
- Return home button takes user back to Home Page
436
-
- Navigation buttons function
473
+
- All email and zoom links function
437
474
438
475
### Mobile and Tablet Testing
439
476
440
-
The above Desktop Tests were also conducted on mobile and tablet devices (via Chrome DevTools). In addition, the following mobile and tablet-specific tests were run:
477
+
The above Desktop Tests were repeated on mobile and tablet devices via Chrome Dev Tools. In addition, the following mobile and tablet-specific tests were run:
441
478
442
479
Dashboard (Mobile)
443
480
444
481
- All graphs on dashboard page are readable.
445
482
446
483
The following tests failed:
447
484
448
-
| Issue No. | Test Name | Issue | Resolved? | Action Taken |
| 1 | Content is not squeezed or overlapping (Mobile) | Tickets table overflowing horizontally. | Yes | Added Bootstrap class 'table-responsive' to enable horizontal scrolling |
488
+
| 2 | Tickets page: All tooltips function on hover of Summary, Type, Status | On Tickets page tooltips on tickets beyond on the first are not initialized. | Yes | Added callback function to reinitialise all toolips on redraw of table |
^ The following classes of errors were deemed not applicable, as the validator did not take into account Flask and Jinja templating:
500
+
## Audits
501
+
502
+
All pages were audited using Chrome Developer Tools' Lighthouse to assess Performance, Accessibility, Best Practices and SEO. Key performance improvements included lazy loading images and optimising the loading of third-party libraries. After making these changes, the vast majority of page scores were Green (ie >90%).
462
503
463
504
# Deployment
464
505
@@ -468,7 +509,7 @@ The application was deployed to Heroku, via the following steps:
468
509
469
510
1. Ensure `requirements.txt` reflects all dependencies via `pip freeze > requirements.txt`
470
511
2. Create `Procfile` via `web: gunicorn issue_tracker.wsgi:application > Procfile`
471
-
3.`git add` above files, then commit and push to GitHub
512
+
3.`git add` above files, then `git commit` and `git push` to GitHub
472
513
4. Heroku.com > Create new app > App name: 'django-issue-tracker-1' (app name must be unique), Region: Europe
473
514
5. Deploy > Deployment method > Link GitHub account
474
515
6. Select repository 'milestone-4'
@@ -489,31 +530,6 @@ The application was deployed to Heroku, via the following steps:
489
530
9. Manual Deploy > Deploy Branch (master)
490
531
10. Heroku Website > Open App
491
532
492
-
### Data Migration
493
-
494
-
To ensure a rich dataset for assessment purposes, testing data (including users, tickets) was migrated from sqlite3 to the PostgreSQL database using the following method:
495
-
496
-
Dump existing data into json format:
497
-
498
-
`python3 manage.py dumpdata > datadump.json`
499
-
500
-
Change DATABASES in settings.py to Postgres, then migrate:
501
-
502
-
`python3 manage.py migrate --run-syncdb`
503
-
504
-
Exclude contenttype data:
505
-
506
-
```
507
-
python3 manage.py shell
508
-
>>> from django.contrib.contenttypes.models import ContentType
509
-
>>> ContentType.objects.all().delete()
510
-
>>> quit()
511
-
```
512
-
513
-
Load json data into PostgreSQL:
514
-
515
-
`python3 manage.py loaddata datadump.json`
516
-
517
533
## Local Deployment
518
534
519
535
1. 'Clone or download' repository from https://github.com/tdunn891/milestone-4, or from command line:
0 commit comments