populate.py 29.7 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
88
89
        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
90
        SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
91
        main_club = Club(id=1, name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
Krophil's avatar
Krophil committed
92
                         address=settings.SITH_MAIN_CLUB['address'])
93
        main_club.save()
Skia's avatar
Skia committed
94
        bar_club = Club(id=2, name=settings.SITH_BAR_MANAGER['name'], unix_name=settings.SITH_BAR_MANAGER['unix_name'],
Krophil's avatar
Krophil committed
95
                        address=settings.SITH_BAR_MANAGER['address'])
96
        bar_club.save()
Skia's avatar
Skia committed
97
        launderette_club = Club(id=84, name=settings.SITH_LAUNDERETTE_MANAGER['name'],
Krophil's avatar
Krophil committed
98
99
                                unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name'],
                                address=settings.SITH_LAUNDERETTE_MANAGER['address'])
100
        launderette_club.save()
101
        self.reset_index("club")
102
        for b in settings.SITH_COUNTER_BARS:
Krophil's avatar
Krophil committed
103
            g = Group(name=b[1] + " admin")
104
105
106
107
108
109
            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
110
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Sli's avatar
Sli committed
111
        Counter(name="AE", club=main_club, type='OFFICE').save()
Skia's avatar
Skia committed
112
113
114
115
116
117

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

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

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

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

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

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

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

            # Subscription
Krophil's avatar
Krophil committed
262
            # Root
Skia's avatar
Skia committed
263
            s = Subscription(member=User.objects.filter(pk=root.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Krophil's avatar
Krophil committed
264
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
265
266
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
267
268
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
269
            s.save()
Krophil's avatar
Krophil committed
270
            # Skia
Skia's avatar
Skia committed
271
            s = Subscription(member=User.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
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
            # Counter admin
Skia's avatar
Skia committed
279
            s = Subscription(member=User.objects.filter(pk=counter.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
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
            # Comptable
Skia's avatar
Skia committed
287
            s = Subscription(member=User.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
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
            # Richard
Skia's avatar
Skia committed
295
            s = Subscription(member=User.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
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
            # User
Skia's avatar
Skia committed
303
            s = Subscription(member=User.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
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
            # Old subscriber
Skia's avatar
Skia committed
311
            s = Subscription(member=User.objects.filter(pk=old_subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
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(datetime(year=2012, month=9, day=4))
            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()
Skia's avatar
Skia committed
318
319
320

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

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

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

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

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

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

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

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

Skia's avatar
Skia committed
527
528
529
530
531
            # 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
532
533
            hall = Forum(name="Hall de discussions", description="Pour toutes les discussions", parent=room)
            hall.save()
Skia's avatar
Skia committed
534
535
536
            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
537
            ForumTopic(forum=hall)
Skia's avatar
Skia committed
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567

            # News
            friday = timezone.now()
            while friday.weekday() != 4:
                friday += timedelta(hours=6)
            friday.replace(hour=20, minute=0, second=0)
            # Event
            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()
            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()