def demands_detail_view(request, demand_id): profile = Profile.objects.get(id=request.session['profile_id']) demand = get_object_or_404(Demand, id=demand_id) answers = DemandAnswer.objects.filter( demand=demand).select_related('author').order_by('date_posted') if request.method == 'POST': form = DemandAnswerForm(request.POST, request.FILES) if form.is_valid(): answer = form.save(commit=False) answer.demand = demand answer.author = profile answer.save() if profile == demand.author: informed_ids = [demand.addressee.id] else: informed_ids = [demand.author.id] send_emails(request, informed_ids, demand_answer=answer) return redirect('contact:demands-main') else: form = DemandAnswerForm() context = { 'current_profile': profile, 'page_title': 'Dezyderat - szczegóły', 'demand': demand, 'answers': answers, 'form': form } if profile in [demand.author, demand.addressee]: return render(request, 'contact/demands_detail.html', context) else: return redirect('home:dupa')
def demands_create_view(request): profile = Profile.objects.get(id=request.session['profile_id']) if request.method == 'POST': form = DemandsCreateForm(profile=profile, data=request.POST, files=request.FILES) if form.is_valid(): demand = form.save(commit=False) demand.author = profile demand.save() informed_ids = [demand.addressee.id] send_emails(request, informed_ids, demand=demand) return redirect('contact:demands-main') else: form = DemandsCreateForm(profile=profile) context = { 'current_profile': profile, 'page_title': 'Nowy dezyderat', 'form': form, } return render(request, '_form.html', context)
def game_event_inform_view(request, game_event_id): profile = Profile.objects.get(id=request.session['profile_id']) game_event = get_object_or_404(TimeUnit, id=game_event_id) allowed = ( game_event.known_directly.all() | game_event.known_indirectly.all() ) allowed = allowed.filter(status='player') # INFORM FORM # dict(request.POST).items() == < QueryDict: { # 'csrfmiddlewaretoken': ['KcoYDwb7r86Ll2SdQUNrDCKs...'], # '2': ['on'], # 'chronicle_event': ['122'] # } > if request.method == 'POST' and 'game_event' in request.POST: data = dict(request.POST) informed_ids = [k for k, v_list in data.items() if 'on' in v_list] game_event.known_indirectly.add(*informed_ids) send_emails(request, informed_ids, game_event=game_event) if informed_ids: messages.info(request, f'Poinformowano wybrane Postacie!') context = { 'current_profile': profile, 'page_title': 'Poinformuj o wydarzeniu', 'event': game_event, 'event_type': 'game_event' } if profile in allowed or profile.status == 'gm': return render(request, 'chronicles/_event_inform.html', context) else: return redirect('home:dupa')
def demands_main_view(request): profile = Profile.objects.get(id=request.session['profile_id']) ds = Demand.objects.all().\ select_related('author__user', 'addressee__user').\ prefetch_related('demand_answers__author') # excludes necessery to filter out plans (Demands sent to oneself) received_u = ds.filter(is_done=False, addressee=profile).exclude(author=profile) received_d = ds.filter(is_done=True, addressee=profile).exclude(author=profile) sent_u = ds.filter(is_done=False, author=profile).exclude(addressee=profile) sent_d = ds.filter(is_done=True, author=profile).exclude(addressee=profile) if request.method == 'POST': form = DemandAnswerForm(request.POST, request.FILES) if form.is_valid(): id_ = request.POST.get('form_id') demand = Demand.objects.get(id=id_) answer = form.save(commit=False) answer.demand = demand answer.author = profile answer.save() if profile == demand.author: informed_ids = [demand.addressee.id] else: informed_ids = [demand.author.id] send_emails(request, informed_ids, demand_answer=answer) return redirect('contact:demands-main') else: form = DemandAnswerForm() context = { 'current_profile': profile, 'page_title': 'Dezyderaty', 'received_undone': received_u, 'received_done': received_d, 'sent_undone': sent_u, 'sent_done': sent_d, 'form': form, } return render(request, 'contact/demands_main.html', context)
def plans_modify_view(request, plan_id): profile = Profile.objects.get(id=request.session['profile_id']) plan = get_object_or_404(Plan, id=plan_id) if request.method == 'POST': form = PlanForm(instance=plan, data=request.POST, files=request.FILES) if form.is_valid(): plan = form.save() if plan.inform_gm: send_emails(request, plan_modified=plan) return redirect('contact:plans-main') else: form = PlanForm(instance=plan) context = { 'current_profile': profile, 'page_title': 'Zmiana planów?', 'form': form, } if profile == plan.author: return render(request, '_form.html', context) else: return redirect('home:dupa')
def plans_create_view(request): profile = Profile.objects.get(id=request.session['profile_id']) if request.method == 'POST': form = PlanForm(request.POST, request.FILES) if form.is_valid(): plan = form.save(commit=False) plan.author = profile plan.addressee = profile plan.save() if plan.inform_gm: send_emails(request, plan_created=plan) return redirect('contact:plans-main') else: form = PlanForm() context = { 'current_profile': profile, 'page_title': 'Nowy plan', 'form': form, } return render(request, '_form.html', context)
def demand_done_undone_view(request, demand_id, is_done): profile = Profile.objects.get(id=request.session['profile_id']) demand = get_object_or_404(Demand, id=demand_id) if profile in [demand.author, demand.addressee]: demand.is_done = is_done if is_done: demand.date_done = timezone.now() demand.save() DemandAnswer.objects.create(demand=demand, author=profile, text='Zrobione!') demand.save() if profile == demand.author: informed_ids = [demand.addressee.id] else: informed_ids = [demand.author.id] send_emails(request, informed_ids, demand=demand, is_done=is_done) return redirect('contact:demands-main') else: return redirect('home:dupa')