commit
3326eae98b
@ -0,0 +1 @@ |
||||
This is a django customer relationship managemement (CRM) app. |
||||
@ -0,0 +1,96 @@ |
||||
from django.contrib import admin |
||||
from django.utils.html import format_html |
||||
from .models import ( |
||||
Prospect, |
||||
Status, |
||||
ProspectStatus, |
||||
Event, |
||||
EmailCampaign, |
||||
EmailTracker |
||||
) |
||||
|
||||
@admin.register(Prospect) |
||||
class ProspectAdmin(admin.ModelAdmin): |
||||
list_display = ('name', 'email', 'region', 'created_at') |
||||
list_filter = ('region', 'created_at') |
||||
search_fields = ('name', 'email', 'region') |
||||
filter_horizontal = ('users',) |
||||
date_hierarchy = 'created_at' |
||||
|
||||
@admin.register(Status) |
||||
class StatusAdmin(admin.ModelAdmin): |
||||
list_display = ('name', 'created_at') |
||||
search_fields = ('name',) |
||||
|
||||
@admin.register(ProspectStatus) |
||||
class ProspectStatusAdmin(admin.ModelAdmin): |
||||
list_display = ('prospect', 'status', 'created_at') |
||||
list_filter = ('status', 'created_at') |
||||
search_fields = ('prospect__name', 'prospect__email') |
||||
date_hierarchy = 'created_at' |
||||
|
||||
@admin.register(Event) |
||||
class EventAdmin(admin.ModelAdmin): |
||||
list_display = ('get_event_display', 'type', 'date', 'status', 'created_at') |
||||
list_filter = ('type', 'status', 'date') |
||||
search_fields = ('description',) |
||||
filter_horizontal = ('prospects',) |
||||
date_hierarchy = 'date' |
||||
|
||||
def get_event_display(self, obj): |
||||
return str(obj) |
||||
get_event_display.short_description = 'Event' |
||||
|
||||
@admin.register(EmailCampaign) |
||||
class EmailCampaignAdmin(admin.ModelAdmin): |
||||
list_display = ('subject', 'event', 'sent_at') |
||||
list_filter = ('sent_at',) |
||||
search_fields = ('subject', 'content') |
||||
date_hierarchy = 'sent_at' |
||||
readonly_fields = ('sent_at',) |
||||
|
||||
@admin.register(EmailTracker) |
||||
class EmailTrackerAdmin(admin.ModelAdmin): |
||||
list_display = ( |
||||
'campaign', |
||||
'prospect', |
||||
'tracking_id', |
||||
'sent_status', |
||||
'opened_status', |
||||
'clicked_status' |
||||
) |
||||
list_filter = ('sent', 'opened', 'clicked') |
||||
search_fields = ( |
||||
'prospect__name', |
||||
'prospect__email', |
||||
'campaign__subject' |
||||
) |
||||
readonly_fields = ( |
||||
'tracking_id', 'sent', 'sent_at', |
||||
'opened', 'opened_at', |
||||
'clicked', 'clicked_at' |
||||
) |
||||
date_hierarchy = 'sent_at' |
||||
|
||||
def sent_status(self, obj): |
||||
return self._get_status_html(obj.sent, obj.sent_at) |
||||
sent_status.short_description = 'Sent' |
||||
sent_status.allow_tags = True |
||||
|
||||
def opened_status(self, obj): |
||||
return self._get_status_html(obj.opened, obj.opened_at) |
||||
opened_status.short_description = 'Opened' |
||||
opened_status.allow_tags = True |
||||
|
||||
def clicked_status(self, obj): |
||||
return self._get_status_html(obj.clicked, obj.clicked_at) |
||||
clicked_status.short_description = 'Clicked' |
||||
clicked_status.allow_tags = True |
||||
|
||||
def _get_status_html(self, status, date): |
||||
if status: |
||||
return format_html( |
||||
'<span style="color: green;">✓</span> {}', |
||||
date.strftime('%Y-%m-%d %H:%M') if date else '' |
||||
) |
||||
return format_html('<span style="color: red;">✗</span>') |
||||
@ -0,0 +1,5 @@ |
||||
from django.apps import AppConfig |
||||
|
||||
class CrmConfig(AppConfig): |
||||
default_auto_field = 'django.db.models.BigAutoField' |
||||
name = 'crm' |
||||
@ -0,0 +1,18 @@ |
||||
import django_filters |
||||
|
||||
from .models import Event, Status, Prospect |
||||
|
||||
class ProspectFilter(django_filters.FilterSet): |
||||
region = django_filters.CharFilter(lookup_expr='icontains') |
||||
events = django_filters.ModelMultipleChoiceFilter( |
||||
queryset=Event.objects.all(), |
||||
field_name='events', |
||||
) |
||||
statuses = django_filters.ModelMultipleChoiceFilter( |
||||
queryset=Status.objects.all(), |
||||
field_name='prospectstatus__status', |
||||
) |
||||
|
||||
class Meta: |
||||
model = Prospect |
||||
fields = ['region', 'events', 'statuses'] |
||||
@ -0,0 +1,40 @@ |
||||
from django import forms |
||||
from .models import Prospect, Event |
||||
import datetime |
||||
|
||||
class SmallTextArea(forms.Textarea): |
||||
def __init__(self, *args, **kwargs): |
||||
kwargs.setdefault('attrs', {}) |
||||
kwargs['attrs'].update({ |
||||
'rows': 2, |
||||
'cols': 100, |
||||
'style': 'height: 80px; width: 800px;' |
||||
}) |
||||
super().__init__(*args, **kwargs) |
||||
|
||||
class CSVImportForm(forms.Form): |
||||
csv_file = forms.FileField() |
||||
|
||||
class BulkEmailForm(forms.Form): |
||||
prospects = forms.ModelMultipleChoiceField( |
||||
queryset=Prospect.objects.all(), |
||||
widget=forms.CheckboxSelectMultiple |
||||
) |
||||
subject = forms.CharField(max_length=200) |
||||
content = forms.CharField(widget=forms.Textarea) |
||||
|
||||
class EventForm(forms.ModelForm): |
||||
prospects = forms.ModelMultipleChoiceField( |
||||
queryset=Prospect.objects.all(), |
||||
widget=forms.SelectMultiple(attrs={'class': 'select2'}), |
||||
required=False |
||||
) |
||||
description = forms.CharField(widget=SmallTextArea) |
||||
attachment_text = forms.CharField(widget=SmallTextArea) |
||||
|
||||
class Meta: |
||||
model = Event |
||||
fields = ['date', 'type', 'description', 'attachment_text', 'prospects', 'status'] |
||||
widgets = { |
||||
'date': forms.DateTimeInput(attrs={'type': 'datetime-local'}), |
||||
} |
||||
@ -0,0 +1,94 @@ |
||||
# Generated by Django 4.2.11 on 2024-12-08 15:10 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
initial = True |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='Prospect', |
||||
fields=[ |
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('email', models.EmailField(max_length=254, unique=True)), |
||||
('name', models.CharField(max_length=200)), |
||||
('region', models.CharField(max_length=100)), |
||||
('created_at', models.DateTimeField(auto_now_add=True)), |
||||
('users', models.ManyToManyField(blank=True, to=settings.AUTH_USER_MODEL)), |
||||
], |
||||
), |
||||
migrations.CreateModel( |
||||
name='Status', |
||||
fields=[ |
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('name', models.CharField(max_length=100, unique=True)), |
||||
('created_at', models.DateTimeField(auto_now_add=True)), |
||||
], |
||||
), |
||||
migrations.CreateModel( |
||||
name='ProspectStatus', |
||||
fields=[ |
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('created_at', models.DateTimeField(auto_now_add=True)), |
||||
('prospect', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.prospect')), |
||||
('status', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, to='crm.status')), |
||||
], |
||||
options={ |
||||
'ordering': ['-created_at'], |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='Event', |
||||
fields=[ |
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('date', models.DateTimeField()), |
||||
('type', models.CharField(choices=[('MAIL', 'Mailing List'), ('SMS', 'SMS Campaign'), ('PRESS', 'Press Release')], max_length=10)), |
||||
('description', models.TextField()), |
||||
('attachment_text', models.TextField(blank=True)), |
||||
('status', models.CharField(choices=[('PLANNED', 'Planned'), ('ACTIVE', 'Active'), ('COMPLETED', 'Completed')], max_length=20)), |
||||
('created_at', models.DateTimeField(auto_now_add=True)), |
||||
('prospects', models.ManyToManyField(related_name='events', to='crm.prospect')), |
||||
], |
||||
options={ |
||||
'ordering': ['-created_at'], |
||||
}, |
||||
), |
||||
migrations.CreateModel( |
||||
name='EmailCampaign', |
||||
fields=[ |
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('subject', models.CharField(max_length=200)), |
||||
('content', models.TextField()), |
||||
('sent_at', models.DateTimeField(blank=True, null=True)), |
||||
('event', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='crm.event')), |
||||
], |
||||
), |
||||
migrations.CreateModel( |
||||
name='EmailTracker', |
||||
fields=[ |
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), |
||||
('tracking_id', models.UUIDField(default=uuid.uuid4, editable=False)), |
||||
('sent', models.BooleanField(default=False)), |
||||
('sent_at', models.DateTimeField(blank=True, null=True)), |
||||
('opened', models.BooleanField(default=False)), |
||||
('opened_at', models.DateTimeField(blank=True, null=True)), |
||||
('clicked', models.BooleanField(default=False)), |
||||
('clicked_at', models.DateTimeField(blank=True, null=True)), |
||||
('error_message', models.TextField(blank=True)), |
||||
('campaign', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.emailcampaign')), |
||||
('prospect', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='crm.prospect')), |
||||
], |
||||
options={ |
||||
'unique_together': {('campaign', 'prospect')}, |
||||
}, |
||||
), |
||||
] |
||||
@ -0,0 +1,60 @@ |
||||
# Generated by Django 4.2.11 on 2024-12-08 20:58 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import django.utils.timezone |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL), |
||||
('crm', '0001_initial'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterModelOptions( |
||||
name='event', |
||||
options={'ordering': ['-created_at'], 'permissions': [('manage_events', 'Can manage events'), ('view_events', 'Can view events')]}, |
||||
), |
||||
migrations.AlterModelOptions( |
||||
name='prospect', |
||||
options={'permissions': [('manage_prospects', 'Can manage prospects'), ('view_prospects', 'Can view prospects')]}, |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='created_by', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_events', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='modified_at', |
||||
field=models.DateTimeField(auto_now=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='modified_by', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='modified_events', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='prospect', |
||||
name='created_by', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='created_prospects', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='prospect', |
||||
name='modified_at', |
||||
field=models.DateTimeField(auto_now=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='prospect', |
||||
name='modified_by', |
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='modified_prospects', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='event', |
||||
name='date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
] |
||||
@ -0,0 +1,6 @@ |
||||
from django.contrib.auth.mixins import UserPassesTestMixin, LoginRequiredMixin |
||||
from django.core.exceptions import PermissionDenied |
||||
|
||||
class CRMAccessMixin(LoginRequiredMixin, UserPassesTestMixin): |
||||
def test_func(self): |
||||
return self.request.user.groups.filter(name='CRM Manager').exists() |
||||
@ -0,0 +1,112 @@ |
||||
from django.db import models |
||||
from django.contrib.auth import get_user_model |
||||
from django.utils import timezone |
||||
import uuid |
||||
|
||||
User = get_user_model() |
||||
|
||||
class EventType(models.TextChoices): |
||||
MAILING = 'MAIL', 'Mailing List' |
||||
SMS = 'SMS', 'SMS Campaign' |
||||
PRESS = 'PRESS', 'Press Release' |
||||
|
||||
class Prospect(models.Model): |
||||
email = models.EmailField(unique=True) |
||||
name = models.CharField(max_length=200) |
||||
region = models.CharField(max_length=100) |
||||
users = models.ManyToManyField(get_user_model(), blank=True) |
||||
created_at = models.DateTimeField(auto_now_add=True) |
||||
created_by = models.ForeignKey( |
||||
User, |
||||
on_delete=models.SET_NULL, |
||||
null=True, |
||||
related_name='created_prospects' |
||||
) |
||||
modified_by = models.ForeignKey( |
||||
User, |
||||
on_delete=models.SET_NULL, |
||||
null=True, |
||||
related_name='modified_prospects' |
||||
) |
||||
modified_at = models.DateTimeField(auto_now=True) |
||||
|
||||
class Meta: |
||||
permissions = [ |
||||
("manage_prospects", "Can manage prospects"), |
||||
("view_prospects", "Can view prospects"), |
||||
] |
||||
|
||||
def __str__(self): |
||||
return f"{self.name} ({self.email})" |
||||
|
||||
class Status(models.Model): |
||||
name = models.CharField(max_length=100, unique=True) |
||||
created_at = models.DateTimeField(auto_now_add=True) |
||||
|
||||
def __str__(self): |
||||
return self.name |
||||
|
||||
class ProspectStatus(models.Model): |
||||
prospect = models.ForeignKey(Prospect, on_delete=models.CASCADE) |
||||
status = models.ForeignKey(Status, on_delete=models.PROTECT) |
||||
created_at = models.DateTimeField(auto_now_add=True) |
||||
|
||||
class Meta: |
||||
ordering = ['-created_at'] |
||||
|
||||
class Event(models.Model): |
||||
date = models.DateTimeField(default=timezone.now) |
||||
type = models.CharField(max_length=10, choices=EventType.choices) |
||||
description = models.TextField() |
||||
attachment_text = models.TextField(blank=True) |
||||
prospects = models.ManyToManyField(Prospect, related_name='events') |
||||
status = models.CharField(max_length=20, choices=[ |
||||
('PLANNED', 'Planned'), |
||||
('ACTIVE', 'Active'), |
||||
('COMPLETED', 'Completed'), |
||||
]) |
||||
created_at = models.DateTimeField(auto_now_add=True) |
||||
created_by = models.ForeignKey( |
||||
User, |
||||
on_delete=models.SET_NULL, |
||||
null=True, |
||||
related_name='created_events' |
||||
) |
||||
modified_by = models.ForeignKey( |
||||
User, |
||||
on_delete=models.SET_NULL, |
||||
null=True, |
||||
related_name='modified_events' |
||||
) |
||||
modified_at = models.DateTimeField(auto_now=True) |
||||
|
||||
class Meta: |
||||
ordering = ['-created_at'] |
||||
permissions = [ |
||||
("manage_events", "Can manage events"), |
||||
("view_events", "Can view events"), |
||||
] |
||||
|
||||
def __str__(self): |
||||
return f"{self.get_type_display()} - {self.date.date()}" |
||||
|
||||
class EmailCampaign(models.Model): |
||||
event = models.OneToOneField(Event, on_delete=models.CASCADE) |
||||
subject = models.CharField(max_length=200) |
||||
content = models.TextField() |
||||
sent_at = models.DateTimeField(null=True, blank=True) |
||||
|
||||
class EmailTracker(models.Model): |
||||
campaign = models.ForeignKey(EmailCampaign, on_delete=models.CASCADE) |
||||
prospect = models.ForeignKey(Prospect, on_delete=models.CASCADE) |
||||
tracking_id = models.UUIDField(default=uuid.uuid4, editable=False) |
||||
sent = models.BooleanField(default=False) |
||||
sent_at = models.DateTimeField(null=True, blank=True) |
||||
opened = models.BooleanField(default=False) |
||||
opened_at = models.DateTimeField(null=True, blank=True) |
||||
clicked = models.BooleanField(default=False) |
||||
clicked_at = models.DateTimeField(null=True, blank=True) |
||||
error_message = models.TextField(blank=True) |
||||
|
||||
class Meta: |
||||
unique_together = ['campaign', 'prospect'] |
||||
@ -0,0 +1,43 @@ |
||||
# services.py |
||||
from django.core.mail import send_mail, get_connection |
||||
from django.conf import settings |
||||
from django.template.loader import render_to_string |
||||
|
||||
def send_bulk_email(subject, content, prospects): |
||||
""" |
||||
Send bulk emails to prospects |
||||
Returns tuple of (success_count, error_count) |
||||
""" |
||||
success_count = 0 |
||||
error_count = 0 |
||||
|
||||
# Get email connection |
||||
connection = get_connection() |
||||
|
||||
# You might want to wrap this in try/except if you want to handle connection errors |
||||
connection.open() |
||||
|
||||
for prospect in prospects: |
||||
try: |
||||
# You could add basic personalization here |
||||
personalized_content = content.replace('{name}', prospect.name) |
||||
|
||||
send_mail( |
||||
subject=subject, |
||||
message=personalized_content, # Plain text version |
||||
html_message=personalized_content, # HTML version |
||||
from_email=settings.DEFAULT_FROM_EMAIL, |
||||
recipient_list=[prospect.email], |
||||
connection=connection, |
||||
fail_silently=False, |
||||
) |
||||
success_count += 1 |
||||
|
||||
except Exception as e: |
||||
error_count += 1 |
||||
# You might want to log the error here |
||||
print(f"Failed to send email to {prospect.email}: {str(e)}") |
||||
|
||||
connection.close() |
||||
|
||||
return success_count, error_count |
||||
@ -0,0 +1,10 @@ |
||||
document.addEventListener("DOMContentLoaded", function () { |
||||
const selectAll = document.getElementById("select-all"); |
||||
const prospectCheckboxes = document.getElementsByName("selected_prospects"); |
||||
|
||||
selectAll.addEventListener("change", function () { |
||||
prospectCheckboxes.forEach((checkbox) => { |
||||
checkbox.checked = selectAll.checked; |
||||
}); |
||||
}); |
||||
}); |
||||
@ -0,0 +1,31 @@ |
||||
{% extends "crm/base.html" %} {% block content %} |
||||
<div class="container padding-bottom"> |
||||
<div class="grid-x padding-bottom"> |
||||
<div class="cell medium-6 large-6 my-block bubble"> |
||||
<h1 class="title">Add New Prospect</h1> |
||||
|
||||
<form method="post"> |
||||
{% csrf_token %} |
||||
<div class="form-group"> |
||||
<label for="name">Name:</label> |
||||
<input type="text" name="name" id="name" required /> |
||||
</div> |
||||
|
||||
<div class="form-group"> |
||||
<label for="email">Email:</label> |
||||
<input type="email" name="email" id="email" required /> |
||||
</div> |
||||
|
||||
<div class="form-group"> |
||||
<label for="region">Region:</label> |
||||
<input type="text" name="region" id="region" required /> |
||||
</div> |
||||
|
||||
<button type="submit" class="small-button margin-v20"> |
||||
Save Prospect |
||||
</button> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
||||
@ -0,0 +1,71 @@ |
||||
<!DOCTYPE html> |
||||
<html> |
||||
{% load static %} |
||||
|
||||
<head> |
||||
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1"> |
||||
<link |
||||
rel="stylesheet" |
||||
href="{% static 'tournaments/css/foundation.min.css' %}" |
||||
/> |
||||
<link rel="stylesheet" href="{% static 'tournaments/css/style.css' %}" /> |
||||
<link rel="stylesheet" href="{% static 'tournaments/css/basics.css' %}" /> |
||||
|
||||
<link |
||||
rel="icon" |
||||
type="image/png" |
||||
href="{% static 'tournaments/images/favicon.png' %}" |
||||
/> |
||||
|
||||
<title>{% block head_title %}Page Title{% endblock %} - Padel Club</title> |
||||
<!-- Matomo --> |
||||
<script> |
||||
var _paq = window._paq = window._paq || []; |
||||
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */ |
||||
_paq.push(["setDocumentTitle", document.domain + "/" + document.title]); |
||||
_paq.push(["setDoNotTrack", true]); |
||||
_paq.push(['trackPageView']); |
||||
_paq.push(['enableLinkTracking']); |
||||
(function() { |
||||
var u="//matomo.padelclub.app/"; |
||||
_paq.push(['setTrackerUrl', u+'matomo.php']); |
||||
_paq.push(['setSiteId', '1']); |
||||
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; |
||||
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); |
||||
})(); |
||||
</script> |
||||
<!-- End Matomo Code --> |
||||
|
||||
</head> |
||||
|
||||
<body class="wrapper"> |
||||
<header> |
||||
<div class="grid-x"> |
||||
<div class="medium-6 large-9 cell topblock my-block "> |
||||
<a href="{% url 'index' %}"> |
||||
<img |
||||
src="{% static 'tournaments/images/PadelClub_logo_512.png' %}" |
||||
class="logo inline" |
||||
/> |
||||
<div class="inline padding-left"> |
||||
<h1 class="club">{% block first_title %}Page Title{% endblock %}</h1> |
||||
<h1 class="event">{% block second_title %}Page Title{% endblock %}</h1> |
||||
</div> |
||||
</a> |
||||
</div> |
||||
{% block right_header %}{% endblock %} |
||||
</div> |
||||
</header> |
||||
|
||||
<main> |
||||
<!-- Content --> |
||||
{% block content %} |
||||
<!-- The content of child templates will be inserted here --> |
||||
{% endblock %} |
||||
</main> |
||||
|
||||
<footer/> |
||||
|
||||
</body> |
||||
</html> |
||||
@ -0,0 +1,27 @@ |
||||
{% extends "crm/base.html" %} {% block content %} |
||||
<div class="container"> |
||||
<div class="grid-x padding-bottom"> |
||||
<div class="cell medium-6 large-6 my-block bubble"> |
||||
<h1 class="title"> |
||||
{% if form.instance.pk %}Edit{% else %}Add{% endif %} Event |
||||
</h1> |
||||
|
||||
<form method="post"> |
||||
{% csrf_token %} {{ form }} |
||||
|
||||
<div class="mt-3"> |
||||
<button type="submit" class="btn small-button"> |
||||
Save Event |
||||
</button> |
||||
<a |
||||
href="{% url 'crm:planned_events' %}" |
||||
class="btn btn-secondary" |
||||
>Cancel</a |
||||
> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
|
||||
{% endblock %} |
||||
@ -0,0 +1,16 @@ |
||||
<div class="bottom-border"> |
||||
<div class="table-row-3-colums"> |
||||
<div class="left-column"> |
||||
<div class="semibold">{{ event.get_type_display }}</div> |
||||
<div class="minor-info">{{ event.description|truncatechars:100 }}</div> |
||||
</div> |
||||
|
||||
<div class="right-column"> |
||||
<span>{{ event.date|date:"d/m/Y H:i" }}</span> |
||||
<a href="{% url 'crm:edit_event' event.id %}" class="small-button">Edit</a> |
||||
<!-- {% if event.status == 'PLANNED' %} |
||||
<a href="{% url 'crm:start_event' event.id %}" class="small-button">Start</a> |
||||
{% endif %} --> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
@ -0,0 +1,58 @@ |
||||
{% extends "crm/base.html" %} |
||||
{% load crm_tags %} |
||||
|
||||
|
||||
{% block content %} |
||||
|
||||
{% if request.user|is_crm_manager %} |
||||
|
||||
<div class="d-flex"> |
||||
<a href="{% url 'crm:add_event' %}" class="small-button margin-v20"> |
||||
Add Event |
||||
</a> |
||||
<a href="{% url 'crm:add_prospect' %}" class="small-button margin-v20 left-margin"> |
||||
Add Prospect |
||||
</a> |
||||
</div> |
||||
|
||||
<div class="container grid-x padding-bottom"> |
||||
<div class="cell medium-6 large-6 my-block bubble"> |
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4"> |
||||
<h1 class="title">Completed Events</h1> |
||||
</div> |
||||
|
||||
<div class="list-group"> |
||||
{% for event in completed_events %} |
||||
{% include "crm/event_row.html" with event=event %} |
||||
{% empty %} |
||||
<div class="list-group-item">No completed events.</div> |
||||
{% endfor %} |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
<div class="cell medium-6 large-6 my-block bubble"> |
||||
|
||||
<div class="d-flex justify-content-between align-items-center mb-4"> |
||||
<h1 class="title">Planned Events</h1> |
||||
</div> |
||||
|
||||
<div class="list-group"> |
||||
{% for event in planned_events %} |
||||
{% include "crm/event_row.html" with event=event %} |
||||
{% empty %} |
||||
<div class="list-group-item">No planned events.</div> |
||||
{% endfor %} |
||||
</div> |
||||
|
||||
</div> |
||||
</div> |
||||
|
||||
{% else %} |
||||
|
||||
Not authorized |
||||
|
||||
{% endif %} |
||||
|
||||
{% endblock %} |
||||
@ -0,0 +1,57 @@ |
||||
{% extends "crm/base.html" %} |
||||
|
||||
{% block content %} |
||||
<div class="container bubble"> |
||||
<h2>Prospects</h2> |
||||
|
||||
<div class="card mb-4"> |
||||
<div class="card-body"> |
||||
<form method="get" class="row g-3"> |
||||
{{ filter.form }} |
||||
<div class="col-12"> |
||||
<button type="submit" class="btn btn-primary">Filter</button> |
||||
<a href="{% url 'crm:prospect-list' %}" class="btn btn-secondary">Clear</a> |
||||
</div> |
||||
</form> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="mb-3"> |
||||
<a href="{% url 'crm:prospect-import' %}" class="btn btn-success">Import CSV</a> |
||||
<a href="{% url 'crm:send-bulk-email' %}" class="btn btn-primary">Send Email</a> |
||||
</div> |
||||
|
||||
<div class="table-responsive"> |
||||
<table class="table table-striped"> |
||||
<thead> |
||||
<tr> |
||||
<th><input type="checkbox" id="select-all"></th> |
||||
<th>Name</th> |
||||
<th>Email</th> |
||||
<th>Region</th> |
||||
<th>Status</th> |
||||
<th>Actions</th> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
{% for prospect in prospects %} |
||||
<tr> |
||||
<td><input type="checkbox" name="selected_prospects" value="{{ prospect.id }}"></td> |
||||
<td>{{ prospect.name }}</td> |
||||
<td>{{ prospect.email }}</td> |
||||
<td>{{ prospect.region }}</td> |
||||
<td> |
||||
{% for status in prospect.prospectstatus_set.all %} |
||||
<span class="badge bg-primary">{{ status.status.name }}</span> |
||||
{% endfor %} |
||||
</td> |
||||
<td> |
||||
<button class="btn btn-sm btn-secondary">Edit</button> |
||||
</td> |
||||
</tr> |
||||
{% endfor %} |
||||
</tbody> |
||||
</table> |
||||
</div> |
||||
</div> |
||||
{% endblock %} |
||||
@ -0,0 +1,47 @@ |
||||
{% extends "crm/base.html" %} |
||||
|
||||
{% block content %} |
||||
<div class="container mt-4"> |
||||
<h2>Send Bulk Email</h2> |
||||
|
||||
<form method="post"> |
||||
{% csrf_token %} |
||||
|
||||
<div class="mb-3"> |
||||
<label class="form-label">{{ form.prospects.label }}</label> |
||||
{{ form.prospects }} |
||||
{% if form.prospects.errors %} |
||||
<div class="alert alert-danger"> |
||||
{{ form.prospects.errors }} |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
|
||||
<div class="mb-3"> |
||||
<label class="form-label">{{ form.subject.label }}</label> |
||||
{{ form.subject }} |
||||
{% if form.subject.errors %} |
||||
<div class="alert alert-danger"> |
||||
{{ form.subject.errors }} |
||||
</div> |
||||
{% endif %} |
||||
</div> |
||||
|
||||
<div class="mb-3"> |
||||
<label class="form-label">{{ form.content.label }}</label> |
||||
{{ form.content }} |
||||
{% if form.content.errors %} |
||||
<div class="alert alert-danger"> |
||||
{{ form.content.errors }} |
||||
</div> |
||||
{% endif %} |
||||
<div class="form-text"> |
||||
You can use {name} to insert the prospect's name. |
||||
</div> |
||||
</div> |
||||
|
||||
<button type="submit" class="btn btn-primary">Send Email</button> |
||||
<a href="{% url 'crm:prospect-list' %}" class="btn btn-secondary">Cancel</a> |
||||
</form> |
||||
</div> |
||||
{% endblock %} |
||||
@ -0,0 +1,7 @@ |
||||
from django import template |
||||
|
||||
register = template.Library() |
||||
|
||||
@register.filter(name='is_crm_manager') |
||||
def is_crm_manager(user): |
||||
return user.groups.filter(name='CRM Manager').exists() |
||||
@ -0,0 +1,3 @@ |
||||
from django.test import TestCase |
||||
|
||||
# Create your tests here. |
||||
@ -0,0 +1,15 @@ |
||||
from django.urls import path |
||||
from . import views |
||||
|
||||
app_name = 'crm' |
||||
|
||||
urlpatterns = [ |
||||
path('', views.EventListView.as_view(), name='planned_events'),path('', views.EventListView.as_view(), name='planned-events'), |
||||
path('events/add/', views.EventCreateView.as_view(), name='add_event'), |
||||
path('events/<int:pk>/edit/', views.EditEventView.as_view(), name='edit_event'), |
||||
path('events/<int:pk>/start/', views.StartEventView.as_view(), name='start_event'), |
||||
path('prospects/', views.ProspectListView.as_view(), name='prospect-list'), |
||||
path('add-prospect/', views.add_prospect, name='add_prospect'), |
||||
path('prospects/import/', views.CSVImportView.as_view(), name='prospect-import'), |
||||
path('email/send/', views.SendBulkEmailView.as_view(), name='send-bulk-email'), |
||||
] |
||||
@ -0,0 +1,186 @@ |
||||
# views.py |
||||
from django.views.generic import FormView, ListView, DetailView, CreateView, UpdateView |
||||
from django.views.generic.edit import FormView, BaseUpdateView |
||||
from django.contrib.auth.mixins import LoginRequiredMixin |
||||
from django.contrib.auth.decorators import permission_required |
||||
from django.contrib import messages |
||||
from django.shortcuts import render, redirect, get_object_or_404 |
||||
from django.urls import reverse_lazy |
||||
from django.http import HttpResponse, HttpResponseRedirect |
||||
from django.views import View |
||||
from django.utils import timezone |
||||
from django.contrib.sites.shortcuts import get_current_site |
||||
from django.template.loader import render_to_string |
||||
from django.core.mail import send_mail |
||||
from django.conf import settings |
||||
|
||||
from .models import Event, Prospect, EmailTracker, EmailCampaign, EventType |
||||
from .filters import ProspectFilter |
||||
from .forms import CSVImportForm, BulkEmailForm, EventForm |
||||
|
||||
from .mixins import CRMAccessMixin |
||||
|
||||
import csv |
||||
from io import TextIOWrapper |
||||
from datetime import datetime |
||||
|
||||
@permission_required('crm.view_crm', raise_exception=True) |
||||
def add_prospect(request): |
||||
if request.method == 'POST': |
||||
name = request.POST.get('name') |
||||
email = request.POST.get('email') |
||||
region = request.POST.get('region') |
||||
|
||||
try: |
||||
prospect = Prospect.objects.create( |
||||
name=name, |
||||
email=email, |
||||
region=region, |
||||
created_by=request.user, |
||||
modified_by=request.user |
||||
) |
||||
messages.success(request, f'Prospect {name} has been added successfully!') |
||||
return redirect('crm:events') # or wherever you want to redirect after success |
||||
except Exception as e: |
||||
messages.error(request, f'Error adding prospect: {str(e)}') |
||||
|
||||
return render(request, 'crm/add_prospect.html') |
||||
|
||||
class EventCreateView(CRMAccessMixin, CreateView): |
||||
model = Event |
||||
form_class = EventForm |
||||
template_name = 'crm/event_form.html' |
||||
success_url = reverse_lazy('crm:planned_events') |
||||
|
||||
def form_valid(self, form): |
||||
form.instance.created_by = self.request.user |
||||
form.instance.modified_by = self.request.user |
||||
return super().form_valid(form) |
||||
|
||||
class EditEventView(CRMAccessMixin, UpdateView): |
||||
model = Event |
||||
form_class = EventForm |
||||
template_name = 'crm/event_form.html' |
||||
success_url = reverse_lazy('crm:planned_events') |
||||
|
||||
def form_valid(self, form): |
||||
form.instance.modified_by = self.request.user |
||||
response = super().form_valid(form) |
||||
messages.success(self.request, 'Event updated successfully!') |
||||
return response |
||||
|
||||
class StartEventView(CRMAccessMixin, BaseUpdateView): |
||||
model = Event |
||||
http_method_names = ['post', 'get'] |
||||
|
||||
def get(self, request, *args, **kwargs): |
||||
return self.post(request, *args, **kwargs) |
||||
|
||||
def post(self, request, *args, **kwargs): |
||||
event = get_object_or_404(Event, pk=kwargs['pk'], status='PLANNED') |
||||
event.status = 'ACTIVE' |
||||
event.save() |
||||
|
||||
if event.type == 'MAIL': |
||||
return HttpResponseRedirect( |
||||
reverse_lazy('crm:setup_email_campaign', kwargs={'event_id': event.id}) |
||||
) |
||||
elif event.type == 'SMS': |
||||
return HttpResponseRedirect( |
||||
reverse_lazy('crm:setup_sms_campaign', kwargs={'event_id': event.id}) |
||||
) |
||||
elif event.type == 'PRESS': |
||||
return HttpResponseRedirect( |
||||
reverse_lazy('crm:setup_press_release', kwargs={'event_id': event.id}) |
||||
) |
||||
|
||||
messages.success(request, 'Event started successfully!') |
||||
return HttpResponseRedirect(reverse_lazy('crm:planned_events')) |
||||
|
||||
class EventListView(CRMAccessMixin, ListView): |
||||
model = Event |
||||
template_name = 'crm/events.html' |
||||
context_object_name = 'events' # We won't use this since we're providing custom context |
||||
|
||||
def get_context_data(self, **kwargs): |
||||
context = super().get_context_data(**kwargs) |
||||
context['planned_events'] = Event.objects.filter( |
||||
status='PLANNED' |
||||
).order_by('date') |
||||
context['completed_events'] = Event.objects.filter( |
||||
status='COMPLETED' |
||||
).order_by('-date') |
||||
return context |
||||
|
||||
class ProspectListView(CRMAccessMixin, ListView): |
||||
model = Prospect |
||||
template_name = 'crm/prospect_list.html' |
||||
context_object_name = 'prospects' |
||||
filterset_class = ProspectFilter |
||||
|
||||
def get_context_data(self, **kwargs): |
||||
context = super().get_context_data(**kwargs) |
||||
context['filter'] = self.filterset_class( |
||||
self.request.GET, |
||||
queryset=self.get_queryset() |
||||
) |
||||
return context |
||||
|
||||
class CSVImportView(CRMAccessMixin, FormView): |
||||
template_name = 'crm/csv_import.html' |
||||
form_class = CSVImportForm |
||||
success_url = reverse_lazy('prospect-list') |
||||
|
||||
def form_valid(self, form): |
||||
csv_file = TextIOWrapper( |
||||
form.cleaned_data['csv_file'].file, |
||||
encoding='utf-8' |
||||
) |
||||
reader = csv.DictReader(csv_file) |
||||
|
||||
for row in reader: |
||||
Prospect.objects.create( |
||||
email=row['email'], |
||||
name=row.get('name', ''), |
||||
region=row.get('region', ''), |
||||
created_by=self.request.user, |
||||
modified_by=self.request.user |
||||
) |
||||
|
||||
return super().form_valid(form) |
||||
|
||||
class SendBulkEmailView(CRMAccessMixin, FormView): |
||||
template_name = 'crm/send_bulk_email.html' |
||||
form_class = BulkEmailForm |
||||
success_url = reverse_lazy('crm:prospect-list') |
||||
|
||||
def form_valid(self, form): |
||||
prospects = form.cleaned_data['prospects'] |
||||
subject = form.cleaned_data['subject'] |
||||
content = form.cleaned_data['content'] |
||||
|
||||
# Create Event for this email campaign |
||||
event = Event.objects.create( |
||||
date=datetime.now(), |
||||
type=EventType.MAILING, |
||||
description=f"Bulk email: {subject}", |
||||
status='COMPLETED', |
||||
created_by=self.request.user, |
||||
modified_by=self.request.user |
||||
) |
||||
event.prospects.set(prospects) |
||||
|
||||
# Send emails |
||||
success_count, error_count = send_bulk_email( |
||||
subject=subject, |
||||
content=content, |
||||
prospects=prospects |
||||
) |
||||
|
||||
# Show result message |
||||
messages.success( |
||||
self.request, |
||||
f"Sent {success_count} emails successfully. {error_count} failed." |
||||
) |
||||
|
||||
return super().form_valid(form) |
||||
@ -0,0 +1,51 @@ |
||||
from Crypto.Cipher import AES |
||||
import base64 |
||||
import os |
||||
from .config_local import CRYPTO_KEY |
||||
|
||||
class EncryptionUtil: |
||||
|
||||
def __init__(self, key): |
||||
# In a real application, store this key securely (e.g., environment variables) |
||||
self.crypto_key = key |
||||
|
||||
def encrypt_aes_gcm(self, plaintext): |
||||
# Decode the base64 encoded key |
||||
key = base64.b64decode(self.crypto_key) |
||||
|
||||
# Generate a random 12-byte nonce |
||||
nonce = os.urandom(12) |
||||
|
||||
# Create the cipher object |
||||
cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) |
||||
|
||||
# Encrypt the plaintext |
||||
ciphertext, tag = cipher.encrypt_and_digest(plaintext.encode('utf-8')) |
||||
|
||||
# Combine nonce, ciphertext, and tag |
||||
encrypted_data = nonce + ciphertext + tag |
||||
|
||||
# Encode the result in base64 |
||||
encrypted_base64 = base64.b64encode(encrypted_data).decode('utf-8') |
||||
|
||||
return encrypted_base64 |
||||
|
||||
def decrypt_aes_gcm(self, encrypted_base64): |
||||
# Decode the base64 encoded data and key |
||||
encrypted_data = base64.b64decode(encrypted_base64) |
||||
key = base64.b64decode(self.crypto_key) |
||||
|
||||
# Extract the nonce, tag, and ciphertext from the combined encrypted data |
||||
nonce = encrypted_data[:12] # AES GCM nonce is 12 bytes |
||||
tag = encrypted_data[-16:] # AES GCM tag is 16 bytes |
||||
ciphertext = encrypted_data[12:-16] # Ciphertext is everything in between |
||||
|
||||
# Create the cipher object and decrypt the data |
||||
cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) |
||||
decrypted_data = cipher.decrypt_and_verify(ciphertext, tag) |
||||
|
||||
# Convert decrypted bytes to string (assuming UTF-8 encoding) |
||||
decrypted_text = decrypted_data.decode('utf-8') |
||||
return decrypted_text |
||||
|
||||
encryption_util = EncryptionUtil(CRYPTO_KEY) |
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -1,10 +0,0 @@ |
||||
[ |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "1269d3a4e73e69bdab65a10a30accdf3c99487ef", |
||||
"fields": { |
||||
"user": "cbd61da8-a892-4d75-97b8-1406aaa5baf9", |
||||
"created": "2024-08-24T07:07:07.479Z" |
||||
} |
||||
} |
||||
] |
||||
@ -1,618 +0,0 @@ |
||||
[ |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$Be254DGrWWVIYUw60BV0w4$nuaijlEr1+9BBoLS22qvZ7FioM7DmJeEiWnJfplo2n4=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "apple-test", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-19T19:48:06.656Z", |
||||
"email": "razmig.sarkissian@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "", |
||||
"first_name": "Apple", |
||||
"last_name": "Apple", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$YYbNLTsSwxFTVDEwLjIBO7$4c7lhu5K1JXe8Fw466TRWBNk+qllWBs+cGADIKo1rAc=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "Xav", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-05-17T12:59:19.525Z", |
||||
"email": "roussetx@orange.fr", |
||||
"umpire_code": null, |
||||
"phone": "0632027200", |
||||
"first_name": "Xavier", |
||||
"last_name": "Rousset", |
||||
"licence_id": "4348094", |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$otoCcdpm3uBRAUHOV3WAAf$8D9RElwRxhkqrc9ZiyJ1ylxmIcRHu7aT+Vd+Qzd/96o=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "montest", |
||||
"is_staff": false, |
||||
"is_active": false, |
||||
"date_joined": "2024-06-25T13:19:07.102Z", |
||||
"email": "montestdeouf@hotmail.com", |
||||
"umpire_code": null, |
||||
"phone": "06 11 39 15 64", |
||||
"first_name": "Lolo", |
||||
"last_name": "Lolo", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$oFtBCAV0HqLROYna0WP5T1$Njqw1kAA7UDPdKrSGw5P+g0K/IeM3z0fDoVu5/t4T3g=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "lisek6", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-11T17:14:45.707Z", |
||||
"email": "lisek6@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "0669354417", |
||||
"first_name": "Lise", |
||||
"last_name": "Franc", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "Sportivement,", |
||||
"summons_message_signature": "Lise, juge arbitre du Sporting club de Cassis", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$BhKcoN29NTkIfLXDgVb87c$nrtoVHougWIIb86ho8T654GRZA9MINYGdlgryvbJTAI=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "matthias13190", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-11T14:03:22.441Z", |
||||
"email": "matthias13190@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0645656009", |
||||
"first_name": "Matthias", |
||||
"last_name": "Hanoun", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$jdiBHCyNwF6H8AkD4PtmyN$uKW7KoMCVAYVNXXz3QWsQahXzdNjhwWuhgUCCPyAnfA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "lise", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-24T16:23:50.713Z", |
||||
"email": "imagesincassis@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "06 69 35 44 17", |
||||
"first_name": "Lise", |
||||
"last_name": "Franc", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$MIMYmP5TuDtrWfzMfM57yA$qRKWNH7Cvj3+Mn+SytT7O/G6Ykv2g8+BkGEwK34g1a0=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "bbott07", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-22T14:52:27.383Z", |
||||
"email": "bastienbott@icloud.com", |
||||
"umpire_code": null, |
||||
"phone": "06 28 60 02 53", |
||||
"first_name": "Bastien", |
||||
"last_name": "Bott", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [8, 40], |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$3LWQ2yqP5qIXLSw2L9g26O$h3aMWqyXKVwU6ebEH8X8/iTGtIubVJP1H9c4Y0rZPJg=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "juliencompigne", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-10T09:21:53.628Z", |
||||
"email": "julien@padelbusinessleague.com", |
||||
"umpire_code": null, |
||||
"phone": "0671028451", |
||||
"first_name": "Julien", |
||||
"last_name": "Compigne", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$wKBIKw5fOEGxQpaAFRw5c2$T5rYXKJ6pLB5i0ELG9EEReF7OhxqT6n5NMzHYrsqKdE=", |
||||
"last_login": "2024-06-25T08:36:26.117Z", |
||||
"is_superuser": true, |
||||
"username": "laurent", |
||||
"is_staff": true, |
||||
"is_active": true, |
||||
"date_joined": "2024-03-09T11:23:34.532Z", |
||||
"email": "laurent@staxriver.com", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Laurent", |
||||
"last_name": "Morvillier", |
||||
"licence_id": null, |
||||
"country": null, |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 6, |
||||
"group_stage_match_format_preference": 0, |
||||
"loser_bracket_match_format_preference": 1, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$HePZx2xIlUuoo9iDNI3s8n$4dnTp0ofPX0gr4aA6bCISe279JQd2DPaKKE/iw/aoFQ=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "alexisledu", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-04T17:20:48.642Z", |
||||
"email": "tenpro64@yahoo.fr", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Alexis", |
||||
"last_name": "Le du", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$htg58iTu4m0j7SPnC7Xhb8$D62EKDhS5LjtTT7KbGMnPVGPBtpS77usb7wfVDW70x0=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "raz-stax", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-21T10:39:14.700Z", |
||||
"email": "razmig@staxriver.com", |
||||
"umpire_code": null, |
||||
"phone": "06 81 59 81 93", |
||||
"first_name": "Raz Stax", |
||||
"last_name": "Raz", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$93Gq2izTTYWFWY9liTr0Gj$bl7nez2g0PxQy84TfQGo4tpQ7fWaeKlbkRfbzSEuSgs=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "jawllm", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-05T13:24:01.287Z", |
||||
"email": "jeanalexandrewillem@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0686689103", |
||||
"first_name": "Jean Alexandre", |
||||
"last_name": "Willem", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$GW2aqxXBDMXmuxlrgE3lgk$OE4kDAmoFBk2FoU8tq4YoxFSHmhYkUDc6CJLfNti1SA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "JPH", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-27T15:47:21.565Z", |
||||
"email": "jp_houdaille@yahoo.fr", |
||||
"umpire_code": null, |
||||
"phone": "06 09 56 81 29", |
||||
"first_name": "Jean Paul", |
||||
"last_name": "Houdaille", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$Xz7ay2tEPAieZwFBaHG1Pv$nNGhqHHTy16N1XVaq4Wv8x9UEPldyYDsCCi3Z6AvauU=", |
||||
"last_login": "2024-06-22T15:08:17.091Z", |
||||
"is_superuser": true, |
||||
"username": "razmig", |
||||
"is_staff": true, |
||||
"is_active": true, |
||||
"date_joined": "2024-03-09T11:32:46.820Z", |
||||
"email": "razmig@padelclub.app", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Razmig", |
||||
"last_name": "Sarkissian", |
||||
"licence_id": "3515696", |
||||
"country": null, |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.\nMerci de me confirmer votre présence avec votre nom et de prévenir votre partenaire.\n\nLe Club House sera ouvert toute la journée pour vous restaurer.\n\nLe club se situe Avenue des gorguettes, 13260 Cassis.\nLe parking du club est accessible juste après les tennis.", |
||||
"summons_message_signature": "Sportivement,\nLise Franc et Razmig Sarkissian, vos JAPs.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": true, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 3, |
||||
"group_stage_match_format_preference": 3, |
||||
"loser_bracket_match_format_preference": 3, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$lHPAVgdC4anhmMGP28VYde$xptgy0yBKUfvaOrxk1giZhwd5Pg40QvTFo0/4otUa/o=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "jadu59", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-06T11:59:03.095Z", |
||||
"email": "willemjeanalexandre@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0686689103", |
||||
"first_name": "Jean", |
||||
"last_name": "Willem", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.", |
||||
"summons_message_signature": "Sportivement,\nJean Alexandre Willem, votre JAP.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [9, 35, 8, 40], |
||||
"bracket_match_format_preference": 9, |
||||
"group_stage_match_format_preference": 8, |
||||
"loser_bracket_match_format_preference": 8, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$hPdS3eX976rRow0la6PDhK$SxGJyNch/xkxSLtcp3Y2o3oCzfWeI5fRdKddQkWIEnw=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "kiskino", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-30T12:34:35.718Z", |
||||
"email": "nicolas.kischkewitz@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "0619413862", |
||||
"first_name": "Nicolas", |
||||
"last_name": "Kischkewitz", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "0410863f2a6695ec5e83548dabbb64ab8d458689", |
||||
"fields": { |
||||
"user": ["alexisledu"], |
||||
"created": "2024-06-05T11:28:05.329Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "143dbeb9130d64d23bf0b002062c6da32cdff17f", |
||||
"fields": { |
||||
"user": ["lisek6"], |
||||
"created": "2024-06-26T10:29:16.999Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "1878e126635415ff655e14967555d2c0a80ef0c0", |
||||
"fields": { |
||||
"user": ["bbott07"], |
||||
"created": "2024-06-22T15:23:14.515Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "5cf41d657d5b4eb076d73622be622a272ca28cac", |
||||
"fields": { |
||||
"user": ["juliencompigne"], |
||||
"created": "2024-06-10T14:41:52.716Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "5d724d22810b903d5f6b2cdc4c3a6394a18cfa93", |
||||
"fields": { |
||||
"user": ["laurent"], |
||||
"created": "2024-06-25T08:31:52.365Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "6934604fa54aaece3071f293d991094cb066f692", |
||||
"fields": { |
||||
"user": ["apple-test"], |
||||
"created": "2024-06-19T19:49:35.723Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "72d333841398c2887bfffe5d060e0fd8782a72bc", |
||||
"fields": { |
||||
"user": ["Xav"], |
||||
"created": "2024-05-17T13:01:28.268Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "a28c9c74668193c34f17d1312be80192d4276f73", |
||||
"fields": { |
||||
"user": ["razmig"], |
||||
"created": "2024-03-10T13:51:33.373Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "b4c9149fd70c0a4d2d24ce273be1ce53f2cc97e9", |
||||
"fields": { |
||||
"user": ["kiskino"], |
||||
"created": "2024-06-30T12:35:08.609Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "cbf77bdc3607447ba3f61f03cd814a3721be78f4", |
||||
"fields": { |
||||
"user": ["jadu59"], |
||||
"created": "2024-06-06T11:59:30.290Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "e20c56d828a1e2263efe87908579b6775b0abb4c", |
||||
"fields": { |
||||
"user": ["JPH"], |
||||
"created": "2024-06-27T19:09:37.149Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "f8bc995073e57d8e9b05c0bcc60836a54d8560f6", |
||||
"fields": { |
||||
"user": ["matthias13190"], |
||||
"created": "2024-06-11T14:22:26.345Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "fea091d7af39f5cac5bfbea9e9a2960f5eef49d9", |
||||
"fields": { |
||||
"user": ["raz-stax"], |
||||
"created": "2024-06-21T10:39:30.933Z" |
||||
} |
||||
} |
||||
] |
||||
@ -1,642 +0,0 @@ |
||||
[ |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "0718b707-6108-4c29-9c6e-468a8873fcd7", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$Be254DGrWWVIYUw60BV0w4$nuaijlEr1+9BBoLS22qvZ7FioM7DmJeEiWnJfplo2n4=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "apple-test", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-19T19:48:06.656Z", |
||||
"email": "razmig.sarkissian@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "", |
||||
"first_name": "Apple", |
||||
"last_name": "Apple", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "0c9cbcb4-c0d4-469b-a227-ad7b3f14a614", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$YYbNLTsSwxFTVDEwLjIBO7$4c7lhu5K1JXe8Fw466TRWBNk+qllWBs+cGADIKo1rAc=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "Xav", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-05-17T12:59:19.525Z", |
||||
"email": "roussetx@orange.fr", |
||||
"umpire_code": null, |
||||
"phone": "0632027200", |
||||
"first_name": "Xavier", |
||||
"last_name": "Rousset", |
||||
"licence_id": "4348094", |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "29c18f0b-a3c9-4ec3-9565-60cc8061ef37", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$otoCcdpm3uBRAUHOV3WAAf$8D9RElwRxhkqrc9ZiyJ1ylxmIcRHu7aT+Vd+Qzd/96o=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "montest", |
||||
"is_staff": false, |
||||
"is_active": false, |
||||
"date_joined": "2024-06-25T13:19:07.102Z", |
||||
"email": "montestdeouf@hotmail.com", |
||||
"umpire_code": null, |
||||
"phone": "06 11 39 15 64", |
||||
"first_name": "Lolo", |
||||
"last_name": "Lolo", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "365de47c-26fa-4f20-81c8-d010d0581f04", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$oFtBCAV0HqLROYna0WP5T1$Njqw1kAA7UDPdKrSGw5P+g0K/IeM3z0fDoVu5/t4T3g=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "lisek6", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-11T17:14:45.707Z", |
||||
"email": "lisek6@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "0669354417", |
||||
"first_name": "Lise", |
||||
"last_name": "Franc", |
||||
"licence_id": "3084859", |
||||
"country": "France", |
||||
"summons_message_body": "Sportivement,", |
||||
"summons_message_signature": "Lise, juge arbitre du Sporting club de Cassis", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "4353d6de-8b85-401a-ac79-8e675830670c", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$BhKcoN29NTkIfLXDgVb87c$nrtoVHougWIIb86ho8T654GRZA9MINYGdlgryvbJTAI=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "matthias13190", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-11T14:03:22.441Z", |
||||
"email": "matthias13190@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0645656009", |
||||
"first_name": "Matthias", |
||||
"last_name": "Hanoun", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "50d2f818-ad64-4c69-909e-76081597ffb0", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$jdiBHCyNwF6H8AkD4PtmyN$uKW7KoMCVAYVNXXz3QWsQahXzdNjhwWuhgUCCPyAnfA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "lise", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-24T16:23:50.713Z", |
||||
"email": "imagesincassis@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "06 69 35 44 17", |
||||
"first_name": "Lise", |
||||
"last_name": "Franc", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "5f683e93-0bde-46a8-a285-29fcaf5091b0", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$MIMYmP5TuDtrWfzMfM57yA$qRKWNH7Cvj3+Mn+SytT7O/G6Ykv2g8+BkGEwK34g1a0=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "bbott07", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-22T14:52:27.383Z", |
||||
"email": "bastienbott@icloud.com", |
||||
"umpire_code": null, |
||||
"phone": "06 28 60 02 53", |
||||
"first_name": "Bastien", |
||||
"last_name": "Bott", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [ |
||||
8, |
||||
40 |
||||
], |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "69c7dc4a-d9ef-4334-8ea4-bb142f16dbce", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$3LWQ2yqP5qIXLSw2L9g26O$h3aMWqyXKVwU6ebEH8X8/iTGtIubVJP1H9c4Y0rZPJg=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "juliencompigne", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-10T09:21:53.628Z", |
||||
"email": "julien@padelbusinessleague.com", |
||||
"umpire_code": null, |
||||
"phone": "0671028451", |
||||
"first_name": "Julien", |
||||
"last_name": "Compigne", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "7e919851-2bf3-4a3a-bc71-6582563d6e75", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$wKBIKw5fOEGxQpaAFRw5c2$T5rYXKJ6pLB5i0ELG9EEReF7OhxqT6n5NMzHYrsqKdE=", |
||||
"last_login": "2024-06-25T08:36:26.117Z", |
||||
"is_superuser": true, |
||||
"username": "laurent", |
||||
"is_staff": true, |
||||
"is_active": true, |
||||
"date_joined": "2024-03-09T11:23:34.532Z", |
||||
"email": "laurent@staxriver.com", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Laurent", |
||||
"last_name": "Morvillier", |
||||
"licence_id": null, |
||||
"country": null, |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 6, |
||||
"group_stage_match_format_preference": 0, |
||||
"loser_bracket_match_format_preference": 1, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "94f45ed2-8938-4c32-a4b6-e4525073dd33", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$HePZx2xIlUuoo9iDNI3s8n$4dnTp0ofPX0gr4aA6bCISe279JQd2DPaKKE/iw/aoFQ=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "alexisledu", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-04T17:20:48.642Z", |
||||
"email": "tenpro64@yahoo.fr", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Alexis", |
||||
"last_name": "Le du", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "a0ea9ad7-3ea0-4c02-8d49-7e61ac07f8de", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$htg58iTu4m0j7SPnC7Xhb8$D62EKDhS5LjtTT7KbGMnPVGPBtpS77usb7wfVDW70x0=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "raz-stax", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-21T10:39:14.700Z", |
||||
"email": "razmig@staxriver.com", |
||||
"umpire_code": null, |
||||
"phone": "06 81 59 81 93", |
||||
"first_name": "Raz Stax", |
||||
"last_name": "Raz", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "afef77ba-903d-4dca-ae90-6e4aad63b49d", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$93Gq2izTTYWFWY9liTr0Gj$bl7nez2g0PxQy84TfQGo4tpQ7fWaeKlbkRfbzSEuSgs=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "jawllm", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-05T13:24:01.287Z", |
||||
"email": "jeanalexandrewillem@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0686689103", |
||||
"first_name": "Jean Alexandre", |
||||
"last_name": "Willem", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "b8e48bf9-c7b4-4dde-b04f-333d0d1d4907", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$GW2aqxXBDMXmuxlrgE3lgk$OE4kDAmoFBk2FoU8tq4YoxFSHmhYkUDc6CJLfNti1SA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "JPH", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-27T15:47:21.565Z", |
||||
"email": "jp_houdaille@yahoo.fr", |
||||
"umpire_code": null, |
||||
"phone": "06 09 56 81 29", |
||||
"first_name": "Jean Paul", |
||||
"last_name": "Houdaille", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "cbd61da8-a892-4d75-97b8-1406aaa5baf9", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$Xz7ay2tEPAieZwFBaHG1Pv$nNGhqHHTy16N1XVaq4Wv8x9UEPldyYDsCCi3Z6AvauU=", |
||||
"last_login": "2024-06-22T15:08:17.091Z", |
||||
"is_superuser": true, |
||||
"username": "razmig", |
||||
"is_staff": true, |
||||
"is_active": true, |
||||
"date_joined": "2024-03-09T11:32:46.820Z", |
||||
"email": "razmig@padelclub.app", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Razmig", |
||||
"last_name": "Sarkissian", |
||||
"licence_id": "3515696", |
||||
"country": null, |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.\nMerci de me confirmer votre présence avec votre nom et de prévenir votre partenaire.\n\nLe Club House sera ouvert toute la journée pour vous restaurer.\n\nLe club se situe Avenue des gorguettes, 13260 Cassis.\nLe parking du club est accessible juste après les tennis.", |
||||
"summons_message_signature": "Sportivement,\nLise Franc et Razmig Sarkissian, vos JAPs.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": true, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 3, |
||||
"group_stage_match_format_preference": 3, |
||||
"loser_bracket_match_format_preference": 3, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "df12cea6-d196-4c34-8165-a74d0e103adf", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$lHPAVgdC4anhmMGP28VYde$xptgy0yBKUfvaOrxk1giZhwd5Pg40QvTFo0/4otUa/o=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "jadu59", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-06T11:59:03.095Z", |
||||
"email": "willemjeanalexandre@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0686689103", |
||||
"first_name": "Jean", |
||||
"last_name": "Willem", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.", |
||||
"summons_message_signature": "Sportivement,\nJean Alexandre Willem, votre JAP.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [ |
||||
9, |
||||
35, |
||||
8, |
||||
40 |
||||
], |
||||
"bracket_match_format_preference": 9, |
||||
"group_stage_match_format_preference": 8, |
||||
"loser_bracket_match_format_preference": 8, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "fd201ebb-c95d-4bff-b27b-cc4a142857a9", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$hPdS3eX976rRow0la6PDhK$SxGJyNch/xkxSLtcp3Y2o3oCzfWeI5fRdKddQkWIEnw=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "kiskino", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-30T12:34:35.718Z", |
||||
"email": "nicolas.kischkewitz@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "0619413862", |
||||
"first_name": "Nicolas", |
||||
"last_name": "Kischkewitz", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "0410863f2a6695ec5e83548dabbb64ab8d458689", |
||||
"fields": { |
||||
"user": "94f45ed2-8938-4c32-a4b6-e4525073dd33", |
||||
"created": "2024-06-05T11:28:05.329Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "143dbeb9130d64d23bf0b002062c6da32cdff17f", |
||||
"fields": { |
||||
"user": "365de47c-26fa-4f20-81c8-d010d0581f04", |
||||
"created": "2024-06-26T10:29:16.999Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "1878e126635415ff655e14967555d2c0a80ef0c0", |
||||
"fields": { |
||||
"user": "5f683e93-0bde-46a8-a285-29fcaf5091b0", |
||||
"created": "2024-06-22T15:23:14.515Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "5cf41d657d5b4eb076d73622be622a272ca28cac", |
||||
"fields": { |
||||
"user": "69c7dc4a-d9ef-4334-8ea4-bb142f16dbce", |
||||
"created": "2024-06-10T14:41:52.716Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "5d724d22810b903d5f6b2cdc4c3a6394a18cfa93", |
||||
"fields": { |
||||
"user": "7e919851-2bf3-4a3a-bc71-6582563d6e75", |
||||
"created": "2024-06-25T08:31:52.365Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "6934604fa54aaece3071f293d991094cb066f692", |
||||
"fields": { |
||||
"user": "0718b707-6108-4c29-9c6e-468a8873fcd7", |
||||
"created": "2024-06-19T19:49:35.723Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "72d333841398c2887bfffe5d060e0fd8782a72bc", |
||||
"fields": { |
||||
"user": "0c9cbcb4-c0d4-469b-a227-ad7b3f14a614", |
||||
"created": "2024-05-17T13:01:28.268Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "a28c9c74668193c34f17d1312be80192d4276f73", |
||||
"fields": { |
||||
"user": "cbd61da8-a892-4d75-97b8-1406aaa5baf9", |
||||
"created": "2024-03-10T13:51:33.373Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "b4c9149fd70c0a4d2d24ce273be1ce53f2cc97e9", |
||||
"fields": { |
||||
"user": "fd201ebb-c95d-4bff-b27b-cc4a142857a9", |
||||
"created": "2024-06-30T12:35:08.609Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "cbf77bdc3607447ba3f61f03cd814a3721be78f4", |
||||
"fields": { |
||||
"user": "df12cea6-d196-4c34-8165-a74d0e103adf", |
||||
"created": "2024-06-06T11:59:30.290Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "e20c56d828a1e2263efe87908579b6775b0abb4c", |
||||
"fields": { |
||||
"user": "b8e48bf9-c7b4-4dde-b04f-333d0d1d4907", |
||||
"created": "2024-06-27T19:09:37.149Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "f8bc995073e57d8e9b05c0bcc60836a54d8560f6", |
||||
"fields": { |
||||
"user": "4353d6de-8b85-401a-ac79-8e675830670c", |
||||
"created": "2024-06-11T14:22:26.345Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "fea091d7af39f5cac5bfbea9e9a2960f5eef49d9", |
||||
"fields": { |
||||
"user": "a0ea9ad7-3ea0-4c02-8d49-7e61ac07f8de", |
||||
"created": "2024-06-21T10:39:30.933Z" |
||||
} |
||||
} |
||||
] |
||||
@ -1,928 +0,0 @@ |
||||
[ |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "0c9cbcb4-c0d4-469b-a227-ad7b3f14a614", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$YYbNLTsSwxFTVDEwLjIBO7$4c7lhu5K1JXe8Fw466TRWBNk+qllWBs+cGADIKo1rAc=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "Xav", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-05-17T12:59:19.525Z", |
||||
"email": "roussetx@orange.fr", |
||||
"umpire_code": null, |
||||
"phone": "0632027200", |
||||
"first_name": "Xavier", |
||||
"last_name": "Rousset", |
||||
"licence_id": "4348094", |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": "9B921A32-CD09-4CBD-82AB-D8A3C98BCC3C", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "29c18f0b-a3c9-4ec3-9565-60cc8061ef37", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$otoCcdpm3uBRAUHOV3WAAf$8D9RElwRxhkqrc9ZiyJ1ylxmIcRHu7aT+Vd+Qzd/96o=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "montest", |
||||
"is_staff": false, |
||||
"is_active": false, |
||||
"date_joined": "2024-06-25T13:19:07.102Z", |
||||
"email": "montestdeouf@hotmail.com", |
||||
"umpire_code": null, |
||||
"phone": "06 11 39 15 64", |
||||
"first_name": "Lolo", |
||||
"last_name": "Lolo", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "365de47c-26fa-4f20-81c8-d010d0581f04", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$oFtBCAV0HqLROYna0WP5T1$Njqw1kAA7UDPdKrSGw5P+g0K/IeM3z0fDoVu5/t4T3g=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "lisek6", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-11T17:14:45.707Z", |
||||
"email": "lisek6@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "0669354417", |
||||
"first_name": "Lise", |
||||
"last_name": "Franc", |
||||
"licence_id": "3084859", |
||||
"country": "France", |
||||
"summons_message_body": "Sportivement,", |
||||
"summons_message_signature": "Lise, juge arbitre du Sporting club de Cassis", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "3af8f03e-81aa-4dd2-859d-b0122e5edeae", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$herJ9eWGyaUK3v5lmX5ARA$Rhz0GgpnoJLaV59ijeSNbl10f0/TOQeLpcSePvFiVk4=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "tcbandol", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-20T12:32:39.990Z", |
||||
"email": "alex.rusovan@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0606508651", |
||||
"first_name": "Alex", |
||||
"last_name": "Rusovan", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": "87888E6A-12CC-4BC8-81C8-39A924B0A33E", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "4353d6de-8b85-401a-ac79-8e675830670c", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$BhKcoN29NTkIfLXDgVb87c$nrtoVHougWIIb86ho8T654GRZA9MINYGdlgryvbJTAI=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "matthias13190", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-11T14:03:22.441Z", |
||||
"email": "matthias13190@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0645656009", |
||||
"first_name": "Matthias", |
||||
"last_name": "Hanoun", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "445b65de-f601-479d-a27c-badb2f624815", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$8SZLYcI6j9M6NzdtsWmqsj$V2l1Ttc17yVEpVquVklXkgUU7FhYvLTt+L8iDjl6n5Q=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "Morgane", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-10T12:12:34.702Z", |
||||
"email": "morgane.pincin@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0644788919", |
||||
"first_name": "Morgane", |
||||
"last_name": "Pincin", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "Sportivement,\nMorgane Pincin, votre JAP.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": true, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": "E4EA0C5E-DC9B-407B-AC4B-86D001C65DF1", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "44a20810-f29d-48a7-afa3-2bf49624ebd6", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$eK4mrO5dfrXyR5o3uNTJ5M$b1YYoN7Wg9S/q6m9+1ZItgbjoWKAFmxxdBvCAnE+uf4=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "Gabriel", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-10T12:08:44.134Z", |
||||
"email": "gabriel@padel-horizon.com", |
||||
"umpire_code": null, |
||||
"phone": "0608662461", |
||||
"first_name": "Gabriel", |
||||
"last_name": "Oliveira", |
||||
"licence_id": "3501687", |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 8, |
||||
"group_stage_match_format_preference": 8, |
||||
"loser_bracket_match_format_preference": 8, |
||||
"device_id": "199674B8-FC34-539E-B996-32AC139A9E76", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "50d2f818-ad64-4c69-909e-76081597ffb0", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$jdiBHCyNwF6H8AkD4PtmyN$uKW7KoMCVAYVNXXz3QWsQahXzdNjhwWuhgUCCPyAnfA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "lise", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-24T16:23:50.713Z", |
||||
"email": "imagesincassis@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "06 69 35 44 17", |
||||
"first_name": "Lise", |
||||
"last_name": "Franc", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "5f683e93-0bde-46a8-a285-29fcaf5091b0", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$MIMYmP5TuDtrWfzMfM57yA$qRKWNH7Cvj3+Mn+SytT7O/G6Ykv2g8+BkGEwK34g1a0=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "bbott07", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-22T14:52:27.383Z", |
||||
"email": "bastienbott@icloud.com", |
||||
"umpire_code": null, |
||||
"phone": "06 28 60 02 53", |
||||
"first_name": "Bastien", |
||||
"last_name": "Bott", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [8, 40], |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "69c7dc4a-d9ef-4334-8ea4-bb142f16dbce", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$3LWQ2yqP5qIXLSw2L9g26O$h3aMWqyXKVwU6ebEH8X8/iTGtIubVJP1H9c4Y0rZPJg=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "juliencompigne", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-10T09:21:53.628Z", |
||||
"email": "julien@padelbusinessleague.com", |
||||
"umpire_code": null, |
||||
"phone": "0671028451", |
||||
"first_name": "Julien", |
||||
"last_name": "Compigne", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "74218fdc-833a-48b5-81d4-2584927e8b97", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$bBNjEiMnHJxg7gPt8XpyEG$6srbz1rU/cBJjNLLCLQL2Y12ez8RyWkNMrPOgwZu5YE=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "JPLuce", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-21T13:09:36.435Z", |
||||
"email": "jean-philippe.luce@orange.fr", |
||||
"umpire_code": null, |
||||
"phone": "06 88 33 15 18", |
||||
"first_name": "Jean-Philippe", |
||||
"last_name": "LUCE", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": "3B0B7EC1-03CB-4A8F-9526-CF105C6F7BFB", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "7e919851-2bf3-4a3a-bc71-6582563d6e75", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$wKBIKw5fOEGxQpaAFRw5c2$T5rYXKJ6pLB5i0ELG9EEReF7OhxqT6n5NMzHYrsqKdE=", |
||||
"last_login": "2024-08-19T07:56:00.533Z", |
||||
"is_superuser": true, |
||||
"username": "laurent", |
||||
"is_staff": true, |
||||
"is_active": true, |
||||
"date_joined": "2024-03-09T11:23:34.532Z", |
||||
"email": "laurent@staxriver.com", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Laurent", |
||||
"last_name": "Morvillier", |
||||
"licence_id": null, |
||||
"country": null, |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 6, |
||||
"group_stage_match_format_preference": 0, |
||||
"loser_bracket_match_format_preference": 1, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "89753db0-ca76-4691-8819-774d2cac7803", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$Eynm19rQDmtB1gjKG7RiWY$LM+qjdwd4eh+PdxuTvSrbMJ8CxGJQUMUWzko74K/dWU=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "MutGuillaume", |
||||
"is_staff": false, |
||||
"is_active": false, |
||||
"date_joined": "2024-08-16T07:38:15.960Z", |
||||
"email": "mutguillaume@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0651941389", |
||||
"first_name": "Guillaume", |
||||
"last_name": "Mut", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "94f45ed2-8938-4c32-a4b6-e4525073dd33", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$HePZx2xIlUuoo9iDNI3s8n$4dnTp0ofPX0gr4aA6bCISe279JQd2DPaKKE/iw/aoFQ=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "alexisledu", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-04T17:20:48.642Z", |
||||
"email": "tenpro64@yahoo.fr", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Alexis", |
||||
"last_name": "Le du", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "", |
||||
"summons_message_signature": "", |
||||
"summons_available_payment_methods": "", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "9b1a85b9-1f03-4465-8b1c-d804bedd3d3f", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$6E9oaBca2FomyU3kLaVE6g$hgcs7qMykEnDilNdmjYDMeKgd2C36io0qKDiBdC6cuE=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "arthurvoisin", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-27T11:07:33.103Z", |
||||
"email": "arthur.voisin2002@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0622257747", |
||||
"first_name": "Arthur", |
||||
"last_name": "Voisin", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [4, 40], |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": "BDBB7ECB-1701-4A64-BB60-59E8CAB118A7", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "afef77ba-903d-4dca-ae90-6e4aad63b49d", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$93Gq2izTTYWFWY9liTr0Gj$bl7nez2g0PxQy84TfQGo4tpQ7fWaeKlbkRfbzSEuSgs=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "jawllm", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-05T13:24:01.287Z", |
||||
"email": "jeanalexandrewillem@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0686689103", |
||||
"first_name": "Jean Alexandre", |
||||
"last_name": "Willem", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "b3c28f36-1b88-4b7c-afda-1a0db7904486", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$G2xI897yIeiDkfIDkZGvI0$2AF06vE5H5Etm2TJlDvjmXigJh1edppdti9H9b961RY=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "GuiGui", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-10T12:15:40.604Z", |
||||
"email": "guillaume@padel-horizon.com", |
||||
"umpire_code": null, |
||||
"phone": "0651840064", |
||||
"first_name": "Guillaume", |
||||
"last_name": "Oliveira", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.\nMerci de me confirmer votre présence avec votre nom et de prévenir votre partenaire.", |
||||
"summons_message_signature": "Sportivement,\nGuillaume Oliveira, votre JAP.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [8, 55], |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": "8093D328-902A-4068-B24F-80F1AC2FBE30", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "b8e48bf9-c7b4-4dde-b04f-333d0d1d4907", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$GW2aqxXBDMXmuxlrgE3lgk$OE4kDAmoFBk2FoU8tq4YoxFSHmhYkUDc6CJLfNti1SA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "JPH", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-27T15:47:21.565Z", |
||||
"email": "jp_houdaille@yahoo.fr", |
||||
"umpire_code": null, |
||||
"phone": "06 09 56 81 29", |
||||
"first_name": "Jean Paul", |
||||
"last_name": "Houdaille", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "b921c496-603f-4be0-bbea-8281f210a87e", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$kVU6PAgWAGiO0bZSltGm8v$d1TDNZkkkoEZ4nVAm65Av01iQksG0zlMZsAQAg2MhSA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "apple-test", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-16T13:44:17.072Z", |
||||
"email": "razmig.sarkissian@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Apple", |
||||
"last_name": "Apple", |
||||
"licence_id": null, |
||||
"country": null, |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 3, |
||||
"group_stage_match_format_preference": 3, |
||||
"loser_bracket_match_format_preference": 3, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "cbd61da8-a892-4d75-97b8-1406aaa5baf9", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$Xz7ay2tEPAieZwFBaHG1Pv$nNGhqHHTy16N1XVaq4Wv8x9UEPldyYDsCCi3Z6AvauU=", |
||||
"last_login": "2024-07-27T06:42:56.283Z", |
||||
"is_superuser": true, |
||||
"username": "razmig", |
||||
"is_staff": true, |
||||
"is_active": true, |
||||
"date_joined": "2024-03-09T11:32:46.820Z", |
||||
"email": "razmig@padelclub.app", |
||||
"umpire_code": null, |
||||
"phone": null, |
||||
"first_name": "Razmig", |
||||
"last_name": "Sarkissian", |
||||
"licence_id": "3515696", |
||||
"country": null, |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.\r\nMerci de me confirmer votre présence avec votre nom et de prévenir votre partenaire.\r\n\r\nLe Club House sera ouvert toute la journée pour vous restaurer.\r\n\r\nLe club se situe Avenue des gorguettes, 13260 Cassis.\r\nLe parking du club est accessible juste après les tennis.", |
||||
"summons_message_signature": "Sportivement,\r\nLise Franc et Razmig Sarkissian, vos JAPs.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": true, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": 3, |
||||
"group_stage_match_format_preference": 3, |
||||
"loser_bracket_match_format_preference": 3, |
||||
"device_id": "4C4F4B5B-3A04-4A67-A581-BBC1A67B95BE", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "df12cea6-d196-4c34-8165-a74d0e103adf", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$lHPAVgdC4anhmMGP28VYde$xptgy0yBKUfvaOrxk1giZhwd5Pg40QvTFo0/4otUa/o=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "jadu59", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-06T11:59:03.095Z", |
||||
"email": "willemjeanalexandre@gmail.com", |
||||
"umpire_code": null, |
||||
"phone": "0686689103", |
||||
"first_name": "Jean", |
||||
"last_name": "Willem", |
||||
"licence_id": "1590652", |
||||
"country": "France", |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.", |
||||
"summons_message_signature": "Sportivement,\nJean Alexandre Willem, votre JAP.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": [8, 40, 9, 35], |
||||
"bracket_match_format_preference": 9, |
||||
"group_stage_match_format_preference": 8, |
||||
"loser_bracket_match_format_preference": 8, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "e1f672c9-5b82-4f8b-b865-144b2cef75aa", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$eZ7JwsPukAi4FQBaIPoUjh$GeV0hIpLQsK/Bg/oKYoqmM1ODGpKR/kUmeYF+LTWVLA=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "Didi", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-07-10T12:15:05.980Z", |
||||
"email": "edwin@padel-horizon.com", |
||||
"umpire_code": null, |
||||
"phone": "0620525441", |
||||
"first_name": "Edwin", |
||||
"last_name": "Menager", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": "Il est conseillé de vous présenter 10 minutes avant de jouer.\nMerci de me confirmer votre présence avec votre nom et de prévenir votre partenaire.", |
||||
"summons_message_signature": "Sportivement,\nEdwin Menager, votre JAP.", |
||||
"summons_available_payment_methods": "Règlement possible par chèque ou espèces.", |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": true, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": "2CFC1CF7-DE9B-4618-802C-77A2D8B60E03", |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "tournaments.customuser", |
||||
"pk": "fd201ebb-c95d-4bff-b27b-cc4a142857a9", |
||||
"fields": { |
||||
"password": "pbkdf2_sha256$600000$hPdS3eX976rRow0la6PDhK$SxGJyNch/xkxSLtcp3Y2o3oCzfWeI5fRdKddQkWIEnw=", |
||||
"last_login": null, |
||||
"is_superuser": false, |
||||
"username": "kiskino", |
||||
"is_staff": false, |
||||
"is_active": true, |
||||
"date_joined": "2024-06-30T12:34:35.718Z", |
||||
"email": "nicolas.kischkewitz@hotmail.fr", |
||||
"umpire_code": null, |
||||
"phone": "0619413862", |
||||
"first_name": "Nicolas", |
||||
"last_name": "Kischkewitz", |
||||
"licence_id": null, |
||||
"country": "France", |
||||
"summons_message_body": null, |
||||
"summons_message_signature": null, |
||||
"summons_available_payment_methods": null, |
||||
"summons_display_format": false, |
||||
"summons_display_entry_fee": false, |
||||
"summons_use_full_custom_message": false, |
||||
"match_formats_default_duration": null, |
||||
"bracket_match_format_preference": null, |
||||
"group_stage_match_format_preference": null, |
||||
"loser_bracket_match_format_preference": null, |
||||
"device_id": null, |
||||
"groups": [], |
||||
"user_permissions": [], |
||||
"clubs": [] |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "0410863f2a6695ec5e83548dabbb64ab8d458689", |
||||
"fields": { |
||||
"user": "94f45ed2-8938-4c32-a4b6-e4525073dd33", |
||||
"created": "2024-06-05T11:28:05.329Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "0d1891e2b5e478cf2f644567993d6869ed42f1db", |
||||
"fields": { |
||||
"user": "cbd61da8-a892-4d75-97b8-1406aaa5baf9", |
||||
"created": "2024-08-16T08:46:24.238Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "143dbeb9130d64d23bf0b002062c6da32cdff17f", |
||||
"fields": { |
||||
"user": "365de47c-26fa-4f20-81c8-d010d0581f04", |
||||
"created": "2024-06-26T10:29:16.999Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "1878e126635415ff655e14967555d2c0a80ef0c0", |
||||
"fields": { |
||||
"user": "5f683e93-0bde-46a8-a285-29fcaf5091b0", |
||||
"created": "2024-06-22T15:23:14.515Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "1f3468375992283037f3a368d09ddeda96e0f8c9", |
||||
"fields": { |
||||
"user": "b3c28f36-1b88-4b7c-afda-1a0db7904486", |
||||
"created": "2024-07-10T12:16:24.616Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "37a7526f512986c3329a1466287e6900dfcb4d79", |
||||
"fields": { |
||||
"user": "44a20810-f29d-48a7-afa3-2bf49624ebd6", |
||||
"created": "2024-07-10T12:09:11.777Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "42b5e8a673729549fdd9bf9ac0836e16af16e94f", |
||||
"fields": { |
||||
"user": "74218fdc-833a-48b5-81d4-2584927e8b97", |
||||
"created": "2024-07-22T07:59:47.782Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "5cf41d657d5b4eb076d73622be622a272ca28cac", |
||||
"fields": { |
||||
"user": "69c7dc4a-d9ef-4334-8ea4-bb142f16dbce", |
||||
"created": "2024-06-10T14:41:52.716Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "72d333841398c2887bfffe5d060e0fd8782a72bc", |
||||
"fields": { |
||||
"user": "0c9cbcb4-c0d4-469b-a227-ad7b3f14a614", |
||||
"created": "2024-05-17T13:01:28.268Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "9384965e223ed47a7317a3f89edc18ae23020a8f", |
||||
"fields": { |
||||
"user": "9b1a85b9-1f03-4465-8b1c-d804bedd3d3f", |
||||
"created": "2024-07-27T11:08:02.737Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "a0aa8ed59f1af6298dd258dadad014066921e32d", |
||||
"fields": { |
||||
"user": "e1f672c9-5b82-4f8b-b865-144b2cef75aa", |
||||
"created": "2024-07-10T12:16:15.761Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "b196a188b208ea909633ba6c0656e0d5910e8267", |
||||
"fields": { |
||||
"user": "445b65de-f601-479d-a27c-badb2f624815", |
||||
"created": "2024-07-10T12:13:09.079Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "b4c9149fd70c0a4d2d24ce273be1ce53f2cc97e9", |
||||
"fields": { |
||||
"user": "fd201ebb-c95d-4bff-b27b-cc4a142857a9", |
||||
"created": "2024-06-30T12:35:08.609Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "cbf77bdc3607447ba3f61f03cd814a3721be78f4", |
||||
"fields": { |
||||
"user": "df12cea6-d196-4c34-8165-a74d0e103adf", |
||||
"created": "2024-06-06T11:59:30.290Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "d98bfac4d43548b15c102ffdd9218693d9dcc334", |
||||
"fields": { |
||||
"user": "3af8f03e-81aa-4dd2-859d-b0122e5edeae", |
||||
"created": "2024-07-20T12:33:14.328Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "e20c56d828a1e2263efe87908579b6775b0abb4c", |
||||
"fields": { |
||||
"user": "b8e48bf9-c7b4-4dde-b04f-333d0d1d4907", |
||||
"created": "2024-06-27T19:09:37.149Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "f8896724ce97a725cdfe590c0325a9ea39ecb975", |
||||
"fields": { |
||||
"user": "7e919851-2bf3-4a3a-bc71-6582563d6e75", |
||||
"created": "2024-07-19T14:11:42.603Z" |
||||
} |
||||
}, |
||||
{ |
||||
"model": "authtoken.token", |
||||
"pk": "f8bc995073e57d8e9b05c0bcc60836a54d8560f6", |
||||
"fields": { |
||||
"user": "4353d6de-8b85-401a-ac79-8e675830670c", |
||||
"created": "2024-06-11T14:22:26.345Z" |
||||
} |
||||
} |
||||
] |
||||
@ -0,0 +1,18 @@ |
||||
# Generated by Django 5.1 on 2024-08-31 17:44 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0079_alter_event_creator'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='club', |
||||
name='acronym', |
||||
field=models.CharField(max_length=50), |
||||
), |
||||
] |
||||
@ -1,24 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-09-12 13:49 |
||||
|
||||
import uuid |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0079_alter_event_creator'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='ModelLog', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('model_id', models.UUIDField()), |
||||
('operation', models.IntegerField(choices=[(0, 'POST'), (1, 'PUT'), (2, 'DELETE')])), |
||||
('date', models.DateTimeField()), |
||||
('model_name', models.CharField(max_length=50)), |
||||
], |
||||
), |
||||
] |
||||
@ -1,18 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-09-12 15:21 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0080_modellog'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='modellog', |
||||
name='operation', |
||||
field=models.IntegerField(choices=[('POST', 'POST'), ('PUT', 'PUT'), ('DELETE', 'DELETE')]), |
||||
), |
||||
] |
||||
@ -0,0 +1,18 @@ |
||||
# Generated by Django 4.2.11 on 2024-09-09 11:57 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0080_alter_club_acronym'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='group_stage_loser_bracket', |
||||
field=models.BooleanField(default=False), |
||||
), |
||||
] |
||||
@ -1,18 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-09-12 15:30 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0081_alter_modellog_operation'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='modellog', |
||||
name='operation', |
||||
field=models.CharField(choices=[('POST', 'POST'), ('PUT', 'PUT'), ('DELETE', 'DELETE')], max_length=50), |
||||
), |
||||
] |
||||
@ -0,0 +1,23 @@ |
||||
# Generated by Django 5.1 on 2024-09-16 08:20 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0081_round_group_stage_loser_bracket'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='purchase', |
||||
name='identifier', |
||||
field=models.BigIntegerField(unique=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='federal_age_category', |
||||
field=models.IntegerField(choices=[(0, ''), (120, 'U12'), (140, 'U14'), (160, 'U16'), (180, 'U18'), (200, 'Senior'), (450, '+45 ans'), (550, '+55 ans')], default=200), |
||||
), |
||||
] |
||||
@ -1,20 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-09 08:10 |
||||
|
||||
import django.db.models.deletion |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0082_alter_modellog_operation'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='modellog', |
||||
name='creator', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
] |
||||
@ -0,0 +1,18 @@ |
||||
# Generated by Django 5.1 on 2024-09-16 13:11 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0082_alter_purchase_identifier_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='purchase', |
||||
name='expiration_date', |
||||
field=models.DateTimeField(blank=True, null=True), |
||||
), |
||||
] |
||||
@ -0,0 +1,28 @@ |
||||
# Generated by Django 4.2.11 on 2024-09-18 08:58 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0083_purchase_expiration_date'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='customuser', |
||||
name='loser_bracket_mode', |
||||
field=models.IntegerField(default=0), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='loser_bracket_mode', |
||||
field=models.IntegerField(default=0), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='loser_bracket_mode', |
||||
field=models.IntegerField(default=0), |
||||
), |
||||
] |
||||
@ -0,0 +1,22 @@ |
||||
# Generated by Django 5.1 on 2024-09-18 08:33 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0083_purchase_expiration_date'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='purchase', |
||||
name='id', |
||||
), |
||||
migrations.AlterField( |
||||
model_name='purchase', |
||||
name='identifier', |
||||
field=models.BigIntegerField(primary_key=True, serialize=False, unique=True), |
||||
), |
||||
] |
||||
@ -1,18 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-09 08:18 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0083_modellog_creator'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RenameField( |
||||
model_name='modellog', |
||||
old_name='creator', |
||||
new_name='user', |
||||
), |
||||
] |
||||
@ -1,18 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-09 11:37 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0084_rename_creator_modellog_user'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='modellog', |
||||
name='store_id', |
||||
field=models.CharField(blank=True, max_length=200, null=True), |
||||
), |
||||
] |
||||
@ -0,0 +1,18 @@ |
||||
# Generated by Django 5.1 on 2024-09-18 08:34 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0084_remove_purchase_id_alter_purchase_identifier'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RenameField( |
||||
model_name='purchase', |
||||
old_name='identifier', |
||||
new_name='id', |
||||
), |
||||
] |
||||
@ -1,154 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-15 14:42 |
||||
|
||||
import django.utils.timezone |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0085_modellog_store_id'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='devicetoken', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='devicetoken', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='purchase', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='purchase', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
] |
||||
@ -0,0 +1,14 @@ |
||||
# Generated by Django 5.1 on 2024-09-19 09:42 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0084_customuser_loser_bracket_mode_and_more'), |
||||
('tournaments', '0085_rename_identifier_purchase_id'), |
||||
] |
||||
|
||||
operations = [ |
||||
] |
||||
@ -0,0 +1,18 @@ |
||||
# Generated by Django 4.2.11 on 2024-09-24 12:49 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0086_merge_20240919_1142'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='playerregistration', |
||||
name='phone_number', |
||||
field=models.CharField(blank=True, max_length=50, null=True), |
||||
), |
||||
] |
||||
@ -1,17 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-16 12:42 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0086_club_creation_date_club_last_update_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='modellog', |
||||
name='store_id', |
||||
), |
||||
] |
||||
@ -1,19 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-17 10:36 |
||||
|
||||
import django.utils.timezone |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0087_remove_modellog_store_id'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='customuser', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
] |
||||
@ -0,0 +1,18 @@ |
||||
# Generated by Django 4.2.11 on 2024-09-28 15:21 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0087_alter_playerregistration_phone_number'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='step', |
||||
field=models.IntegerField(default=0), |
||||
), |
||||
] |
||||
@ -0,0 +1,18 @@ |
||||
# Generated by Django 4.2.11 on 2024-10-12 14:14 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0088_groupstage_step'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='playerregistration', |
||||
name='licence_id', |
||||
field=models.CharField(blank=True, max_length=50, null=True), |
||||
), |
||||
] |
||||
@ -1,49 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-17 13:02 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0088_customuser_last_update'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
preserve_default=False, |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
preserve_default=False, |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
preserve_default=False, |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
preserve_default=False, |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
preserve_default=False, |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
preserve_default=False, |
||||
), |
||||
] |
||||
@ -1,79 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-17 13:02 |
||||
|
||||
from ast import Match |
||||
from django.db import migrations |
||||
|
||||
from tournaments.models.player_registration import PlayerRegistration |
||||
|
||||
def update_group_stage_store_id(apps): |
||||
GroupStage = apps.get_model('tournaments', 'GroupStage') |
||||
|
||||
for group_stage in GroupStage.objects.all(): |
||||
group_stage.store_id = str(group_stage.tournament.id) |
||||
group_stage.save() |
||||
|
||||
def update_round_store_id(apps): |
||||
Round = apps.get_model('tournaments', 'Round') |
||||
|
||||
for round in Round.objects.all(): |
||||
round.store_id = str(round.tournament.id) |
||||
round.save() |
||||
|
||||
def update_team_registration_store_id(apps): |
||||
TeamRegistration = apps.get_model('tournaments', 'TeamRegistration') |
||||
|
||||
for tr in TeamRegistration.objects.all(): |
||||
tr.store_id = str(tr.tournament.id) |
||||
tr.save() |
||||
|
||||
def update_player_registration_store_id(apps): |
||||
PlayerRegistration = apps.get_model('tournaments', 'PlayerRegistration') |
||||
|
||||
for pr in PlayerRegistration.objects.all(): |
||||
pr.store_id = str(pr.team_registration.tournament.id) |
||||
pr.save() |
||||
|
||||
def update_match_store_id(apps): |
||||
Match = apps.get_model('tournaments', 'Match') |
||||
|
||||
for match in Match.objects.all(): |
||||
if match.round: |
||||
tournament = match.round.tournament |
||||
else: |
||||
tournament = match.group_stage.tournament |
||||
match.store_id = str(tournament.id) |
||||
match.save() |
||||
|
||||
def update_team_score_store_id(apps): |
||||
TeamScore = apps.get_model('tournaments', 'TeamScore') |
||||
|
||||
for team_score in TeamScore.objects.all(): |
||||
tournament = None |
||||
if team_score.team_registration: |
||||
tournament = team_score.team_registration.tournament |
||||
elif team_score.match: |
||||
if team_score.match.round: |
||||
tournament = team_score.match.round.tournament |
||||
else: |
||||
tournament = team_score.team_registration.tournament |
||||
|
||||
team_score.store_id = str(tournament.id) |
||||
team_score.save() |
||||
|
||||
def update_models(apps, schema_editor): |
||||
update_group_stage_store_id(apps) |
||||
update_round_store_id(apps) |
||||
update_team_registration_store_id(apps) |
||||
update_player_registration_store_id(apps) |
||||
update_match_store_id(apps) |
||||
update_team_score_store_id(apps) |
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0089_groupstage_store_id_match_store_id_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RunPython(update_models), |
||||
] |
||||
@ -0,0 +1,23 @@ |
||||
# Generated by Django 4.2.11 on 2024-10-17 08:25 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0089_alter_playerregistration_licence_id'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='initial_seed_count', |
||||
field=models.IntegerField(default=0), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='initial_seed_round', |
||||
field=models.IntegerField(default=0), |
||||
), |
||||
] |
||||
@ -0,0 +1,26 @@ |
||||
# Generated by Django 4.2.11 on 2024-10-24 06:55 |
||||
|
||||
from django.db import migrations, models |
||||
import django.db.models.deletion |
||||
import uuid |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0090_tournament_initial_seed_count_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='DrawLog', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('draw_date', models.DateTimeField()), |
||||
('draw_seed', models.IntegerField()), |
||||
('draw_match_index', models.IntegerField()), |
||||
('draw_team_position', models.IntegerField()), |
||||
('tournament', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tournaments.tournament')), |
||||
], |
||||
), |
||||
] |
||||
@ -1,18 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-10-30 08:57 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0090_dynamic_store_id'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='modellog', |
||||
name='store_id', |
||||
field=models.CharField(blank=True, max_length=200, null=True), |
||||
), |
||||
] |
||||
File diff suppressed because one or more lines are too long
@ -1,27 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-01 08:02 |
||||
|
||||
import django.db.models.deletion |
||||
import uuid |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0091_modellog_store_id'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.CreateModel( |
||||
name='DataAccess', |
||||
fields=[ |
||||
('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)), |
||||
('model_name', models.CharField(max_length=50)), |
||||
('model_id', models.UUIDField()), |
||||
('granted_at', models.DateTimeField(auto_now_add=True)), |
||||
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_data', to=settings.AUTH_USER_MODEL)), |
||||
('shared_with', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shared_data', to=settings.AUTH_USER_MODEL)), |
||||
], |
||||
), |
||||
] |
||||
@ -0,0 +1,63 @@ |
||||
# Generated by Django 4.2.11 on 2024-11-05 08:23 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0092_club_timezone'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='drawlog', |
||||
name='draw_type', |
||||
field=models.IntegerField(default=0), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='bracket_match_format_preference', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='group_stage_match_format_preference', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='loser_bracket_match_format_preference', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='groupstage', |
||||
name='format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='match', |
||||
name='format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='round', |
||||
name='format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='group_stage_format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='loser_round_format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='round_format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point')], default=3, null=True), |
||||
), |
||||
] |
||||
@ -1,23 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-08 15:40 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0092_dataaccess'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='modellog', |
||||
name='parent_model_id', |
||||
field=models.UUIDField(null=True), |
||||
), |
||||
migrations.AddField( |
||||
model_name='modellog', |
||||
name='parent_model_name', |
||||
field=models.CharField(max_length=50, null=True), |
||||
), |
||||
] |
||||
@ -0,0 +1,58 @@ |
||||
# Generated by Django 4.2.11 on 2024-11-18 08:02 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0093_drawlog_draw_type_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='bracket_match_format_preference', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='group_stage_match_format_preference', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='loser_bracket_match_format_preference', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='groupstage', |
||||
name='format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='match', |
||||
name='format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='round', |
||||
name='format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='group_stage_format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='loser_round_format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='round_format', |
||||
field=models.IntegerField(blank=True, choices=[(0, 'Two sets'), (1, 'Two sets super tie'), (2, 'Two sets of four games'), (3, 'Nine games'), (4, 'Super Tie-Break'), (5, 'Mega Tie-Break'), (6, 'Two Sets with decisive point'), (7, 'Two Sets with decisive point and super tie-break'), (8, 'Two sets of four games with decisive point'), (9, 'Nine games with decisive point'), (10, 'Two sets of Super Tie-Break decisive point'), (11, 'Single set'), (12, 'Single set with decisive point'), (13, 'Single set of four games'), (14, 'Single set of four games with decisive point')], default=3, null=True), |
||||
), |
||||
] |
||||
@ -1,23 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-08 16:16 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0093_modellog_parent_model_id_modellog_parent_model_name'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='dataaccess', |
||||
name='shared_with', |
||||
), |
||||
migrations.AddField( |
||||
model_name='dataaccess', |
||||
name='shared_with', |
||||
field=models.ManyToManyField(related_name='shared_data', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
] |
||||
@ -0,0 +1,396 @@ |
||||
# Generated by Django 5.1 on 2024-12-13 13:13 |
||||
|
||||
import django.db.models.deletion |
||||
import django.utils.timezone |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0094_alter_customuser_bracket_match_format_preference_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='customuser', |
||||
name='agents', |
||||
field=models.ManyToManyField(blank=True, related_name='owners', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='customuser', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='store_id', |
||||
field=models.CharField(default='', max_length=100), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='club', |
||||
name='creator', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='creator_clubs', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='court', |
||||
name='club', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='courts', to='tournaments.club'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='clubs', |
||||
field=models.ManyToManyField(blank=True, related_name='creators', to='tournaments.club'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='dateinterval', |
||||
name='event', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='date_intervals', to='tournaments.event'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='devicetoken', |
||||
name='user', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='device_tokens', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='event', |
||||
name='club', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='events', to='tournaments.club'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='event', |
||||
name='creator', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='events', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='failedapicall', |
||||
name='user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='failed_api_calls', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='groupstage', |
||||
name='tournament', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='group_stages', to='tournaments.tournament'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='log', |
||||
name='user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='logs', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='match', |
||||
name='group_stage', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='tournaments.groupstage'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='match', |
||||
name='round', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='tournaments.round'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='playerregistration', |
||||
name='team_registration', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='player_registrations', to='tournaments.teamregistration'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='round', |
||||
name='tournament', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rounds', to='tournaments.tournament'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamregistration', |
||||
name='group_stage', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_registrations', to='tournaments.groupstage'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamregistration', |
||||
name='tournament', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='team_registrations', to='tournaments.tournament'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamscore', |
||||
name='team_registration', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='team_scores', to='tournaments.teamregistration'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='event', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tournaments', to='tournaments.event'), |
||||
), |
||||
] |
||||
@ -1,25 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-08 16:45 |
||||
|
||||
import django.db.models.deletion |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0094_remove_dataaccess_shared_with_dataaccess_shared_with'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='dataaccess', |
||||
name='shared_with', |
||||
), |
||||
migrations.AddField( |
||||
model_name='dataaccess', |
||||
name='shared_with', |
||||
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='shared_data', to=settings.AUTH_USER_MODEL), |
||||
preserve_default=False, |
||||
), |
||||
] |
||||
@ -1,28 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-08 16:53 |
||||
|
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0095_remove_dataaccess_shared_with_dataaccess_shared_with'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AlterField( |
||||
model_name='modellog', |
||||
name='operation', |
||||
field=models.CharField(choices=[('POST', 'POST'), ('PUT', 'PUT'), ('DELETE', 'DELETE'), ('GRANT_ACCESS', 'GRANT_ACCESS'), ('REVOKE_ACCESS', 'REVOKE_ACCESS')], max_length=50), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='modellog', |
||||
name='parent_model_id', |
||||
field=models.UUIDField(blank=True, null=True), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='modellog', |
||||
name='parent_model_name', |
||||
field=models.CharField(blank=True, max_length=50, null=True), |
||||
), |
||||
] |
||||
@ -0,0 +1,30 @@ |
||||
# Generated by Django 5.1 on 2024-12-13 13:04 |
||||
|
||||
from django.db import migrations |
||||
|
||||
def init_store_id(apps, schema_editor): |
||||
models = ["GroupStage", "Round", "TeamRegistration", "PlayerRegistration", "Match", "TeamScore", "DrawLog"] |
||||
for model in models: |
||||
Model = apps.get_model("tournaments", model) |
||||
for instance in Model.objects.all(): |
||||
instance.store_id = str(instance.tournament_id()) |
||||
instance.save() |
||||
|
||||
def init_related_names(apps, schema_editor): |
||||
models = ["Club", "Event"] |
||||
for model in models: |
||||
Model = apps.get_model("tournaments", model) |
||||
for instance in Model.objects.all(): |
||||
instance.related_user = instance.creator |
||||
instance.save() |
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0095_club_creation_date_club_last_update_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RunPython(init_store_id), |
||||
migrations.RunPython(init_related_names), |
||||
] |
||||
@ -1,190 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-12 16:41 |
||||
|
||||
import django.db.models.deletion |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0096_alter_modellog_operation_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='devicetoken', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='purchase', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='club', |
||||
name='creator', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='creator_clubs', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='court', |
||||
name='club', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='courts', to='tournaments.club'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='customuser', |
||||
name='clubs', |
||||
field=models.ManyToManyField(blank=True, related_name='creators', to='tournaments.club'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='dateinterval', |
||||
name='event', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='date_intervals', to='tournaments.event'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='devicetoken', |
||||
name='user', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='device_tokens', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='event', |
||||
name='club', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='events', to='tournaments.club'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='event', |
||||
name='creator', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='events', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='failedapicall', |
||||
name='user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='failed_api_calls', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='groupstage', |
||||
name='tournament', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='group_stages', to='tournaments.tournament'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='log', |
||||
name='user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='logs', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='match', |
||||
name='group_stage', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='tournaments.groupstage'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='match', |
||||
name='round', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='matches', to='tournaments.round'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='modellog', |
||||
name='user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='model_logs', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='playerregistration', |
||||
name='team_registration', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='player_registrations', to='tournaments.teamregistration'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='purchase', |
||||
name='user', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='purchases', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='round', |
||||
name='tournament', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rounds', to='tournaments.tournament'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamregistration', |
||||
name='group_stage', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='team_registrations', to='tournaments.groupstage'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamregistration', |
||||
name='tournament', |
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='team_registrations', to='tournaments.tournament'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamscore', |
||||
name='team_registration', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='team_scores', to='tournaments.teamregistration'), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='event', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tournaments', to='tournaments.event'), |
||||
), |
||||
] |
||||
@ -1,108 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-15 14:45 |
||||
|
||||
import django.db.models.deletion |
||||
import django.utils.timezone |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0097_club_last_updated_by_court_last_updated_by_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='club', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='court', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='dateinterval', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='devicetoken', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='event', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='failedapicall', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='groupstage', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='log', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='match', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='modellog', |
||||
name='parent_model_id', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='modellog', |
||||
name='parent_model_name', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='playerregistration', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='purchase', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='round', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='teamregistration', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='teamscore', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='tournament', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.AddField( |
||||
model_name='dataaccess', |
||||
name='creation_date', |
||||
field=models.DateTimeField(default=django.utils.timezone.now, editable=False), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dataaccess', |
||||
name='last_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='dataaccess', |
||||
name='shared_with', |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='event', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='tournaments.event'), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dataaccess', |
||||
name='shared_with', |
||||
field=models.ManyToManyField(related_name='shared_data', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
] |
||||
@ -1,19 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-18 12:54 |
||||
|
||||
import django.utils.timezone |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0098_remove_club_last_updated_by_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='dataaccess', |
||||
name='last_hierarchy_update', |
||||
field=models.DateTimeField(default=django.utils.timezone.now), |
||||
), |
||||
] |
||||
@ -1,100 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-20 14:15 |
||||
|
||||
import django.db.models.deletion |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0099_dataaccess_last_hierarchy_update'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dataaccess', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='devicetoken', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='purchase', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='event', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='tournaments', to='tournaments.event'), |
||||
), |
||||
] |
||||
@ -1,23 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-26 09:48 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0100_club_last_updated_by_court_last_updated_by_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='modellog', |
||||
name='user', |
||||
), |
||||
migrations.AddField( |
||||
model_name='modellog', |
||||
name='users', |
||||
field=models.ManyToManyField(blank=True, related_name='model_logs', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
] |
||||
@ -1,17 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-11-26 10:33 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0101_remove_modellog_user_modellog_users'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='dataaccess', |
||||
name='last_hierarchy_update', |
||||
), |
||||
] |
||||
@ -1,23 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-12-02 15:39 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0102_remove_dataaccess_last_hierarchy_update'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='modellog', |
||||
name='users', |
||||
), |
||||
migrations.DeleteModel( |
||||
name='DataAccess', |
||||
), |
||||
migrations.DeleteModel( |
||||
name='ModelLog', |
||||
), |
||||
] |
||||
@ -1,19 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-12-04 15:40 |
||||
|
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0103_remove_modellog_users_delete_dataaccess_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='customuser', |
||||
name='referees', |
||||
field=models.ManyToManyField(blank=True, related_name='owners', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
] |
||||
@ -1,18 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-12-05 11:14 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0104_customuser_referees'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RenameField( |
||||
model_name='customuser', |
||||
old_name='referees', |
||||
new_name='agents', |
||||
), |
||||
] |
||||
@ -1,165 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-12-10 15:12 |
||||
|
||||
import django.db.models.deletion |
||||
from django.conf import settings |
||||
from django.db import migrations, models |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0105_rename_referees_customuser_agents'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.AddField( |
||||
model_name='club', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='court', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='dateinterval', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='devicetoken', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='event', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='failedapicall', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='groupstage', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='log', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='match', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='playerregistration', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='purchase', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='round', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamregistration', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='teamscore', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AddField( |
||||
model_name='tournament', |
||||
name='related_user', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='club', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='court', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='dateinterval', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='devicetoken', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='event', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='failedapicall', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='groupstage', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='log', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='match', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='playerregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='purchase', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='round', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamregistration', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='teamscore', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
migrations.AlterField( |
||||
model_name='tournament', |
||||
name='last_updated_by', |
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), |
||||
), |
||||
] |
||||
@ -1,29 +0,0 @@ |
||||
# Generated by Django 5.1 on 2024-12-11 16:39 |
||||
|
||||
from django.db import migrations |
||||
|
||||
|
||||
class Migration(migrations.Migration): |
||||
|
||||
dependencies = [ |
||||
('tournaments', '0106_club_related_user_court_related_user_and_more'), |
||||
] |
||||
|
||||
operations = [ |
||||
migrations.RemoveField( |
||||
model_name='devicetoken', |
||||
name='creation_date', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='devicetoken', |
||||
name='last_update', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='devicetoken', |
||||
name='last_updated_by', |
||||
), |
||||
migrations.RemoveField( |
||||
model_name='devicetoken', |
||||
name='related_user', |
||||
), |
||||
] |
||||
@ -0,0 +1,22 @@ |
||||
from django.db import models |
||||
from . import SideStoreModel |
||||
import uuid |
||||
|
||||
class DrawLog(SideStoreModel): |
||||
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=True) |
||||
tournament = models.ForeignKey('Tournament', on_delete=models.CASCADE) |
||||
draw_date = models.DateTimeField() |
||||
draw_seed = models.IntegerField() |
||||
draw_match_index = models.IntegerField() |
||||
draw_team_position = models.IntegerField() |
||||
draw_type = models.IntegerField(default=0) |
||||
|
||||
def __str__(self): |
||||
return f'{self.draw_date}' |
||||
|
||||
def save(self, *args, **kwargs): |
||||
self.store_id = str(self.tournament_id()) |
||||
super().save(*args, **kwargs) |
||||
|
||||
def tournament_id(self): |
||||
return self.tournament.id |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue