populate.py 30.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
        home_root = SithFile(parent=None, name="users", is_folder=True, owner=root)
        home_root.save()
Sli's avatar
Sli committed
88
89
90
91
92
93

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

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

107
        launderette_club.save()
108
        self.reset_index("club")
109
        for b in settings.SITH_COUNTER_BARS:
Krophil's avatar
Krophil committed
110
            g = Group(name=b[1] + " admin")
111
112
113
114
115
116
            g.save()
            c = Counter(id=b[0], name=b[1], club=bar_club, type='BAR')
            c.save()
            c.edit_groups = [g]
            c.save()
        self.reset_index("counter")
Skia's avatar
Skia committed
117
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Sli's avatar
Sli committed
118
        Counter(name="AE", club=main_club, type='OFFICE').save()
Skia's avatar
Skia committed
119
120
121
122
123
124

        home_root.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first()]
        club_root.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first()]
        home_root.save()
        club_root.save()

Skia's avatar
Skia committed
125
        Sith(weekmail_destinations="etudiants@git.an personnel@git.an").save()
Skia's avatar
Skia committed
126
        Weekmail().save()
Skia's avatar
Skia committed
127

Skia's avatar
Skia committed
128
129
130
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
131
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
132
133
134
135
        p.set_lock(root)
        p.save()
        PageRev(page=p, title="Wiki index", author=root, content="""
Welcome to the wiki page!
Skia's avatar
Skia committed
136
137
138
139
140
""").save()

        p = Page(name="services")
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
141
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
142
143
144
145
146
147
148
        p.set_lock(root)
        PageRev(page=p, title="Services", author=root, content="""
|   |   |   |
| :---: | :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | [Fichiers](/file) |
| SAS | Weekmail | Forum | |

Skia's avatar
Skia committed
149
""").save()
Skia's avatar
Skia committed
150

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

Skia's avatar
Skia committed
157
158
159
        # Here we add a lot of test datas, that are not necessary for the Sith, but that provide a basic development environment
        if not options['prod']:
            # Adding user Skia
Skia's avatar
Skia committed
160
            skia = User(username='skia', last_name="Kia", first_name="S'",
Krophil's avatar
Krophil committed
161
162
                        email="skia@git.an",
                        date_of_birth="1942-06-12")
Skia's avatar
Skia committed
163
164
            skia.set_password("plop")
            skia.save()
Krophil's avatar
Krophil committed
165
            skia.view_groups = [Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
166
            skia.save()
167
168
169
170
            skia_profile_path = os.path.join(root_path, 'core/fixtures/images/3.jpg')
            with open(skia_profile_path, 'rb') as f:
                name = str(skia.id) + "_profile.jpg"
                skia_profile = SithFile(parent=profiles_root, name=name,
Krophil's avatar
Krophil committed
171
172
                                        file=resize_image(Image.open(BytesIO(f.read())), 400, 'JPEG'),
                                        owner=skia, is_folder=False, mime_type='image/jpeg', size=os.path.getsize(skia_profile_path))
173
174
175
176
177
                skia_profile.file.name = name
                skia_profile.save()
                skia.profile_pict = skia_profile
                skia.save()

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

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

            # Subscription
Krophil's avatar
Krophil committed
269
            # Root
Skia's avatar
Skia committed
270
            s = Subscription(member=User.objects.filter(pk=root.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
            # Skia
Skia's avatar
Skia committed
278
            s = Subscription(member=User.objects.filter(pk=skia.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
            # Counter admin
Skia's avatar
Skia committed
286
            s = Subscription(member=User.objects.filter(pk=counter.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
            # Comptable
Skia's avatar
Skia committed
294
            s = Subscription(member=User.objects.filter(pk=comptable.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
            # Richard
Skia's avatar
Skia committed
302
            s = Subscription(member=User.objects.filter(pk=r.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
            # User
Skia's avatar
Skia committed
310
            s = Subscription(member=User.objects.filter(pk=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()
            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()
Krophil's avatar
Krophil committed
317
            # Old subscriber
Skia's avatar
Skia committed
318
            s = Subscription(member=User.objects.filter(pk=old_subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Krophil's avatar
Krophil committed
319
                             payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
Skia's avatar
Skia committed
320
321
            s.subscription_start = s.compute_start(datetime(year=2012, month=9, day=4))
            s.subscription_end = s.compute_end(
Krophil's avatar
Krophil committed
322
323
                duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                start=s.subscription_start)
Skia's avatar
Skia committed
324
            s.save()
Skia's avatar
Skia committed
325
326
327

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

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

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

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

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

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

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

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

Skia's avatar
Skia committed
534
535
536
537
538
            # 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
539
540
            hall = Forum(name="Hall de discussions", description="Pour toutes les discussions", parent=room)
            hall.save()
Skia's avatar
Skia committed
541
542
543
            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
544
            ForumTopic(forum=hall)
Skia's avatar
Skia committed
545
546
547
548
549
550
551

            # News
            friday = timezone.now()
            while friday.weekday() != 4:
                friday += timedelta(hours=6)
            friday.replace(hour=20, minute=0, second=0)
            # Event
Skia's avatar
Skia committed
552
553
554
555
556
557
            n = News(title="Apero barman", summary="Viens boire un coup avec les barmans",
                    content="Glou glou glou glou glou glou glou" , type="EVENT",
                    club=bar_club, author=subscriber, is_moderated=True, moderator=skia)
            n.save()
            NewsDate(news=n, start_date=timezone.now()+timedelta(hours=70),
                    end_date=timezone.now()+timedelta(hours=72)).save()
Skia's avatar
Skia committed
558
559
560
561
562
563
564
            n = News(title="Repas barman", summary="Enjoy la fin du semestre!",
                    content="Viens donc t'enjailler avec les autres barmans aux "
                    "frais du BdF! \o/", type="EVENT", club=bar_club,
                    author=subscriber, is_moderated=True, moderator=skia)
            n.save()
            NewsDate(news=n, start_date=timezone.now()+timedelta(hours=72),
                    end_date=timezone.now()+timedelta(hours=84)).save()
Skia's avatar
Skia committed
565
566
567
568
569
570
571
            n = News(title="Repas fromager", summary="Wien manger du l'bon fromeug'",
                    content="Fô viendre mangey d'la bonne fondue!",
                    type="EVENT", club=bar_club, author=subscriber,
                    is_moderated=True, moderator=skia)
            n.save()
            NewsDate(news=n, start_date=timezone.now()+timedelta(hours=96),
                    end_date=timezone.now()+timedelta(hours=100)).save()
Skia's avatar
Skia committed
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
            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()