Sith/core/management/commands/populate.py

1137 lines
41 KiB
Python
Raw Normal View History

# -*- coding:utf-8 -*
#
# Copyright 2016,2017
# - Skia <skia@libskia.so>
#
# Ce fichier fait partie du site de l'Association des Étudiants de l'UTBM,
# http://ae.utbm.fr.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License a published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Sofware Foundation, Inc., 59 Temple
# Place - Suite 330, Boston, MA 02111-1307, USA.
#
#
2016-03-22 08:01:24 +00:00
import os
from datetime import date, datetime, timedelta
2016-12-21 20:17:31 +00:00
from io import StringIO, BytesIO
2016-07-14 14:13:43 +00:00
2017-06-12 07:42:03 +00:00
from django.core.management.base import BaseCommand
2016-03-22 08:01:24 +00:00
from django.core.management import call_command
from django.conf import settings
2016-07-14 15:50:02 +00:00
from django.db import connection
from django.contrib.sites.models import Site
from django.utils import timezone
2016-03-22 08:01:24 +00:00
2016-12-21 20:17:31 +00:00
from PIL import Image
2016-03-22 08:01:24 +00:00
2016-08-10 14:23:12 +00:00
from core.models import Group, User, Page, PageRev, SithFile
2018-10-04 19:29:19 +00:00
from accounting.models import (
GeneralJournal,
BankAccount,
ClubAccount,
Operation,
AccountingType,
SimplifiedAccountingType,
Company,
)
2016-12-21 20:17:31 +00:00
from core.utils import resize_image
2016-03-29 08:30:24 +00:00
from club.models import Club, Membership
2016-12-10 00:58:30 +00:00
from subscription.models import Subscription
from counter.models import Customer, ProductType, Product, Counter, Selling, StudentCard
from com.models import Sith, Weekmail, News, NewsDate
2016-12-19 15:45:38 +00:00
from election.models import Election, Role, Candidature, ElectionList
2017-06-12 07:42:03 +00:00
from forum.models import Forum, ForumTopic
2019-06-15 21:31:31 +00:00
from pedagogy.models import UV
2016-12-19 15:45:38 +00:00
2016-03-22 08:01:24 +00:00
class Command(BaseCommand):
help = "Populate a new instance of the Sith AE"
def add_arguments(self, parser):
2018-10-04 19:29:19 +00:00
parser.add_argument("--prod", action="store_true")
2016-03-22 08:01:24 +00:00
def reset_index(self, *args):
sqlcmd = StringIO()
call_command("sqlsequencereset", *args, stdout=sqlcmd)
cursor = connection.cursor()
cursor.execute(sqlcmd.getvalue())
2016-03-22 08:01:24 +00:00
def handle(self, *args, **options):
2018-10-04 19:29:19 +00:00
os.environ["DJANGO_COLORS"] = "nocolor"
Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save()
2018-10-04 19:29:19 +00:00
root_path = os.path.dirname(
os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
)
2016-12-10 00:29:56 +00:00
Group(name="Root").save()
Group(name="Public").save()
Group(name="Subscribers").save()
Group(name="Old subscribers").save()
2016-12-10 00:29:56 +00:00
Group(name="Accounting admin").save()
Group(name="Communication admin").save()
Group(name="Counter admin").save()
Group(name="Banned from buying alcohol").save()
Group(name="Banned from counters").save()
Group(name="Banned to subscribe").save()
Group(name="SAS admin").save()
Group(name="Forum admin").save()
Group(name="Pedagogy admin").save()
self.reset_index("core", "auth")
2018-10-04 19:29:19 +00:00
root = User(
id=0,
username="root",
last_name="",
first_name="Bibou",
email="ae.info@utbm.fr",
date_of_birth="1942-06-12",
is_superuser=True,
is_staff=True,
)
2016-03-22 16:46:26 +00:00
root.set_password("plop")
root.save()
2018-10-04 19:29:19 +00:00
profiles_root = SithFile(
parent=None, name="profiles", is_folder=True, owner=root
)
2016-12-21 20:17:31 +00:00
profiles_root.save()
2016-08-10 14:23:12 +00:00
home_root = SithFile(parent=None, name="users", is_folder=True, owner=root)
home_root.save()
2017-09-13 09:20:55 +00:00
# Page needed for club creation
p = Page(name=settings.SITH_CLUB_ROOT_PAGE)
p.set_lock(root)
p.save()
2016-08-10 14:23:12 +00:00
club_root = SithFile(parent=None, name="clubs", is_folder=True, owner=root)
club_root.save()
2016-10-26 17:21:19 +00:00
SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
2018-10-04 19:29:19 +00:00
main_club = Club(
id=1,
name=settings.SITH_MAIN_CLUB["name"],
unix_name=settings.SITH_MAIN_CLUB["unix_name"],
address=settings.SITH_MAIN_CLUB["address"],
)
main_club.save()
2018-10-04 19:29:19 +00:00
bar_club = Club(
id=2,
name=settings.SITH_BAR_MANAGER["name"],
unix_name=settings.SITH_BAR_MANAGER["unix_name"],
address=settings.SITH_BAR_MANAGER["address"],
)
bar_club.save()
2018-10-04 19:29:19 +00:00
launderette_club = Club(
id=84,
name=settings.SITH_LAUNDERETTE_MANAGER["name"],
unix_name=settings.SITH_LAUNDERETTE_MANAGER["unix_name"],
address=settings.SITH_LAUNDERETTE_MANAGER["address"],
)
launderette_club.save()
self.reset_index("club")
for b in settings.SITH_COUNTER_BARS:
2017-06-12 07:42:03 +00:00
g = Group(name=b[1] + " admin")
g.save()
2018-10-04 19:29:19 +00:00
c = Counter(id=b[0], name=b[1], club=bar_club, type="BAR")
c.save()
c.edit_groups = [g]
c.save()
self.reset_index("counter")
2018-10-04 19:29:19 +00:00
Counter(name="Eboutic", club=main_club, type="EBOUTIC").save()
Counter(name="AE", club=main_club, type="OFFICE").save()
2016-08-10 14:23:12 +00:00
2018-10-04 19:29:19 +00:00
home_root.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first()
]
club_root.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first()
]
2016-08-10 14:23:12 +00:00
home_root.save()
club_root.save()
2017-01-11 00:34:16 +00:00
Sith(weekmail_destinations="etudiants@git.an personnel@git.an").save()
2017-01-03 15:50:53 +00:00
Weekmail().save()
2018-10-04 19:29:19 +00:00
p = Page(name="Index")
2016-03-22 16:46:26 +00:00
p.set_lock(root)
p.save()
2017-06-12 07:42:03 +00:00
p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
2016-03-22 16:46:26 +00:00
p.set_lock(root)
p.save()
2018-10-04 19:29:19 +00:00
PageRev(
page=p,
title="Wiki index",
author=root,
content="""
2016-03-22 16:46:26 +00:00
Welcome to the wiki page!
2018-10-04 19:29:19 +00:00
""",
).save()
2016-08-13 03:33:09 +00:00
p = Page(name="services")
p.set_lock(root)
p.save()
2017-06-12 07:42:03 +00:00
p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
2016-08-13 03:33:09 +00:00
p.set_lock(root)
2018-10-04 19:29:19 +00:00
PageRev(
page=p,
title="Services",
author=root,
content="""
2016-08-13 03:33:09 +00:00
| | | |
| :---: | :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | [Fichiers](/file) |
| SAS | Weekmail | Forum | |
2018-10-04 19:29:19 +00:00
""",
).save()
2016-03-22 08:01:24 +00:00
p = Page(name="launderette")
p.set_lock(root)
p.save()
p.set_lock(root)
2018-10-04 19:29:19 +00:00
PageRev(
page=p, title="Laverie", author=root, content="Fonctionnement de la laverie"
).save()
2016-03-22 08:01:24 +00:00
# Here we add a lot of test datas, that are not necessary for the Sith, but that provide a basic development environment
2018-10-04 19:29:19 +00:00
if not options["prod"]:
2016-03-22 08:01:24 +00:00
# Adding user Skia
2018-10-04 19:29:19 +00:00
skia = User(
username="skia",
last_name="Kia",
first_name="S'",
email="skia@git.an",
date_of_birth="1942-06-12",
)
2016-05-09 09:49:01 +00:00
skia.set_password("plop")
skia.save()
2018-10-04 19:29:19 +00:00
skia.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
2016-05-09 09:49:01 +00:00
skia.save()
2018-10-04 19:29:19 +00:00
skia_profile_path = os.path.join(root_path, "core/fixtures/images/3.jpg")
with open(skia_profile_path, "rb") as f:
2016-12-21 20:17:31 +00:00
name = str(skia.id) + "_profile.jpg"
2018-10-04 19:29:19 +00:00
skia_profile = SithFile(
parent=profiles_root,
name=name,
file=resize_image(Image.open(BytesIO(f.read())), 400, "JPEG"),
owner=skia,
is_folder=False,
mime_type="image/jpeg",
size=os.path.getsize(skia_profile_path),
)
2016-12-21 20:17:31 +00:00
skia_profile.file.name = name
skia_profile.save()
skia.profile_pict = skia_profile
skia.save()
2016-05-03 10:06:03 +00:00
# Adding user public
2018-10-04 19:29:19 +00:00
public = User(
username="public",
last_name="Not subscribed",
first_name="Public",
email="public@git.an",
date_of_birth="1942-06-12",
is_superuser=False,
is_staff=False,
)
2016-05-03 10:06:03 +00:00
public.set_password("plop")
public.save()
2018-10-04 19:29:19 +00:00
public.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
2016-05-03 10:06:03 +00:00
public.save()
# Adding user Subscriber
2018-10-04 19:29:19 +00:00
subscriber = User(
username="subscriber",
last_name="User",
first_name="Subscribed",
email="Subscribed@git.an",
date_of_birth="1942-06-12",
is_superuser=False,
is_staff=False,
)
2016-05-03 10:06:03 +00:00
subscriber.set_password("plop")
subscriber.save()
2018-10-04 19:29:19 +00:00
subscriber.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
2016-05-03 10:06:03 +00:00
subscriber.save()
2017-05-01 17:39:13 +00:00
# Adding user old Subscriber
2018-10-04 19:29:19 +00:00
old_subscriber = User(
username="old_subscriber",
last_name="Subscriber",
first_name="Old",
email="old_subscriber@git.an",
date_of_birth="1942-06-12",
is_superuser=False,
is_staff=False,
)
2017-05-01 17:39:13 +00:00
old_subscriber.set_password("plop")
old_subscriber.save()
2018-10-04 19:29:19 +00:00
old_subscriber.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
2017-05-01 17:39:13 +00:00
old_subscriber.save()
# Adding user Counter admin
2018-10-04 19:29:19 +00:00
counter = User(
username="counter",
last_name="Ter",
first_name="Coun",
email="counter@git.an",
date_of_birth="1942-06-12",
is_superuser=False,
is_staff=False,
)
counter.set_password("plop")
counter.save()
2018-10-04 19:29:19 +00:00
counter.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
counter.groups = [
Group.objects.filter(id=settings.SITH_GROUP_COUNTER_ADMIN_ID).first().id
]
counter.save()
2016-05-09 09:49:01 +00:00
# Adding user Comptable
2018-10-04 19:29:19 +00:00
comptable = User(
username="comptable",
last_name="Able",
first_name="Compte",
email="compta@git.an",
date_of_birth="1942-06-12",
is_superuser=False,
is_staff=False,
)
2016-05-09 09:49:01 +00:00
comptable.set_password("plop")
comptable.save()
2018-10-04 19:29:19 +00:00
comptable.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
comptable.groups = [
Group.objects.filter(id=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID)
.first()
.id
]
2016-05-09 09:49:01 +00:00
comptable.save()
2016-03-22 08:01:24 +00:00
# Adding user Guy
2018-10-04 19:29:19 +00:00
u = User(
username="guy",
last_name="Carlier",
first_name="Guy",
email="guy@git.an",
date_of_birth="1942-06-12",
is_superuser=False,
is_staff=False,
)
2016-03-22 08:01:24 +00:00
u.set_password("plop")
u.save()
2018-10-04 19:29:19 +00:00
u.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
2016-03-24 10:55:39 +00:00
u.save()
2016-03-22 08:01:24 +00:00
# Adding user Richard Batsbak
2018-10-04 19:29:19 +00:00
r = User(
username="rbatsbak",
last_name="Batsbak",
first_name="Richard",
email="richard@git.an",
date_of_birth="1982-06-12",
)
2016-03-22 08:01:24 +00:00
r.set_password("plop")
r.save()
2018-10-04 19:29:19 +00:00
r.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
2016-03-24 10:55:39 +00:00
r.save()
2016-03-22 08:01:24 +00:00
# Adding syntax help page
2018-10-04 19:29:19 +00:00
p = Page(name="Aide_sur_la_syntaxe")
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2018-10-04 19:29:19 +00:00
with open(os.path.join(root_path) + "/doc/SYNTAX.md", "r") as rm:
PageRev(
page=p, title="Aide sur la syntaxe", author=skia, content=rm.read()
).save()
2017-06-12 07:42:03 +00:00
p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
2016-12-26 00:42:45 +00:00
p.save(force_lock=True)
2018-10-04 19:29:19 +00:00
p = Page(name="Services")
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2017-06-12 07:42:03 +00:00
p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2018-10-04 19:29:19 +00:00
PageRev(
page=p,
title="Services",
author=skia,
content="""
2016-07-28 18:05:56 +00:00
| | | |
| :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat |
| SAS | Weekmail | Forum|
2018-10-04 19:29:19 +00:00
""",
).save()
2016-03-22 08:01:24 +00:00
# Adding README
2018-10-04 19:29:19 +00:00
p = Page(name="README")
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2017-06-12 07:42:03 +00:00
p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2018-10-04 19:29:19 +00:00
with open(os.path.join(root_path) + "/README.md", "r") as rm:
PageRev(page=p, title="README", author=skia, content=rm.read()).save()
2016-03-22 08:01:24 +00:00
# Subscription
2018-10-04 19:29:19 +00:00
default_subscription = "un-semestre"
2017-06-12 07:42:03 +00:00
# Root
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=root.pk).first(),
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2016-10-26 17:21:19 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2016-10-26 17:21:19 +00:00
s.save()
2017-06-12 07:42:03 +00:00
# Skia
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=skia.pk).first(),
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2016-07-14 14:13:43 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2016-07-14 14:13:43 +00:00
s.save()
2017-06-12 07:42:03 +00:00
# Counter admin
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=counter.pk).first(),
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2017-05-01 17:39:13 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2017-05-01 17:39:13 +00:00
s.save()
2017-06-12 07:42:03 +00:00
# Comptable
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=comptable.pk).first(),
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2016-07-14 14:13:43 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2016-07-14 14:13:43 +00:00
s.save()
2017-06-12 07:42:03 +00:00
# Richard
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=r.pk).first(),
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2016-07-14 14:13:43 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2016-07-14 14:13:43 +00:00
s.save()
2017-06-12 07:42:03 +00:00
# User
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=subscriber.pk).first(),
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2016-07-14 14:13:43 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2016-07-14 14:13:43 +00:00
s.save()
2017-06-12 07:42:03 +00:00
# Old subscriber
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=old_subscriber.pk).first(),
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2017-05-01 17:39:13 +00:00
s.subscription_start = s.compute_start(datetime(year=2012, month=9, day=4))
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2017-05-01 17:39:13 +00:00
s.save()
2016-03-22 08:01:24 +00:00
# Clubs
2018-10-04 19:29:19 +00:00
Club(
name="Bibo'UT",
unix_name="bibout",
address="46 de la Boustifaille",
parent=main_club,
).save()
guyut = Club(
name="Guy'UT",
unix_name="guyut",
address="42 de la Boustifaille",
parent=main_club,
)
2016-03-22 08:01:24 +00:00
guyut.save()
2018-10-04 19:29:19 +00:00
Club(
name="Woenzel'UT", unix_name="woenzel", address="Woenzel", parent=guyut
).save()
Membership(user=skia, club=main_club, role=3, description="").save()
2018-10-04 19:29:19 +00:00
troll = Club(
name="Troll Penché",
unix_name="troll",
address="Terre Du Milieu",
parent=main_club,
)
2016-04-20 01:30:49 +00:00
troll.save()
2018-10-04 19:29:19 +00:00
refound = Club(
name="Carte AE",
unix_name="carte_ae",
address="Jamais imprimée",
parent=main_club,
)
2016-12-15 11:17:19 +00:00
refound.save()
2016-03-22 08:01:24 +00:00
2016-05-31 17:32:15 +00:00
# Counters
Customer(user=skia, account_id="6568j", amount=0).save()
2017-05-20 12:27:13 +00:00
Customer(user=r, account_id="4000k", amount=0).save()
2016-03-22 08:01:24 +00:00
p = ProductType(name="Bières bouteilles")
p.save()
2017-05-01 17:39:13 +00:00
c = ProductType(name="Cotisations")
c.save()
r = ProductType(name="Rechargements")
r.save()
2017-07-21 19:39:49 +00:00
verre = ProductType(name="Verre")
verre.save()
2018-10-04 19:29:19 +00:00
cotis = Product(
name="Cotis 1 semestre",
code="1SCOTIZ",
product_type=c,
purchase_price="15",
selling_price="15",
special_selling_price="15",
club=main_club,
)
2017-05-01 17:39:13 +00:00
cotis.save()
2018-10-04 19:29:19 +00:00
cotis2 = Product(
name="Cotis 2 semestres",
code="2SCOTIZ",
product_type=c,
purchase_price="28",
selling_price="28",
special_selling_price="28",
club=main_club,
)
2017-05-01 17:39:13 +00:00
cotis2.save()
2018-10-04 19:29:19 +00:00
refill = Product(
name="Rechargement 15 €",
code="15REFILL",
product_type=r,
purchase_price="15",
selling_price="15",
special_selling_price="15",
club=main_club,
)
2017-05-01 17:39:13 +00:00
refill.save()
2018-10-04 19:29:19 +00:00
barb = Product(
name="Barbar",
code="BARB",
product_type=p,
purchase_price="1.50",
selling_price="1.7",
special_selling_price="1.6",
club=main_club,
)
2016-05-31 17:32:15 +00:00
barb.save()
2018-10-04 19:29:19 +00:00
cble = Product(
name="Chimay Bleue",
code="CBLE",
product_type=p,
purchase_price="1.50",
selling_price="1.7",
special_selling_price="1.6",
club=main_club,
)
2016-05-31 17:32:15 +00:00
cble.save()
2018-10-04 19:29:19 +00:00
cons = Product(
name="Consigne Eco-cup",
code="CONS",
product_type=verre,
purchase_price="1",
selling_price="1",
special_selling_price="1",
club=main_club,
)
2017-07-21 19:39:49 +00:00
cons.id = 1152
cons.save()
2018-10-04 19:29:19 +00:00
dcons = Product(
name="Déconsigne Eco-cup",
code="DECO",
product_type=verre,
purchase_price="-1",
selling_price="-1",
special_selling_price="-1",
club=main_club,
)
2017-07-21 19:39:49 +00:00
dcons.id = 1151
dcons.save()
2018-10-04 19:29:19 +00:00
Product(
name="Corsendonk",
code="CORS",
product_type=p,
purchase_price="1.50",
selling_price="1.7",
special_selling_price="1.6",
club=main_club,
).save()
Product(
name="Carolus",
code="CARO",
product_type=p,
purchase_price="1.50",
selling_price="1.7",
special_selling_price="1.6",
club=main_club,
).save()
mde = Counter.objects.filter(name="MDE").first()
2016-05-31 17:32:15 +00:00
mde.products.add(barb)
mde.products.add(cble)
2017-07-21 19:39:49 +00:00
mde.products.add(cons)
mde.products.add(dcons)
2017-05-20 12:27:13 +00:00
mde.sellers.add(skia)
2016-05-31 17:32:15 +00:00
mde.save()
2016-12-15 11:17:19 +00:00
2017-05-01 17:39:13 +00:00
eboutic = Counter.objects.filter(name="Eboutic").first()
eboutic.products.add(barb)
eboutic.products.add(cotis)
eboutic.products.add(cotis2)
eboutic.products.add(refill)
eboutic.save()
2018-10-04 19:29:19 +00:00
refound_counter = Counter(name="Carte AE", club=refound, type="OFFICE")
2016-12-15 11:17:19 +00:00
refound_counter.save()
2018-10-04 19:29:19 +00:00
refound_product = Product(
name="remboursement",
code="REMBOURS",
purchase_price="0",
selling_price="0",
special_selling_price="0",
club=refound,
)
2016-12-15 11:17:19 +00:00
refound_product.save()
2016-05-31 17:32:15 +00:00
# Accounting test values:
BankAccount(name="AE TG", club=main_club).save()
BankAccount(name="Carte AE", club=main_club).save()
ba = BankAccount(name="AE TI", club=main_club)
ba.save()
ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
ca.save()
2016-08-07 18:10:50 +00:00
gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca)
gj.save()
2018-10-04 19:29:19 +00:00
credit = AccountingType(
code="74", label="Subventions d'exploitation", movement_type="CREDIT"
)
2016-08-07 18:10:50 +00:00
credit.save()
2018-10-04 19:29:19 +00:00
debit = AccountingType(
code="606",
label="Achats non stockés de matières et fournitures(*1)",
movement_type="DEBIT",
)
2016-08-07 18:10:50 +00:00
debit.save()
2018-10-04 19:29:19 +00:00
debit2 = AccountingType(
code="604",
label="Achats d'études et prestations de services(*2)",
movement_type="DEBIT",
)
2016-12-22 00:02:32 +00:00
debit2.save()
2018-10-04 19:29:19 +00:00
buying = AccountingType(
code="60", label="Achats (sauf 603)", movement_type="DEBIT"
)
2016-12-22 00:02:32 +00:00
buying.save()
2018-10-04 19:29:19 +00:00
comptes = AccountingType(
code="6", label="Comptes de charge", movement_type="DEBIT"
)
2016-12-24 00:02:40 +00:00
comptes.save()
2018-10-04 19:29:19 +00:00
simple = SimplifiedAccountingType(
label="Je fais du simple 6", accounting_type=comptes
)
2016-12-24 00:02:40 +00:00
simple.save()
2016-08-07 18:10:50 +00:00
woenzco = Company(name="Woenzel & co")
woenzco.save()
2016-12-25 19:24:18 +00:00
operation_list = [
2018-10-04 19:29:19 +00:00
(
27,
"J'avais trop de bière",
"CASH",
None,
buying,
"USER",
skia.id,
"",
None,
),
(
4000,
"Ceci n'est pas une opération... en fait si mais non",
"CHECK",
None,
debit,
"COMPANY",
woenzco.id,
"",
23,
),
(
22,
"C'est de l'argent ?",
"CARD",
None,
credit,
"CLUB",
troll.id,
"",
None,
),
(
37,
"Je paye CASH",
"CASH",
None,
debit2,
"OTHER",
None,
"tous les étudiants <3",
None,
),
(300, "Paiement Guy", "CASH", None, buying, "USER", skia.id, "", None),
(32.3, "Essence", "CASH", None, buying, "OTHER", None, "station", None),
(
46.42,
"Allumette",
"CHECK",
None,
credit,
"CLUB",
main_club.id,
"",
57,
),
(
666.42,
"Subvention de far far away",
"CASH",
None,
comptes,
"CLUB",
main_club.id,
"",
None,
),
(
496,
"Ça, c'est un 6",
"CARD",
simple,
None,
"USER",
skia.id,
"",
None,
),
(
17,
"La Gargotte du Korrigan",
"CASH",
None,
debit2,
"CLUB",
bar_club.id,
"",
None,
),
2017-06-12 07:42:03 +00:00
]
2016-12-25 19:24:18 +00:00
for op in operation_list:
2018-10-04 19:29:19 +00:00
operation = Operation(
journal=gj,
date=date.today(),
amount=op[0],
remark=op[1],
mode=op[2],
done=True,
simpleaccounting_type=op[3],
accounting_type=op[4],
target_type=op[5],
target_id=op[6],
target_label=op[7],
cheque_number=op[8],
)
2016-12-25 19:24:18 +00:00
operation.clean()
operation.save()
2016-12-13 21:22:19 +00:00
# Adding user sli
2018-10-04 19:29:19 +00:00
sli = User(
username="sli",
last_name="Li",
first_name="S",
email="sli@git.an",
date_of_birth="1942-06-12",
)
2016-12-13 21:22:19 +00:00
sli.set_password("plop")
sli.save()
2018-10-04 19:29:19 +00:00
sli.view_groups = [
Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
]
2016-12-13 21:22:19 +00:00
sli.save()
2018-10-04 19:29:19 +00:00
sli_profile_path = os.path.join(root_path, "core/fixtures/images/5.jpg")
with open(sli_profile_path, "rb") as f:
2016-12-21 20:17:31 +00:00
name = str(sli.id) + "_profile.jpg"
2018-10-04 19:29:19 +00:00
sli_profile = SithFile(
parent=profiles_root,
name=name,
file=resize_image(Image.open(BytesIO(f.read())), 400, "JPEG"),
owner=sli,
is_folder=False,
mime_type="image/jpeg",
size=os.path.getsize(sli_profile_path),
)
2016-12-21 20:17:31 +00:00
sli_profile.file.name = name
sli_profile.save()
sli.profile_pict = sli_profile
sli.save()
2016-12-19 02:54:57 +00:00
# Adding user Krophil
2018-10-04 19:29:19 +00:00
krophil = User(
username="krophil",
last_name="Phil'",
first_name="Kro",
email="krophil@git.an",
date_of_birth="1942-06-12",
)
2016-12-19 02:54:57 +00:00
krophil.set_password("plop")
krophil.save()
2018-10-04 19:29:19 +00:00
krophil_profile_path = os.path.join(root_path, "core/fixtures/images/6.jpg")
with open(krophil_profile_path, "rb") as f:
2016-12-21 20:17:31 +00:00
name = str(krophil.id) + "_profile.jpg"
2018-10-04 19:29:19 +00:00
krophil_profile = SithFile(
parent=profiles_root,
name=name,
file=resize_image(Image.open(BytesIO(f.read())), 400, "JPEG"),
owner=krophil,
is_folder=False,
mime_type="image/jpeg",
size=os.path.getsize(krophil_profile_path),
)
2016-12-21 20:17:31 +00:00
krophil_profile.file.name = name
krophil_profile.save()
krophil.profile_pict = krophil_profile
krophil.save()
2019-05-09 16:06:11 +00:00
# Adding user Com Unity
comunity = User(
username="comunity",
last_name="Unity",
first_name="Com",
email="comunity@git.an",
date_of_birth="1942-06-12",
)
comunity.set_password("plop")
comunity.save()
comunity.groups = [
Group.objects.filter(name="Communication admin").first().id
]
comunity.save()
Membership(
user=comunity,
club=bar_club,
start_date=timezone.now(),
role=settings.SITH_CLUB_ROLES_ID["Board member"],
).save()
2019-06-16 10:19:04 +00:00
# Adding user tutu
tutu = User(
username="tutu",
last_name="Tu",
first_name="Tu",
email="tutu@git.an",
date_of_birth="1942-06-12",
)
tutu.set_password("plop")
tutu.save()
tutu.groups = [settings.SITH_GROUP_PEDAGOGY_ADMIN_ID]
tutu.save()
2019-05-09 16:06:11 +00:00
2017-06-12 07:42:03 +00:00
# Adding subscription for sli
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=sli.pk).first(),
subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2016-12-13 21:22:19 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2016-12-13 21:22:19 +00:00
s.save()
StudentCard(uid="9A89B82018B0A0", customer=sli.customer).save()
2017-06-12 07:42:03 +00:00
# Adding subscription for Krophil
2018-10-04 19:29:19 +00:00
s = Subscription(
member=User.objects.filter(pk=krophil.pk).first(),
subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
2018-10-04 19:29:19 +00:00
)
2016-12-19 02:54:57 +00:00
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
2018-10-04 19:29:19 +00:00
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
2016-12-19 02:54:57 +00:00
s.save()
2019-05-09 16:06:11 +00:00
# Com Unity
s = Subscription(
member=comunity,
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
)
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
s.save()
2019-06-16 10:19:04 +00:00
# Tutu
s = Subscription(
member=tutu,
subscription_type=default_subscription,
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0][0],
)
s.subscription_start = s.compute_start()
s.subscription_end = s.compute_end(
duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
start=s.subscription_start,
)
s.save()
2016-12-24 00:02:40 +00:00
2018-10-04 19:29:19 +00:00
Selling(
label=dcons.name,
product=dcons,
counter=mde,
unit_price=dcons.selling_price,
club=main_club,
quantity=settings.SITH_ECOCUP_LIMIT + 3,
seller=skia,
customer=krophil.customer,
).save()
2017-08-14 01:13:06 +00:00
2017-05-14 10:54:26 +00:00
# Add barman to counter
c = Counter.objects.get(id=2)
c.sellers.add(User.objects.get(pk=krophil.pk))
c.save()
2016-12-05 19:18:03 +00:00
# Create an election
2016-12-19 19:30:19 +00:00
public_group = Group.objects.get(id=settings.SITH_GROUP_PUBLIC_ID)
subscriber_group = Group.objects.get(name=settings.SITH_MAIN_MEMBERS_GROUP)
2017-02-01 16:38:16 +00:00
ae_board_group = Group.objects.get(name=settings.SITH_MAIN_BOARD_GROUP)
2018-10-04 19:29:19 +00:00
el = Election(
title="Élection 2017",
description="La roue tourne",
start_candidature="1942-06-12 10:28:45+01",
end_candidature="2042-06-12 10:28:45+01",
start_date="1942-06-12 10:28:45+01",
end_date="7942-06-12 10:28:45+01",
)
2016-12-14 17:10:15 +00:00
el.save()
2016-12-19 19:30:19 +00:00
el.view_groups.add(public_group)
2017-02-01 16:38:16 +00:00
el.edit_groups.add(ae_board_group)
el.candidature_groups.add(subscriber_group)
el.vote_groups.add(subscriber_group)
2016-12-19 19:30:19 +00:00
el.save()
2016-12-19 15:45:38 +00:00
liste = ElectionList(title="Candidature Libre", election=el)
2016-12-14 17:10:15 +00:00
liste.save()
2016-12-19 15:45:38 +00:00
listeT = ElectionList(title="Troll", election=el)
2016-12-19 02:54:57 +00:00
listeT.save()
pres = Role(election=el, title="Président AE", description="Roi de l'AE")
pres.save()
2018-10-04 19:29:19 +00:00
resp = Role(
election=el, title="Co Respo Info", max_choice=2, description="Ghetto++"
)
2016-12-14 17:10:15 +00:00
resp.save()
2018-10-04 19:29:19 +00:00
cand = Candidature(
role=resp, user=skia, election_list=liste, program="Refesons le site AE"
)
2016-12-14 17:10:15 +00:00
cand.save()
2018-10-04 19:29:19 +00:00
cand = Candidature(
role=resp,
user=sli,
election_list=liste,
program="Vasy je deviens mon propre adjoint",
)
2016-12-19 02:54:57 +00:00
cand.save()
2018-10-04 19:29:19 +00:00
cand = Candidature(
role=resp, user=krophil, election_list=listeT, program="Le Pôle Troll !"
)
2016-12-19 02:54:57 +00:00
cand.save()
2018-10-04 19:29:19 +00:00
cand = Candidature(
role=pres,
user=sli,
election_list=listeT,
program="En fait j'aime pas l'info, je voulais faire GMC",
)
2016-12-19 02:54:57 +00:00
cand.save()
2016-12-24 00:02:40 +00:00
2017-01-21 02:42:06 +00:00
# Forum
2018-10-04 19:29:19 +00:00
room = Forum(
name="Salon de discussions",
description="Pour causer de tout",
is_category=True,
)
2017-01-21 02:42:06 +00:00
room.save()
Forum(name="AE", description="Réservé au bureau AE", parent=room).save()
Forum(name="BdF", description="Réservé au bureau BdF", parent=room).save()
2018-10-04 19:29:19 +00:00
hall = Forum(
name="Hall de discussions",
description="Pour toutes les discussions",
parent=room,
)
2017-01-28 23:16:41 +00:00
hall.save()
2018-10-04 19:29:19 +00:00
various = Forum(
name="Divers", description="Pour causer de rien", is_category=True
)
2017-01-21 02:42:06 +00:00
various.save()
2018-10-04 19:29:19 +00:00
Forum(
name="Promos", description="Réservé aux Promos", parent=various
).save()
2017-01-28 23:16:41 +00:00
ForumTopic(forum=hall)
# News
friday = timezone.now()
while friday.weekday() != 4:
friday += timedelta(hours=6)
friday.replace(hour=20, minute=0, second=0)
# Event
2018-10-04 19:29:19 +00:00
n = News(
title="Apero barman",
summary="Viens boire un coup avec les barmans",
content="Glou glou glou glou glou glou glou",
type="EVENT",
club=bar_club,
author=subscriber,
is_moderated=True,
moderator=skia,
)
n.save()
2018-10-04 19:29:19 +00:00
NewsDate(
news=n,
start_date=timezone.now() + timedelta(hours=70),
end_date=timezone.now() + timedelta(hours=72),
).save()
n = News(
title="Repas barman",
summary="Enjoy la fin du semestre!",
content="Viens donc t'enjailler avec les autres barmans aux "
"frais du BdF! \o/",
type="EVENT",
club=bar_club,
author=subscriber,
is_moderated=True,
moderator=skia,
)
n.save()
2018-10-04 19:29:19 +00:00
NewsDate(
news=n,
start_date=timezone.now() + timedelta(hours=72),
end_date=timezone.now() + timedelta(hours=84),
).save()
n = News(
title="Repas fromager",
summary="Wien manger du l'bon fromeug'",
content="Fô viendre mangey d'la bonne fondue!",
type="EVENT",
club=bar_club,
author=subscriber,
is_moderated=True,
moderator=skia,
)
n.save()
2018-10-04 19:29:19 +00:00
NewsDate(
news=n,
start_date=timezone.now() + timedelta(hours=96),
end_date=timezone.now() + timedelta(hours=100),
).save()
n = News(
title="SdF",
summary="Enjoy la fin des finaux!",
content="Viens faire la fête avec tout plein de gens!",
type="EVENT",
club=bar_club,
author=subscriber,
is_moderated=True,
moderator=skia,
)
n.save()
2018-10-04 19:29:19 +00:00
NewsDate(
news=n,
start_date=friday + timedelta(hours=24 * 7 + 1),
end_date=timezone.now() + timedelta(hours=24 * 7 + 9),
).save()
# Weekly
2018-10-04 19:29:19 +00:00
n = News(
title="Jeux sans faim",
summary="Viens jouer!",
content="Rejoins la fine équipe du Troll Penché et viens "
"d'amuser le Vendredi soir!",
type="WEEKLY",
club=troll,
author=subscriber,
is_moderated=True,
moderator=skia,
)
n.save()
for i in range(10):
2018-10-04 19:29:19 +00:00
NewsDate(
news=n,
start_date=friday + timedelta(hours=24 * 7 * i),
end_date=friday + timedelta(hours=24 * 7 * i + 8),
).save()
2019-06-15 21:31:31 +00:00
# Create som data for pedagogy
UV(
code="PA00",
author=User.objects.get(id=0),
credit_type=settings.SITH_PEDAGOGY_UV_TYPE[3][0],
manager="Laurent HEYBERGER",
semester=settings.SITH_PEDAGOGY_UV_SEMESTER[3][0],
language=settings.SITH_PEDAGOGY_UV_LANGUAGE[0][0],
credits=5,
title="Participation dans une association étudiante",
objectives="* Permettre aux étudiants de réaliser, pendant un semestre, un projet culturel ou associatif et de le valoriser.",
program="""* Semestre précédent proposition d'un projet et d'un cahier des charges
* Evaluation par un jury de six membres
* Si accord réalisation dans le cadre de l'UV
* Compte-rendu de l'expérience
* Présentation""",
skills="""* Gérer un projet associatif ou une action éducative en autonomie:
* en produisant un cahier des charges qui -définit clairement le contexte du projet personnel -pose les jalons de ce projet -estime de manière réaliste les moyens et objectifs du projet -définit exactement les livrables attendus
* en étant capable de respecter ce cahier des charges ou, le cas échéant, de réviser le cahier des charges de manière argumentée.
* Relater son expérience dans un rapport:
* qui permettra à d'autres étudiants de poursuivre les actions engagées
* qui montre la capacité à s'auto-évaluer et à adopter une distance critique sur son action.""",
key_concepts="""* Autonomie
* Responsabilité
* Cahier des charges
* Gestion de projet""",
hours_THE=121,
hours_TE=4,
).save()