Beispiel #1
0
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')
Beispiel #2
0
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)
Beispiel #3
0
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')
Beispiel #4
0
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)
Beispiel #5
0
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')
Beispiel #6
0
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)
Beispiel #7
0
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')