populate.py 30.6 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# -*- coding:utf-8 -*
#
# Copyright 2016,2017
# - Skia <skia@libskia.so>
#
# Ce fichier fait partie du site de l'Association des Étudiants de l'UTBM,
# http://ae.utbm.fr.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License a published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Sofware Foundation, Inc., 59 Temple
# Place - Suite 330, Boston, MA 02111-1307, USA.
#
#

Skia's avatar
Skia committed
25
import os
Skia's avatar
Skia committed
26
from datetime import date, datetime, timedelta
27
from io import StringIO, BytesIO
Skia's avatar
Skia committed
28

Krophil's avatar
Krophil committed
29
from django.core.management.base import BaseCommand
Skia's avatar
Skia committed
30
31
from django.core.management import call_command
from django.conf import settings
Skia's avatar
Skia committed
32
from django.db import connection
33
from django.contrib.sites.models import Site
Skia's avatar
Skia committed
34
from django.utils import timezone
Skia's avatar
Skia committed
35

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

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

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

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

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

55
56
57
58
59
60
    def reset_index(self, *args):
        sqlcmd = StringIO()
        call_command("sqlsequencereset", *args, stdout=sqlcmd)
        cursor = connection.cursor()
        cursor.execute(sqlcmd.getvalue())

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

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

Skia's avatar
Skia committed
118
        Sith(weekmail_destinations="etudiants@git.an personnel@git.an").save()
Skia's avatar
Skia committed
119
        Weekmail().save()
Skia's avatar
Skia committed
120

Skia's avatar
Skia committed
121
122
123
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
124
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
125
126
127
128
        p.set_lock(root)
        p.save()
        PageRev(page=p, title="Wiki index", author=root, content="""
Welcome to the wiki page!
Skia's avatar
Skia committed
129
130
131
132
133
""").save()

        p = Page(name="services")
        p.set_lock(root)
        p.save()
Krophil's avatar
Krophil committed
134
        p.view_groups = [settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
135
136
137
138
139
140
141
        p.set_lock(root)
        PageRev(page=p, title="Services", author=root, content="""
|   |   |   |
| :---: | :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat | [Fichiers](/file) |
| SAS | Weekmail | Forum | |

Skia's avatar
Skia committed
142
""").save()
Skia's avatar
Skia committed
143

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

Sli's avatar
Sli committed
150
151
152
153
        p = Page(name=settings.SITH_CLUB_ROOT_PAGE)
        p.set_lock(root)
        p.save()

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

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

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

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

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

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

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

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

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

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

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

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

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

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