populate.py 19.6 KB
Newer Older
Skia's avatar
Skia committed
1
import os
Skia's avatar
Skia committed
2
from datetime import date, datetime
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
9
from django.contrib.sites.models import Site
Skia's avatar
Skia committed
10
11


Skia's avatar
Skia committed
12
from core.models import Group, User, Page, PageRev, SithFile
Krophil's avatar
Krophil committed
13
from accounting.models import GeneralJournal, BankAccount, ClubAccount, Operation, AccountingType, SimplifiedAccountingType, Company
Skia's avatar
Skia committed
14
from club.models import Club, Membership
Skia's avatar
Skia committed
15
from subscription.models import Subscription
Skia's avatar
Skia committed
16
from counter.models import Customer, ProductType, Product, Counter
Skia's avatar
Skia committed
17
from com.models import Sith
Sli's avatar
Sli committed
18
from election.models import Election, Role, Candidature, List
Skia's avatar
Skia committed
19
20
21
22
23
24
25

class Command(BaseCommand):
    help = "Populate a new instance of the Sith AE"

    def add_arguments(self, parser):
        parser.add_argument('--prod', action="store_true")

26
27
28
29
30
31
    def reset_index(self, *args):
        sqlcmd = StringIO()
        call_command("sqlsequencereset", *args, stdout=sqlcmd)
        cursor = connection.cursor()
        cursor.execute(sqlcmd.getvalue())

Skia's avatar
Skia committed
32
    def handle(self, *args, **options):
Skia's avatar
Skia committed
33
        os.environ['DJANGO_COLORS'] = 'nocolor'
34
        Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save()
Skia's avatar
Skia committed
35
        root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
Skia's avatar
Skia committed
36
37
38
39
40
41
42
43
44
        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()
45
        self.reset_index("core", "auth")
Skia's avatar
Skia committed
46
        root = User(id=0, username='root', last_name="", first_name="Bibou",
Skia's avatar
Skia committed
47
48
49
                 email="ae.info@utbm.fr",
                 date_of_birth="1942-06-12",
                 is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
50
51
        root.set_password("plop")
        root.save()
52
        SithFile(parent=None, name="profiles", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
53
54
55
56
        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()
Skia's avatar
Skia committed
57
        SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
58
        main_club = Club(id=1, name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
Skia's avatar
Skia committed
59
                address=settings.SITH_MAIN_CLUB['address'])
60
        main_club.save()
Skia's avatar
Skia committed
61
        bar_club = Club(id=2, name=settings.SITH_BAR_MANAGER['name'], unix_name=settings.SITH_BAR_MANAGER['unix_name'],
62
63
                address=settings.SITH_BAR_MANAGER['address'])
        bar_club.save()
Skia's avatar
Skia committed
64
        launderette_club = Club(id=84, name=settings.SITH_LAUNDERETTE_MANAGER['name'],
65
66
67
                unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name'],
                address=settings.SITH_LAUNDERETTE_MANAGER['address'])
        launderette_club.save()
68
        self.reset_index("club")
69
70
71
72
73
74
75
76
        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")
Skia's avatar
Skia committed
77
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Sli's avatar
Sli committed
78
        Counter(name="AE", club=main_club, type='OFFICE').save()
Skia's avatar
Skia committed
79
80
81
82
83
84

        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()

Skia's avatar
Skia committed
85
86
        Sith().save()

Skia's avatar
Skia committed
87
88
89
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
90
        p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
91
92
93
94
        p.set_lock(root)
        p.save()
        PageRev(page=p, title="Wiki index", author=root, content="""
Welcome to the wiki page!
Skia's avatar
Skia committed
95
96
97
98
99
""").save()

        p = Page(name="services")
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
100
        p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
101
102
103
104
105
106
107
        p.set_lock(root)
        PageRev(page=p, title="Services", author=root, content="""
|   |   |   |
| :---: | :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | [Fichiers](/file) |
| SAS | Weekmail | Forum | |

Skia's avatar
Skia committed
108
""").save()
Skia's avatar
Skia committed
109

110
111
112
113
        p = Page(name="launderette")
        p.set_lock(root)
        p.save()
        p.set_lock(root)
114
        PageRev(page=p, title="Laverie", author=root, content="Fonctionnement de la laverie").save()
115

Skia's avatar
Skia committed
116
117
118
        # 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
119
            skia = User(username='skia', last_name="Kia", first_name="S'",
Skia's avatar
Skia committed
120
121
                     email="skia@git.an",
                     date_of_birth="1942-06-12")
Skia's avatar
Skia committed
122
123
124
125
            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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
            # 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()
144
145
146
147
148
149
150
151
            # 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]
Skia's avatar
Skia committed
152
            counter.groups=[Group.objects.filter(id=settings.SITH_GROUP_COUNTER_ADMIN_ID).first().id]
153
            counter.save()
Skia's avatar
Skia committed
154
155
156
157
158
159
160
161
            # 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]
Skia's avatar
Skia committed
162
            comptable.groups=[Group.objects.filter(id=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID).first().id]
Skia's avatar
Skia committed
163
            comptable.save()
Skia's avatar
Skia committed
164
165
166
167
168
169
170
            # 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
171
            u.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
172
            u.save()
Skia's avatar
Skia committed
173
174
175
176
177
178
            # 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
179
            r.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
180
            r.save()
Skia's avatar
Skia committed
181
182
            # Adding syntax help page
            p = Page(name='Aide_sur_la_syntaxe')
Skia's avatar
Skia committed
183
            p.save(force_lock=True)
Skia's avatar
Skia committed
184
            PageRev(page=p, title="Aide sur la syntaxe", author=skia, content="""
Skia's avatar
Skia committed
185
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
Skia's avatar
Skia committed
186
187
""").save()
            p = Page(name='Services')
Skia's avatar
Skia committed
188
            p.save(force_lock=True)
Skia's avatar
Skia committed
189
            p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
190
            p.save(force_lock=True)
Skia's avatar
Skia committed
191
192
193
194
195
196
            PageRev(page=p, title="Services", author=skia, content="""
|   |   |   |
| :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat |
| SAS | Weekmail | Forum|

Skia's avatar
Skia committed
197
198
199
""").save()
            # Adding README
            p = Page(name='README')
Skia's avatar
Skia committed
200
            p.save(force_lock=True)
Skia's avatar
Skia committed
201
            p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
202
            p.save(force_lock=True)
Skia's avatar
Skia committed
203
            with open(os.path.join(root_path)+'/README.md', 'r') as rm:
204
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
205
206

            # Subscription
Skia's avatar
Skia committed
207
            ## Root
Skia's avatar
Skia committed
208
            s = Subscription(member=User.objects.filter(pk=root.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
209
210
211
212
213
214
                    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
215
            ## Skia
Skia's avatar
Skia committed
216
            s = Subscription(member=User.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
217
218
219
220
221
222
                    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
223
            ## Comptable
Skia's avatar
Skia committed
224
            s = Subscription(member=User.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
225
226
227
228
229
230
                    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
231
            ## Richard
Skia's avatar
Skia committed
232
            s = Subscription(member=User.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
233
234
235
236
237
238
                    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
239
240
            ## User
            s = Subscription(member=User.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
241
242
243
244
245
246
                    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
247
248
249

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
250
                    address="46 de la Boustifaille", parent=main_club).save()
Skia's avatar
Skia committed
251
            guyut = Club(name="Guy'UT", unix_name="guyut",
252
                    address="42 de la Boustifaille", parent=main_club)
Skia's avatar
Skia committed
253
254
255
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
                    address="Woenzel", parent=guyut).save()
256
            Membership(user=skia, club=main_club, role=3, description="").save()
Skia's avatar
Skia committed
257
            troll = Club(name="Troll Penché", unix_name="troll",
258
                    address="Terre Du Milieu", parent=main_club)
Skia's avatar
Skia committed
259
            troll.save()
Sli's avatar
Sli committed
260
261
262
            refound = Club(name="Carte AE", unix_name="carte_ae",
                    address="Jamais imprimée", parent=main_club)
            refound.save()
Skia's avatar
Skia committed
263

Skia's avatar
Skia committed
264
265
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
266
            Customer(user=r, account_id="4000", amount=0).save()
Skia's avatar
Skia committed
267
268
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
269
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
270
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
271
272
            barb.save()
            cble = Product(name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7",
273
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
274
            cble.save()
Skia's avatar
Skia committed
275
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
276
                    special_selling_price="1.6", club=main_club).save()
Skia's avatar
Skia committed
277
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
278
279
                    special_selling_price="1.6", club=main_club).save()
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
280
281
282
            mde.products.add(barb)
            mde.products.add(cble)
            mde.save()
Sli's avatar
Sli committed
283
284
285
286
287
288

            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()
Skia's avatar
Skia committed
289
290

            # Accounting test values:
291
292
293
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
294
295
296
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
297
298
            gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca)
            gj.save()
Krophil's avatar
Krophil committed
299
            credit = AccountingType(code='74', label="Subventions d'exploitation", movement_type='CREDIT')
Skia's avatar
Skia committed
300
            credit.save()
Krophil's avatar
Krophil committed
301
            debit = AccountingType(code='606', label="Achats non stockés de matières et fournitures(*1)", movement_type='DEBIT')
Skia's avatar
Skia committed
302
            debit.save()
Krophil's avatar
Krophil committed
303
304
305
306
            debit2 = AccountingType(code='604', label="Achats d'études et prestations de services(*2)", movement_type='DEBIT')
            debit2.save()
            buying = AccountingType(code='60', label="Achats (sauf 603)", movement_type='DEBIT')
            buying.save()
Krophil's avatar
Krophil committed
307
308
309
310
            comptes = AccountingType(code='6', label="Comptes de charge", movement_type='DEBIT')
            comptes.save()
            simple = SimplifiedAccountingType(label = 'Je fais du simple 6', accounting_type = comptes, movement_type='DEBIT')
            simple.save()
Skia's avatar
Skia committed
311
312
            woenzco = Company(name="Woenzel & co")
            woenzco.save()
Sli's avatar
Sli committed
313
314
315
316
317
318
319
320
            # Adding user sli
            sli = User(username='sli', last_name="Li", first_name="S",
                       email="sli@git.an",
                       date_of_birth="1942-06-12")
            sli.set_password("plop")
            sli.save()
            skia.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            sli.save()
Sli's avatar
Sli committed
321
322
323
324
325
326
            # Adding user Krophil
            krophil = User(username='krophil', last_name="Phil'", first_name="Kro",
                           email="krophil@git.an",
                           date_of_birth="1942-06-12")
            krophil.set_password("plop")
            krophil.save()
Sli's avatar
Sli committed
327
328
329
330
331
332
333
334
            ## Adding subscription for sli
            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])
            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()
Sli's avatar
Sli committed
335
336
337
338
339
340
341
342
            ## Adding subscription for Krophil
            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])
            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()
Krophil's avatar
Krophil committed
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362

            operation_list = [
                            (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),
                            ]
            for op in operation_list:
                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])
                operation.clean()
                operation.save()
Sli's avatar
Sli committed
363
364

            # Create an election
Sli's avatar
Sli committed
365
366
367
368
            el = Election(title="Élection 2017", description="La roue tourne", start_candidature='1942-06-12 10:28:45', end_candidature='2042-06-12 10:28:45',start_date='1942-06-12 10:28:45', end_date='7942-06-12 10:28:45')
            el.save()
            liste = List(title="Candidature Libre", election=el)
            liste.save()
Sli's avatar
Sli committed
369
370
371
372
            listeT = List(title="Troll", election=el)
            listeT.save()
            pres = Role(election=el, title="Président AE", description="Roi de l'AE")
            pres.save()
Sli's avatar
Sli committed
373
374
375
376
            resp = Role(election=el, title="Co Respo Info", description="Ghetto++")
            resp.save()
            cand = Candidature(role=resp, user=skia, liste=liste, program="Refesons le site AE")
            cand.save()
Sli's avatar
Sli committed
377
378
379
380
381
382
            cand = Candidature(role=resp, user=sli, liste=liste, program="Vasy je deviens mon propre adjoint")
            cand.save()
            cand = Candidature(role=resp, user=krophil, liste=listeT, program="Le Pôle Troll !")
            cand.save()
            cand = Candidature(role=pres, user=sli, liste=listeT, program="En fait j'aime pas l'info, je voulais faire GMC")
            cand.save()
Krophil's avatar
Krophil committed
383