populate.py 27.1 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
Skia's avatar
Skia committed
42
from counter.models import Customer, ProductType, Product, Counter
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
343
            c = ProductType(name="Cotisations")
            c.save()
            r = ProductType(name="Rechargements")
            r.save()
            cotis = Product(name="Cotis 1 semestre", code="1SCOTIZ", product_type=c, purchase_price="15", selling_price="15",
Krophil's avatar
Krophil committed
344
                            special_selling_price="15", club=main_club)
Skia's avatar
Skia committed
345
346
            cotis.save()
            cotis2 = Product(name="Cotis 2 semestres", code="2SCOTIZ", product_type=c, purchase_price="28", selling_price="28",
Krophil's avatar
Krophil committed
347
                             special_selling_price="28", club=main_club)
Skia's avatar
Skia committed
348
349
            cotis2.save()
            refill = Product(name="Rechargement 15 €", code="15REFILL", product_type=r, purchase_price="15", selling_price="15",
Krophil's avatar
Krophil committed
350
                             special_selling_price="15", club=main_club)
Skia's avatar
Skia committed
351
            refill.save()
Skia's avatar
Skia committed
352
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
Krophil's avatar
Krophil committed
353
                           special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
354
355
            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
356
                           special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
357
            cble.save()
Skia's avatar
Skia committed
358
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
359
                    special_selling_price="1.6", club=main_club).save()
Skia's avatar
Skia committed
360
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
361
362
                    special_selling_price="1.6", club=main_club).save()
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
363
364
            mde.products.add(barb)
            mde.products.add(cble)
Skia's avatar
Skia committed
365
            mde.sellers.add(skia)
Skia's avatar
Skia committed
366
            mde.save()
Sli's avatar
Sli committed
367

Skia's avatar
Skia committed
368
369
370
371
372
373
374
            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
375
376
377
            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
378
                                      special_selling_price="0", club=refound)
Sli's avatar
Sli committed
379
            refound_product.save()
Skia's avatar
Skia committed
380
381

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

            operation_list = [
Krophil's avatar
Krophil committed
406
407
408
409
410
411
412
413
414
415
416
                (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
417
            for op in operation_list:
Skia's avatar
Skia committed
418
                operation = Operation(journal=gj, date=date.today(), amount=op[0],
Krophil's avatar
Krophil committed
419
420
421
                                      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
422
423
424
                operation.clean()
                operation.save()

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

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

Skia's avatar
Skia committed
511
512
513
514
515
            # 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
516
517
            hall = Forum(name="Hall de discussions", description="Pour toutes les discussions", parent=room)
            hall.save()
Skia's avatar
Skia committed
518
519
520
            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
521
            ForumTopic(forum=hall)