populate.py 15.7 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
from com.models import Sith
Skia's avatar
Skia committed
18
19
20
21
22
23
24

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

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

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

        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
84
85
        Sith().save()

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

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

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

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

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

            # Subscription
Skia's avatar
Skia committed
206
            ## Root
Skia's avatar
Skia committed
207
            s = Subscription(member=User.objects.filter(pk=root.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
208
209
210
211
212
213
                    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
214
            ## Skia
Skia's avatar
Skia committed
215
            s = Subscription(member=User.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
216
217
218
219
220
221
                    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
222
            ## Comptable
Skia's avatar
Skia committed
223
            s = Subscription(member=User.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
224
225
226
227
228
229
                    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
230
            ## Richard
Skia's avatar
Skia committed
231
            s = Subscription(member=User.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
232
233
234
235
236
237
                    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
238
239
            ## User
            s = Subscription(member=User.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
Skia's avatar
Skia committed
240
241
242
243
244
245
                    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
246
247
248

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

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

            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
288
289

            # Accounting test values:
290
291
292
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
293
294
295
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
296
297
            gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca)
            gj.save()
Krophil's avatar
Krophil committed
298
            credit = AccountingType(code='74', label="Someone gave us money", movement_type='CREDIT')
Skia's avatar
Skia committed
299
            credit.save()
Krophil's avatar
Krophil committed
300
            debit = AccountingType(code='607', label="Had to pay a beer", movement_type='DEBIT')
Skia's avatar
Skia committed
301
            debit.save()
Krophil's avatar
Krophil committed
302
303
304
305
306
307
308
            t = AccountingType(code='602', label="Gros test de malade", movement_type='DEBIT')
            t.save()
            Operation(journal=gj, date=date.today(), amount=32.3, remark="...", mode="CASH", done=True, accounting_type=t, target_type="USER", target_id=skia.id).save()
            t = AccountingType(code='60', label="...", movement_type='DEBIT')
            t.save()
            Operation(journal=gj, date=date.today(), amount=32.3, remark="...", mode="CASH", done=True, accounting_type=t, target_type="USER", target_id=skia.id).save()           
            Operation(journal=gj, date=date.today(), amount=46.42, remark="An answer to life...", mode="CASH", done=True, accounting_type=t, target_type="USER", target_id=skia.id).save()
309
            Operation(journal=gj, date=date.today(), amount=666.42,
Skia's avatar
Skia committed
310
311
                    remark="An answer to life...", mode="CASH", done=True, accounting_type=credit, target_type="USER",
                    target_id=skia.id).save()
312
            Operation(journal=gj, date=date.today(), amount=42,
Skia's avatar
Skia committed
313
314
315
316
                    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()