populate.py 30.6 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
Krophil's avatar
Krophil committed
39
from accounting.models import GeneralJournal, BankAccount, ClubAccount, Operation, AccountingType, SimplifiedAccountingType, Company
40
from core.utils import resize_image
Skia's avatar
Skia committed
41
from club.models import Club, Membership
Skia's avatar
Skia committed
42
from subscription.models import Subscription
Sli's avatar
Sli committed
43
from counter.models import Customer, ProductType, Product, Counter, Selling
Skia's avatar
Skia committed
44
from com.models import Sith, Weekmail, News, NewsDate
Sli's avatar
Sli committed
45
from election.models import Election, Role, Candidature, ElectionList
Krophil's avatar
Krophil committed
46
from forum.models import Forum, ForumTopic
Sli's avatar
Sli committed
47

Skia's avatar
Skia committed
48
49
50
51
52
53
54

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

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

55
56
57
58
59
60
    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
61
    def handle(self, *args, **options):
Skia's avatar
Skia committed
62
        os.environ['DJANGO_COLORS'] = 'nocolor'
63
        Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save()
Skia's avatar
Skia committed
64
        root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
Skia's avatar
Skia committed
65
        Group(name="Root").save()
66
67
68
        Group(name="Public").save()
        Group(name="Subscribers").save()
        Group(name="Old subscribers").save()
Skia's avatar
Skia committed
69
70
71
72
73
74
75
        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()
76
        Group(name="Forum admin").save()
77
        self.reset_index("core", "auth")
Skia's avatar
Skia committed
78
        root = User(id=0, username='root', last_name="", first_name="Bibou",
Krophil's avatar
Krophil committed
79
80
81
                    email="ae.info@utbm.fr",
                    date_of_birth="1942-06-12",
                    is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
82
83
        root.set_password("plop")
        root.save()
84
85
        profiles_root = SithFile(parent=None, name="profiles", is_folder=True, owner=root)
        profiles_root.save()
Skia's avatar
Skia committed
86
87
        home_root = SithFile(parent=None, name="users", is_folder=True, owner=root)
        home_root.save()
Sli's avatar
Sli committed
88
89
90
91
92
93

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

Skia's avatar
Skia committed
94
95
        club_root = SithFile(parent=None, name="clubs", is_folder=True, owner=root)
        club_root.save()
Skia's avatar
Skia committed
96
        SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
97
        main_club = Club(id=1, name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
Krophil's avatar
Krophil committed
98
                         address=settings.SITH_MAIN_CLUB['address'])
99
        main_club.save()
Skia's avatar
Skia committed
100
        bar_club = Club(id=2, name=settings.SITH_BAR_MANAGER['name'], unix_name=settings.SITH_BAR_MANAGER['unix_name'],
Krophil's avatar
Krophil committed
101
                        address=settings.SITH_BAR_MANAGER['address'])
102
        bar_club.save()
Skia's avatar
Skia committed
103
        launderette_club = Club(id=84, name=settings.SITH_LAUNDERETTE_MANAGER['name'],
Krophil's avatar
Krophil committed
104
105
                                unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name'],
                                address=settings.SITH_LAUNDERETTE_MANAGER['address'])
106

107
        launderette_club.save()
108
        self.reset_index("club")
109
        for b in settings.SITH_COUNTER_BARS:
Krophil's avatar
Krophil committed
110
            g = Group(name=b[1] + " admin")
111
112
113
114
115
116
            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
117
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Sli's avatar
Sli committed
118
        Counter(name="AE", club=main_club, type='OFFICE').save()
Skia's avatar
Skia committed
119
120
121
122
123
124

        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
125
        Sith(weekmail_destinations="etudiants@git.an personnel@git.an").save()
Skia's avatar
Skia committed
126
        Weekmail().save()
Skia's avatar
Skia committed
127

Skia's avatar
Skia committed
128
129
130
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
131
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
132
133
134
135
        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
136
137
138
139
140
""").save()

        p = Page(name="services")
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
141
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
142
143
144
145
146
147
148
        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
149
""").save()
Skia's avatar
Skia committed
150

151
152
153
154
        p = Page(name="launderette")
        p.set_lock(root)
        p.save()
        p.set_lock(root)
155
        PageRev(page=p, title="Laverie", author=root, content="Fonctionnement de la laverie").save()
156

Skia's avatar
Skia committed
157
158
159
        # 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
160
            skia = User(username='skia', last_name="Kia", first_name="S'",
Krophil's avatar
Krophil committed
161
162
                        email="skia@git.an",
                        date_of_birth="1942-06-12")
Skia's avatar
Skia committed
163
164
            skia.set_password("plop")
            skia.save()
Krophil's avatar
Krophil committed
165
            skia.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
166
            skia.save()
167
168
169
170
            skia_profile_path = os.path.join(root_path, 'core/fixtures/images/3.jpg')
            with open(skia_profile_path, 'rb') as f:
                name = str(skia.id) + "_profile.jpg"
                skia_profile = SithFile(parent=profiles_root, name=name,
Krophil's avatar
Krophil committed
171
172
                                        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))
173
174
175
176
177
                skia_profile.file.name = name
                skia_profile.save()
                skia.profile_pict = skia_profile
                skia.save()

Skia's avatar
Skia committed
178
179
            # Adding user public
            public = User(username='public', last_name="Not subscribed", first_name="Public",
Krophil's avatar
Krophil committed
180
181
182
                          email="public@git.an",
                          date_of_birth="1942-06-12",
                          is_superuser=False, is_staff=False)
Skia's avatar
Skia committed
183
184
            public.set_password("plop")
            public.save()
Krophil's avatar
Krophil committed
185
            public.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
186
187
188
            public.save()
            # Adding user Subscriber
            subscriber = User(username='subscriber', last_name="User", first_name="Subscribed",
Krophil's avatar
Krophil committed
189
190
191
                              email="Subscribed@git.an",
                              date_of_birth="1942-06-12",
                              is_superuser=False, is_staff=False)
Skia's avatar
Skia committed
192
193
            subscriber.set_password("plop")
            subscriber.save()
Krophil's avatar
Krophil committed
194
            subscriber.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
195
            subscriber.save()
Skia's avatar
Skia committed
196
197
            # Adding user old Subscriber
            old_subscriber = User(username='old_subscriber', last_name="Subscriber", first_name="Old",
Krophil's avatar
Krophil committed
198
199
200
                                  email="old_subscriber@git.an",
                                  date_of_birth="1942-06-12",
                                  is_superuser=False, is_staff=False)
Skia's avatar
Skia committed
201
202
            old_subscriber.set_password("plop")
            old_subscriber.save()
Krophil's avatar
Krophil committed
203
            old_subscriber.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
204
            old_subscriber.save()
205
206
            # Adding user Counter admin
            counter = User(username='counter', last_name="Ter", first_name="Coun",
Krophil's avatar
Krophil committed
207
208
209
                           email="counter@git.an",
                           date_of_birth="1942-06-12",
                           is_superuser=False, is_staff=False)
210
211
            counter.set_password("plop")
            counter.save()
Krophil's avatar
Krophil committed
212
213
            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]
214
            counter.save()
Skia's avatar
Skia committed
215
216
            # Adding user Comptable
            comptable = User(username='comptable', last_name="Able", first_name="Compte",
Krophil's avatar
Krophil committed
217
218
219
                             email="compta@git.an",
                             date_of_birth="1942-06-12",
                             is_superuser=False, is_staff=False)
Skia's avatar
Skia committed
220
221
            comptable.set_password("plop")
            comptable.save()
Krophil's avatar
Krophil committed
222
223
            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
224
            comptable.save()
Skia's avatar
Skia committed
225
226
227
228
229
230
231
            # 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()
Krophil's avatar
Krophil committed
232
            u.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
233
            u.save()
Skia's avatar
Skia committed
234
235
236
237
238
239
            # 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()
Krophil's avatar
Krophil committed
240
            r.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
241
            r.save()
Skia's avatar
Skia committed
242
243
            # Adding syntax help page
            p = Page(name='Aide_sur_la_syntaxe')
Skia's avatar
Skia committed
244
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
245
            with open(os.path.join(root_path) + '/doc/SYNTAX.md', 'r') as rm:
Skia's avatar
Skia committed
246
                PageRev(page=p, title="Aide sur la syntaxe", author=skia, content=rm.read()).save()
Krophil's avatar
Krophil committed
247
            p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
248
            p.save(force_lock=True)
Skia's avatar
Skia committed
249
            p = Page(name='Services')
Skia's avatar
Skia committed
250
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
251
            p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
252
            p.save(force_lock=True)
Skia's avatar
Skia committed
253
254
255
256
257
258
            PageRev(page=p, title="Services", author=skia, content="""
|   |   |   |
| :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat |
| SAS | Weekmail | Forum|

Skia's avatar
Skia committed
259
260
261
""").save()
            # Adding README
            p = Page(name='README')
Skia's avatar
Skia committed
262
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
263
            p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
264
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
265
            with open(os.path.join(root_path) + '/README.md', 'r') as rm:
266
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
267
268

            # Subscription
269
            default_subscription = 'un-semestre'
Krophil's avatar
Krophil committed
270
            # Root
271
            s = Subscription(member=User.objects.filter(pk=root.pk).first(), subscription_type=default_subscription,
Krophil's avatar
Krophil committed
272
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
273
274
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
275
276
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
277
            s.save()
Krophil's avatar
Krophil committed
278
            # Skia
279
            s = Subscription(member=User.objects.filter(pk=skia.pk).first(), subscription_type=default_subscription,
Krophil's avatar
Krophil committed
280
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
281
282
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
283
284
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
285
            s.save()
Krophil's avatar
Krophil committed
286
            # Counter admin
287
            s = Subscription(member=User.objects.filter(pk=counter.pk).first(), subscription_type=default_subscription,
Krophil's avatar
Krophil committed
288
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
289
290
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
291
292
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
293
            s.save()
Krophil's avatar
Krophil committed
294
            # Comptable
295
            s = Subscription(member=User.objects.filter(pk=comptable.pk).first(), subscription_type=default_subscription,
Krophil's avatar
Krophil committed
296
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
297
298
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
299
300
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
301
            s.save()
Krophil's avatar
Krophil committed
302
            # Richard
303
            s = Subscription(member=User.objects.filter(pk=r.pk).first(), subscription_type=default_subscription,
Krophil's avatar
Krophil committed
304
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
305
306
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
307
308
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
309
            s.save()
Krophil's avatar
Krophil committed
310
            # User
311
            s = Subscription(member=User.objects.filter(pk=subscriber.pk).first(), subscription_type=default_subscription,
Krophil's avatar
Krophil committed
312
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
313
314
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
315
316
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
317
            s.save()
Krophil's avatar
Krophil committed
318
            # Old subscriber
319
            s = Subscription(member=User.objects.filter(pk=old_subscriber.pk).first(), subscription_type=default_subscription,
Krophil's avatar
Krophil committed
320
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
321
322
            s.subscription_start = s.compute_start(datetime(year=2012, month=9, day=4))
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
323
324
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
325
            s.save()
Skia's avatar
Skia committed
326
327
328

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
Krophil's avatar
Krophil committed
329
                 address="46 de la Boustifaille", parent=main_club).save()
Skia's avatar
Skia committed
330
            guyut = Club(name="Guy'UT", unix_name="guyut",
Krophil's avatar
Krophil committed
331
                         address="42 de la Boustifaille", parent=main_club)
Skia's avatar
Skia committed
332
333
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
Krophil's avatar
Krophil committed
334
                 address="Woenzel", parent=guyut).save()
335
            Membership(user=skia, club=main_club, role=3, description="").save()
Skia's avatar
Skia committed
336
            troll = Club(name="Troll Penché", unix_name="troll",
Krophil's avatar
Krophil committed
337
                         address="Terre Du Milieu", parent=main_club)
Skia's avatar
Skia committed
338
            troll.save()
Sli's avatar
Sli committed
339
            refound = Club(name="Carte AE", unix_name="carte_ae",
Krophil's avatar
Krophil committed
340
                           address="Jamais imprimée", parent=main_club)
Sli's avatar
Sli committed
341
            refound.save()
Skia's avatar
Skia committed
342

Skia's avatar
Skia committed
343
344
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
Skia's avatar
Skia committed
345
            Customer(user=r, account_id="4000k", amount=0).save()
Skia's avatar
Skia committed
346
347
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
348
349
350
351
            c = ProductType(name="Cotisations")
            c.save()
            r = ProductType(name="Rechargements")
            r.save()
Sli's avatar
Sli committed
352
353
            verre = ProductType(name="Verre")
            verre.save()
Skia's avatar
Skia committed
354
            cotis = Product(name="Cotis 1 semestre", code="1SCOTIZ", product_type=c, purchase_price="15", selling_price="15",
Krophil's avatar
Krophil committed
355
                            special_selling_price="15", club=main_club)
Skia's avatar
Skia committed
356
357
            cotis.save()
            cotis2 = Product(name="Cotis 2 semestres", code="2SCOTIZ", product_type=c, purchase_price="28", selling_price="28",
Krophil's avatar
Krophil committed
358
                             special_selling_price="28", club=main_club)
Skia's avatar
Skia committed
359
360
            cotis2.save()
            refill = Product(name="Rechargement 15 €", code="15REFILL", product_type=r, purchase_price="15", selling_price="15",
Krophil's avatar
Krophil committed
361
                             special_selling_price="15", club=main_club)
Skia's avatar
Skia committed
362
            refill.save()
Skia's avatar
Skia committed
363
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
Krophil's avatar
Krophil committed
364
                           special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
365
366
            barb.save()
            cble = Product(name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7",
Krophil's avatar
Krophil committed
367
                           special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
368
            cble.save()
Sli's avatar
Sli committed
369
370
371
372
373
374
375
376
            cons = Product(name="Consigne Eco-cup", code="CONS", product_type=verre, purchase_price="1", selling_price="1",
                           special_selling_price="1", club=main_club)
            cons.id = 1152
            cons.save()
            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)
            dcons.id = 1151
            dcons.save()
Skia's avatar
Skia committed
377
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
378
                    special_selling_price="1.6", club=main_club).save()
Skia's avatar
Skia committed
379
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
380
381
                    special_selling_price="1.6", club=main_club).save()
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
382
383
            mde.products.add(barb)
            mde.products.add(cble)
Sli's avatar
Sli committed
384
385
            mde.products.add(cons)
            mde.products.add(dcons)
Skia's avatar
Skia committed
386
            mde.sellers.add(skia)
Skia's avatar
Skia committed
387
            mde.save()
Sli's avatar
Sli committed
388

Skia's avatar
Skia committed
389
390
391
392
393
394
395
            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
396
397
398
            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",
Krophil's avatar
Krophil committed
399
                                      special_selling_price="0", club=refound)
Sli's avatar
Sli committed
400
            refound_product.save()
Skia's avatar
Skia committed
401
402

            # Accounting test values:
403
404
405
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
406
407
408
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
409
410
            gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca)
            gj.save()
Krophil's avatar
Krophil committed
411
            credit = AccountingType(code='74', label="Subventions d'exploitation", movement_type='CREDIT')
Skia's avatar
Skia committed
412
            credit.save()
Krophil's avatar
Krophil committed
413
            debit = AccountingType(code='606', label="Achats non stockés de matières et fournitures(*1)", movement_type='DEBIT')
Skia's avatar
Skia committed
414
            debit.save()
Krophil's avatar
Krophil committed
415
416
417
418
            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
419
420
            comptes = AccountingType(code='6', label="Comptes de charge", movement_type='DEBIT')
            comptes.save()
Krophil's avatar
Krophil committed
421
            simple = SimplifiedAccountingType(label='Je fais du simple 6', accounting_type=comptes, movement_type='DEBIT')
Krophil's avatar
Krophil committed
422
            simple.save()
Skia's avatar
Skia committed
423
424
            woenzco = Company(name="Woenzel & co")
            woenzco.save()
Sli's avatar
Sli committed
425
426

            operation_list = [
Krophil's avatar
Krophil committed
427
428
429
430
431
432
433
434
435
436
437
                (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),
            ]
Sli's avatar
Sli committed
438
            for op in operation_list:
Skia's avatar
Skia committed
439
                operation = Operation(journal=gj, date=date.today(), amount=op[0],
Krophil's avatar
Krophil committed
440
441
442
                                      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
443
444
445
                operation.clean()
                operation.save()

Sli's avatar
Sli committed
446
447
448
449
450
451
            # 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()
Krophil's avatar
Krophil committed
452
            sli.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Sli's avatar
Sli committed
453
            sli.save()
454
455
456
457
            sli_profile_path = os.path.join(root_path, 'core/fixtures/images/5.jpg')
            with open(sli_profile_path, 'rb') as f:
                name = str(sli.id) + "_profile.jpg"
                sli_profile = SithFile(parent=profiles_root, name=name,
Krophil's avatar
Krophil committed
458
459
                                       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))
460
461
462
463
                sli_profile.file.name = name
                sli_profile.save()
                sli.profile_pict = sli_profile
                sli.save()
Sli's avatar
Sli committed
464
465
466
467
468
469
            # 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()
470
471
472
473
            krophil_profile_path = os.path.join(root_path, 'core/fixtures/images/6.jpg')
            with open(krophil_profile_path, 'rb') as f:
                name = str(krophil.id) + "_profile.jpg"
                krophil_profile = SithFile(parent=profiles_root, name=name,
Krophil's avatar
Krophil committed
474
475
                                           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))
476
477
478
479
                krophil_profile.file.name = name
                krophil_profile.save()
                krophil.profile_pict = krophil_profile
                krophil.save()
Krophil's avatar
Krophil committed
480
            # Adding subscription for sli
Sli's avatar
Sli committed
481
            s = Subscription(member=User.objects.filter(pk=sli.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Krophil's avatar
Krophil committed
482
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Sli's avatar
Sli committed
483
484
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
485
486
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Sli's avatar
Sli committed
487
            s.save()
Krophil's avatar
Krophil committed
488
            # Adding subscription for Krophil
Sli's avatar
Sli committed
489
            s = Subscription(member=User.objects.filter(pk=krophil.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Krophil's avatar
Krophil committed
490
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Sli's avatar
Sli committed
491
492
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
493
494
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Sli's avatar
Sli committed
495
            s.save()
Krophil's avatar
Krophil committed
496

Sli's avatar
Sli committed
497
            Selling(label=dcons.name, product=dcons, counter=mde, unit_price=dcons.selling_price, club=main_club,
Sli's avatar
Sli committed
498
                                       quantity=settings.SITH_ECOCUP_LIMIT + 3, seller=skia, customer=krophil.customer).save()
Sli's avatar
Sli committed
499

Krophil's avatar
Krophil committed
500
501
502
503
504
            # 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
505
            # Create an election
Sli's avatar
Sli committed
506
507
            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
508
            ae_board_group = Group.objects.get(name=settings.SITH_MAIN_BOARD_GROUP)
Skia's avatar
Skia committed
509
            el = Election(title="Élection 2017", description="La roue tourne", start_candidature='1942-06-12 10:28:45+01',
Krophil's avatar
Krophil committed
510
511
                          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
512
            el.save()
Sli's avatar
Sli committed
513
            el.view_groups.add(public_group)
Sli's avatar
Sli committed
514
            el.edit_groups.add(ae_board_group)
515
516
            el.candidature_groups.add(subscriber_group)
            el.vote_groups.add(subscriber_group)
Sli's avatar
Sli committed
517
            el.save()
Sli's avatar
Sli committed
518
            liste = ElectionList(title="Candidature Libre", election=el)
Sli's avatar
Sli committed
519
            liste.save()
Sli's avatar
Sli committed
520
            listeT = ElectionList(title="Troll", election=el)
Sli's avatar
Sli committed
521
522
523
            listeT.save()
            pres = Role(election=el, title="Président AE", description="Roi de l'AE")
            pres.save()
Sli's avatar
Sli committed
524
            resp = Role(election=el, title="Co Respo Info", max_choice=2, description="Ghetto++")
Sli's avatar
Sli committed
525
            resp.save()
Sli's avatar
Sli committed
526
            cand = Candidature(role=resp, user=skia, election_list=liste, program="Refesons le site AE")
Sli's avatar
Sli committed
527
            cand.save()
Sli's avatar
Sli committed
528
            cand = Candidature(role=resp, user=sli, election_list=liste, program="Vasy je deviens mon propre adjoint")
Sli's avatar
Sli committed
529
            cand.save()
Sli's avatar
Sli committed
530
            cand = Candidature(role=resp, user=krophil, election_list=listeT, program="Le Pôle Troll !")
Sli's avatar
Sli committed
531
            cand.save()
Sli's avatar
Sli committed
532
            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
533
            cand.save()
Krophil's avatar
Krophil committed
534

Skia's avatar
Skia committed
535
536
537
538
539
            # Forum
            room = Forum(name="Salon de discussions", description="Pour causer de tout", is_category=True)
            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()
Skia's avatar
Skia committed
540
541
            hall = Forum(name="Hall de discussions", description="Pour toutes les discussions", parent=room)
            hall.save()
Skia's avatar
Skia committed
542
543
544
            various = Forum(name="Divers", description="Pour causer de rien", is_category=True)
            various.save()
            Forum(name="Promos", description="Réservé aux Promos", parent=various).save()
Skia's avatar
Skia committed
545
            ForumTopic(forum=hall)
Skia's avatar
Skia committed
546
547
548
549
550
551
552

            # News
            friday = timezone.now()
            while friday.weekday() != 4:
                friday += timedelta(hours=6)
            friday.replace(hour=20, minute=0, second=0)
            # Event
Skia's avatar
Skia committed
553
554
555
556
557
558
            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)
            n.save()
            NewsDate(news=n, start_date=timezone.now()+timedelta(hours=70),
                    end_date=timezone.now()+timedelta(hours=72)).save()
Skia's avatar
Skia committed
559
560
561
562
563
564
565
            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)
            n.save()
            NewsDate(news=n, start_date=timezone.now()+timedelta(hours=72),
                    end_date=timezone.now()+timedelta(hours=84)).save()
Skia's avatar
Skia committed
566
567
568
569
570
571
572
            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)
            n.save()
            NewsDate(news=n, start_date=timezone.now()+timedelta(hours=96),
                    end_date=timezone.now()+timedelta(hours=100)).save()
Skia's avatar
Skia committed
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
            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)
            n.save()
            NewsDate(news=n, start_date=friday+timedelta(hours=24*7+1),
                    end_date=timezone.now()+timedelta(hours=24*7+9)).save()
            # Weekly
            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)
            n.save()
            for i in range(10):
                NewsDate(news=n, start_date=friday+timedelta(hours=24*7*i),
                        end_date=friday+timedelta(hours=24*7*i+8)).save()