Sith/core/management/commands/populate.py

299 lines
14 KiB
Python
Raw Normal View History

2016-03-22 08:01:24 +00:00
import os
2016-08-07 18:10:50 +00:00
from datetime import date, datetime
2016-07-14 15:50:02 +00:00
from io import StringIO
2016-07-14 14:13:43 +00:00
2016-03-22 08:01:24 +00:00
from django.core.management.base import BaseCommand, CommandError
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
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
2016-08-07 18:10:50 +00:00
from accounting.models import GeneralJournal, BankAccount, ClubAccount, Operation, AccountingType, Company
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
2016-05-31 17:32:15 +00:00
from counter.models import Customer, ProductType, Product, Counter
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):
parser.add_argument('--prod', action="store_true")
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):
2016-07-14 15:50:02 +00:00
os.environ['DJANGO_COLORS'] = 'nocolor'
Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save()
2016-03-22 08:01:24 +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="Not registered users").save()
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()
self.reset_index("core", "auth")
2016-08-13 03:33:09 +00:00
root = User(id=0, username='root', last_name="", first_name="Bibou",
2016-03-22 08:01:24 +00:00
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()
SithFile(parent=None, name="profiles", is_folder=True, owner=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()
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()
2016-08-13 14:08:02 +00:00
main_club = Club(id=1, name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
2016-03-31 08:36:00 +00:00
address=settings.SITH_MAIN_CLUB['address'])
main_club.save()
2016-08-13 14:08:02 +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()
2016-08-13 14:08:02 +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:
g = Group(name=b[1]+" admin")
g.save()
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")
2016-07-28 18:05:56 +00:00
Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
2016-11-30 01:41:25 +00:00
Counter(name="AE", club=main_club, type='OFFICE').save()
2016-08-10 14:23:12 +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()]
home_root.save()
club_root.save()
2016-03-22 16:46:26 +00:00
p = Page(name='Index')
p.set_lock(root)
p.save()
2016-12-10 00:29:56 +00:00
p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
2016-03-22 16:46:26 +00:00
p.set_lock(root)
p.save()
PageRev(page=p, title="Wiki index", author=root, content="""
Welcome to the wiki page!
2016-08-13 03:33:09 +00:00
""").save()
p = Page(name="services")
p.set_lock(root)
p.save()
2016-12-10 00:29:56 +00:00
p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
2016-08-13 03:33:09 +00:00
p.set_lock(root)
PageRev(page=p, title="Services", author=root, content="""
| | | |
| :---: | :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | [Fichiers](/file) |
| SAS | Weekmail | Forum | |
2016-03-22 16:46:26 +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)
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
if not options['prod']:
# Adding user Skia
2016-05-09 09:49:01 +00:00
skia = User(username='skia', last_name="Kia", first_name="S'",
2016-03-22 08:01:24 +00:00
email="skia@git.an",
date_of_birth="1942-06-12")
2016-05-09 09:49:01 +00:00
skia.set_password("plop")
skia.save()
skia.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
skia.save()
2016-05-03 10:06:03 +00:00
# Adding user public
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)
public.set_password("plop")
public.save()
public.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
public.save()
# Adding user Subscriber
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)
subscriber.set_password("plop")
subscriber.save()
subscriber.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
subscriber.save()
# Adding user Counter admin
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()
counter.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
2016-12-10 00:29:56 +00:00
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
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)
comptable.set_password("plop")
comptable.save()
comptable.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
2016-12-10 00:29:56 +00:00
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
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)
u.set_password("plop")
u.save()
2016-03-31 08:36:00 +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
r = User(username='rbatsbak', last_name="Batsbak", first_name="Richard",
email="richard@git.an",
date_of_birth="1982-06-12")
r.set_password("plop")
r.save()
2016-03-31 08:36:00 +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
p = Page(name='Aide_sur_la_syntaxe')
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2016-05-09 09:49:01 +00:00
PageRev(page=p, title="Aide sur la syntaxe", author=skia, content="""
2016-03-22 08:01:24 +00:00
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
2016-07-28 18:05:56 +00:00
""").save()
p = Page(name='Services')
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2016-12-10 00:29:56 +00:00
p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2016-07-28 18:05:56 +00:00
PageRev(page=p, title="Services", author=skia, content="""
| | | |
| :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat |
| SAS | Weekmail | Forum|
2016-03-22 08:01:24 +00:00
""").save()
# Adding README
p = Page(name='README')
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2016-12-10 00:29:56 +00:00
p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
2016-11-05 12:37:30 +00:00
p.save(force_lock=True)
2016-03-22 08:01:24 +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
2016-10-26 17:21:19 +00:00
## Root
2016-12-10 00:58:30 +00:00
s = Subscription(member=User.objects.filter(pk=root.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
2016-10-26 17:21:19 +00:00
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[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-03-31 08:36:00 +00:00
## Skia
2016-12-10 00:58:30 +00:00
s = Subscription(member=User.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
2016-07-14 14:13:43 +00:00
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[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-05-09 09:49:01 +00:00
## Comptable
2016-12-10 00:58:30 +00:00
s = Subscription(member=User.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
2016-07-14 14:13:43 +00:00
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[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-03-31 08:36:00 +00:00
## Richard
2016-12-10 00:58:30 +00:00
s = Subscription(member=User.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
2016-07-14 14:13:43 +00:00
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[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-10 00:58:30 +00:00
## User
s = Subscription(member=User.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
2016-07-14 14:13:43 +00:00
payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[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-03-22 08:01:24 +00:00
# Clubs
Club(name="Bibo'UT", unix_name="bibout",
address="46 de la Boustifaille", parent=main_club).save()
2016-03-22 08:01:24 +00:00
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()
Club(name="Woenzel'UT", unix_name="woenzel",
address="Woenzel", parent=guyut).save()
Membership(user=skia, club=main_club, role=3, description="").save()
2016-04-20 01:30:49 +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()
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()
Customer(user=r, account_id="4000", amount=0).save()
2016-03-22 08:01:24 +00:00
p = ProductType(name="Bières bouteilles")
p.save()
2016-05-31 17:32:15 +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()
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()
2016-03-29 08:30:24 +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()
2016-03-29 08:30:24 +00:00
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)
mde.save()
# 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()
2016-11-08 00:43:13 +00:00
credit = AccountingType(code=74, label="Someone gave us money", movement_type='CREDIT')
2016-08-07 18:10:50 +00:00
credit.save()
2016-11-08 00:43:13 +00:00
debit = AccountingType(code=607, label="Had to pay a beer", movement_type='DEBIT')
2016-08-07 18:10:50 +00:00
debit.save()
Operation(journal=gj, date=date.today(), amount=666.42,
2016-08-07 18:10:50 +00:00
remark="An answer to life...", mode="CASH", done=True, accounting_type=credit, target_type="USER",
target_id=skia.id).save()
Operation(journal=gj, date=date.today(), amount=42,
2016-08-07 18:10:50 +00:00
remark="An answer to life...", mode="CASH", done=False, accounting_type=debit, target_type="CLUB",
target_id=bar_club.id).save()
woenzco = Company(name="Woenzel & co")
woenzco.save()
2016-03-22 08:01:24 +00:00