|
33 | 33 | from .models import Report |
34 | 34 |
|
35 | 35 |
|
36 | | -from .models import Article, Student, Project, Contact, Smishingdetection_join_us, Projects_join_us, Webpage, Profile, User, Course, Skill, Experience, Job, JobAlert, UserBlogPage #Feedback |
| 36 | +from .models import Article, Student, Project, Contact, Smishingdetection_join_us, Projects_join_us, Webpage, Profile, User, Course, Skill, Experience, Job, JobAlert, UserBlogPage, VaultDocument #Feedback |
37 | 37 |
|
38 | 38 |
|
39 | 39 | from django.contrib.auth import get_user_model |
|
47 | 47 | from django.urls import reverse_lazy |
48 | 48 | # from Website.settings import EMAIL_HOST_USER |
49 | 49 | import random |
50 | | -from .forms import UserUpdateForm, ProfileUpdateForm, ExperienceForm, JobApplicationForm, UserBlogPageForm, ChallengeForm |
| 50 | +from .forms import UserUpdateForm, ProfileUpdateForm, ExperienceForm, JobApplicationForm, UserBlogPageForm, ChallengeForm, VaultUploadForm |
51 | 51 |
|
52 | 52 | from .forms import CaptchaForm |
53 | 53 |
|
@@ -2655,3 +2655,46 @@ def tip_today(request): |
2655 | 2655 |
|
2656 | 2656 | return JsonResponse({"tip": texts[state.last_index]}) |
2657 | 2657 |
|
| 2658 | + |
| 2659 | +@login_required |
| 2660 | +def vault_view(request): |
| 2661 | + """View for the document vault""" |
| 2662 | + documents = VaultDocument.objects.all() |
| 2663 | + |
| 2664 | + # Handle filtering |
| 2665 | + type_filter = request.GET.get('type', '') |
| 2666 | + if type_filter: |
| 2667 | + if type_filter == 'pdf': |
| 2668 | + documents = documents.filter(content_type__icontains='pdf') |
| 2669 | + elif type_filter == 'word': |
| 2670 | + documents = documents.filter(content_type__icontains='word') |
| 2671 | + elif type_filter == 'excel': |
| 2672 | + documents = documents.filter(content_type__icontains='excel') |
| 2673 | + elif type_filter == 'powerpoint': |
| 2674 | + documents = documents.filter(content_type__icontains='powerpoint') |
| 2675 | + elif type_filter == 'image': |
| 2676 | + documents = documents.filter(content_type__icontains='image') |
| 2677 | + |
| 2678 | + # Handle file upload |
| 2679 | + if request.method == 'POST': |
| 2680 | + form = VaultUploadForm(request.POST, request.FILES) |
| 2681 | + if form.is_valid(): |
| 2682 | + vault_doc = form.save(commit=False) |
| 2683 | + vault_doc.uploaded_by = request.user |
| 2684 | + vault_doc.original_name = request.FILES['file'].name |
| 2685 | + vault_doc.content_type = request.FILES['file'].content_type |
| 2686 | + vault_doc.size_bytes = request.FILES['file'].size |
| 2687 | + vault_doc.save() |
| 2688 | + form.save_m2m() # Save many-to-many relationships |
| 2689 | + messages.success(request, 'Document uploaded successfully!') |
| 2690 | + return redirect('vault') |
| 2691 | + else: |
| 2692 | + form = VaultUploadForm() |
| 2693 | + |
| 2694 | + context = { |
| 2695 | + 'documents': documents, |
| 2696 | + 'form': form, |
| 2697 | + 'type_filter': type_filter, |
| 2698 | + } |
| 2699 | + return render(request, 'pages/vault.html', context) |
| 2700 | + |
0 commit comments