46 changed files with 1151 additions and 748 deletions
@ -0,0 +1,30 @@ |
|||||
|
from django import forms |
||||
|
|
||||
|
from .models import Content, Category |
||||
|
|
||||
|
|
||||
|
class CreateContent(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = Content |
||||
|
fields = [ |
||||
|
'name', |
||||
|
'category', |
||||
|
'file', |
||||
|
] |
||||
|
|
||||
|
def __init__(self, school, *args, **kwargs): |
||||
|
super().__init__(*args, **kwargs) |
||||
|
self.instance.school = school |
||||
|
|
||||
|
already_created = map(lambda x:x.category.pk, school.content_set.select_related('category')) |
||||
|
self.fields['category'].queryset = Category.objects.exclude(pk__in=already_created) |
||||
|
|
||||
|
|
||||
|
class ContentEdit(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = Content |
||||
|
fields = [ |
||||
|
'name', |
||||
|
'file' |
||||
|
] |
||||
|
|
||||
@ -0,0 +1,23 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 10:16 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('content', '0001_initial'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='category', |
||||
|
name='description_short', |
||||
|
field=models.TextField(null=True, verbose_name='Description courte'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='category', |
||||
|
name='description', |
||||
|
field=models.TextField(default='', verbose_name='Description de la catégorie'), |
||||
|
), |
||||
|
] |
||||
@ -1,22 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-02-28 18:43 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
import django.db.models.deletion |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
initial = True |
|
||||
|
|
||||
dependencies = [ |
|
||||
('content', '0001_initial'), |
|
||||
('users', '0001_initial'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AddField( |
|
||||
model_name='content', |
|
||||
name='school_owner', |
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.SchoolProfile'), |
|
||||
), |
|
||||
] |
|
||||
@ -0,0 +1,19 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 11:33 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('content', '0002_auto_20180309_1116'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='content', |
||||
|
name='school_owner', |
||||
|
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='users.School'), |
||||
|
), |
||||
|
] |
||||
@ -0,0 +1,19 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 11:35 |
||||
|
|
||||
|
import content.models |
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('content', '0003_auto_20180309_1233'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='content', |
||||
|
name='file', |
||||
|
field=models.FileField(upload_to=content.models.get_upload_to, verbose_name='Fichier'), |
||||
|
), |
||||
|
] |
||||
@ -0,0 +1,18 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 11:55 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('content', '0004_auto_20180309_1235'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='content', |
||||
|
name='file', |
||||
|
field=models.FileField(upload_to='', verbose_name='Fichier'), |
||||
|
), |
||||
|
] |
||||
@ -0,0 +1,19 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 11:57 |
||||
|
|
||||
|
import content.models |
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('content', '0005_auto_20180309_1255'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='content', |
||||
|
name='file', |
||||
|
field=models.FileField(upload_to=content.models.get_upload_to, verbose_name='Fichier'), |
||||
|
), |
||||
|
] |
||||
@ -0,0 +1,25 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 12:15 |
||||
|
|
||||
|
import content.models |
||||
|
from django.db import migrations, models |
||||
|
import django.db.models.deletion |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('content', '0006_auto_20180309_1257'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AlterField( |
||||
|
model_name='content', |
||||
|
name='file', |
||||
|
field=models.FileField(upload_to=content.models.get_upload_to, validators=[content.models.validate_file_extension], verbose_name='Fichier'), |
||||
|
), |
||||
|
migrations.AlterField( |
||||
|
model_name='content', |
||||
|
name='school_owner', |
||||
|
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='users.School'), |
||||
|
), |
||||
|
] |
||||
@ -1,28 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-03-01 10:47 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('settings', '0001_initial'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AddField( |
|
||||
model_name='sitesettings', |
|
||||
name='event_poster', |
|
||||
field=models.ImageField(null=True, upload_to='', verbose_name="Affiche de l'événement"), |
|
||||
), |
|
||||
migrations.AddField( |
|
||||
model_name='sitesettings', |
|
||||
name='min_number_of_categories', |
|
||||
field=models.PositiveIntegerField(default=0, verbose_name='Nombre minimal de catégories dans laquelle participer'), |
|
||||
), |
|
||||
migrations.AddField( |
|
||||
model_name='sitesettings', |
|
||||
name='site_logo', |
|
||||
field=models.ImageField(null=True, upload_to='', verbose_name='Logo du site'), |
|
||||
), |
|
||||
] |
|
||||
@ -1,23 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-03-01 11:09 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('settings', '0002_auto_20180301_1047'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AlterField( |
|
||||
model_name='sitesettings', |
|
||||
name='event_poster', |
|
||||
field=models.ImageField(blank=True, null=True, upload_to='', verbose_name="Affiche de l'événement"), |
|
||||
), |
|
||||
migrations.AlterField( |
|
||||
model_name='sitesettings', |
|
||||
name='site_logo', |
|
||||
field=models.ImageField(blank=True, null=True, upload_to='', verbose_name='Logo du site'), |
|
||||
), |
|
||||
] |
|
||||
@ -0,0 +1,5 @@ |
|||||
|
{% extends "base.html" %} |
||||
|
{% block content %} |
||||
|
<h1>{{object.name}}</h1> |
||||
|
{{object.text|safe}} |
||||
|
{% endblock %} |
||||
@ -1,16 +1,18 @@ |
|||||
""" |
import os |
||||
WSGI config for site_tps project. |
import sys |
||||
|
|
||||
It exposes the WSGI callable as a module-level variable named ``application``. |
VIRTUALENV_LOC = '/var/www/site_tps/env_site' |
||||
|
|
||||
For more information on this file, see |
# Activation de l'environnement virtuel |
||||
https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ |
activate_env=os.path.join(VIRTUALENV_LOC, 'bin/activate_this.py') |
||||
""" |
exec(compile(open(activate_env, "rb").read(), activate_env, 'exec'), {'__file__':activate_env}) |
||||
|
|
||||
import os |
# Ajout du répertoire du site au PATH |
||||
|
sys.path.append('/var/www/site_tps') |
||||
|
sys.path.append('/var/www/site_tps/site_tps') |
||||
|
|
||||
|
# Les trucs par défaut de Django |
||||
from django.core.wsgi import get_wsgi_application |
from django.core.wsgi import get_wsgi_application |
||||
|
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_tps.settings") |
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_tps.settings") |
||||
|
|
||||
application = get_wsgi_application() |
application = get_wsgi_application() |
||||
|
|||||
Binary file not shown.
Binary file not shown.
@ -1,44 +1,6 @@ |
|||||
from django.contrib import admin |
from django.contrib import admin |
||||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin |
from .models import School |
||||
from django.contrib.auth.admin import GroupAdmin as BaseGroupAdmin |
|
||||
from django.contrib.auth.models import User, Group |
|
||||
|
|
||||
from .models import UserProfile, SchoolProfile |
class SchoolAdmin(admin.ModelAdmin): |
||||
|
pass |
||||
# Define an inline admin descriptor for Employee model |
admin.site.register(School, SchoolAdmin) |
||||
# which acts a bit like a singleton |
|
||||
|
|
||||
|
|
||||
class UserInline(admin.StackedInline): |
|
||||
model = UserProfile |
|
||||
can_delete = False |
|
||||
verbose_name_plural = 'user profiles' |
|
||||
|
|
||||
# Define a new User admin |
|
||||
|
|
||||
|
|
||||
class UserAdmin(BaseUserAdmin): |
|
||||
inlines = (UserInline, ) |
|
||||
|
|
||||
# Define an inline admin descriptor for Employee model |
|
||||
# which acts a bit like a singleton |
|
||||
|
|
||||
|
|
||||
class SchoolInline(admin.StackedInline): |
|
||||
model = SchoolProfile |
|
||||
can_delete = False |
|
||||
verbose_name_plural = 'schools' |
|
||||
fk_name = 'admins' |
|
||||
|
|
||||
# Define a new User admin |
|
||||
|
|
||||
|
|
||||
class GroupAdmin(BaseGroupAdmin): |
|
||||
inlines = (SchoolInline, ) |
|
||||
|
|
||||
|
|
||||
# Re-register UserAdmin |
|
||||
admin.site.unregister(User) |
|
||||
admin.site.register(User, UserAdmin) |
|
||||
admin.site.unregister(Group) |
|
||||
admin.site.register(Group, GroupAdmin) |
|
||||
|
|||||
@ -0,0 +1,72 @@ |
|||||
|
from django import forms |
||||
|
from django.contrib.auth.models import User |
||||
|
|
||||
|
from .models import School |
||||
|
|
||||
|
|
||||
|
class CreateSchool(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = School |
||||
|
fields = ['name', 'admin'] |
||||
|
|
||||
|
|
||||
|
class EditName(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = School |
||||
|
fields = ['name'] |
||||
|
|
||||
|
|
||||
|
class CreateUser(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = User |
||||
|
fields = [ |
||||
|
'username', |
||||
|
'first_name', |
||||
|
'last_name', |
||||
|
'email', |
||||
|
'groups', |
||||
|
'password', |
||||
|
] |
||||
|
def __init__(self, *args, **kwargs): |
||||
|
super().__init__(*args, **kwargs) |
||||
|
self.fields['password'].widget = forms.PasswordInput() |
||||
|
|
||||
|
|
||||
|
class EditPhone(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = School |
||||
|
fields = ['phone'] |
||||
|
|
||||
|
|
||||
|
class EditLogo(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = School |
||||
|
fields = ['logo'] |
||||
|
|
||||
|
|
||||
|
class EditMail(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = User |
||||
|
fields = ['email'] |
||||
|
|
||||
|
|
||||
|
class EditJury1(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = School |
||||
|
fields = [ |
||||
|
'first_name_j1', |
||||
|
'last_name_j1', |
||||
|
'phone_j1', |
||||
|
'mail_j1' |
||||
|
] |
||||
|
|
||||
|
|
||||
|
class EditJury2(forms.ModelForm): |
||||
|
class Meta: |
||||
|
model = School |
||||
|
fields = [ |
||||
|
'first_name_j2', |
||||
|
'last_name_j2', |
||||
|
'phone_j2', |
||||
|
'mail_j2' |
||||
|
] |
||||
@ -0,0 +1,18 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 08:55 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('users', '0001_initial'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='school', |
||||
|
name='validated', |
||||
|
field=models.BooleanField(default=False, verbose_name='Inscription validé.'), |
||||
|
), |
||||
|
] |
||||
@ -1,20 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-03-01 07:16 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
import django.db.models.deletion |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('auth', '0009_alter_user_last_name_max_length'), |
|
||||
('users', '0001_initial'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AddField( |
|
||||
model_name='schoolprofile', |
|
||||
name='admins', |
|
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='admin_of', to='auth.Group'), |
|
||||
), |
|
||||
] |
|
||||
@ -1,19 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-03-01 09:33 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
import django.db.models.deletion |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('users', '0002_schoolprofile_admins'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AlterField( |
|
||||
model_name='schoolprofile', |
|
||||
name='group', |
|
||||
field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='school', to='auth.Group'), |
|
||||
), |
|
||||
] |
|
||||
@ -0,0 +1,18 @@ |
|||||
|
# Generated by Django 2.0.1 on 2018-03-09 09:07 |
||||
|
|
||||
|
from django.db import migrations, models |
||||
|
|
||||
|
|
||||
|
class Migration(migrations.Migration): |
||||
|
|
||||
|
dependencies = [ |
||||
|
('users', '0002_school_validated'), |
||||
|
] |
||||
|
|
||||
|
operations = [ |
||||
|
migrations.AddField( |
||||
|
model_name='school', |
||||
|
name='name', |
||||
|
field=models.CharField(default='', max_length=255, verbose_name="Nom de l'école"), |
||||
|
), |
||||
|
] |
||||
@ -1,19 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-03-01 09:52 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
import django.db.models.deletion |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('users', '0003_auto_20180301_0933'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AlterField( |
|
||||
model_name='schoolprofile', |
|
||||
name='group', |
|
||||
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='school', to='auth.Group'), |
|
||||
), |
|
||||
] |
|
||||
@ -1,19 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-03-01 10:29 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
import django.db.models.deletion |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('users', '0004_auto_20180301_0952'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AlterField( |
|
||||
model_name='userprofile', |
|
||||
name='school', |
|
||||
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.SchoolProfile'), |
|
||||
), |
|
||||
] |
|
||||
@ -1,18 +0,0 @@ |
|||||
# Generated by Django 2.0.1 on 2018-03-01 23:28 |
|
||||
|
|
||||
from django.db import migrations, models |
|
||||
|
|
||||
|
|
||||
class Migration(migrations.Migration): |
|
||||
|
|
||||
dependencies = [ |
|
||||
('users', '0005_auto_20180301_1029'), |
|
||||
] |
|
||||
|
|
||||
operations = [ |
|
||||
migrations.AddField( |
|
||||
model_name='schoolprofile', |
|
||||
name='phone', |
|
||||
field=models.CharField(help_text='Visible uniquement des administrateurs', max_length=10, null=True, verbose_name='Numéro de téléphone pour contacter le responsable des productions'), |
|
||||
), |
|
||||
] |
|
||||
@ -0,0 +1,14 @@ |
|||||
|
{% load i18n %}{% autoescape off %} |
||||
|
{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %} |
||||
|
|
||||
|
{% trans "Please go to the following page and choose a new password:" %} |
||||
|
{% block reset_link %} |
||||
|
{{ protocol }}://festart.rezometz.org{% url 'users:password-reset-confirm' uidb64=uid token=token %} |
||||
|
{% endblock %} |
||||
|
{% trans "Your username, in case you've forgotten:" %} {{ user.get_username }} |
||||
|
|
||||
|
{% trans "Thanks for using our site!" %} |
||||
|
|
||||
|
{% blocktrans %}The {{ site_name }} team{% endblocktrans %} |
||||
|
|
||||
|
{% endautoescape %} |
||||
@ -0,0 +1,14 @@ |
|||||
|
Bienvenue sur le site d'Il était une fois dans l'Est. |
||||
|
|
||||
|
Vous recevez cet email car vous avez été désigné responsable des productions |
||||
|
vidéos pour votre école. |
||||
|
|
||||
|
Votre identifiant est : {{id}} |
||||
|
|
||||
|
Rendez-vous ici : http://festart.rezometz.org/users/reset pour réinitialiser |
||||
|
votre mot de passe (en utilisant cette adresse email). |
||||
|
|
||||
|
Vous pouvez retrouver l'ensemble des informations sur l'évènement ici : |
||||
|
http://festart.rezometz.org |
||||
|
|
||||
|
L'équipe de Il était une fois dans l'Est. |
||||
@ -1,85 +1,93 @@ |
|||||
from django.urls import path |
from django.urls import path |
||||
from .views import ( |
from django.urls import reverse_lazy |
||||
CreateUser, |
from django.contrib.auth import views as auth_views |
||||
CreateUserProfile, |
from . import views |
||||
CreateSchool, |
|
||||
EditSchoolName, |
|
||||
EditSchoolPhone, |
|
||||
DeleteSchool, |
|
||||
Login, |
|
||||
Logout, |
|
||||
PasswordChange, |
|
||||
Profile, |
|
||||
School, |
|
||||
promote_user, |
|
||||
degrade_user |
|
||||
) |
|
||||
|
|
||||
app_name = 'users' |
app_name = 'users' |
||||
urlpatterns = [ |
urlpatterns = [ |
||||
path( |
path( |
||||
'user/new', |
'new', |
||||
CreateUser.as_view(), |
views.create_user, |
||||
name='new-user' |
name='new-user' |
||||
), |
), |
||||
path( |
path( |
||||
'login', |
'login', |
||||
Login.as_view(), |
auth_views.LoginView.as_view(template_name="edit.html"), |
||||
name='login' |
name='login' |
||||
), |
), |
||||
path( |
path( |
||||
'logout', |
'logout', |
||||
Logout.as_view(), |
auth_views.LogoutView.as_view(), |
||||
name='logout', |
name='logout' |
||||
), |
), |
||||
path( |
path( |
||||
'change_password', |
'password_change', |
||||
PasswordChange.as_view(), |
auth_views.PasswordChangeView.as_view(template_name="edit.html"), |
||||
name='change-password' |
name='password-change' |
||||
), |
), |
||||
path( |
path( |
||||
'user/<int:pk>/set_school', |
'password_change/done', |
||||
CreateUserProfile.as_view(), |
views.PasswordChangeDoneView.as_view(), |
||||
name='create-userprofile' |
name='password-change-done' |
||||
), |
), |
||||
path( |
path( |
||||
'user/<int:pk>', |
'reset', |
||||
Profile.as_view(), |
views.PasswordResetView.as_view(), |
||||
name='profile', |
name='password-reset' |
||||
|
), |
||||
|
path( |
||||
|
'reset/<uidb64>/<token>/', |
||||
|
auth_views.PasswordResetConfirmView.as_view(template_name="edit.html", success_url=reverse_lazy('users:password-reset-done')), |
||||
|
name='password-reset-confirm' |
||||
|
), |
||||
|
path( |
||||
|
'reset/done/', |
||||
|
views.PasswordResetCompleteView.as_view(), |
||||
|
name='password-reset-done' |
||||
), |
), |
||||
path( |
path( |
||||
'school/new', |
'school/new', |
||||
CreateSchool.as_view(), |
views.create_school, |
||||
name='new-school' |
name='new-school' |
||||
), |
), |
||||
path( |
path( |
||||
'school/<int:pk>', |
'school/<int:pk>', |
||||
School.as_view(), |
views.school, |
||||
name='school' |
name='school', |
||||
), |
), |
||||
path( |
path( |
||||
'school/<int:school_pk>/degrade/<int:user_pk>', |
'school/<int:pk>/edit_phone', |
||||
degrade_user, |
views.edit_phone, |
||||
name='degrade-user' |
name='edit-school-phone' |
||||
), |
|
||||
path( |
|
||||
'school/<int:school_pk>/promote/<int:user_pk>', |
|
||||
promote_user, |
|
||||
name='promote-user' |
|
||||
), |
), |
||||
path( |
path( |
||||
'school/<int:pk>/edit_name', |
'school/<int:pk>/edit_name', |
||||
EditSchoolName.as_view(), |
views.edit_name, |
||||
name='edit-school-name' |
name='edit-school-name' |
||||
), |
), |
||||
path( |
path( |
||||
'school/<int:pk>/edit_phone', |
'school/<int:pk>/edit_mail', |
||||
EditSchoolPhone.as_view(), |
views.edit_mail, |
||||
name='edit-school-phone' |
name='edit-school-mail' |
||||
|
), |
||||
|
path( |
||||
|
'school/<int:pk>/jury_1', |
||||
|
views.edit_jury_1, |
||||
|
name='edit-jury-1' |
||||
), |
), |
||||
path( |
path( |
||||
'school/<int:pk>/delete', |
'school/<int:pk>/jury_2', |
||||
DeleteSchool.as_view(), |
views.edit_jury_2, |
||||
name='delete-school' |
name='edit-jury-2' |
||||
), |
), |
||||
|
path( |
||||
|
'school/<int:pk>/edit_admin', |
||||
|
views.edit_admin, |
||||
|
name='edit-admin' |
||||
|
), |
||||
|
path( |
||||
|
'school/<int:pk>/validate', |
||||
|
views.validate, |
||||
|
name='validate', |
||||
|
) |
||||
] |
] |
||||
|
|||||
Loading…
Reference in new issue