populate.py 36.9 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- 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.
#
#

Skia's avatar
Skia committed
25
import os
Skia's avatar
Skia committed
26
from datetime import date, datetime, timedelta
27
from io import StringIO, BytesIO
Skia's avatar
Skia committed
28

Krophil's avatar
Krophil committed
29
from django.core.management.base import BaseCommand
Skia's avatar
Skia committed
30
31
from django.core.management import call_command
from django.conf import settings
Skia's avatar
Skia committed
32
from django.db import connection
33
from django.contrib.sites.models import Site
Skia's avatar
Skia committed
34
from django.utils import timezone
Skia's avatar
Skia committed
35

36
from PIL import Image
Skia's avatar
Skia committed
37

Skia's avatar
Skia committed
38
from core.models import Group, User, Page, PageRev, SithFile
Sli's avatar
Sli committed
39
40
41
42
43
44
45
46
47
from accounting.models import (
    GeneralJournal,
    BankAccount,
    ClubAccount,
    Operation,
    AccountingType,
    SimplifiedAccountingType,
    Company,
)
48
from core.utils import resize_image
Skia's avatar
Skia committed
49
from club.models import Club, Membership
Skia's avatar
Skia committed
50
from subscription.models import Subscription
Sli's avatar
Sli committed
51
from counter.models import Customer, ProductType, Product, Counter, Selling
Skia's avatar
Skia committed
52
from com.models import Sith, Weekmail, News, NewsDate
Sli's avatar
Sli committed
53
from election.models import Election, Role, Candidature, ElectionList
Krophil's avatar
Krophil committed
54
from forum.models import Forum, ForumTopic
Sli's avatar
Sli committed
55

Skia's avatar
Skia committed
56
57
58
59
60

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

    def add_arguments(self, parser):
Sli's avatar
Sli committed
61
        parser.add_argument("--prod", action="store_true")
Skia's avatar
Skia committed
62

63
64
65
66
67
68
    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
69
    def handle(self, *args, **options):
Sli's avatar
Sli committed
70
        os.environ["DJANGO_COLORS"] = "nocolor"
71
        Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save()
Sli's avatar
Sli committed
72
73
74
        root_path = os.path.dirname(
            os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
        )
Skia's avatar
Skia committed
75
        Group(name="Root").save()
76
77
78
        Group(name="Public").save()
        Group(name="Subscribers").save()
        Group(name="Old subscribers").save()
Skia's avatar
Skia committed
79
80
81
82
83
84
85
        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()
86
        Group(name="Forum admin").save()
87
        self.reset_index("core", "auth")
Sli's avatar
Sli committed
88
89
90
91
92
93
94
95
96
97
        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,
        )
Skia's avatar
Skia committed
98
99
        root.set_password("plop")
        root.save()
Sli's avatar
Sli committed
100
101
102
        profiles_root = SithFile(
            parent=None, name="profiles", is_folder=True, owner=root
        )
103
        profiles_root.save()
Skia's avatar
Skia committed
104
105
        home_root = SithFile(parent=None, name="users", is_folder=True, owner=root)
        home_root.save()
Sli's avatar
Sli committed
106
107
108
109
110
111

        # Page needed for club creation
        p = Page(name=settings.SITH_CLUB_ROOT_PAGE)
        p.set_lock(root)
        p.save()

Skia's avatar
Skia committed
112
113
        club_root = SithFile(parent=None, name="clubs", is_folder=True, owner=root)
        club_root.save()
Skia's avatar
Skia committed
114
        SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
Sli's avatar
Sli committed
115
116
117
118
119
120
        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"],
        )
121
        main_club.save()
Sli's avatar
Sli committed
122
123
124
125
126
127
        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"],
        )
128
        bar_club.save()
Sli's avatar
Sli committed
129
130
131
132
133
134
        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"],
        )
135

136
        launderette_club.save()
137
        self.reset_index("club")
138
        for b in settings.SITH_COUNTER_BARS:
Krophil's avatar
Krophil committed
139
            g = Group(name=b[1] + " admin")
140
            g.save()
Sli's avatar
Sli committed
141
            c = Counter(id=b[0], name=b[1], club=bar_club, type="BAR")
142
143
144
145
            c.save()
            c.edit_groups = [g]
            c.save()
        self.reset_index("counter")
Sli's avatar
Sli committed
146
147
        Counter(name="Eboutic", club=main_club, type="EBOUTIC").save()
        Counter(name="AE", club=main_club, type="OFFICE").save()
Skia's avatar
Skia committed
148

Sli's avatar
Sli committed
149
150
151
152
153
154
        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()
        ]
Skia's avatar
Skia committed
155
156
157
        home_root.save()
        club_root.save()

Skia's avatar
Skia committed
158
        Sith(weekmail_destinations="etudiants@git.an personnel@git.an").save()
Skia's avatar
Skia committed
159
        Weekmail().save()
Skia's avatar
Skia committed
160

Sli's avatar
Sli committed
161
        p = Page(name="Index")
Skia's avatar
Skia committed
162
163
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
164
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
165
166
        p.set_lock(root)
        p.save()
Sli's avatar
Sli committed
167
168
169
170
171
        PageRev(
            page=p,
            title="Wiki index",
            author=root,
            content="""
Skia's avatar
Skia committed
172
Welcome to the wiki page!
Sli's avatar
Sli committed
173
174
""",
        ).save()
Skia's avatar
Skia committed
175
176
177
178

        p = Page(name="services")
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
179
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
180
        p.set_lock(root)
Sli's avatar
Sli committed
181
182
183
184
185
        PageRev(
            page=p,
            title="Services",
            author=root,
            content="""
Skia's avatar
Skia committed
186
187
188
189
190
|   |   |   |
| :---: | :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | [Fichiers](/file) |
| SAS | Weekmail | Forum | |

Sli's avatar
Sli committed
191
192
""",
        ).save()
Skia's avatar
Skia committed
193

194
195
196
197
        p = Page(name="launderette")
        p.set_lock(root)
        p.save()
        p.set_lock(root)
Sli's avatar
Sli committed
198
199
200
        PageRev(
            page=p, title="Laverie", author=root, content="Fonctionnement de la laverie"
        ).save()
201

Skia's avatar
Skia committed
202
        # Here we add a lot of test datas, that are not necessary for the Sith, but that provide a basic development environment
Sli's avatar
Sli committed
203
        if not options["prod"]:
Skia's avatar
Skia committed
204
            # Adding user Skia
Sli's avatar
Sli committed
205
206
207
208
209
210
211
            skia = User(
                username="skia",
                last_name="Kia",
                first_name="S'",
                email="skia@git.an",
                date_of_birth="1942-06-12",
            )
Skia's avatar
Skia committed
212
213
            skia.set_password("plop")
            skia.save()
Sli's avatar
Sli committed
214
215
216
            skia.view_groups = [
                Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
            ]
Skia's avatar
Skia committed
217
            skia.save()
Sli's avatar
Sli committed
218
219
            skia_profile_path = os.path.join(root_path, "core/fixtures/images/3.jpg")
            with open(skia_profile_path, "rb") as f:
220
                name = str(skia.id) + "_profile.jpg"
Sli's avatar
Sli committed
221
222
223
224
225
226
227
228
229
                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),
                )
230
231
232
233
234
                skia_profile.file.name = name
                skia_profile.save()
                skia.profile_pict = skia_profile
                skia.save()

Skia's avatar
Skia committed
235
            # Adding user public
Sli's avatar
Sli committed
236
237
238
239
240
241
242
243
244
            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,
            )
Skia's avatar
Skia committed
245
246
            public.set_password("plop")
            public.save()
Sli's avatar
Sli committed
247
248
249
            public.view_groups = [
                Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
            ]
Skia's avatar
Skia committed
250
251
            public.save()
            # Adding user Subscriber
Sli's avatar
Sli committed
252
253
254
255
256
257
258
259
260
            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,
            )
Skia's avatar
Skia committed
261
262
            subscriber.set_password("plop")
            subscriber.save()
Sli's avatar
Sli committed
263
264
265
            subscriber.view_groups = [
                Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
            ]
Skia's avatar
Skia committed
266
            subscriber.save()
Skia's avatar
Skia committed
267
            # Adding user old Subscriber
Sli's avatar
Sli committed
268
269
270
271
272
273
274
275
276
            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,
            )
Skia's avatar
Skia committed
277
278
            old_subscriber.set_password("plop")
            old_subscriber.save()
Sli's avatar
Sli committed
279
280
281
            old_subscriber.view_groups = [
                Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
            ]
Skia's avatar
Skia committed
282
            old_subscriber.save()
283
            # Adding user Counter admin
Sli's avatar
Sli committed
284
285
286
287
288
289
290
291
292
            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,
            )
293
294
            counter.set_password("plop")
            counter.save()
Sli's avatar
Sli committed
295
296
297
298
299
300
            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
            ]
301
            counter.save()
Skia's avatar
Skia committed
302
            # Adding user Comptable
Sli's avatar
Sli committed
303
304
305
306
307
308
309
310
311
            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,
            )
Skia's avatar
Skia committed
312
313
            comptable.set_password("plop")
            comptable.save()
Sli's avatar
Sli committed
314
315
316
317
318
319
320
321
            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
            ]
Skia's avatar
Skia committed
322
            comptable.save()
Skia's avatar
Skia committed
323
            # Adding user Guy
Sli's avatar
Sli committed
324
325
326
327
328
329
330
331
332
            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,
            )
Skia's avatar
Skia committed
333
334
            u.set_password("plop")
            u.save()
Sli's avatar
Sli committed
335
336
337
            u.view_groups = [
                Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
            ]
Skia's avatar
Skia committed
338
            u.save()
Skia's avatar
Skia committed
339
            # Adding user Richard Batsbak
Sli's avatar
Sli committed
340
341
342
343
344
345
346
            r = User(
                username="rbatsbak",
                last_name="Batsbak",
                first_name="Richard",
                email="richard@git.an",
                date_of_birth="1982-06-12",
            )
Skia's avatar
Skia committed
347
348
            r.set_password("plop")
            r.save()
Sli's avatar
Sli committed
349
350
351
            r.view_groups = [
                Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
            ]
Skia's avatar
Skia committed
352
            r.save()
Skia's avatar
Skia committed
353
            # Adding syntax help page
Sli's avatar
Sli committed
354
            p = Page(name="Aide_sur_la_syntaxe")
Skia's avatar
Skia committed
355
            p.save(force_lock=True)
Sli's avatar
Sli committed
356
357
358
359
            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()
Krophil's avatar
Krophil committed
360
            p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
361
            p.save(force_lock=True)
Sli's avatar
Sli committed
362
            p = Page(name="Services")
Skia's avatar
Skia committed
363
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
364
            p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
365
            p.save(force_lock=True)
Sli's avatar
Sli committed
366
367
368
369
370
            PageRev(
                page=p,
                title="Services",
                author=skia,
                content="""
Skia's avatar
Skia committed
371
372
373
374
375
|   |   |   |
| :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat |
| SAS | Weekmail | Forum|

Sli's avatar
Sli committed
376
377
""",
            ).save()
Skia's avatar
Skia committed
378
            # Adding README
Sli's avatar
Sli committed
379
            p = Page(name="README")
Skia's avatar
Skia committed
380
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
381
            p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
382
            p.save(force_lock=True)
Sli's avatar
Sli committed
383
            with open(os.path.join(root_path) + "/README.md", "r") as rm:
384
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
385
386

            # Subscription
Sli's avatar
Sli committed
387
            default_subscription = "un-semestre"
Krophil's avatar
Krophil committed
388
            # Root
Sli's avatar
Sli committed
389
390
391
392
393
            s = Subscription(
                member=User.objects.filter(pk=root.pk).first(),
                subscription_type=default_subscription,
                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0],
            )
Skia's avatar
Skia committed
394
395
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
396
397
398
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Skia's avatar
Skia committed
399
            s.save()
Krophil's avatar
Krophil committed
400
            # Skia
Sli's avatar
Sli committed
401
402
403
404
405
            s = Subscription(
                member=User.objects.filter(pk=skia.pk).first(),
                subscription_type=default_subscription,
                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0],
            )
Skia's avatar
Skia committed
406
407
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
408
409
410
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Skia's avatar
Skia committed
411
            s.save()
Krophil's avatar
Krophil committed
412
            # Counter admin
Sli's avatar
Sli committed
413
414
415
416
417
            s = Subscription(
                member=User.objects.filter(pk=counter.pk).first(),
                subscription_type=default_subscription,
                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0],
            )
Skia's avatar
Skia committed
418
419
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
420
421
422
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Skia's avatar
Skia committed
423
            s.save()
Krophil's avatar
Krophil committed
424
            # Comptable
Sli's avatar
Sli committed
425
426
427
428
429
            s = Subscription(
                member=User.objects.filter(pk=comptable.pk).first(),
                subscription_type=default_subscription,
                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0],
            )
Skia's avatar
Skia committed
430
431
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
432
433
434
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Skia's avatar
Skia committed
435
            s.save()
Krophil's avatar
Krophil committed
436
            # Richard
Sli's avatar
Sli committed
437
438
439
440
441
            s = Subscription(
                member=User.objects.filter(pk=r.pk).first(),
                subscription_type=default_subscription,
                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0],
            )
Skia's avatar
Skia committed
442
443
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
444
445
446
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Skia's avatar
Skia committed
447
            s.save()
Krophil's avatar
Krophil committed
448
            # User
Sli's avatar
Sli committed
449
450
451
452
453
            s = Subscription(
                member=User.objects.filter(pk=subscriber.pk).first(),
                subscription_type=default_subscription,
                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0],
            )
Skia's avatar
Skia committed
454
455
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
456
457
458
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Skia's avatar
Skia committed
459
            s.save()
Krophil's avatar
Krophil committed
460
            # Old subscriber
Sli's avatar
Sli committed
461
462
463
464
465
            s = Subscription(
                member=User.objects.filter(pk=old_subscriber.pk).first(),
                subscription_type=default_subscription,
                payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0],
            )
Skia's avatar
Skia committed
466
467
            s.subscription_start = s.compute_start(datetime(year=2012, month=9, day=4))
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
468
469
470
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Skia's avatar
Skia committed
471
            s.save()
Skia's avatar
Skia committed
472
473

            # Clubs
Sli's avatar
Sli committed
474
475
476
477
478
479
480
481
482
483
484
485
            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,
            )
Skia's avatar
Skia committed
486
            guyut.save()
Sli's avatar
Sli committed
487
488
489
            Club(
                name="Woenzel'UT", unix_name="woenzel", address="Woenzel", parent=guyut
            ).save()
490
            Membership(user=skia, club=main_club, role=3, description="").save()
Sli's avatar
Sli committed
491
492
493
494
495
496
            troll = Club(
                name="Troll Penché",
                unix_name="troll",
                address="Terre Du Milieu",
                parent=main_club,
            )
Skia's avatar
Skia committed
497
            troll.save()
Sli's avatar
Sli committed
498
499
500
501
502
503
            refound = Club(
                name="Carte AE",
                unix_name="carte_ae",
                address="Jamais imprimée",
                parent=main_club,
            )
Sli's avatar
Sli committed
504
            refound.save()
Skia's avatar
Skia committed
505

Skia's avatar
Skia committed
506
507
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
Skia's avatar
Skia committed
508
            Customer(user=r, account_id="4000k", amount=0).save()
Skia's avatar
Skia committed
509
510
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
511
512
513
514
            c = ProductType(name="Cotisations")
            c.save()
            r = ProductType(name="Rechargements")
            r.save()
Sli's avatar
Sli committed
515
516
            verre = ProductType(name="Verre")
            verre.save()
Sli's avatar
Sli committed
517
518
519
520
521
522
523
524
525
            cotis = Product(
                name="Cotis 1 semestre",
                code="1SCOTIZ",
                product_type=c,
                purchase_price="15",
                selling_price="15",
                special_selling_price="15",
                club=main_club,
            )
Skia's avatar
Skia committed
526
            cotis.save()
Sli's avatar
Sli committed
527
528
529
530
531
532
533
534
535
            cotis2 = Product(
                name="Cotis 2 semestres",
                code="2SCOTIZ",
                product_type=c,
                purchase_price="28",
                selling_price="28",
                special_selling_price="28",
                club=main_club,
            )
Skia's avatar
Skia committed
536
            cotis2.save()
Sli's avatar
Sli committed
537
538
539
540
541
542
543
544
545
            refill = Product(
                name="Rechargement 15 €",
                code="15REFILL",
                product_type=r,
                purchase_price="15",
                selling_price="15",
                special_selling_price="15",
                club=main_club,
            )
Skia's avatar
Skia committed
546
            refill.save()
Sli's avatar
Sli committed
547
548
549
550
551
552
553
554
555
            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,
            )
Skia's avatar
Skia committed
556
            barb.save()
Sli's avatar
Sli committed
557
558
559
560
561
562
563
564
565
            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,
            )
Skia's avatar
Skia committed
566
            cble.save()
Sli's avatar
Sli committed
567
568
569
570
571
572
573
574
575
            cons = Product(
                name="Consigne Eco-cup",
                code="CONS",
                product_type=verre,
                purchase_price="1",
                selling_price="1",
                special_selling_price="1",
                club=main_club,
            )
Sli's avatar
Sli committed
576
577
            cons.id = 1152
            cons.save()
Sli's avatar
Sli committed
578
579
580
581
582
583
584
585
586
            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,
            )
Sli's avatar
Sli committed
587
588
            dcons.id = 1151
            dcons.save()
Sli's avatar
Sli committed
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
            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()
607
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
608
609
            mde.products.add(barb)
            mde.products.add(cble)
Sli's avatar
Sli committed
610
611
            mde.products.add(cons)
            mde.products.add(dcons)
Skia's avatar
Skia committed
612
            mde.sellers.add(skia)
Skia's avatar
Skia committed
613
            mde.save()
Sli's avatar
Sli committed
614

Skia's avatar
Skia committed
615
616
617
618
619
620
621
            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()

Sli's avatar
Sli committed
622
            refound_counter = Counter(name="Carte AE", club=refound, type="OFFICE")
Sli's avatar
Sli committed
623
            refound_counter.save()
Sli's avatar
Sli committed
624
625
626
627
628
629
630
631
            refound_product = Product(
                name="remboursement",
                code="REMBOURS",
                purchase_price="0",
                selling_price="0",
                special_selling_price="0",
                club=refound,
            )
Sli's avatar
Sli committed
632
            refound_product.save()
Skia's avatar
Skia committed
633
634

            # Accounting test values:
635
636
637
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
638
639
640
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
641
642
            gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca)
            gj.save()
Sli's avatar
Sli committed
643
644
645
            credit = AccountingType(
                code="74", label="Subventions d'exploitation", movement_type="CREDIT"
            )
Skia's avatar
Skia committed
646
            credit.save()
Sli's avatar
Sli committed
647
648
649
650
651
            debit = AccountingType(
                code="606",
                label="Achats non stockés de matières et fournitures(*1)",
                movement_type="DEBIT",
            )
Skia's avatar
Skia committed
652
            debit.save()
Sli's avatar
Sli committed
653
654
655
656
657
            debit2 = AccountingType(
                code="604",
                label="Achats d'études et prestations de services(*2)",
                movement_type="DEBIT",
            )
Krophil's avatar
Krophil committed
658
            debit2.save()
Sli's avatar
Sli committed
659
660
661
            buying = AccountingType(
                code="60", label="Achats (sauf 603)", movement_type="DEBIT"
            )
Krophil's avatar
Krophil committed
662
            buying.save()
Sli's avatar
Sli committed
663
664
665
            comptes = AccountingType(
                code="6", label="Comptes de charge", movement_type="DEBIT"
            )
Krophil's avatar
Krophil committed
666
            comptes.save()
Sli's avatar
Sli committed
667
668
669
            simple = SimplifiedAccountingType(
                label="Je fais du simple 6", accounting_type=comptes
            )
Krophil's avatar
Krophil committed
670
            simple.save()
Skia's avatar
Skia committed
671
672
            woenzco = Company(name="Woenzel & co")
            woenzco.save()
Sli's avatar
Sli committed
673
674

            operation_list = [
Sli's avatar
Sli committed
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
                (
                    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,
                ),
Krophil's avatar
Krophil committed
765
            ]
Sli's avatar
Sli committed
766
            for op in operation_list:
Sli's avatar
Sli committed
767
768
769
770
771
772
773
774
775
776
777
778
779
780
                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],
                )
Sli's avatar
Sli committed
781
782
783
                operation.clean()
                operation.save()

Sli's avatar
Sli committed
784
            # Adding user sli
Sli's avatar
Sli committed
785
786
787
788
789
790
791
            sli = User(
                username="sli",
                last_name="Li",
                first_name="S",
                email="sli@git.an",
                date_of_birth="1942-06-12",
            )
Sli's avatar
Sli committed
792
793
            sli.set_password("plop")
            sli.save()
Sli's avatar
Sli committed
794
795
796
            sli.view_groups = [
                Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id
            ]
Sli's avatar
Sli committed
797
            sli.save()
Sli's avatar
Sli committed
798
799
            sli_profile_path = os.path.join(root_path, "core/fixtures/images/5.jpg")
            with open(sli_profile_path, "rb") as f:
800
                name = str(sli.id) + "_profile.jpg"
Sli's avatar
Sli committed
801
802
803
804
805
806
807
808
809
                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),
                )
810
811
812
813
                sli_profile.file.name = name
                sli_profile.save()
                sli.profile_pict = sli_profile
                sli.save()
Sli's avatar
Sli committed
814
            # Adding user Krophil
Sli's avatar
Sli committed
815
816
817
818
819
820
821
            krophil = User(
                username="krophil",
                last_name="Phil'",
                first_name="Kro",
                email="krophil@git.an",
                date_of_birth="1942-06-12",
            )
Sli's avatar
Sli committed
822
823
            krophil.set_password("plop")
            krophil.save()
Sli's avatar
Sli committed
824
825
            krophil_profile_path = os.path.join(root_path, "core/fixtures/images/6.jpg")
            with open(krophil_profile_path, "rb") as f:
826
                name = str(krophil.id) + "_profile.jpg"
Sli's avatar
Sli committed
827
828
829
830
831
832
833
834
835
                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),
                )
836
837
838
839
                krophil_profile.file.name = name
                krophil_profile.save()
                krophil.profile_pict = krophil_profile
                krophil.save()
Krophil's avatar
Krophil committed
840
            # Adding subscription for sli
Sli's avatar
Sli committed
841
842
843
844
845
            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],
            )
Sli's avatar
Sli committed
846
847
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
848
849
850
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Sli's avatar
Sli committed
851
            s.save()
Krophil's avatar
Krophil committed
852
            # Adding subscription for Krophil
Sli's avatar
Sli committed
853
854
855
856
857
            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],
            )
Sli's avatar
Sli committed
858
859
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Sli's avatar
Sli committed
860
861
862
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]["duration"],
                start=s.subscription_start,
            )
Sli's avatar
Sli committed
863
            s.save()
Krophil's avatar
Krophil committed
864

Sli's avatar
Sli committed
865
866
867
868
869
870
871
872
873
874
            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()
Sli's avatar
Sli committed
875

Krophil's avatar
Krophil committed
876
877
878
879
880
            # Add barman to counter
            c = Counter.objects.get(id=2)
            c.sellers.add(User.objects.get(pk=krophil.pk))
            c.save()

Sli's avatar
Sli committed
881
            # Create an election
Sli's avatar
Sli committed
882
883
            public_group = Group.objects.get(id=settings.SITH_GROUP_PUBLIC_ID)
            subscriber_group = Group.objects.get(name=settings.SITH_MAIN_MEMBERS_GROUP)
Sli's avatar
Sli committed
884
            ae_board_group = Group.objects.get(name=settings.SITH_MAIN_BOARD_GROUP)
Sli's avatar
Sli committed
885
886
887
888
889
890
891
892
            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",
            )
Sli's avatar
Sli committed
893
            el.save()
Sli's avatar
Sli committed
894
            el.view_groups.add(public_group)
Sli's avatar
Sli committed
895
            el.edit_groups.add(ae_board_group)
896
897
            el.candidature_groups.add(subscriber_group)
            el.vote_groups.add(subscriber_group)
Sli's avatar
Sli committed
898
            el.save()
Sli's avatar
Sli committed
899
            liste = ElectionList(title="Candidature Libre", election=el)
Sli's avatar
Sli committed
900
            liste.save()
Sli's avatar
Sli committed
901
            listeT = ElectionList(title="Troll", election=el)
Sli's avatar
Sli committed
902
903
904
            listeT.save()
            pres = Role(election=el, title="Président AE", description="Roi de l'AE")
            pres.save()
Sli's avatar
Sli committed
905
906
907
            resp = Role(
                election=el, title="Co Respo Info", max_choice=2, description="Ghetto++"
            )
Sli's avatar
Sli committed
908
            resp.save()
Sli's avatar
Sli committed
909
910
911
            cand = Candidature(
                role=resp, user=skia, election_list=liste, program="Refesons le site AE"
            )
Sli's avatar
Sli committed
912
            cand.save()
Sli's avatar
Sli committed
913
914
915
916
917
918
            cand = Candidature(
                role=resp,
                user=sli,
                election_list=liste,
                program="Vasy je deviens mon propre adjoint",
            )
Sli's avatar
Sli committed
919
            cand.save()
Sli's avatar
Sli committed
920
921
922
            cand = Candidature(
                role=resp, user=krophil, election_list=listeT, program="Le Pôle Troll !"
            )
Sli's avatar
Sli committed
923
            cand.save()
Sli's avatar
Sli committed
924
925
926
927
928
929
            cand = Candidature(
                role=pres,
                user=sli,
                election_list=listeT,
                program="En fait j'aime pas l'info, je voulais faire GMC",
            )
Sli's avatar
Sli committed
930
            cand.save()
Krophil's avatar
Krophil committed
931

Skia's avatar
Skia committed
932
            # Forum
Sli's avatar
Sli committed
933
934
935
936
937
            room = Forum(
                name="Salon de discussions",
                description="Pour causer de tout",
                is_category=True,
            )
Skia's avatar
Skia committed
938
939
940
            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()
Sli's avatar
Sli committed
941
942
943
944
945
            hall = Forum(
                name="Hall de discussions",
                description="Pour toutes les discussions",
                parent=room,
            )
Skia's avatar
Skia committed
946
            hall.save()
Sli's avatar
Sli committed
947
948
949
            various = Forum(
                name="Divers", description="Pour causer de rien", is_category=True
            )
Skia's avatar
Skia committed
950
            various.save()
Sli's avatar
Sli committed
951
952
953
            Forum(
                name="Promos", description="Réservé aux Promos", parent=various
            ).save()
Skia's avatar
Skia committed
954
            ForumTopic(forum=hall)
Skia's avatar
Skia committed
955
956
957
958
959
960
961

            # News
            friday = timezone.now()
            while friday.weekday() != 4:
                friday += timedelta(hours=6)
            friday.replace(hour=20, minute=0, second=0)
            # Event
Sli's avatar
Sli committed
962
963
964
965
966
967
968
969
970
971
            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,
            )
Skia's avatar
Skia committed
972
            n.save()
Sli's avatar
Sli committed
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
            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,
            )
Skia's avatar
Skia committed
989
            n.save()
Sli's avatar
Sli committed
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
            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,
            )
Skia's avatar
Skia committed
1005
            n.save()
Sli's avatar
Sli committed
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
            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,
            )
Skia's avatar
Skia committed
1021
            n.save()
Sli's avatar
Sli committed
1022
1023
1024
1025
1026
            NewsDate(
                news=n,
                start_date=friday + timedelta(hours=24 * 7 + 1),
                end_date=timezone.now() + timedelta(hours=24 * 7 + 9),
            ).save()
Skia's avatar
Skia committed
1027
            # Weekly
Sli's avatar
Sli committed
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
            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,
            )
Skia's avatar
Skia committed
1039
1040
            n.save()
            for i in range(10):
Sli's avatar
Sli committed
1041
1042
1043
1044
1045
                NewsDate(
                    news=n,
                    start_date=friday + timedelta(hours=24 * 7 * i),
                    end_date=friday + timedelta(hours=24 * 7 * i + 8),
                ).save()