Reputation: 1
I am trying to filter an event that is only accepted by the current login-user, however the error "name 'request' is not defined" continues to pop-up. I have tried self.request user but it's still not working!
from datetime import datetime, timedelta
from calendar import HTMLCalendar
from cal.models import Event
from django.contrib.auth.models import User
class Calendar(HTMLCalendar):
def __init__(self, year=None, month=None):
self.year = year
self.month = month
super(Calendar, self).__init__()
# formats a day as a td
# filter events by day
def formatday(self, day, events):
events_per_day = events.filter(start_time__day=day, acceptor=self.request.user )
d = ''
for event in events_per_day:
# filter event that only accepted by user
if event.acceptor == User:
d += event.get_absolute_url()
if day != 0:
return f"<td><span class='date'>{day}</span><ul> {d} </ul></td>"
return '<td></td>'
# formats a week as a tr
def formatweek(self, theweek, events):
week = ''
for d, weekday in theweek:
week += self.formatday(d, events)
return f'<tr> {week} </tr>'
def formatmonth(self, withyear=True, ):
events = Event.objects.filter(start_time__year=self.year, start_time__month=self.month)
cal = f'<table border="0" cellpadding="0" cellspacing="0" class="calendar">\n'
cal += f'{self.formatmonthname(self.year, self.month, withyear=withyear)}\n'
cal += f'{self.formatweekheader()}\n'
for week in self.monthdays2calendar(self.year, self.month):
cal += f'{self.formatweek(week, events)}\n'
return cal
Upvotes: 0
Views: 192
Reputation: 11
I know its late reply but I face the similar prob recently. Here's my solution: create a attribute name user or anything to store the id and get that from parameter.
def __init__(self, year=None, month=None, user=None):
self.year = year
self.month = month
self.user = user
super(Calendar, self).__init__()
like this pass the user when creating the object in views.py
user = self.request.user
cal = Calendar(d.year, d.month, user)
and then use as you like:
events_per_day = events.filter(start_time__day=day, acceptor=self.user )
Upvotes: 1