diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 6316872..ff32391 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -13,7 +13,7 @@ jobs: strategy: max-parallel: 4 matrix: - python-version: [3.6, 3.7, 3.8] + python-version: [3.8] steps: - uses: actions/checkout@v2 diff --git a/.gitignore b/.gitignore index 62dd050..80f300b 100644 --- a/.gitignore +++ b/.gitignore @@ -158,3 +158,5 @@ docs/public/ backup/rclone.* webserver/certs/* !webserver/certs/.gitkeep + +psql12.dump.sql diff --git a/src/log/templates/log/list_view.html b/src/log/templates/log/list_view.html new file mode 100644 index 0000000..e2c39b9 --- /dev/null +++ b/src/log/templates/log/list_view.html @@ -0,0 +1,205 @@ +{% extends 'common/base.html' %} {% block styles %} + + +{% endblock styles %} {% block content %} + +{% if error %} +
+ +
+{% endif %} + +{% if not error %} +
+
+
+
+

{{ page_title }}

+
+ {% if loglistpage %} + + {% endif %} + {% if userpage %} + +
+ New Log + +
+ {% endif %} + + +
+
+
+
+ +
+
+ {% if not logs %} +
+
{{ welcomemessage }}
+
{% endif %} + {% for log in logs %} + +
+ +
+ +
+
+
...
+
+ +

{{ log.title }}

+
+ {{ log.short_description }} +
+
+
+
+
+ {% if log.project %} Project: {{ log.project }} {% else %} Personal Log {% endif %} +
+
+ Author: {{ log.user.username }} +
+
{{ log.date_modified }}
+ +
+
+
+ + {% endfor %} + + {% if loglistpage %} +
+

+ {% include 'common/pagination.html' with page=logs %} + {% endif %} + +
+ + +
+{% endif %} +{% endblock content %} {% block scripts %} + +{% if not error %} +{% if not personal %} + +{% endif %} + + +{% endif %} +{% endblock scripts %} \ No newline at end of file diff --git a/src/log/urls.py b/src/log/urls.py index a42f4d3..ad2fa5a 100644 --- a/src/log/urls.py +++ b/src/log/urls.py @@ -8,7 +8,7 @@ path('log//edit', views.logEditView, name='log-edit'), path('log/', views.logListView, name='log-list'), - path('logs/all', views.allLogsView, name='logs-all'), + path('logs/', views.allLogsView, name='logs-all'), path('log/uploadfile', views.fileUploadHandler, name='file-upload'), path('log/delete', views.logDeleteView, name='log-delete'), path('log/bin', views.recBinView, name='log-bin'), diff --git a/src/log/views.py b/src/log/views.py index d9c7f69..c6ece4a 100644 --- a/src/log/views.py +++ b/src/log/views.py @@ -12,6 +12,7 @@ from django.db.models import Q from Crypto.Cipher import AES from Crypto.Util.Padding import pad +import json import re import os from django.views.generic import ( @@ -23,6 +24,7 @@ DeleteView, TemplateView ) +from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import redirect from django.urls import reverse, reverse_lazy from django.contrib.auth.models import User @@ -78,7 +80,7 @@ class LoggerUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView): class LoggerListView(LoginRequiredMixin, UserPassesTestMixin, ListView): """ - Display All Logs from User + Display All Logs from User """ model = Logger template_name = 'log/logger_list.html' @@ -96,14 +98,10 @@ class LoggerUnPublish(LoginRequiredMixin, UserPassesTestMixin, TemplateView): def logCreateView(request): user_teams = request.user.team_set.all() - project_list = [] - - for team in user_teams: - project_list.append(team.project) - + # pass in this list context = { - "projects": project_list, + "teams": user_teams, "files": LogFile.objects.filter(user=request.user), } @@ -275,23 +273,66 @@ def logListView(request): "logs": Logger.objects.filter(user=request.user, project=None).filter(published=True).order_by('-date_created'), "page_title": "Personal logs:", "userpage": True, + "personal": True, "welcomemessage": 'Create your first log by clicking on the "New Log" Button !', } return render(request, 'log/list_view.html', context) @login_required -def allLogsView(request): +def allLogsView(request, id): teams = request.user.team_set.all() projects = Project.objects.filter(team__in=teams) - logs = Logger.objects.filter(project__in=projects).filter(published=True) - context = { - "logs": logs.order_by('-date_created'), - "page_title": "Project logs:", - "userpage": True, - "welcomemessage": 'Create your first log by clicking on the "New Log" Button !', - } + if id == 'all': + logs_list = Logger.objects.filter( + project__in=projects).filter(published=True).order_by('-date_created') + context = { + "projects": projects.order_by('title'), + "page_title": "Project logs:", + "userpage": True, + "loglistpage": True, + "selected": 'all', + "welcomemessage": 'Create your first log by clicking on the "New Log" Button !', + } + else: + try: + id = UUID(id, version=4) + except ValueError: + context = { + "error": "Invalid project ID.", + } + return render(request, 'log/list_view.html', context) + project = projects.filter(id=id) + if not project.exists(): + context = { + "error": "You are not a part of this project.", + } + return render(request, 'log/list_view.html', context) + + logs_list = Logger.objects.filter( + project__in=project).filter(published=True).order_by('-date_created') + context = { + "projects": projects.order_by('title'), + "page_title": "Project logs:", + "userpage": True, + "loglistpage": True, + "selected": project[0].id, + "welcomemessage": 'Create your first log by clicking on the "New Log" Button !', + } + + paginator = Paginator(logs_list, 10) + page = request.GET.get('page') + try: + logs = paginator.page(page) + except PageNotAnInteger: + logs = paginator.page(1) + except EmptyPage: + logs = paginator.page(paginator.num_pages) + + context["logs"] = logs + context["page"] = page + return render(request, 'log/list_view.html', context) diff --git a/src/project/views.py b/src/project/views.py index 74fefda..3f08e9e 100644 --- a/src/project/views.py +++ b/src/project/views.py @@ -172,7 +172,6 @@ def projectListView(request): # add member and log count project.nooflogs = Logger.objects.filter(project=project).count() project.noofteams = project.team_set.all().count() - print(project.noofteams, project.nooflogs) # Limit description length if len(project.description) > 130: diff --git a/src/requirements.txt b/src/requirements.txt index ec8ebd5..dbbd371 100644 --- a/src/requirements.txt +++ b/src/requirements.txt @@ -1,6 +1,6 @@ amqp==1.4.9 anyjson==0.3.3 -asgiref==3.2.7 +asgiref==3.2.10 astroid==2.4.2 autopep8==1.5.2 backcall==0.2.0 @@ -9,7 +9,7 @@ celery==3.1.26.post2 certifi==2020.11.8 cffi==1.14.0 decorator==4.4.2 -Django==3.0.7 +Django==3.1.6 django-appconf==1.0.4 django-celery==3.3.1 django-contrib-comments==1.9.2 @@ -18,7 +18,7 @@ django-debug-toolbar==2.2 django-extensions==2.2.9 django-formtools==2.2 django-imagekit==4.0.2 -djangorestframework==3.11.1 +djangorestframework==3.11.2 djecrety==1.0.13 ipython==7.15.0 ipython-genutils==0.2.0 @@ -31,7 +31,7 @@ parso==0.7.0 pexpect==4.8.0 pickleshare==0.7.5 pilkit==2.0 -Pillow==7.1.2 +Pillow==8.1.1 prompt-toolkit==3.0.5 ptyprocess==0.6.0 pycodestyle==2.6.0 @@ -46,6 +46,6 @@ six==1.15.0 sqlparse==0.3.1 toml==0.10.1 traitlets==4.3.3 -urllib3==1.26.2 +urllib3==1.26.3 wcwidth==0.2.4 wrapt==1.12.1 diff --git a/src/templates/common/base.html b/src/templates/common/base.html index 0f49e1c..f2eb88f 100644 --- a/src/templates/common/base.html +++ b/src/templates/common/base.html @@ -258,8 +258,7 @@

Please switch to a pc, or maximize the window.

- - + diff --git a/src/templates/common/pagination.html b/src/templates/common/pagination.html new file mode 100644 index 0000000..74d27a8 --- /dev/null +++ b/src/templates/common/pagination.html @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/src/templates/components/common/sidebar.html b/src/templates/components/common/sidebar.html index 6052e42..2de4b46 100644 --- a/src/templates/components/common/sidebar.html +++ b/src/templates/components/common/sidebar.html @@ -7,13 +7,13 @@ {% endcomment %} - + @@ -71,7 +71,7 @@
Projects
- +
- +{% endif %} {% endblock content %} {% block scripts %} - +{% if not error %} + {% if not personal %} + + {% endif %} + +{% endif %} {% endblock scripts %} \ No newline at end of file diff --git a/src/templates/log/view_log.html b/src/templates/log/view_log.html index 8706bb8..f857438 100644 --- a/src/templates/log/view_log.html +++ b/src/templates/log/view_log.html @@ -65,8 +65,8 @@

{{ log.date_modified }}
-

- {{log.note}} +

+ {{log.note}}

@@ -181,12 +181,15 @@ {% endblock content %} {% block scripts %} - - + +