populate.py 14.9 KB
Newer Older
Skia's avatar
Skia committed
1
import os
Skia's avatar
Skia committed
2
from datetime import date, datetime
Skia's avatar
Skia committed
3
from io import StringIO
Skia's avatar
Skia committed
4

Skia's avatar
Skia committed
5
6
7
from django.core.management.base import BaseCommand, CommandError
from django.core.management import call_command
from django.conf import settings
Skia's avatar
Skia committed
8
from django.db import connection
9
from django.contrib.sites.models import Site
Skia's avatar
Skia committed
10
11


Skia's avatar
Skia committed
12
from core.models import Group, User, Page, PageRev, SithFile
Skia's avatar
Skia committed
13
from accounting.models import GeneralJournal, BankAccount, ClubAccount, Operation, AccountingType, Company
Skia's avatar
Skia committed
14
from club.models import Club, Membership
Skia's avatar
Skia committed
15
from subscription.models import Subscription
Skia's avatar
Skia committed
16
from counter.models import Customer, ProductType, Product, Counter
Skia's avatar
Skia committed
17
18
19
20
21
22
23

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

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

24
25
26
27
28
29
    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
30
    def handle(self, *args, **options):
Skia's avatar
Skia committed
31
        os.environ['DJANGO_COLORS'] = 'nocolor'
32
        Site(id=4000, domain=settings.SITH_URL, name=settings.SITH_NAME).save()
Skia's avatar
Skia committed
33
        root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
Skia's avatar
Skia committed
34
35
36
37
38
39
40
41
42
        Group(name="Root").save()
        Group(name="Not registered users").save()
        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()
43
        self.reset_index("core", "auth")
Skia's avatar
Skia committed
44
        root = User(id=0, username='root', last_name="", first_name="Bibou",
Skia's avatar
Skia committed
45
46
47
                 email="ae.info@utbm.fr",
                 date_of_birth="1942-06-12",
                 is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
48
49
        root.set_password("plop")
        root.save()
50
        SithFile(parent=None, name="profiles", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
51
52
53
54
        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
55
        SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
56
        main_club = Club(id=1, name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
Skia's avatar
Skia committed
57
                address=settings.SITH_MAIN_CLUB['address'])
58
        main_club.save()
Skia's avatar
Skia committed
59
        bar_club = Club(id=2, name=settings.SITH_BAR_MANAGER['name'], unix_name=settings.SITH_BAR_MANAGER['unix_name'],
60
61
                address=settings.SITH_BAR_MANAGER['address'])
        bar_club.save()
Skia's avatar
Skia committed
62
        launderette_club = Club(id=84, name=settings.SITH_LAUNDERETTE_MANAGER['name'],
63
64
65
                unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name'],
                address=settings.SITH_LAUNDERETTE_MANAGER['address'])
        launderette_club.save()
66
        self.reset_index("club")
67
68
69
70
71
72
73
74
        for b in settings.SITH_COUNTER_BARS:
            g = Group(name=b[1]+" admin")
            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
75
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Sli's avatar
Sli committed
76
        Counter(name="AE", club=main_club, type='OFFICE').save()
Skia's avatar
Skia committed
77
78
79
80
81
82

        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
83
84
85
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
86
        p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
87
88
89
90
        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
91
92
93
94
95
""").save()

        p = Page(name="services")
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
96
        p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
97
98
99
100
101
102
103
        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
104
""").save()
Skia's avatar
Skia committed
105

106
107
108
109
        p = Page(name="launderette")
        p.set_lock(root)
        p.save()
        p.set_lock(root)
110
        PageRev(page=p, title="Laverie", author=root, content="Fonctionnement de la laverie").save()
111

Skia's avatar
Skia committed
112
113
114
        # 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
115
            skia = User(username='skia', last_name="Kia", first_name="S'",
Skia's avatar
Skia committed
116
117
                     email="skia@git.an",
                     date_of_birth="1942-06-12")
Skia's avatar
Skia committed
118
119
120
121
            skia.set_password("plop")
            skia.save()
            skia.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            skia.save()
Skia's avatar
Skia committed
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
            # Adding user public
            public = User(username='public', last_name="Not subscribed", first_name="Public",
                     email="public@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            public.set_password("plop")
            public.save()
            public.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            public.save()
            # Adding user Subscriber
            subscriber = User(username='subscriber', last_name="User", first_name="Subscribed",
                     email="Subscribed@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            subscriber.set_password("plop")
            subscriber.save()
            subscriber.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
            subscriber.save()
140
141
142
143
144
145
146
147
            # Adding user Counter admin
            counter = User(username='counter', last_name="Ter", first_name="Coun",
                     email="counter@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            counter.set_password("plop")
            counter.save()
            counter.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
148
            counter.groups=[Group.objects.filter(id=settings.SITH_GROUP_COUNTER_ADMIN_ID).first().id]
149
            counter.save()
Skia's avatar
Skia committed
150
151
152
153
154
155
156
157
            # Adding user Comptable
            comptable = User(username='comptable', last_name="Able", first_name="Compte",
                     email="compta@git.an",
                     date_of_birth="1942-06-12",
                     is_superuser=False, is_staff=False)
            comptable.set_password("plop")
            comptable.save()
            comptable.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
158
            comptable.groups=[Group.objects.filter(id=settings.SITH_GROUP_ACCOUNTING_ADMIN_ID).first().id]
Skia's avatar
Skia committed
159
            comptable.save()
Skia's avatar
Skia committed
160
161
162
163
164
165
166
            # 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()
Skia's avatar
Skia committed
167
            u.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
168
            u.save()
Skia's avatar
Skia committed
169
170
171
172
173
174
            # 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()
Skia's avatar
Skia committed
175
            r.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
176
            r.save()
Skia's avatar
Skia committed
177
178
            # Adding syntax help page
            p = Page(name='Aide_sur_la_syntaxe')
Skia's avatar
Skia committed
179
            p.save(force_lock=True)
Skia's avatar
Skia committed
180
            PageRev(page=p, title="Aide sur la syntaxe", author=skia, content="""
Skia's avatar
Skia committed
181
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
Skia's avatar
Skia committed
182
183
""").save()
            p = Page(name='Services')
Skia's avatar
Skia committed
184
            p.save(force_lock=True)
Skia's avatar
Skia committed
185
            p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
186
            p.save(force_lock=True)
Skia's avatar
Skia committed
187
188
189
190
191
192
            PageRev(page=p, title="Services", author=skia, content="""
|   |   |   |
| :---: | :---: | :---: |
| [Eboutic](/eboutic) | [Laverie](/launderette) | Matmat |
| SAS | Weekmail | Forum|

Skia's avatar
Skia committed
193
194
195
""").save()
            # Adding README
            p = Page(name='README')
Skia's avatar
Skia committed
196
            p.save(force_lock=True)
Skia's avatar
Skia committed
197
            p.view_groups=[settings.SITH_GROUP_PUBLIC_ID]
Skia's avatar
Skia committed
198
            p.save(force_lock=True)
Skia's avatar
Skia committed
199
            with open(os.path.join(root_path)+'/README.md', 'r') as rm:
200
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
201
202

            # Subscription
Skia's avatar
Skia committed
203
            ## Root
Skia's avatar
Skia committed
204
            s = Subscription(member=User.objects.filter(pk=root.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
205
206
207
208
209
210
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
211
            ## Skia
Skia's avatar
Skia committed
212
            s = Subscription(member=User.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
213
214
215
216
217
218
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
219
            ## Comptable
Skia's avatar
Skia committed
220
            s = Subscription(member=User.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
221
222
223
224
225
226
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
227
            ## Richard
Skia's avatar
Skia committed
228
            s = Subscription(member=User.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
229
230
231
232
233
234
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
235
236
            ## User
            s = Subscription(member=User.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
237
238
239
240
241
242
                    payment_method=settings.SITH_SUBSCRIPTION_PAYMENT_METHOD[0])
            s.subscription_start = s.compute_start()
            s.subscription_end = s.compute_end(
                    duration=settings.SITH_SUBSCRIPTIONS[s.subscription_type]['duration'],
                    start=s.subscription_start)
            s.save()
Skia's avatar
Skia committed
243
244
245

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
246
                    address="46 de la Boustifaille", parent=main_club).save()
Skia's avatar
Skia committed
247
            guyut = Club(name="Guy'UT", unix_name="guyut",
248
                    address="42 de la Boustifaille", parent=main_club)
Skia's avatar
Skia committed
249
250
251
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
                    address="Woenzel", parent=guyut).save()
252
            Membership(user=skia, club=main_club, role=3, description="").save()
Skia's avatar
Skia committed
253
            troll = Club(name="Troll Penché", unix_name="troll",
254
                    address="Terre Du Milieu", parent=main_club)
Skia's avatar
Skia committed
255
            troll.save()
Sli's avatar
Sli committed
256
257
258
            refound = Club(name="Carte AE", unix_name="carte_ae",
                    address="Jamais imprimée", parent=main_club)
            refound.save()
Skia's avatar
Skia committed
259

Skia's avatar
Skia committed
260
261
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
262
            Customer(user=r, account_id="4000", amount=0).save()
Skia's avatar
Skia committed
263
264
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
265
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
266
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
267
268
            barb.save()
            cble = Product(name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7",
269
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
270
            cble.save()
Skia's avatar
Skia committed
271
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
272
                    special_selling_price="1.6", club=main_club).save()
Skia's avatar
Skia committed
273
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
274
275
                    special_selling_price="1.6", club=main_club).save()
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
276
277
278
            mde.products.add(barb)
            mde.products.add(cble)
            mde.save()
Sli's avatar
Sli committed
279
280
281
282
283
284

            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",
                    special_selling_price="0", club=refound)
            refound_product.save()
Skia's avatar
Skia committed
285
286

            # Accounting test values:
287
288
289
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
290
291
292
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
293
294
            gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca)
            gj.save()
Skia's avatar
Skia committed
295
            credit = AccountingType(code=74, label="Someone gave us money", movement_type='CREDIT')
Skia's avatar
Skia committed
296
            credit.save()
Skia's avatar
Skia committed
297
            debit = AccountingType(code=607, label="Had to pay a beer", movement_type='DEBIT')
Skia's avatar
Skia committed
298
            debit.save()
299
            Operation(journal=gj, date=date.today(), amount=666.42,
Skia's avatar
Skia committed
300
301
                    remark="An answer to life...", mode="CASH", done=True, accounting_type=credit, target_type="USER",
                    target_id=skia.id).save()
302
            Operation(journal=gj, date=date.today(), amount=42,
Skia's avatar
Skia committed
303
304
305
306
                    remark="An answer to life...", mode="CASH", done=False, accounting_type=debit, target_type="CLUB",
                    target_id=bar_club.id).save()
            woenzco = Company(name="Woenzel & co")
            woenzco.save()