first init of rewrite
This commit is contained in:
@@ -83,9 +83,10 @@ class LineupEntryForm(forms.Form):
|
||||
event_lineup_id = forms.Field(required=False)
|
||||
event_id = forms.Field()
|
||||
member_id = forms.Field()
|
||||
position_only = forms.BooleanField(initial=False, required=False)
|
||||
sequence = forms.IntegerField(required=False)
|
||||
label = forms.ChoiceField(required=False, choices=[
|
||||
("--", "--"),
|
||||
("", "--"),
|
||||
("P","P"),
|
||||
("C","C"),
|
||||
("1B","1B"),
|
||||
|
||||
14
teamsnap/migrations/0010_merge_20220506_1031.py
Normal file
14
teamsnap/migrations/0010_merge_20220506_1031.py
Normal file
@@ -0,0 +1,14 @@
|
||||
# Generated by Django 3.2.6 on 2022-05-06 15:31
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('teamsnap', '0005_auto_20211224_1042'),
|
||||
('teamsnap', '0009_alter_availability_status_code'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
]
|
||||
@@ -1,12 +1,10 @@
|
||||
{% extends "base.html" %}{% load static %}
|
||||
{% block title %} {{ event.data.formatted_title }}{% endblock %}
|
||||
{% block page_heading %}{{ event.data.formatted_title }}{% endblock %}
|
||||
{% block page_subheading %}{{ event.data.start_date }}, {{ event.data.location_name }}{% endblock %}
|
||||
{#{% block title %} {{ event.data.formatted_title }}{% endblock %}#}
|
||||
{#{% block page_heading %}{{ event.data.formatted_title }}{% endblock %}#}
|
||||
{#{% block page_subheading %}{{ event.data.start_date }}, {{ event.data.location_name }}{% endblock %}#}
|
||||
|
||||
{% block content %}
|
||||
{% include 'teamsnap/lineup/widgets/lineup.html' with formset_lineup=formset_lineup formset_bench=formset_bench%}
|
||||
|
||||
<script src="{% static 'js/Sortable.js' %}"></script>
|
||||
<script src="{% static 'teamsnap/js/lineup-table.js' %}"></script>
|
||||
|
||||
<script src="{% static 'teamsnap/js/lineup-table.js' %}"></script>
|
||||
{% endblock %}
|
||||
@@ -1,36 +1,38 @@
|
||||
{% extends "base.html" %}{% load static %}
|
||||
{% block title %} {{ title }}{% endblock %}
|
||||
|
||||
{% csrf_token %}
|
||||
|
||||
{% block page_heading %}
|
||||
<div class="row d-inline-flex">
|
||||
<div class="col">
|
||||
Schedule
|
||||
Multiple Lineup Edit
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<form method="get" action="{% url 'teamsnap_edit_multiple_lineups' team_id=team_id%}">
|
||||
{{ formset.management_form }}
|
||||
<input class="btn btn-sm btn-outline-primary text-nowrap" type="submit" value="Submit">
|
||||
{% load tz %}
|
||||
<form method="post" action="{% url 'teamsnap_choose_multiple_lineups' team_id=team_id%}">
|
||||
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
{{ formset.management_form }}
|
||||
{% csrf_token %}
|
||||
{# <thead>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
{% for form in formset %}
|
||||
<tr>
|
||||
{{ form.event_id }}
|
||||
<th>Game {{ forloop.counter }}</th>
|
||||
<td>{{ form.event_id }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<input class="btn btn-sm btn-primary" type="submit" value="Submit">
|
||||
</form>
|
||||
|
||||
|
||||
<!-- create_normal.html :: part 4 -->
|
||||
|
||||
<script type='text/javascript'>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{% extends "base.html" %}{% load static %}
|
||||
{% block title %} Edit Lineups {% endblock %}
|
||||
{% block page_heading %}Edit Lineups{% endblock %}
|
||||
{% block page_subheading %}{% endblock %}
|
||||
{#{% block page_heading %}Edit Lineups{% endblock %}#}
|
||||
{#{% block page_subheading %}{% endblock %}#}
|
||||
|
||||
{% block content %}
|
||||
{# <div class="container overflow-scroll mx-0 px-0">#}
|
||||
@@ -21,80 +21,17 @@
|
||||
<div class="row flex-row flex-nowrap">
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<tr class="align-top mx-1">
|
||||
{% for event_data in contexts %}
|
||||
<td>
|
||||
<h4>{{ event_data.event.data.formatted_title }}</h4>
|
||||
<h6 class="text-muted" >{{ event_data.data.start_date }}</h6>
|
||||
{% with 'P C 1B 2B 3B SS LF CF RF EH DH' as position_list %}
|
||||
{% for position in position_list.split %}
|
||||
<span class="position-status fw-bold small px-1" id="position-status-{{ position }}">{{ position }}</span>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
<td class="px-1">
|
||||
{% include "teamsnap/lineup/widgets/lineup.html" with event=event_data.event event_id=event_data.event.data.id formset=event_data.formset formset_startinglineup=event_data.formset_startinglineup formset_bench=event_data.formset_bench formset_out=event_data.formset_out formset_startingpositionalonly=event_data.formset_startingpositionalonly %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="bg-light" colspan="{{ contexts|length }}"><h4>Lineup</h4></td>
|
||||
</tr>
|
||||
<tr>
|
||||
{% for event_data in contexts %}
|
||||
<td class="align-top">
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=event_data.formset_lineup table_id="players-lineup" %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="bg-light" colspan="{{ contexts|length }}"><h4>Bench</h4></td>
|
||||
</tr>
|
||||
<tr>
|
||||
{% for event_data in contexts %}
|
||||
<td class="align-top">
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=event_data.formset_bench table_id="players-bench" %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="bg-light" colspan="{{ contexts|length }}"><h4>Out</h4></td>
|
||||
</tr>
|
||||
<tr>
|
||||
{% for event_data in contexts %}
|
||||
<td class="align-top">
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=event_data.formset_out table_id="players-bench" %}
|
||||
</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
{# <div class="align-content-start">#}
|
||||
{# <div class = "bg-light rounded-3 p-2">#}
|
||||
{# <div class="row">#}
|
||||
{# {% with 'P C 1B 2B 3B SS LF CF RF EH DH' as position_list %}#}
|
||||
{# {% for position in position_list.split %}#}
|
||||
{# <span class="position-status fw-bold small px-1" id="position-status-{{ position }}">{{ position }}</span>#}
|
||||
{# {% endfor %}#}
|
||||
{# {% endwith %}#}
|
||||
{# </div>#}
|
||||
{# </div>#}
|
||||
{# </div>#}
|
||||
{# <form method="post" action="{% url 'teamsnap_submit_lineup' team_id=team_id event_id=event_id%}">#}
|
||||
{# {{ formset.management_form }}#}
|
||||
{# {% csrf_token %}#}
|
||||
|
||||
{# <h4 class="border-bottom">Lineup</h4>#}
|
||||
{# {% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_lineup table_id="players-lineup" %}#}
|
||||
{# <input class="btn btn-success" type="submit" value="Submit">#}
|
||||
{##}
|
||||
{# <h4 class="border-bottom">Bench</h4>#}
|
||||
{# {% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_bench table_id="players-bench" %}#}
|
||||
{##}
|
||||
{# <h4 class="border-bottom">Out</h4>#}
|
||||
{# {% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_out table_id="players-out" %}#}
|
||||
|
||||
{# </form>#}
|
||||
<script src="{% static 'js/Sortable.js' %}"></script>
|
||||
<script src="{% static 'teamsnap/js/lineup-table.js' %}"></script>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{% static 'js/Sortable.js' %}"></script>
|
||||
<script src="{% static 'teamsnap/js/lineup-table.js' %}"></script>
|
||||
{% endblock %}
|
||||
@@ -1,28 +1,77 @@
|
||||
<div>
|
||||
<div class="align-content-start">
|
||||
<div class = "bg-light rounded-3 p-2">
|
||||
{# <div class="row">#}
|
||||
{% with 'P C 1B 2B 3B SS LF CF RF EH DH' as position_list %}
|
||||
{% for position in position_list.split %}
|
||||
<span class="position-status fw-bold small px-1" id="position-status-{{ position }}">{{ position }}</span>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
{# </div>#}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card mx-auto benchcoach-lineup" style="max-width: 455px" id="benchcoach-lineup-{{ event_id }}">
|
||||
<form method="post" action="{% url 'teamsnap_submit_lineup' team_id=team_id event_id=event_id%}">
|
||||
{{ formset.management_form }}
|
||||
{% csrf_token %}
|
||||
<div class="border-bottom p-2">
|
||||
<h4 class="card-title text-nowrap">{{ event.data.formatted_title }}</h4>
|
||||
<h6 class="text-muted card-subtitle text-nowrap">{{ event.data.start_date|date:"D, F j, Y g:i A" }}</h6>
|
||||
|
||||
<h4 class="border-bottom">Lineup</h4>
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_lineup table_id="players-lineup" %}
|
||||
<input class="btn btn-success" type="submit" value="Submit">
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<button class="btn btn-primary btn-sm py-0 m-1" onclick="importFromClipboard(this)" type="button"><i class="bi bi-arrow-90deg-down"></i></i><i class="bi bi-file-spreadsheet"></i> </button>
|
||||
</div>
|
||||
<div class="col text-end">
|
||||
<button class="btn btn-primary btn-sm py-0 m-1" onclick="copyEmailTable(this, '{{ event.data.start_date|date:"D, F j, Y g:i A" }}, {{ event.data.location_name }}, ({% if event.data.game_type == 'Away' %}@{% endif %}{{ event.data.opponent_name }})', '{% for form in formset %}{{ form.member.data.email_addresses.0 }},{% endfor %}')" type="button"><i class="bi bi-arrow-right"></i><i class="bi bi-envelope"></i></button>
|
||||
<button class="btn btn-primary btn-sm py-0 m-1" onclick="sendToClipboard(this)" type="button"><i class="bi bi-arrow-right"></i><i class="bi bi-file-spreadsheet"></i></button>
|
||||
<button class="btn btn-success btn-sm py-0 m-1" type="submit"><i class="bi bi-arrow-right"></i><i class="bi bi-asterisk"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="border-bottom">Bench</h4>
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_bench table_id="players-bench" %}
|
||||
<div class="card-body p-0 m-0">
|
||||
<div>
|
||||
<div class="row m-0">
|
||||
<div class="col border-bottom bg-light">
|
||||
<i class="bi bi-clipboard-check me-1"></i><span class="text-uppercase fw-bold small">Starting Lineup</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h4 class="border-bottom">Out</h4>
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_out table_id="players-out" %}
|
||||
<div class = "row m-0">
|
||||
<div class="col border-bottom px-0">
|
||||
<div class="row mx-0 my-1 position-status">
|
||||
{% with 'P C 1B 2B 3B SS LF CF RF EH DH' as position_list %}
|
||||
{% for position in position_list.split %}
|
||||
<div class="col fw-bold text-center small">
|
||||
<span class="" id="position-status-{{ position }}">{{ position }}</span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endwith %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_startinglineup table_id="benchcoach-startinglineup" %}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="row m-0">
|
||||
<div class="col border-bottom bg-light">
|
||||
<i class="bi bi-clipboard-minus me-1"></i><span class="text-uppercase fw-bold small">Starting (Positional Only)</span>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_startingpositionalonly table_id="benchcoach-startingpositionalonly" %}
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="row m-0">
|
||||
<div class="col border-bottom bg-light">
|
||||
<i class="bi bi-clipboard me-1"></i><span class="text-uppercase fw-bold small">Bench</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_bench table_id="benchcoach-bench" %}
|
||||
|
||||
<div>
|
||||
<div class="row m-0">
|
||||
<div class="col border-bottom bg-light">
|
||||
<i class="bi bi-clipboard-x me-1"></i><span class="text-uppercase fw-bold small">Out</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% include 'teamsnap/lineup/widgets/lineup_table.html' with formset=formset_out table_id="benchcoach-out" %}
|
||||
|
||||
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,29 +1,38 @@
|
||||
<table class="table table-sm my-0" style="min-height: 1rem" id="table-{{ table_id }}">
|
||||
<tbody id="tbody-{{ table_id }}">
|
||||
{% for form in formset %}
|
||||
<tr data-player-id="{{ form.member.data.id }}"
|
||||
data-position="{{ form.label.value }}"
|
||||
data-order="{{ form.sequence.value }}">
|
||||
{{ form.event_lineup_entry_id.as_hidden }}
|
||||
{{ form.event_lineup_id.as_hidden }}
|
||||
{{ form.event_id.as_hidden }}
|
||||
{{ form.member_id.as_hidden }}
|
||||
{{ form.sequence.as_hidden }}
|
||||
{{ form.label.as_hidden }}
|
||||
{{ form.member_name.as_hidden }}
|
||||
<th class="col-1" id="sequence-member-{{ form.member.data.id }}">
|
||||
{{ form.sequence.value | add:"1" }}
|
||||
</th>
|
||||
<td class="col-1">
|
||||
<div class="mx-1">
|
||||
<span id="player-order-{{ form.member.id }}" class="lineup-sequence-value">
|
||||
{% if form.order.value > 0 %} {{ form.order.value | add:"1" }} {% endif %}
|
||||
</span>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm my-0 table-{{ table_id }}" style="min-height: 1rem">
|
||||
<tbody class="tbody-{{ table_id }}">
|
||||
{% for form in formset %}
|
||||
<tr data-player-id="{{ form.member.data.id }}"
|
||||
data-position="{{ form.label.value }}"
|
||||
data-order="{{ form.sequence.value }}"
|
||||
data-player-name="{{ form.member.data.last_name }}, {{ form.member.data.first_name }}"
|
||||
data-availability-statuscode="{{ form.availability.data.status_code }}"
|
||||
>
|
||||
{{ form.event_lineup_entry_id.as_hidden }}
|
||||
{{ form.event_lineup_id.as_hidden }}
|
||||
{{ form.event_id.as_hidden }}
|
||||
{{ form.member_id.as_hidden }}
|
||||
{{ form.position_only.as_hidden }}
|
||||
{{ form.label.as_hidden }}
|
||||
{{ form.member_name.as_hidden }}
|
||||
<th class="col-1" id="sequence-member-{{ form.member.data.id }}">
|
||||
{{ form.sequence.value | add:"1" }}
|
||||
</th>
|
||||
<td class="col-1">
|
||||
<div class="mx-1">
|
||||
<span id="player-order-form-{{ form.member.id }}" class="lineup-sequence-form">
|
||||
{{ form.sequence.as_hidden }}
|
||||
</span>
|
||||
|
||||
<span id="player-availability-{{ form.member.id }}" class="member-availability-status small">
|
||||
<span id="player-order-{{ form.member.id }}" class="lineup-sequence-value">
|
||||
{% if form.order.value > 0 %}{{ form.order.value | add:"1" }}{% endif %}
|
||||
</span>
|
||||
|
||||
<span id="player-availability-{{ form.member.id }}" class="member-availability-status small">
|
||||
{% if form.availability.data.status_code == 2 %}
|
||||
<i class="bi bi-question-circle-fill text-info"></i>
|
||||
{% elif form.availability.data.status_code == 1 %}
|
||||
{# <i class="bi bi-check-circle-fill text-success"></i>#}
|
||||
<i class="bi bi-check-circle-fill text-success"></i>
|
||||
{% elif form.availability.data.status_code == 0 %}
|
||||
<i class="bi bi-x-circle-fill text-danger"></i>
|
||||
@@ -31,29 +40,30 @@
|
||||
<i class="bi bi-question-circle"></i>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
</td>
|
||||
</div>
|
||||
</td>
|
||||
|
||||
<th class="">
|
||||
<div class="text-nowrap">
|
||||
<th class="">
|
||||
<div class="text-nowrap">
|
||||
<span class="d-none d-md-inline-block">
|
||||
{{ form.member.data.first_name }}
|
||||
</span>
|
||||
{{ form.member.data.last_name }}
|
||||
<span class="small text-muted fw-light d-none d-lg-inline-block">
|
||||
{{ form.member.data.last_name }}
|
||||
<span class="small text-muted fw-light d-none d-lg-inline-block">
|
||||
#{{ form.member.data.jersey_number }}
|
||||
</span>
|
||||
</div>
|
||||
{# <br><code><small>{{ form.statline }}</small></code>#}
|
||||
</th>
|
||||
<td class="col-2">
|
||||
{{ form.label }}
|
||||
</td>
|
||||
<td class="col-1 drag-handle">
|
||||
<i class="bi bi-grip-vertical text-secondary"></i>
|
||||
</td>
|
||||
{# <td>{{ form.instance.position }}</td>#}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{# <br><code><small>{{ form.statline }}</small></code>#}
|
||||
</th>
|
||||
<td class="col-2">
|
||||
<span class="lineup-label-form">{{ form.label }}</span>
|
||||
</td>
|
||||
<td class="col-1 drag-handle">
|
||||
<i class="bi bi-grip-vertical text-secondary"></i>
|
||||
</td>
|
||||
{# <td>{{ form.instance.position }}</td>#}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@@ -1,17 +1,15 @@
|
||||
{% extends "base.html" %}{% load static %}
|
||||
{% block title %} {{ title }}{% endblock %}
|
||||
{% block page_heading %}
|
||||
<div class="row d-inline-flex">
|
||||
<div class="col">
|
||||
Schedule
|
||||
</div>
|
||||
<div class="row d-inline-flex" hidden>
|
||||
|
||||
<div hidden class="col">
|
||||
<div class="container m-2">
|
||||
<div class="container m-2">
|
||||
<div class="btn-group">
|
||||
<form action="">
|
||||
<a class="btn btn-sm btn-outline-primary text-nowrap" href="{% url 'teamsnap_schedule' team_id=team_id%}?filters=no_past">No Past Events</a>
|
||||
<button class="btn btn-sm btn-outline-primary text-nowrap">Games Only</button>
|
||||
<a class="btn btn-sm btn-outline-primary text-nowrap" href="{% url 'teamsnap_schedule' team_id=team_id%}?filters=no_past">No Past Events</a>
|
||||
<button class="btn btn-sm btn-outline-primary text-nowrap">Games Only</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
@@ -22,26 +20,44 @@
|
||||
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
{% load tz %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
{# <thead>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
{% for event in events %}
|
||||
<tr>
|
||||
<td>
|
||||
<a href="{% url 'teamsnap_view_event' event_id=event.data.id team_id=request.user.profile.teamsnapsettings.managed_team.id%}">{{ event.data.formatted_title }}</a>
|
||||
</td>
|
||||
<td>
|
||||
{{ event.data.start_date | localtime}}
|
||||
</td>
|
||||
<td>
|
||||
{{ event.data.location_name }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% load tz %}
|
||||
<div class="m-auto">
|
||||
<h3 class="mb-2">
|
||||
Schedule
|
||||
</h3>
|
||||
<div class="card">
|
||||
<div class="card-body p-0">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
{# <thead>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
{% for event in events %}
|
||||
<tr>
|
||||
<th>
|
||||
{{ event.data.formatted_title }}
|
||||
</th>
|
||||
<td>
|
||||
{{ event.data.start_date|localtime|date:"D"}}
|
||||
</td>
|
||||
<td>
|
||||
{{ event.data.start_date|localtime|date:"M j, Y"}}
|
||||
</td>
|
||||
<td>
|
||||
{{ event.data.start_date|localtime|date:"g:i A"}}
|
||||
</td>
|
||||
<td>
|
||||
{{ event.data.location_name }}
|
||||
</td>
|
||||
<td>
|
||||
<a class="btn btn-outline-secondary btn-sm" href="{% url 'teamsnap_view_event' event_id=event.data.id team_id=request.user.profile.teamsnapsettings.managed_team.id%}"><i class="bi bi-three-dots"></i></a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -1,24 +1,22 @@
|
||||
{% extends 'base.html' %}
|
||||
{% block content %}
|
||||
<form method="post">
|
||||
{{ formset.management_form }}{% csrf_token %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
{% for _, field in formset.0.base_fields.items %}
|
||||
<th>{{ field.label }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
|
||||
{% for form in formset %}
|
||||
<tr>
|
||||
{% for field in form %}
|
||||
|
||||
<td>{{ field }}</td>
|
||||
<form method="post">
|
||||
{{ formset.management_form }}{% csrf_token %}
|
||||
<table class="table">
|
||||
<tr>
|
||||
{% for _, field in formset.0.base_fields.items %}
|
||||
<th>{{ field.label }}</th>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
|
||||
{% for form in formset %}
|
||||
<tr>
|
||||
{% for field in form %}
|
||||
<td>{{ field }}</td>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
</table>
|
||||
<input type="submit" value="Submit">
|
||||
</form>
|
||||
{% endblock %}
|
||||
@@ -1,137 +1,159 @@
|
||||
{% extends "base.html" %}{% load static %}
|
||||
{% block title %} {{ event.data.formatted_title }}{% endblock %}
|
||||
{% block page_heading %}{{ event.data.formatted_title }}{% endblock %}
|
||||
{% block page_subheading %}{{ event.data.start_date }}, {{ event.data.location_name }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="table-responsive">
|
||||
<div class="card mx-auto">
|
||||
<div class="border-bottom p-2">
|
||||
<h4 class="card-title text-nowrap">{{ event.data.formatted_title }}</h4>
|
||||
<h6 class="text-muted card-subtitle text-nowrap">{{ event.data.start_date|date:"D, F j, Y g:i A" }}</h6>
|
||||
</div>
|
||||
<div class="card-body p-0 m-0">
|
||||
<div>
|
||||
<div class="row m-0">
|
||||
<div class="table-responsive p-0">
|
||||
<table class="table table-sm">
|
||||
{# <thead>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
Date
|
||||
</th>
|
||||
<td>
|
||||
{{ event.data.start_date|date:"D, F j, Y g:i A" }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
Opponent
|
||||
</th>
|
||||
<td>
|
||||
<a href="{% url 'teamsnap_opponent' team_id=request.user.profile.teamsnapsettings.managed_team.id id=event.data.opponent_id %}">{{ event.data.opponent_name }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
Location
|
||||
</th>
|
||||
<td>
|
||||
<a href="{% url 'teamsnap_location' team_id=request.user.profile.teamsnapsettings.managed_team.id id=event.data.location_id %}">{{ event.data.location_name }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-0">
|
||||
<div class="col border-bottom">
|
||||
<i class="bi bi-clipboard-check me-1"></i><span class="text-uppercase fw-bold small">Availabilities</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive p-0">
|
||||
<table class="table table-sm">
|
||||
{# <thead>#}
|
||||
{# <th scope="row">#}
|
||||
{# <td>Status</td>#}
|
||||
{# <td>Last</td>#}
|
||||
{# <td>First</td>#}
|
||||
{# </th>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-check-circle-fill text-success"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_going_count }}
|
||||
</td>
|
||||
|
||||
<table class="table table-striped table-sm">
|
||||
{# <thead>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
Date
|
||||
</th>
|
||||
<td>
|
||||
{{ event.data.start_date }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
Opponent
|
||||
</th>
|
||||
<td>
|
||||
<a href="{% url 'teamsnap_opponent' team_id=request.user.profile.teamsnapsettings.managed_team.id id=event.data.opponent_id %}">{{ event.data.opponent_name }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="col">
|
||||
Location
|
||||
</th>
|
||||
<td>
|
||||
<a href="{% url 'teamsnap_location' team_id=request.user.profile.teamsnapsettings.managed_team.id id=event.data.location_id %}">{{ event.data.location_name }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3>Availabilities</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
{# <thead>#}
|
||||
{# <th scope="row">#}
|
||||
{# <td>Status</td>#}
|
||||
{# <td>Last</td>#}
|
||||
{# <td>First</td>#}
|
||||
{# </th>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-check-circle-fill text-success"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_going_count }}
|
||||
</td>
|
||||
</tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-question-circle-fill text-info"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_maybe_count }}
|
||||
</td>
|
||||
|
||||
<tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-question-circle-fill text-info"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_maybe_count }}
|
||||
</td>
|
||||
</tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-x-circle-fill text-danger"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_not_going_count }}
|
||||
</td>
|
||||
|
||||
<tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-x-circle-fill text-danger"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_not_going_count }}
|
||||
</td>
|
||||
</tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_unknown_count }}
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<th scope="col" class="col-1">
|
||||
<i class="bi bi-question-circle"></i>
|
||||
</th>
|
||||
<td>
|
||||
{{ availability_summary.data.player_unknown_count }}
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-0">
|
||||
<div class="col border-bottom mb-1">
|
||||
<i class="bi bi-clipboard me-1"></i><span class="text-uppercase fw-bold small">Lineup</span>
|
||||
</div>
|
||||
<div class="flexrow">
|
||||
<a class="btn btn-primary btn-sm"
|
||||
href="{% url 'teamsnap_edit_lineup' event_ids=event.data.id team_id=request.user.profile.teamsnapsettings.managed_team.id %}"
|
||||
role="button">Edit</a>
|
||||
</div>
|
||||
<div class="table-responsive p-0">
|
||||
<table class="table table-striped table-sm">
|
||||
{# <thead>#}
|
||||
{# <th scope="row">#}
|
||||
{# <td>Status</td>#}
|
||||
{# <td>Last</td>#}
|
||||
{# <td>First</td>#}
|
||||
{# </th>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
{% for lineup_entry in lineup_entries %}
|
||||
<tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="">
|
||||
<h3>Lineup Entries</h3>
|
||||
<a class="btn btn-primary btn-sm" href="{% url 'teamsnap_edit_lineup' event_id=event.data.id team_id=request.user.profile.teamsnapsettings.managed_team.id%}" role="button">Edit</a>
|
||||
</div>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
{# <thead>#}
|
||||
{# <th scope="row">#}
|
||||
{# <td>Status</td>#}
|
||||
{# <td>Last</td>#}
|
||||
{# <td>First</td>#}
|
||||
{# </th>#}
|
||||
{# </thead>#}
|
||||
<tbody>
|
||||
{% for lineup_entry in lineup_entries %}
|
||||
<tr>
|
||||
<td class="col-1">
|
||||
{{ lineup_entry.data.sequence }}
|
||||
</td>
|
||||
<td>
|
||||
{{ lineup_entry.data.member_name }}
|
||||
</td>
|
||||
<td>
|
||||
{{ lineup_entry.data.label }}
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<h3>Functions</h3>
|
||||
<div class="">
|
||||
<form method="get" action="{% url "teamsnap_image_generator_generate" team_id=request.user.profile.teamsnapsettings.managed_team.id event_id=event.data.id %}">
|
||||
<select hidden class="form-select" name="game_id" id="game_id">
|
||||
<optgroup label="Events">
|
||||
<option value="" disabled="disabled">Select an event...</option>
|
||||
<option selected value="{{event.data.id}}">{{event.data.formatted_title}}</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
<input hidden class="form-check-input" type="radio" name="background" id="backgroundLocation" checked value="location">
|
||||
<input hidden class="form-check-input" type="radio" name="dimensions" id="square" checked value="1080x1080">
|
||||
<button type="submit" class="btn btn-primary btn-block"><i class="bi bi-instagram"></i></button>
|
||||
</form>
|
||||
<a class="btn btn-primary" href="{% url "teamsnap_image_generator" team_id=request.user.profile.teamsnapsettings.managed_team.id event_id=event.data.id %}" role="button"><div class="d-inline-block"><i class="bi bi-instagram"></i> <i class="bi bi-three-dots"></i></div></a>
|
||||
</div>
|
||||
</div>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row m-0">
|
||||
<div class="col border-bottom mb-1">
|
||||
<i class="bi bi-share"></i><span class="text-uppercase fw-bold small"> Functions</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<form method="get"
|
||||
action="{% url "teamsnap_image_generator_generate" team_id=request.user.profile.teamsnapsettings.managed_team.id event_id=event.data.id %}">
|
||||
<select hidden class="form-select" name="game_id" id="game_id">
|
||||
<optgroup label="Events">
|
||||
<option value="" disabled="disabled">Select an event...</option>
|
||||
<option selected
|
||||
value="{{ event.data.id }}">{{ event.data.formatted_title }}</option>
|
||||
</optgroup>
|
||||
</select>
|
||||
<input hidden class="form-check-input" type="radio" name="background"
|
||||
id="backgroundLocation" checked value="location">
|
||||
<input hidden class="form-check-input" type="radio" name="dimensions" id="square" checked
|
||||
value="1080x1080">
|
||||
<button type="submit" class="btn btn-primary btn-block"><i class="bi bi-instagram"></i>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="col">
|
||||
<a class="btn btn-primary"
|
||||
href="{% url "teamsnap_image_generator" team_id=request.user.profile.teamsnapsettings.managed_team.id event_id=event.data.id %}"
|
||||
role="button">
|
||||
<div class="d-inline-block"><i class="bi bi-instagram"></i> <i class="bi bi-three-dots"></i>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -15,10 +15,10 @@ urlpatterns = [
|
||||
path('<int:team_id>/schedule/view_event/<int:event_id>', views.event, name='teamsnap_view_event'),
|
||||
path('<int:team_id>/opponent/view/<int:id>', views.opponent, name='teamsnap_opponent'),
|
||||
path('<int:team_id>/location/view/<int:id>', views.location, name='teamsnap_location'),
|
||||
path('<int:team_id>/event/<int:event_id>/edit_lineup/', views.edit_lineup, name='teamsnap_edit_lineup'),
|
||||
path('<int:team_id>/event/<int:event_ids>/edit_lineup/', views.edit_multiple_lineups, name='teamsnap_edit_lineup'),
|
||||
path('<int:team_id>/event/<str:event_ids>/edit_lineup/', views.edit_multiple_lineups, name='teamsnap_edit_multiple_lineups'),
|
||||
path('<int:team_id>/event/<int:event_id>/submit_lineup/', views.submit_lineup, name='teamsnap_submit_lineup'),
|
||||
path('<int:team_id>/event/<int:event_id>/image_generator/', views.image_generator, name='teamsnap_image_generator'),
|
||||
path('<int:team_id>/event/<int:event_id>/image_generator/generate', views.get_matchup_image, name='teamsnap_image_generator_generate'),
|
||||
path('<int:team_id>/multievent/edit_lineups', views.edit_multiple_lineups, name='teamsnap_edit_multiple_lineups'),
|
||||
path('<int:team_id>/multievent/choose', views.multi_lineup_choose, name='teamsnap_choose_multiple_lineups')
|
||||
]
|
||||
@@ -11,6 +11,7 @@ from django.contrib.auth.decorators import login_required
|
||||
from .utils.teamsnap_sync_engine import TeamsnapSyncEngine
|
||||
from django.templatetags.static import static
|
||||
import datetime
|
||||
import re
|
||||
|
||||
def edit_event(request, id):
|
||||
'''
|
||||
@@ -151,7 +152,6 @@ def schedule(request, team_id):
|
||||
# ts_locations = {l.data['id']:l for l in Location.search(client, team_id=TEAM_ID)}
|
||||
# for event in ts_events:
|
||||
|
||||
|
||||
pass
|
||||
return render(request, "teamsnap/schedule.html", context={"events":ts_events.values(), "team_id":team_id})
|
||||
|
||||
@@ -192,7 +192,7 @@ def location(request, id, team_id):
|
||||
return render(request, "teamsnap/location/view.html", context={"location": Location.get(client, id=id)})
|
||||
pass
|
||||
|
||||
def opponent(request, id):
|
||||
def opponent(request, team_id, id):
|
||||
TOKEN = request.user.profile.teamsnap_access_token
|
||||
|
||||
from pyteamsnap.api import TeamSnap, Opponent
|
||||
@@ -215,7 +215,7 @@ def edit_lineup(request, event_id, team_id):
|
||||
ts_availabilities = Availability.search(client, event_id=ts_event.data['id'])
|
||||
ts_availability_summary = \
|
||||
[i for i in ts_bulkload if isinstance(i, AvailabilitySummary) and i.data['event_id'] == event_id][0]
|
||||
ts_lineup_entries = [i for i in ts_bulkload if isinstance(i, EventLineupEntry) and i.data['event_id'] == event_id]
|
||||
ts_lineup_entries = EventLineupEntry.search(client, event_id=event_id)
|
||||
|
||||
if ts_lineup_entries:
|
||||
ts_lineup = EventLineup.get(client, id=ts_lineup_entries[0].data['event_lineup_id'])
|
||||
@@ -261,7 +261,7 @@ def edit_lineup(request, event_id, team_id):
|
||||
"sequence" : member['lineup_entry'].get('sequence'),
|
||||
"label" : member['lineup_entry'].get('label'),
|
||||
}
|
||||
for member in members
|
||||
for member in members if not member['member']['is_non_player']
|
||||
]
|
||||
)
|
||||
|
||||
@@ -289,13 +289,13 @@ def edit_lineup(request, event_id, team_id):
|
||||
"event_id": event_id,
|
||||
"event": ts_event,
|
||||
"formset": formset,
|
||||
"formset_lineup":formset_lineup,
|
||||
"formset_startinglineup":formset_lineup,
|
||||
"formset_bench": formset_bench,
|
||||
"formset_out": formset_out,
|
||||
"lineup": ts_lineup
|
||||
})
|
||||
|
||||
def edit_multiple_lineups(request, team_id):
|
||||
def edit_multiple_lineups(request, team_id, event_ids):
|
||||
TOKEN = request.user.profile.teamsnap_access_token
|
||||
from django.forms import formset_factory
|
||||
from teamsnap.forms import EventChooseForm
|
||||
@@ -303,18 +303,7 @@ def edit_multiple_lineups(request, team_id):
|
||||
client = TeamSnap(token=TOKEN)
|
||||
time.sleep(0.5)
|
||||
|
||||
ts_events = Event.search(client, team_id=team_id)
|
||||
EventChooseFormset = formset_factory(EventChooseForm)
|
||||
formset = EventChooseFormset(request.GET)
|
||||
choices = [(e.data['id'], e.data['formatted_title']) for e in ts_events]
|
||||
|
||||
for form in formset:
|
||||
form.fields['event_id'].choices = choices
|
||||
|
||||
if formset.is_valid():
|
||||
event_ids = [f.cleaned_data['event_id'] for f in formset]
|
||||
else:
|
||||
event_ids = request.GET.get("event_ids").split(",")
|
||||
event_ids = str(event_ids).split(",")
|
||||
|
||||
ts_bulkload = client.bulk_load(team_id=team_id,
|
||||
types=[Event, EventLineup, EventLineupEntry, AvailabilitySummary, Member],
|
||||
@@ -330,7 +319,7 @@ def edit_multiple_lineups(request, team_id):
|
||||
ts_availabilities = Availability.search(client, event_id=ts_event.data['id'])
|
||||
ts_availability_summary = \
|
||||
[i for i in ts_bulkload if isinstance(i, AvailabilitySummary) and i.data['event_id'] == event_id][0]
|
||||
ts_lineup_entries = [i for i in ts_bulkload if isinstance(i, EventLineupEntry) and i.data['event_id'] == event_id]
|
||||
ts_lineup_entries = EventLineupEntry.search(client, event_id=event_id)
|
||||
|
||||
if ts_lineup_entries:
|
||||
ts_lineup = EventLineup.get(client, id=ts_lineup_entries[0].data['event_lineup_id'])
|
||||
@@ -363,39 +352,58 @@ def edit_multiple_lineups(request, team_id):
|
||||
d['member'].get('last_name'))
|
||||
)
|
||||
|
||||
|
||||
from teamsnap.forms import LineupEntryFormset, LineupEntryForm
|
||||
|
||||
formset = LineupEntryFormset(
|
||||
initial=[
|
||||
{
|
||||
"event_lineup_entry_id" : member['lineup_entry'].get('id'),
|
||||
"event_lineup_id" : member['lineup_entry'].get('event_lineup_id'),
|
||||
|
||||
initial = []
|
||||
for member in members:
|
||||
if not member['member']['is_non_player']:
|
||||
initial_member = {}
|
||||
if re.search(r'([A-Z0-9]+)(?:\s+\[(.*)\])?', member['lineup_entry'].get('label','')):
|
||||
position, position_note = re.search(r'([A-Z0-9]+)(?:\s+\[(.*)\])?', member['lineup_entry'].get('label','')).groups()
|
||||
else:
|
||||
position, position_note = ("","")
|
||||
position_only = position_note == "PO"
|
||||
initial.append({
|
||||
"event_lineup_entry_id": member['lineup_entry'].get('id'),
|
||||
"event_lineup_id": member['lineup_entry'].get('event_lineup_id'),
|
||||
"event_id": event_id,
|
||||
"member_id" : member['member']['id'],
|
||||
"sequence" : member['lineup_entry'].get('sequence'),
|
||||
"label" : member['lineup_entry'].get('label'),
|
||||
"position_only": position_only,
|
||||
"member_id": member['member']['id'],
|
||||
"sequence": member['lineup_entry'].get('sequence'),
|
||||
"label": position,
|
||||
}
|
||||
for member in members
|
||||
]
|
||||
|
||||
)
|
||||
|
||||
formset = LineupEntryFormset(
|
||||
initial=initial
|
||||
)
|
||||
|
||||
for form in formset:
|
||||
form.member = ts_member_lookup.get(form['member_id'].initial)
|
||||
form.availability = ts_availability_lookup.get(form['member_id'].initial)
|
||||
|
||||
formset_lineup = [form for form in formset if form.initial.get('event_lineup_entry_id')]
|
||||
formset_lineup = sorted(
|
||||
formset_lineup,
|
||||
formset_startinglineup = [form for form in formset if form.initial.get('event_lineup_entry_id') and not form.initial.get('position_only')]
|
||||
formset_startinglineup = sorted(
|
||||
formset_startinglineup,
|
||||
key=lambda d: d.initial.get('sequence',100)
|
||||
)
|
||||
formset_startingpositiononly = [form for form in formset if
|
||||
form.initial.get('event_lineup_entry_id') and form not in formset_startinglineup]
|
||||
formset_startingpositiononly = sorted(
|
||||
formset_startingpositiononly,
|
||||
key=lambda d: d.initial.get('sequence', 100)
|
||||
)
|
||||
formset_bench = [form for form in formset if
|
||||
form not in formset_lineup and
|
||||
form not in formset_startinglineup and
|
||||
form not in formset_startingpositiononly and
|
||||
form.availability.data['status_code'] in [2, 1]
|
||||
]
|
||||
formset_out = [form for form in formset if
|
||||
form not in formset_lineup and
|
||||
form not in formset_startinglineup and
|
||||
form not in formset_bench and
|
||||
form not in formset_startingpositiononly and
|
||||
not form.member.data['is_non_player']
|
||||
]
|
||||
|
||||
@@ -403,7 +411,8 @@ def edit_multiple_lineups(request, team_id):
|
||||
"event":ts_event,
|
||||
"formset": formset,
|
||||
"formset_bench":formset_bench,
|
||||
"formset_lineup":formset_lineup,
|
||||
"formset_startinglineup":formset_startinglineup,
|
||||
"formset_startingpositionalonly":formset_startingpositiononly,
|
||||
"formset_out":formset_out
|
||||
})
|
||||
|
||||
@@ -430,16 +439,30 @@ def submit_lineup(request, team_id, event_id):
|
||||
data = form.cleaned_data
|
||||
if data.get('event_lineup_entry_id'):
|
||||
event_lineup_entry = EventLineupEntry.get(client, id=data.get('event_lineup_entry_id'))
|
||||
if data.get('position_only'):
|
||||
data['label'] = data['label'] + ' [PO]'
|
||||
event_lineup_entry.data.update(data)
|
||||
# breakpoint()
|
||||
r.append(event_lineup_entry.put())
|
||||
# breakpoint()
|
||||
if not data.get('sequence') and not data.get('label'):
|
||||
try:
|
||||
r.append(event_lineup_entry.delete())
|
||||
except Exception as e:
|
||||
raise e
|
||||
else:
|
||||
try:
|
||||
r.append(event_lineup_entry.put())
|
||||
except:
|
||||
pass
|
||||
pass
|
||||
elif data.get('sequence') is not None and data.get('label'):
|
||||
event_lineup_entry = EventLineupEntry.new(client)
|
||||
if data.get('position_only'):
|
||||
data['label'] = data['label'] + ' [PO]'
|
||||
event_lineup_entry.data.update(data)
|
||||
event_lineup_entry.data.update({"event_lineup_id":event_lineup_id})
|
||||
r.append(event_lineup_entry.post())
|
||||
event_lineup_entry.data.update({"event_lineup_id": event_lineup_id})
|
||||
try:
|
||||
r.append(event_lineup_entry.post())
|
||||
except Exception as e:
|
||||
raise e
|
||||
else:
|
||||
pass
|
||||
else:
|
||||
@@ -447,9 +470,8 @@ def submit_lineup(request, team_id, event_id):
|
||||
pass
|
||||
# breakpoint()
|
||||
pass
|
||||
return HttpResponse(f'{team_id} {event_id}')
|
||||
return HttpResponse(f'{r}')
|
||||
pass
|
||||
|
||||
return HttpResponse(f'{team_id} {event_id}')
|
||||
|
||||
def image_generator(request, team_id, event_id):
|
||||
@@ -534,9 +556,30 @@ def get_matchup_image(request, team_id, event_id, dimensions=None, background=No
|
||||
return HttpResponse(imgByteArr, content_type="image/png")
|
||||
|
||||
def multi_lineup_choose(request, team_id):
|
||||
TOKEN = request.user.profile.teamsnap_access_token
|
||||
from teamsnap.forms import EventChooseForm
|
||||
from django.forms import formset_factory
|
||||
if not request.GET.get('num'):
|
||||
from pyteamsnap.api import TeamSnap, Event
|
||||
client = TeamSnap(token=TOKEN)
|
||||
|
||||
if request.POST:
|
||||
ts_events = Event.search(client, team_id=team_id)
|
||||
EventChooseFormset = formset_factory(EventChooseForm)
|
||||
formset = EventChooseFormset(request.POST)
|
||||
choices = [(e.data['id'], e.data['formatted_title']) for e in ts_events]
|
||||
|
||||
for form in formset:
|
||||
form.fields['event_id'].choices = choices
|
||||
|
||||
if formset.is_valid():
|
||||
event_ids = [f.cleaned_data['event_id'] for f in formset]
|
||||
else:
|
||||
event_ids = request.GET.get("event_ids").split(",")
|
||||
EventChooseFormset = formset_factory(EventChooseForm)
|
||||
formset = EventChooseFormset(request.POST)
|
||||
|
||||
return redirect('teamsnap_edit_multiple_lineups',team_id=team_id, event_ids=",".join(event_ids))
|
||||
elif not request.GET.get('num'):
|
||||
return HttpResponse(500)
|
||||
else:
|
||||
num = int(request.GET.get('num'))
|
||||
|
||||
Reference in New Issue
Block a user