diff --git a/calendar.html b/calendar.html new file mode 100644 index 0000000..2c4186c --- /dev/null +++ b/calendar.html @@ -0,0 +1,85 @@ + + + + + + Eversync + {% load static %} + + + + + + + +
+
+ Eversync Logo + + +
+
+

Calendar

+
+
+
+ + + + + \ No newline at end of file diff --git a/eversyncc/migrations/0004_event.py b/eversyncc/migrations/0004_event.py new file mode 100644 index 0000000..746f09a --- /dev/null +++ b/eversyncc/migrations/0004_event.py @@ -0,0 +1,27 @@ +# Generated by Django 5.2 on 2025-05-08 22:42 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('eversyncc', '0003_alter_document_file'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Event', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=200)), + ('description', models.TextField(blank=True)), + ('start_time', models.DateTimeField()), + ('end_time', models.DateTimeField()), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/eversyncc/models.py b/eversyncc/models.py index 0c4b97d..05d8bba 100644 --- a/eversyncc/models.py +++ b/eversyncc/models.py @@ -10,3 +10,13 @@ class Document(models.Model): def __str__(self): return self.title + +class Event(models.Model): + title = models.CharField(max_length=200) + description = models.TextField(blank=True) + start_time = models.DateTimeField() + end_time = models.DateTimeField() + user = models.ForeignKey(User, on_delete=models.CASCADE) + + def __str__(self): + return self.title diff --git a/eversyncc/urls.py b/eversyncc/urls.py index 66b51d4..0284b85 100644 --- a/eversyncc/urls.py +++ b/eversyncc/urls.py @@ -1,6 +1,6 @@ from django.urls import path from . import views -from .views import RedirectFromLogin, upload_file, file_list, delete_file +from .views import RedirectFromLogin, upload_file, file_list, delete_file, calendar from django.conf import settings from django.conf.urls.static import static @@ -16,7 +16,8 @@ urlpatterns = [ path("accounts/login/", RedirectFromLogin.as_view(), name="login"), path('upload/', upload_file, name='upload_file'), path('file_list/', file_list, name='file_list'), - path('delete_file/', delete_file, name='delete_file') + path('delete_file/', delete_file, name='delete_file'), + path('calendar/', calendar, name="calendar") ] if settings.DEBUG: diff --git a/eversyncc/views.py b/eversyncc/views.py index bd08c01..96d186b 100644 --- a/eversyncc/views.py +++ b/eversyncc/views.py @@ -7,7 +7,7 @@ from django.contrib.auth import logout from django.contrib.auth.models import User from django.contrib.auth.views import PasswordChangeView from .forms import UsernameChangeForm, DocumentForm -from .models import Document +from .models import Document, Event from django.contrib import messages from allauth.account.views import LoginView as AllauthLoginView import os @@ -121,4 +121,17 @@ def delete_file(request, file_id): os.remove(file_path) return JsonResponse({'message' : 'Success.'}) except Document.DoesNotExist: - return JsonResponse({'error': 'Error.'}, status=404) \ No newline at end of file + return JsonResponse({'error': 'Error.'}, status=404) + +@login_required +def calendar(request): + events = Event.objects.filter(user=request.user) + events_data = [ + { + "title": event.title, + "start": event.start_time.isoformat(), + "end": event.end_time.isoformat(), + } + for event in events + ] + return render(request, 'calendar.html', {'events_data': events_data}) \ No newline at end of file