Vex0on / Ticket-Reservation-System

I Can't Code
http://vexon.pythonanywhere.com
MIT License
0 stars 1 forks source link

Fixy po merge front_back #4

Closed Vex0on closed 1 year ago

Vex0on commented 1 year ago

Błędy zgłoszone przez @kacperwadecki :

  1. Kontakt się wywala
  2. Reklamacja się nie pojawia jak ktoś jest zalogowany
  3. Panel Manager: a) podczas usuwania zmiany z listy zmian (przy zatwierdzaniu), pojawia się komunikat że usuwasz np "2 zmiane". Przydałoby się więcej informacji.
  4. Panel Ksiegowa: a) bilans nie dziala
  5. Opcja kupna biletu jest dostepna nawet jak nikt nie jest zalogowany, a po drugie nawet jak sie zaloguje to nic się nie dodaje XD

Wszystko jest do sprawdzenia i do fixa.

Vex0on commented 1 year ago

Ad 1. Boty zaspamowały maila i zablokowały konto, trzeba odkryć jak to naprawić i uniknąć ponownego spamu

image

Vex0on commented 1 year ago
  1. Panel Ksiegowa: a) bilans nie dziala

Bilans już działa + dodałem walidację, że można wpisywać datę jedynie w formacie (YYYY-MM-DD), a w innym przypadku wyskakuje komunikat.

class TicketCheckForm(forms.Form):
    date_field = forms.DateField(widget=forms.DateInput, label='Data (yyyy-mm-dd)')

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        date_regex = r'^\d{4}-\d{2}-\d{2}$'
        self.fields['date_field'].validators.append(
            RegexValidator(date_regex, 'Wprowadź datę w formacie yyyy-mm-dd')
        )
@login_required(login_url='login')
@allowed_users(allowed_roles=['accountant', 'admin'])
def accountant_result(request):
    form = TicketCheckForm(request.POST or None)
    tickets_sum = 0
    tickets = []
    if request.method == 'POST':
        if form.is_valid():
            date = form.cleaned_data.get('date_field')
            tickets = Ticket.objects.filter(dateOfPurchase__date=date)
            for ticket in tickets:
                tickets_sum += float(ticket.price.split("zł")[0])
            tickets_sum = round(tickets_sum, 2)
    context = {'form': form, 'tickets_sum': tickets_sum}
    return render(request, 'App/subpages/accountant/accountant_result.html', context)
  1. Reklamacja się nie pojawia jak ktoś jest zalogowany

  2. Opcja kupna biletu jest dostepna nawet jak nikt nie jest zalogowany, a po drugie nawet jak sie zaloguje to nic się nie dodaje XD

Ktoś wypchnął swoją bazę na brancha. Zaktualizowałem ją i nadałem poprawnie uprawnienia, teraz już wszystko działa

Vex0on commented 1 year ago
  1. Kontakt się wywala

LOKALNIE

Problem, rozwiązany. Lokalnie maile z kontaktu przychodzą na mailhoga. Kod:

from dotenv import load_dotenv

load_dotenv()

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025
EMAIL_USE_TLS = False

I widok:

def homePage(request):
    if request.method == "POST":
        form = ContactForm(request.POST)
        if form.is_valid():
            name = form.cleaned_data['name']
            email = form.cleaned_data['email']
            message = form.cleaned_data['message']
            html = render_to_string('App/contact_form.html', {
                'name': name,
                'email': email,
                'message': message
            })

            send_mail('Formularz kontaktowy', 'wiadomosc', 'jaceksosphp@gmail.com', ['jaceksosphp@gmail.com'],
                      html_message=html)
            messages.info(request, 'Udało Ci się wysłać wiadomość!')
            return redirect('home')
    else:
        form = ContactForm()
    context = {
        'form': form,
    }
    return render(request, 'App/index.html', context)

NA DEPLOYU

Na stronie z deployem jest ustawiony tymczasowo mój mail, bo tam nie będą ściągane śmieciowe maile:

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'TuJestPodanyMójMail'
EMAIL_HOST_PASSWORD = 'WygenerowaneHasło'
EMAIL_PORT = 587
EMAIL_USE_TLS = True