Solving the issues in the login and others

This commit is contained in:
Vivek P Prakash
2025-11-28 16:03:23 +05:30
parent fabd36cf3f
commit c4d7d4f6bf
7 changed files with 461 additions and 211 deletions

315
.idea/workspace.xml generated
View File

@@ -2,23 +2,12 @@
<project version="4">
<component name="ChangeListManager">
<list default="true" id="a0020f0b-7bf3-4cde-a27d-39657ebd0286" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/templates/events/event_images_form.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/templates/events/event_images_list.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/templates/events/example.html" afterDir="false" />
<change afterPath="$PROJECT_DIR$/templatetags/__init__.py" afterDir="false" />
<change afterPath="$PROJECT_DIR$/templatetags/form_filters.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/accounts/forms.py" beforeDir="false" afterPath="$PROJECT_DIR$/accounts/forms.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/events/forms.py" beforeDir="false" afterPath="$PROJECT_DIR$/events/forms.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/events/models.py" beforeDir="false" afterPath="$PROJECT_DIR$/events/models.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/events/urls.py" beforeDir="false" afterPath="$PROJECT_DIR$/events/urls.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/events/views.py" beforeDir="false" afterPath="$PROJECT_DIR$/events/views.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/master_data/forms.py" beforeDir="false" afterPath="$PROJECT_DIR$/master_data/forms.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/accounts/views.py" beforeDir="false" afterPath="$PROJECT_DIR$/accounts/views.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/eventify/settings.py" beforeDir="false" afterPath="$PROJECT_DIR$/eventify/settings.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/eventify/urls.py" beforeDir="false" afterPath="$PROJECT_DIR$/eventify/urls.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/accounts/login.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/accounts/login.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/accounts/user_form.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/accounts/user_form.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/events/event_form.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/events/event_form.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/templates/master_data/event_type_form.html" beforeDir="false" afterPath="$PROJECT_DIR$/templates/master_data/event_type_form.html" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
@@ -27,12 +16,12 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/accounts/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="41" lean-forward="true" selection-start-line="41" selection-end-line="41" />
<state relative-caret-position="-40">
<caret line="13" column="38" lean-forward="true" selection-start-line="13" selection-start-column="38" selection-end-line="13" selection-end-column="38" />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
@@ -40,11 +29,22 @@
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/accounts/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/eventify/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="140">
<caret line="7" column="28" selection-start-line="7" selection-start-column="28" selection-end-line="7" selection-end-column="28" />
<state relative-caret-position="220">
<caret line="11" column="27" selection-start-line="11" selection-start-column="27" selection-end-line="11" selection-end-column="27" />
<folding>
<element signature="e#0#32#0" expanded="true" />
</folding>
@@ -55,64 +55,17 @@
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templates/accounts/login.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="12" column="26" lean-forward="true" selection-end-line="41" />
<state relative-caret-position="300">
<caret line="54" lean-forward="true" selection-start-line="54" selection-end-line="54" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templatetags/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/templatetags/form_filters.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="5" column="42" selection-start-line="5" selection-start-column="42" selection-end-line="5" selection-end-column="42" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/events/views.py">
<entry file="file://$PROJECT_DIR$/accounts/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="200">
<caret line="86" column="44" lean-forward="true" selection-start-line="86" selection-start-column="44" selection-end-line="86" selection-end-column="44" />
<folding>
<element signature="e#0#32#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/events/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="9" column="83" selection-start-line="9" selection-start-column="83" selection-end-line="9" selection-end-column="83" />
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templates/events/event_images_form.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="34" column="14" lean-forward="true" selection-start-line="34" selection-start-column="14" selection-end-line="34" selection-end-column="14" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/events/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="213">
<caret line="35" column="15" selection-start-line="35" selection-start-column="15" selection-end-line="35" selection-end-column="15" />
<caret line="20" column="5" lean-forward="true" selection-start-line="20" selection-start-column="5" selection-end-line="20" selection-end-column="5" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
@@ -121,10 +74,45 @@
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/templates/events/event_images_list.html">
<entry file="file://$PROJECT_DIR$/templatetags/form_filters.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="200">
<caret line="10" lean-forward="true" selection-start-line="10" selection-end-line="10" />
<state relative-caret-position="160">
<caret line="8" selection-start-line="8" selection-end-line="8" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/eventify/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="220">
<caret line="14" column="6" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
<folding>
<element signature="e#0#9#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/eventify/wsgi.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#9#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/events/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="660">
<caret line="35" column="15" selection-start-line="35" selection-start-column="15" selection-end-line="35" selection-end-column="15" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -151,15 +139,18 @@
<option value="$PROJECT_DIR$/master_data/forms.py" />
<option value="$PROJECT_DIR$/templates/master_data/event_type_form.html" />
<option value="$PROJECT_DIR$/templates/accounts/user_form.html" />
<option value="$PROJECT_DIR$/accounts/forms.py" />
<option value="$PROJECT_DIR$/templates/events/event_images_form.html" />
<option value="$PROJECT_DIR$/templates/events/event_images_list.html" />
<option value="$PROJECT_DIR$/events/urls.py" />
<option value="$PROJECT_DIR$/events/views.py" />
<option value="$PROJECT_DIR$/events/forms.py" />
<option value="$PROJECT_DIR$/templates/accounts/login.html" />
<option value="$PROJECT_DIR$/templatetags/__init__.py" />
<option value="$PROJECT_DIR$/templatetags/form_filters.py" />
<option value="$PROJECT_DIR$/eventify/urls.py" />
<option value="$PROJECT_DIR$/accounts/forms.py" />
<option value="$PROJECT_DIR$/accounts/views.py" />
<option value="$PROJECT_DIR$/templates/accounts/login.html" />
<option value="$PROJECT_DIR$/eventify/settings.py" />
</list>
</option>
</component>
@@ -186,7 +177,17 @@
<path>
<item name="eventify_prod" type="b2602c69:ProjectViewProjectNode" />
<item name="eventify_prod" type="462c0819:PsiDirectoryNode" />
<item name="templatetags" type="462c0819:PsiDirectoryNode" />
<item name="accounts" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="eventify_prod" type="b2602c69:ProjectViewProjectNode" />
<item name="eventify_prod" type="462c0819:PsiDirectoryNode" />
<item name="eventify" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="eventify_prod" type="b2602c69:ProjectViewProjectNode" />
<item name="eventify_prod" type="462c0819:PsiDirectoryNode" />
<item name="templates" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
@@ -249,25 +250,28 @@
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1764194364815</updated>
<workItem from="1764194366807" duration="9826000" />
<workItem from="1764194366807" duration="12589000" />
<workItem from="1764319665186" duration="1141000" />
</task>
<task id="LOCAL-00001" summary="Changes in the settings for the deployment">
<created>1764280838609</created>
<option name="number" value="00001" />
<option name="presentableId" value="LOCAL-00001" />
<option name="project" value="LOCAL" />
<updated>1764280838609</updated>
</task>
<option name="localTasksCounter" value="2" />
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="9826000" />
<option name="totallyTimeSpent" value="13730000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1382" height="744" extended-state="6" />
<layout>
<window_info id="Favorites" side_tool="true" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.24962178" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.25416037" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
<window_info anchor="bottom" id="Database Changes" />
<window_info anchor="bottom" id="Version Control" />
<window_info anchor="bottom" id="Python Console" />
<window_info active="true" anchor="bottom" id="Terminal" visible="true" weight="0.354201" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" weight="0.32840723" />
<window_info anchor="bottom" id="Run" order="2" />
@@ -275,23 +279,30 @@
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="SciView" />
<window_info anchor="right" id="Database" />
<window_info anchor="bottom" id="Docker" order="7" show_stripe_button="false" />
<window_info anchor="bottom" id="Version Control" order="8" />
<window_info anchor="bottom" id="Database Changes" order="9" />
<window_info anchor="bottom" id="Event Log" order="10" side_tool="true" />
<window_info active="true" anchor="bottom" id="Terminal" order="11" visible="true" weight="0.354201" />
<window_info anchor="bottom" id="Python Console" order="12" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
<window_info anchor="right" id="SciView" order="3" />
<window_info anchor="right" id="Database" order="4" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="Changes in the settings for the deployment" />
<option name="LAST_COMMIT_MESSAGE" value="Changes in the settings for the deployment" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/.env.example">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/requirements.txt">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/.gitignore">
<provider selected="true" editor-type-id="text-editor" />
</entry>
@@ -322,22 +333,6 @@
<entry file="file://$PROJECT_DIR$/master_data/models.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/templates/base.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="220">
<caret line="11" column="67" selection-start-line="11" selection-start-column="67" selection-end-line="11" selection-end-column="67" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/accounts/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/master_data/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="160">
@@ -434,16 +429,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/accounts/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="320">
<caret line="28" selection-start-line="28" selection-end-line="28" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/accounts/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="20">
@@ -454,15 +439,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/eventify/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#9#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/events/models.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="80">
@@ -507,9 +483,45 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/requirements_1.txt">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/templates/base.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="540">
<caret line="27" column="90" selection-start-line="27" selection-start-column="90" selection-end-line="27" selection-end-column="90" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/requirements.txt">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="40">
<caret line="2" selection-start-line="2" selection-end-line="2" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templatetags/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/templatetags/form_filters.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="160">
<caret line="8" selection-start-line="8" selection-end-line="8" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/eventify/wsgi.py">
<provider selected="true" editor-type-id="text-editor">
<state>
<folding>
<element signature="e#0#9#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/events/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="213">
<state relative-caret-position="660">
<caret line="35" column="15" selection-start-line="35" selection-start-column="15" selection-end-line="35" selection-end-column="15" />
<folding>
<element signature="e#0#24#0" expanded="true" />
@@ -517,12 +529,11 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/accounts/views.py">
<entry file="file://$PROJECT_DIR$/accounts/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="460">
<caret line="41" lean-forward="true" selection-start-line="41" selection-end-line="41" />
<state>
<folding>
<element signature="e#0#35#0" expanded="true" />
<element signature="e#0#28#0" expanded="true" />
</folding>
</state>
</provider>
@@ -536,28 +547,48 @@
</entry>
<entry file="file://$PROJECT_DIR$/eventify/urls.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="140">
<caret line="7" column="28" selection-start-line="7" selection-start-column="28" selection-end-line="7" selection-end-column="28" />
<state relative-caret-position="220">
<caret line="11" column="27" selection-start-line="11" selection-start-column="27" selection-end-line="11" selection-end-column="27" />
<folding>
<element signature="e#0#32#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templates/accounts/login.html">
<entry file="file://$PROJECT_DIR$/accounts/forms.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="240">
<caret line="12" column="26" lean-forward="true" selection-end-line="41" />
<state relative-caret-position="200">
<caret line="20" column="5" lean-forward="true" selection-start-line="20" selection-start-column="5" selection-end-line="20" selection-end-column="5" />
<folding>
<element signature="e#0#24#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templatetags/__init__.py">
<provider selected="true" editor-type-id="text-editor" />
</entry>
<entry file="file://$PROJECT_DIR$/templatetags/form_filters.py">
<entry file="file://$PROJECT_DIR$/accounts/views.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="100">
<caret line="5" column="42" selection-start-line="5" selection-start-column="42" selection-end-line="5" selection-end-column="42" />
<state relative-caret-position="-40">
<caret line="13" column="38" lean-forward="true" selection-start-line="13" selection-start-column="38" selection-end-line="13" selection-end-column="38" />
<folding>
<element signature="e#0#35#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/templates/accounts/login.html">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="300">
<caret line="54" lean-forward="true" selection-start-line="54" selection-end-line="54" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/eventify/settings.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="220">
<caret line="14" column="6" selection-start-line="14" selection-start-column="6" selection-end-line="14" selection-end-column="6" />
<folding>
<element signature="e#0#9#0" expanded="true" />
</folding>
</state>
</provider>
</entry>

View File

@@ -2,31 +2,26 @@ from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.forms import AuthenticationForm
from .models import User
from django import forms
class UserForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'email', 'phone_number', 'role',
'is_staff', 'is_customer', 'is_user')
widgets = {
'username': forms.TextInput(attrs={'class': 'form-control form-control-sm'}),
'email': forms.EmailInput(attrs={'class': 'form-control form-control-sm'}),
'phone_number': forms.TextInput(attrs={'class': 'form-control form-control-sm'}),
'role': forms.Select(attrs={'class': 'form-select form-select-sm'}),
'is_staff': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
'is_customer': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
'is_user': forms.CheckboxInput(attrs={'class': 'form-check-input'}),
}
class UserForm(AuthenticationForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Apply bootstrap small styling to password fields
self.fields['password1'].widget.attrs.update({'class': 'form-control form-control-sm'})
self.fields['password2'].widget.attrs.update({'class': 'form-control form-control-sm'})
for field in self.fields.values():
field.widget.attrs.update({"class": "form-control"})
class LoginForm(AuthenticationForm):
pass
username = forms.CharField(
widget=forms.TextInput(attrs={
"class": "form-control",
"placeholder": "Enter username"
})
)
password = forms.CharField(
widget=forms.PasswordInput(attrs={
"class": "form-control",
"placeholder": "Enter password"
})
)

View File

@@ -3,10 +3,16 @@ from django.views import generic
from django.urls import reverse_lazy
from django.contrib.auth.mixins import LoginRequiredMixin
from .models import User
from .forms import LoginForm
from .forms import UserForm
from events.models import Event
from master_data.models import EventType
from django.contrib.auth import authenticate, login, logout
from django.shortcuts import redirect
from django.contrib import messages
def dashboard(request):
total_events = Event.objects.count()
total_categories = EventType.objects.count()
@@ -17,25 +23,51 @@ def dashboard(request):
'total_users': total_users,
})
class UserListView(LoginRequiredMixin, generic.ListView):
model = User
template_name = 'accounts/user_list.html'
context_object_name = 'users'
paginate_by = 20
class UserCreateView(LoginRequiredMixin, generic.CreateView):
model = User
form_class = UserForm
template_name = 'accounts/user_form.html'
success_url = reverse_lazy('accounts:user_list')
class UserUpdateView(LoginRequiredMixin, generic.UpdateView):
model = User
form_class = UserForm
template_name = 'accounts/user_form.html'
success_url = reverse_lazy('accounts:user_list')
class UserDeleteView(LoginRequiredMixin, generic.DeleteView):
model = User
template_name = 'accounts/user_confirm_delete.html'
success_url = reverse_lazy('accounts:user_list')
def login_view(request):
if request.user.is_authenticated:
return redirect("home") # Redirect authenticated user
form = LoginForm(request, data=request.POST or None)
if request.method == "POST":
if form.is_valid():
user = form.get_user()
login(request, user)
return redirect("dashboard")
else:
messages.error(request, "Invalid username or password")
return render(request, "accounts/login.html", {"form": form})
def logout_view(request):
logout(request)
return redirect("login")

View File

@@ -9,11 +9,10 @@ SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', 'change-me-in-production')
#
# ALLOWED_HOSTS = os.environ.get('DJANGO_ALLOWED_HOSTS', '*').split(',')
DEBUG = False
DEBUG = True
ALLOWED_HOSTS = [
'216.48.180.218',
'uat.eventify.com'
'*'
]
INSTALLED_APPS = [

View File

@@ -2,11 +2,15 @@ from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
from accounts.views import dashboard
from accounts.views import login_view
from accounts.views import logout_view
urlpatterns = [
path('admin/', admin.site.urls),
path('', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
# path('', auth_views.LoginView.as_view(template_name='accounts/login.html'), name='login'),
# path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path("", login_view, name="login"),
path("logout/", logout_view, name="logout"),
path('dashboard/', dashboard, name='dashboard'),
path('master-data/', include('master_data.urls')),

189
requirements_1.txt Normal file
View File

@@ -0,0 +1,189 @@
2to3==1.0
aiohappyeyeballs==2.4.4
aiohttp==3.10.11
aiosignal==1.3.1
annotated-types==0.7.0
anyio==4.0.0
appdirs==1.4.4
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asgiref==3.8.1
asttokens==2.4.0
async-lru==2.0.4
async-timeout==5.0.1
attrs==23.1.0
autobahn==22.7.1
Automat==22.10.0
Babel==2.13.0
backcall==0.2.0
backports.zoneinfo==0.2.1
beautifulsoup4==4.12.2
bleach==6.1.0
bs4==0.0.1
cachetools==4.2.2
cbor2==5.4.3
certifi==2023.11.17
cffi==1.14.5
channels==4.2.2
chardet==4.0.0
charset-normalizer==3.3.2
click==8.1.8
colorama==0.4.6
comm==0.1.4
constantly==15.1.0
cryptography==3.4.7
debugpy==1.8.0
decorator==5.1.1
defusedxml==0.7.1
distlib==0.3.1
Django==4.2.21
django-cors-headers==4.3.0
django-extensions==3.2.3
django-mssql==1.8
django-pyodbc-azure==1.2.5
djangorestframework==3.14.0
docopt==0.6.2
docx2python==3.0.0
enma==1.0
et-xmlfile==1.1.0
exceptiongroup==1.1.3
executing==2.0.0
fastapi==0.115.12
fastjsonschema==2.18.1
filelock==3.0.12
flatbuffers==22.10.26
fqdn==1.5.1
frozenlist==1.5.0
google-api-core==1.26.3
google-api-python-client==2.2.0
google-auth==1.30.0
google-auth-httplib2==0.1.0
googleapis-common-protos==1.53.0
greenlet==3.1.1
h11==0.16.0
httplib2==0.19.1
hyperlink==21.0.0
idna==3.6
importlib-metadata==6.8.0
importlib-resources==6.1.0
incremental==22.10.0
ipykernel==6.25.2
ipython==8.12.3
isoduration==20.11.0
jedi==0.19.1
Jinja2==3.1.2
json5==0.9.14
jsonpointer==2.4
jsonschema==4.19.1
jsonschema-specifications==2023.7.1
jupyter-events==0.7.0
jupyter-lsp==2.2.0
jupyter_client==8.3.1
jupyter_core==5.3.2
jupyter_server==2.7.3
jupyter_server_terminals==0.4.4
jupyterlab==4.0.6
jupyterlab-pygments==0.2.2
jupyterlab_server==2.25.0
lxml==5.2.2
MarkupSafe==2.1.3
matplotlib-inline==0.1.6
mistune==3.0.2
msgpack==1.0.4
mssql-django==1.3
multidict==6.1.0
nbclient==0.8.0
nbconvert==7.16.6
nbformat==5.9.2
nest-asyncio==1.5.8
notebook==7.0.4
notebook_shim==0.2.3
numpy==1.21.2
openpyxl==3.1.2
overrides==7.4.0
packaging==23.2
pandas==1.3.3
pandocfilters==1.5.0
paragraphs==0.2.1
parso==0.8.3
pdfkit==1.0.0
pickleshare==0.7.5
Pillow==10.1.0
pipreqs==0.5.0
pkgutil_resolve_name==1.3.10
platformdirs==3.11.0
prometheus-client==0.17.1
prompt-toolkit==3.0.39
propcache==0.2.0
protobuf==3.15.8
psutil==5.9.5
psycopg2-binary==2.9.9
pure-eval==0.2.2
py-ubjson==0.16.1
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycparser==2.20
pycryptodome==3.9.8
pydantic==2.10.6
pydantic_core==2.27.2
Pygments==2.16.1
pymssql==2.2.10
pyodbc==5.0.1
pyOpenSSL==20.0.1
pyparsing==2.4.7
PyPDF2==3.0.1
python-dateutil==2.8.2
python-docx==1.1.2
python-google-calendar-api==0.5
python-json-logger==2.0.7
python-snappy==0.6.1
pytz==2023.3.post1
pywin32==306
pywinpty==2.0.12
PyYAML==6.0.1
pyzmq==25.1.1
referencing==0.30.2
reportlab==4.0.6
requests==2.31.0
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rpds-py==0.10.4
rsa==4.6
Send2Trash==1.8.2
six==1.15.0
sniffio==1.3.0
soupsieve==2.5
SQLAlchemy==2.0.41
sqlmodel==0.0.24
sqlparse==0.4.4
stack-data==0.6.3
starlette==0.44.0
terminado==0.17.1
tinycss2==1.2.1
tomli==2.0.1
tornado==6.3.3
traitlets==5.11.2
Twisted==22.10.0
twisted-iocpsupport==1.0.2
txaio==22.2.1
types-python-dateutil==2.8.19.14
typing_extensions==4.12.2
tzdata==2025.2
ujson==5.5.0
uri-template==1.3.0
uritemplate==3.0.1
urllib3==2.1.0
uvicorn==0.33.0
virtualenv==20.0.31
wcwidth==0.2.8
webcolors==1.13
webencodings==0.5.1
websocket-client==1.6.3
websockets==13.1
WMI==1.5.1
xlwt==1.3.0
yarg==0.1.9
yarl==1.15.2
zipp==3.17.0
zope.interface==5.5.0

View File

@@ -1,54 +1,54 @@
{% extends 'base.html' %}
{% block content %}
{% load static %}
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css"
rel="stylesheet">
</head>
<div class="row justify-content-center mt-5">
<body class="bg-light">
<div class="container d-flex justify-content-center mt-5">
<div class="col-md-4">
<div class="card shadow-sm border-0 rounded-3">
<div class="card-body p-4">
<div class="card shadow-sm p-4">
<h3 class="text-center mb-4">Login</h3>
<h4 class="text-center mb-3">Login</h4>
{% if messages %}
{% for message in messages %}
<div class="alert alert-danger py-2">{{ message }}</div>
{% endfor %}
{% endif %}
<form method="post" novalidate>
{% csrf_token %}
{{ form.non_field_errors }}
<!-- Username field -->
<div class="mb-3">
<label class="form-label">{{ form.username.label }}</label>
<input
type="text"
name="{{ form.username.name }}"
value="{{ form.username.value|default:'' }}"
class="form-control"
placeholder="Enter username"
required
>
{{ form.username.errors }}
{{ form.username.label_tag }}
{{ form.username }}
{% for error in form.username.errors %}
<small class="text-danger">{{ error }}</small>
{% endfor %}
</div>
<!-- Password field -->
<div class="mb-3">
<label class="form-label">{{ form.password.label }}</label>
<input
type="password"
name="{{ form.password.name }}"
class="form-control"
placeholder="Enter password"
required
>
{{ form.password.errors }}
{{ form.password.label_tag }}
{{ form.password }}
{% for error in form.password.errors %}
<small class="text-danger">{{ error }}</small>
{% endfor %}
</div>
<button type="submit" class="btn btn-primary w-100">
Login
</button>
<button class="btn btn-primary w-100">Login</button>
</form>
</div>
</div>
</div>
</div>
{% endblock %}
</body>
</html>