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
2016-08-13 14:39:09 +00:00
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-12-21 01:38:21 +00:00
from com . models import Sith
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 " )
2016-07-17 22:47:56 +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 ) :
2016-07-14 15:50:02 +00:00
os . environ [ ' DJANGO_COLORS ' ] = ' nocolor '
2016-08-13 14:39:09 +00:00
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 ( )
2016-07-17 22:47:56 +00:00
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 ( )
2016-08-11 02:24:32 +00:00
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 ' ] )
2016-07-17 22:47:56 +00:00
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 ' ] ,
2016-07-17 22:47:56 +00:00
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 ' ] ,
2016-08-01 14:36:16 +00:00
unix_name = settings . SITH_LAUNDERETTE_MANAGER [ ' unix_name ' ] ,
address = settings . SITH_LAUNDERETTE_MANAGER [ ' address ' ] )
launderette_club . save ( )
2016-08-29 01:02:13 +00:00
self . reset_index ( " club " )
2016-07-17 22:47:56 +00:00
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-12-21 01:38:21 +00:00
Sith ( ) . 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
2016-08-01 14:36:16 +00:00
p = Page ( name = " launderette " )
p . set_lock ( root )
p . save ( )
p . set_lock ( root )
2016-08-01 17:59:22 +00:00
PageRev ( page = p , title = " Laverie " , author = root , content = " Fonctionnement de la laverie " ) . save ( )
2016-08-01 14:36:16 +00:00
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 ( )
2016-07-17 22:47:56 +00:00
# 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 ]
2016-07-17 22:47:56 +00:00
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 :
2016-07-16 14:35:45 +00:00
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 " ,
2016-07-17 22:47:56 +00:00
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 " ,
2016-07-17 22:47:56 +00:00
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 ( )
2016-07-17 22:47:56 +00:00
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 " ,
2016-07-17 22:47:56 +00:00
address = " Terre Du Milieu " , parent = main_club )
2016-04-20 01:30:49 +00:00
troll . save ( )
2016-12-15 11:17:19 +00:00
refound = Club ( name = " Carte AE " , unix_name = " carte_ae " ,
address = " Jamais imprimée " , parent = main_club )
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 ( )
2016-05-31 23:33:20 +00:00
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 " ,
2016-07-17 22:47:56 +00:00
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 " ,
2016-07-17 22:47:56 +00:00
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 " ,
2016-07-17 22:47:56 +00:00
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 " ,
2016-07-17 22:47:56 +00:00
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 ( )
2016-12-15 11:17:19 +00:00
refound_counter = Counter ( name = " Carte AE " , club = refound , type = ' OFFICE ' )
refound_counter . save ( )
refound_product = Product ( name = " remboursement " , code = " REMBOURS " , purchase_price = " 0 " , selling_price = " 0 " ,
special_selling_price = " 0 " , club = refound )
refound_product . save ( )
2016-05-31 17:32:15 +00:00
# Accounting test values:
2016-07-17 22:47:56 +00:00
BankAccount ( name = " AE TG " , club = main_club ) . save ( )
BankAccount ( name = " Carte AE " , club = main_club ) . save ( )
ba = BankAccount ( name = " AE TI " , club = main_club )
2016-04-20 00:07:01 +00:00
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-12-21 01:55:24 +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-12-21 01:55:24 +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 ( )
2016-12-21 01:55:24 +00:00
t = AccountingType ( code = ' 602 ' , label = " Gros test de malade " , movement_type = ' DEBIT ' )
t . save ( )
Operation ( journal = gj , date = date . today ( ) , amount = 32.3 , remark = " ... " , mode = " CASH " , done = True , accounting_type = t , target_type = " USER " , target_id = skia . id ) . save ( )
t = AccountingType ( code = ' 60 ' , label = " ... " , movement_type = ' DEBIT ' )
t . save ( )
Operation ( journal = gj , date = date . today ( ) , amount = 32.3 , remark = " ... " , mode = " CASH " , done = True , accounting_type = t , target_type = " USER " , target_id = skia . id ) . save ( )
Operation ( journal = gj , date = date . today ( ) , amount = 46.42 , remark = " An answer to life... " , mode = " CASH " , done = True , accounting_type = t , target_type = " USER " , target_id = skia . id ) . save ( )
2016-08-29 01:02:13 +00:00
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 ( )
2016-08-29 01:02:13 +00:00
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 ( )