populate.py 28 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
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

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

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

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

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

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

54
55
56
57
58
59
    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
60
    def handle(self, *args, **options):
Skia's avatar
Skia committed
61
        os.environ['DJANGO_COLORS'] = 'nocolor'
62
        Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save()
Skia's avatar
Skia committed
63
        root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
Skia's avatar
Skia committed
64
        Group(name="Root").save()
65
66
67
        Group(name="Public").save()
        Group(name="Subscribers").save()
        Group(name="Old subscribers").save()
Skia's avatar
Skia committed
68
69
70
71
72
73
74
        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()
75
        Group(name="Forum admin").save()
76
        self.reset_index("core", "auth")
Skia's avatar
Skia committed
77
        root = User(id=0, username='root', last_name="", first_name="Bibou",
Krophil's avatar
Krophil committed
78
79
80
                    email="ae.info@utbm.fr",
                    date_of_birth="1942-06-12",
                    is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
81
82
        root.set_password("plop")
        root.save()
83
84
        profiles_root = SithFile(parent=None, name="profiles", is_folder=True, owner=root)
        profiles_root.save()
Skia's avatar
Skia committed
85
86
87
88
        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
89
        SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
90
        main_club = Club(id=1, name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
Krophil's avatar
Krophil committed
91
                         address=settings.SITH_MAIN_CLUB['address'])
92
        main_club.save()
Skia's avatar
Skia committed
93
        bar_club = Club(id=2, name=settings.SITH_BAR_MANAGER['name'], unix_name=settings.SITH_BAR_MANAGER['unix_name'],
Krophil's avatar
Krophil committed
94
                        address=settings.SITH_BAR_MANAGER['address'])
95
        bar_club.save()
Skia's avatar
Skia committed
96
        launderette_club = Club(id=84, name=settings.SITH_LAUNDERETTE_MANAGER['name'],
Krophil's avatar
Krophil committed
97
98
                                unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name'],
                                address=settings.SITH_LAUNDERETTE_MANAGER['address'])
99
        launderette_club.save()
100
        self.reset_index("club")
101
        for b in settings.SITH_COUNTER_BARS:
Krophil's avatar
Krophil committed
102
            g = Group(name=b[1] + " admin")
103
104
105
106
107
108
            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
109
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Sli's avatar
Sli committed
110
        Counter(name="AE", club=main_club, type='OFFICE').save()
Skia's avatar
Skia committed
111
112
113
114
115
116

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

Skia's avatar
Skia committed
120
121
122
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
123
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
124
125
126
127
        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
128
129
130
131
132
""").save()

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

143
144
145
146
        p = Page(name="launderette")
        p.set_lock(root)
        p.save()
        p.set_lock(root)
147
        PageRev(page=p, title="Laverie", author=root, content="Fonctionnement de la laverie").save()
148

Skia's avatar
Skia committed
149
150
151
        # 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
152
            skia = User(username='skia', last_name="Kia", first_name="S'",
Krophil's avatar
Krophil committed
153
154
                        email="skia@git.an",
                        date_of_birth="1942-06-12")
Skia's avatar
Skia committed
155
156
            skia.set_password("plop")
            skia.save()
Krophil's avatar
Krophil committed
157
            skia.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
158
            skia.save()
159
160
161
162
            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
163
164
                                        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))
165
166
167
168
169
                skia_profile.file.name = name
                skia_profile.save()
                skia.profile_pict = skia_profile
                skia.save()

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

Skia's avatar
Skia committed
251
252
253
""").save()
            # Adding README
            p = Page(name='README')
Skia's avatar
Skia committed
254
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
255
            p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
256
            p.save(force_lock=True)
Krophil's avatar
Krophil committed
257
            with open(os.path.join(root_path) + '/README.md', 'r') as rm:
258
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
259
260

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

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
Krophil's avatar
Krophil committed
320
                 address="46 de la Boustifaille", parent=main_club).save()
Skia's avatar
Skia committed
321
            guyut = Club(name="Guy'UT", unix_name="guyut",
Krophil's avatar
Krophil committed
322
                         address="42 de la Boustifaille", parent=main_club)
Skia's avatar
Skia committed
323
324
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
Krophil's avatar
Krophil committed
325
                 address="Woenzel", parent=guyut).save()
326
            Membership(user=skia, club=main_club, role=3, description="").save()
Skia's avatar
Skia committed
327
            troll = Club(name="Troll Penché", unix_name="troll",
Krophil's avatar
Krophil committed
328
                         address="Terre Du Milieu", parent=main_club)
Skia's avatar
Skia committed
329
            troll.save()
Sli's avatar
Sli committed
330
            refound = Club(name="Carte AE", unix_name="carte_ae",
Krophil's avatar
Krophil committed
331
                           address="Jamais imprimée", parent=main_club)
Sli's avatar
Sli committed
332
            refound.save()
Skia's avatar
Skia committed
333

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

Skia's avatar
Skia committed
380
381
382
383
384
385
386
            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
387
388
389
            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
390
                                      special_selling_price="0", club=refound)
Sli's avatar
Sli committed
391
            refound_product.save()
Skia's avatar
Skia committed
392
393

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

            operation_list = [
Krophil's avatar
Krophil committed
418
419
420
421
422
423
424
425
426
427
428
                (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
429
            for op in operation_list:
Skia's avatar
Skia committed
430
                operation = Operation(journal=gj, date=date.today(), amount=op[0],
Krophil's avatar
Krophil committed
431
432
433
                                      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
434
435
436
                operation.clean()
                operation.save()

Sli's avatar
Sli committed
437
438
439
440
441
442
            # 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
443
            sli.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Sli's avatar
Sli committed
444
            sli.save()
445
446
447
448
            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
449
450
                                       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))
451
452
453
454
                sli_profile.file.name = name
                sli_profile.save()
                sli.profile_pict = sli_profile
                sli.save()
Sli's avatar
Sli committed
455
456
457
458
459
460
            # 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()
461
462
463
464
            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
465
466
                                           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))
467
468
469
470
                krophil_profile.file.name = name
                krophil_profile.save()
                krophil.profile_pict = krophil_profile
                krophil.save()
Krophil's avatar
Krophil committed
471
            # Adding subscription for sli
Sli's avatar
Sli committed
472
            s = Subscription(member=User.objects.filter(pk=sli.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Krophil's avatar
Krophil committed
473
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Sli's avatar
Sli committed
474
475
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
476
477
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Sli's avatar
Sli committed
478
            s.save()
Krophil's avatar
Krophil committed
479
            # Adding subscription for Krophil
Sli's avatar
Sli committed
480
            s = Subscription(member=User.objects.filter(pk=krophil.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Krophil's avatar
Krophil committed
481
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Sli's avatar
Sli committed
482
483
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
484
485
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Sli's avatar
Sli committed
486
            s.save()
Krophil's avatar
Krophil committed
487

Sli's avatar
Sli committed
488
489
490
            Selling(label=dcons.name, product=dcons, counter=mde, unit_price=dcons.selling_price, club=main_club,
                                       quantity=settings.SITH_RECORD_LIMIT + 3, seller=skia, customer=krophil.customer).save()

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

Skia's avatar
Skia committed
526
527
528
529
530
            # 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
531
532
            hall = Forum(name="Hall de discussions", description="Pour toutes les discussions", parent=room)
            hall.save()
Skia's avatar
Skia committed
533
534
535
            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
536
            ForumTopic(forum=hall)