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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            # 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
551
552
553
554
555
556
            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
557
558
559
560
561
562
563
            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
564
565
566
567
568
569
570
            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
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
            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()