populate.py 9.81 KB
Newer Older
Skia's avatar
Skia committed
1
import os
Skia's avatar
Skia committed
2
from datetime import date
Skia's avatar
Skia committed
3
from io import StringIO
Skia's avatar
Skia committed
4

Skia's avatar
Skia committed
5
6
7
from django.core.management.base import BaseCommand, CommandError
from django.core.management import call_command
from django.conf import settings
Skia's avatar
Skia committed
8
from django.db import connection
Skia's avatar
Skia committed
9
10
11


from core.models import Group, User, Page, PageRev
12
from accounting.models import GeneralJournal, BankAccount, ClubAccount, Operation, AccountingType
Skia's avatar
Skia committed
13
from club.models import Club, Membership
Skia's avatar
Skia committed
14
from subscription.models import Subscription, Subscriber
Skia's avatar
Skia committed
15
from counter.models import Customer, ProductType, Product, Counter
Skia's avatar
Skia committed
16
17
18
19
20
21
22
23

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 handle(self, *args, **options):
Skia's avatar
Skia committed
24
        os.environ['DJANGO_COLORS'] = 'nocolor'
Skia's avatar
Skia committed
25
        root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
Skia's avatar
Skia committed
26
27
28
29
30
31
32
        for g in settings.SITH_GROUPS.values():
            Group(id=g['id'], name=g['name']).save()
        sqlcmd = StringIO()
        call_command("sqlsequencereset", "core", "auth", stdout=sqlcmd)
        cursor = connection.cursor()
        print(sqlcmd.getvalue())
        cursor.execute(sqlcmd.getvalue())
Skia's avatar
Skia committed
33
        root = User(username='root', last_name="", first_name="Bibou",
Skia's avatar
Skia committed
34
35
36
                 email="ae.info@utbm.fr",
                 date_of_birth="1942-06-12",
                 is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
37
38
        root.set_password("plop")
        root.save()
Skia's avatar
Skia committed
39
40
41
        ae = Club(name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
                address=settings.SITH_MAIN_CLUB['address'])
        ae.save()
Skia's avatar
Skia committed
42
43
44
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
45
        p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
46
47
48
49
50
        p.set_lock(root)
        p.save()
        PageRev(page=p, title="Wiki index", author=root, content="""
Welcome to the wiki page!
""").save()
Skia's avatar
Skia committed
51
52
53
54

        # 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
Skia's avatar
Skia committed
55
            skia = User(username='skia', last_name="Kia", first_name="S'",
Skia's avatar
Skia committed
56
57
                     email="skia@git.an",
                     date_of_birth="1942-06-12")
Skia's avatar
Skia committed
58
59
60
61
            skia.set_password("plop")
            skia.save()
            skia.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            skia.save()
Skia's avatar
Skia committed
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
            # 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()
Skia's avatar
Skia committed
80
81
82
83
84
85
86
87
88
89
            # 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]
            comptable.groups=[Group.objects.filter(name=settings.SITH_GROUPS['accounting-admin']['name']).first().id]
            comptable.save()
Skia's avatar
Skia committed
90
91
92
93
94
95
96
            # 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()
Skia's avatar
Skia committed
97
            u.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
98
            u.save()
Skia's avatar
Skia committed
99
100
101
102
103
104
            # 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()
Skia's avatar
Skia committed
105
            r.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
106
            r.save()
Skia's avatar
Skia committed
107
108
109
            # Adding syntax help page
            p = Page(name='Aide_sur_la_syntaxe')
            p.save()
Skia's avatar
Skia committed
110
            PageRev(page=p, title="Aide sur la syntaxe", author=skia, content="""
Skia's avatar
Skia committed
111
112
113
114
115
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
""").save()
            # Adding README
            p = Page(name='README')
            p.save()
Skia's avatar
Skia committed
116
            p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
117
            p.set_lock(skia)
Skia's avatar
Skia committed
118
119
            p.save()
            with open(os.path.join(root_path)+'/README.md', 'r') as rm:
120
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
121
122

            # Subscription
Skia's avatar
Skia committed
123
            ## Skia
Skia's avatar
Skia committed
124
125
126
127
128
129
130
            s = Subscription(member=Subscriber.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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()
Skia's avatar
Skia committed
131
            ## Comptable
Skia's avatar
Skia committed
132
133
134
135
136
137
138
            s = Subscription(member=Subscriber.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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()
Skia's avatar
Skia committed
139
            ## Richard
Skia's avatar
Skia committed
140
141
142
143
144
145
146
            s = Subscription(member=Subscriber.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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()
Skia's avatar
Skia committed
147
            ## Subscriber
Skia's avatar
Skia committed
148
149
150
151
152
153
154
            s = Subscription(member=Subscriber.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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()
Skia's avatar
Skia committed
155
156
157
158
159
160
161
162
163
164

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
                    address="46 de la Boustifaille", parent=ae).save()
            guyut = Club(name="Guy'UT", unix_name="guyut",
                    address="42 de la Boustifaille", parent=ae)
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
                    address="Woenzel", parent=guyut).save()
            Club(name="BdF", unix_name="bdf",
Skia's avatar
Skia committed
165
                    address="6 Bd Anatole France").save()
Skia's avatar
Skia committed
166
            Membership(user=skia, club=ae, role=3, description="").save()
Skia's avatar
Skia committed
167
168
169
            troll = Club(name="Troll Penché", unix_name="troll",
                    address="Terre Du Milieu", parent=ae)
            troll.save()
Skia's avatar
Skia committed
170

Skia's avatar
Skia committed
171
172
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
173
            Customer(user=r, account_id="4000", amount=0).save()
Skia's avatar
Skia committed
174
175
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
176
177
178
179
180
181
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
                    special_selling_price="1.6", club=ae)
            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=ae)
            cble.save()
Skia's avatar
Skia committed
182
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
Skia's avatar
Skia committed
183
                    special_selling_price="1.6", club=ae).save()
Skia's avatar
Skia committed
184
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
Skia's avatar
Skia committed
185
                    special_selling_price="1.6", club=ae).save()
Skia's avatar
Skia committed
186
187
188
189
190
191
192
            mde = Counter(name="MDE", club=ae, type="BAR")
            mde.save()
            mde.products.add(barb)
            mde.products.add(cble)
            mde.save()

            # Accounting test values:
Skia's avatar
Skia committed
193
194
195
            BankAccount(name="AE TG", club=ae).save()
            BankAccount(name="Carte AE", club=ae).save()
            ba = BankAccount(name="AE TI", club=ae)
196
197
198
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
199
200
            AccountingType(code=756, label="Someone gave us money", movement_type='credit').save()
            AccountingType(code=8570, label="Had to pay for food", movement_type='debit').save()
Skia's avatar
Skia committed
201