def add_attendee(request, event_id): if request.POST: logged_user = request.user.username form = AttendeeRegistration(request.POST) if form.is_valid(): data = form.cleaned_data user_id = data['user_id'] name = data['name'] last_name = data['last_name'] email = data['email'] event_id = data['event_id'] company = Company.objects.get(name=logged_user) # TODO check if ID exists event = Event.objects.get(event_id=event_id) if event.company != company: return error_happened(request, 'Invalid event') if event.end_date < date.today(): return error_happened(request, 'Event has already finished') # TODO what if id is already registered but with a different email or name? if not EndUser.objects.filter(id=user_id).exists(): user = EndUser.objects.create(id=user_id, name=name, last_name=last_name, email=email) user.save() else: user = EndUser.objects.get(id=user_id) if not Permission.objects.filter(user_id=user, event=event).exists(): token_id = generate_token() permission = Permission.objects.create(user_id=user, event=event, id=token_id) else: return error_happened( request, '%s %s is already registered in event' % (name, last_name)) send_qr_email(email, event, token_id, request) return success_happened( request, 'Succesfully added %s %s to %s' % (name, last_name, event.name)) else: form = AttendeeRegistration(initial={'event_id': event_id}) event = Event.objects.get(event_id=event_id) return render( request, 'event/add_attendee.html', { 'form': form, 'year': datetime.now().year, 'title': 'Adding Attendee to %s' % event.name })
def generate_qr(request, id): try: permission = Permission.objects.get(id=id) event = permission.event description = event.description allowed_rooms = event.rooms company = event.company start_date = event.start_date end_date = event.end_date name = permission.user_id.name except Permission.DoesNotExist: return error_happened(request, 'Invalid code for QR generation') else: return render( request, 'end_user/generate_qr.html', { 'generating_qr': True, 'qr_id': id, 'allowed_rooms': allowed_rooms, 'event': event, 'company': company, 'start_date': start_date, 'end_date': end_date, 'year': datetime.now().year, 'title': 'QR Generated', 'name': name, 'description': description, })
def list_events(request): logged_user = request.user.username # TODO implement paginator, it comes in handy here events = Company.objects.get( name=logged_user).event_set.all().order_by('-start_date') if events.exists(): return render(request, 'event/list.html', { 'events': events, 'year': datetime.now().year, 'title': 'Your events' }) return error_happened(request, 'You have no events to list')
def delete_event(request, event_id): logged_user = request.user.username try: company = Company.objects.get(name=logged_user) event = Event.objects.get(event_id=event_id, company=company) except Event.DoesNotExist: return error_happened(request, 'Invalid event') event.delete() return success_happened(request, 'Succesfully deleted the event %s' % event.name)
def permission_details(request, permission_id): try: permission = Permission.objects.get(pk=permission_id) except Permission.DoesNotExist: return error_happened(request, 'Invalid code') qr_user = permission.user_id event = permission.event return render( request, 'end_user/details.html', { 'year': datetime.now().year, 'title': 'Details', 'qr_user': qr_user, 'event': event })
def event_details(request, event_id): logged_user = request.user.username company = Company.objects.get(name=logged_user) try: event = Event.objects.get(pk=event_id, company=company) except Event.DoesNotExist: return error_happened(request, 'Invalid event') permissions = Permission.objects.filter(event=event) attendees = [] for permission in permissions: attendee = permission.user_id attendees.append(attendee) return render( request, 'event/details.html', { 'year': datetime.now().year, 'title': 'Details', 'event': event, 'attendees': attendees })