Skip to content

Commit

Permalink
debug support and account
Browse files Browse the repository at this point in the history
OleksandrPodynihlazov committed Dec 2, 2024
1 parent 7645308 commit 3f2b019
Showing 14 changed files with 22 additions and 120 deletions.
2 changes: 1 addition & 1 deletion accounts/models.py
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ class Profile(models.Model):
on_delete=models.CASCADE,
related_name='profile'
)
# Додайте інші поля для профілю, якщо потрібно


def __str__(self):
return f"{self.user.username}'s profile"
4 changes: 1 addition & 3 deletions accounts/signals.py
Original file line number Diff line number Diff line change
@@ -5,12 +5,10 @@
@receiver(post_save, sender=CustomUser)
def create_or_update_user_profile(sender, instance, created, **kwargs):
if created:
# Створюємо профіль для нового користувача
Profile.objects.create(user=instance)
else:
# Зберігаємо профіль, якщо користувач оновлений
instance.profile.save()

@receiver(post_save, sender=CustomUser)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
13 changes: 0 additions & 13 deletions accounts/templates/registration/password_reset_form.html

This file was deleted.

14 changes: 7 additions & 7 deletions accounts/views.py
Original file line number Diff line number Diff line change
@@ -23,22 +23,22 @@ def form_valid(self, form):
return response # Redirect to success URL

def edit_profile(request):
user = request.user # Тепер ми редагуємо дані користувача
user = request.user
if request.method == 'POST':
form = UserProfileForm(request.POST, request.FILES, instance=user) # Передаємо користувача
form = UserProfileForm(request.POST, request.FILES, instance=user)
if form.is_valid():
form.save() # Зберігаємо зміни в CustomUser
return redirect('accounts:profile') # Після збереження редірект на профіль
form.save()
return redirect('accounts:profile')
else:
# Якщо форма не валідна, вивести помилки

print(form.errors)
else:
form = UserProfileForm(instance=user) # Завантажуємо форму з даними користувача
form = UserProfileForm(instance=user)

return render(request, 'accounts/edit_profile.html', {'form': form})

def profile_view(request):
profile = request.user.profile # Тепер це працює
profile = request.user.profile
return render(request, 'accounts/profile.html', {'profile': profile})


15 changes: 7 additions & 8 deletions support/models.py
Original file line number Diff line number Diff line change
@@ -2,18 +2,17 @@
from django.conf import settings

class Chat(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) # Користувач, який звертається в техпідтримку
created_at = models.DateTimeField(auto_now_add=True) # Час створення чату
is_active = models.BooleanField(default=True) # Активний чат
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)

def __str__(self):
return f"Chat with {self.user.username}"

class Message(models.Model):
chat = models.ForeignKey(Chat, on_delete=models.CASCADE, related_name="messages") # Чат, до якого належить повідомлення
sender = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) # Відправник повідомлення
content = models.TextField() # Вміст повідомлення
created_at = models.DateTimeField(auto_now_add=True) # Час створення повідомлення

chat = models.ForeignKey(Chat, on_delete=models.CASCADE, related_name="messages")
sender = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f"Message from {self.sender.username} on {self.created_at}"
1 change: 0 additions & 1 deletion support/templates/support/admin_chat_detail.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<!-- support/templates/support/admin_chat_detail.html -->
{% extends 'base.html' %}

{% block content %}
18 changes: 0 additions & 18 deletions support/templates/support/admin_reply_chat.html

This file was deleted.

6 changes: 1 addition & 5 deletions support/urls.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
from django.urls import path
from .views import user_chat_view, admin_chat_view, admin_reply_chat,admin_chat_detail,admin_chat_list
from .views import user_chat_view

app_name = 'support'

urlpatterns = [
path('chat/', user_chat_view, name='user_chat'),
path('admin/chat/', admin_chat_view, name='admin_chat_view'),
path('admin/chat/<int:chat_id>/', admin_reply_chat, name='admin_reply_chat'),
path('', admin_chat_list, name='admin_chat_list'),
path('<int:chat_id>/', admin_chat_detail, name='admin_chat_detail'),
]
66 changes: 4 additions & 62 deletions support/views.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required,user_passes_test
from django.contrib.auth.decorators import login_required, user_passes_test
from .models import Chat, Message
from .forms import MessageForm

# View for user to interact with their chat
@login_required
def user_chat_view(request):
chat, created = Chat.objects.get_or_create(user=request.user, is_active=True)

@@ -13,69 +15,9 @@ def user_chat_view(request):
message.chat = chat
message.sender = request.user
message.save()
return redirect('support:user_chat') # Перезавантажуємо чат після відправлення повідомлення
return redirect('support:user_chat')
else:
form = MessageForm()

messages = Message.objects.filter(chat=chat).order_by('created_at')

return render(request, 'support/user_chat.html', {'chat': chat, 'form': form, 'messages': messages})

def admin_chat_view(request):
chats = Chat.objects.filter(is_active=True)

return render(request, 'support/admin_chat_list.html', {'chats': chats})

@login_required
def admin_chat_view(request):
chats = Chat.objects.filter(is_active=True)

return render(request, 'support/admin_chat_list.html', {'chats': chats})
def is_admin(user):
return user.is_superuser

# Перегляд всіх чатів адміністратором
@login_required
@user_passes_test(is_admin)
def admin_chat_list(request):
chats = Chat.objects.all() # Отримуємо всі чати
return render(request, 'support/admin_chat_list.html', {'chats': chats})

# Перегляд конкретного чату
@login_required
@user_passes_test(is_admin)
def admin_chat_detail(request, chat_id):
chat = Chat.objects.get(id=chat_id)
messages = chat.messages.all() # Отримуємо всі повідомлення для цього чату

if request.method == 'POST':
message_content = request.POST.get('message') # Отримуємо текст відповіді
if message_content:
# Створюємо нове повідомлення від адміністратора
Message.objects.create(
chat=chat,
sender=request.user,
content=message_content
)

return render(request, 'support/admin_chat_detail.html', {
'chat': chat,
'messages': messages
})

@login_required
def admin_reply_chat(request, chat_id):
chat = Chat.objects.get(id=chat_id)
if request.method == 'POST':
form = MessageForm(request.POST)
if form.is_valid():
message = form.save(commit=False)
message.chat = chat
message.sender = request.user # Відправник - адміністратор
message.save()
return redirect('support:admin_chat_view') # Переходимо до списку чатів

form = MessageForm()
messages = Message.objects.filter(chat=chat).order_by('created_at')

return render(request, 'support/admin_reply_chat.html', {'chat': chat, 'form': form, 'messages': messages})
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ <h1 class="my_title text-center">Password Changed</h1>
<div class="col-9 col-sm-9 col-md-6 col-lg-5 mx-auto bg-light">
<br />
<p>Your password has been updated successfully. You can now use your new password to log in.</p>
<a href="{% url 'home' %}" class="btn btn-secondary btn-block">Return to Home</a>
<a href="{% url 'shop:cat_list' %}" class="btn btn-secondary btn-block">Return to Home</a>
<br />
</div>
</div>
Original file line number Diff line number Diff line change
@@ -23,7 +23,6 @@ <h1 class="my_title text-center">Change Password</h1>
</button>
</form>
<br />
<!-- Forgot Password Button -->
<p class="text-center">
<a href="{% url 'password_reset' %}" class="btn btn-link">
Forgot Password?

0 comments on commit 3f2b019

Please sign in to comment.