populate.py 14.2 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, Subscriber
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
        for g in settings.SITH_GROUPS.values():
            Group(id=g['id'], name=g['name']).save()
36
        self.reset_index("core", "auth")
Skia's avatar
Skia committed
37
        root = User(id=0, username='root', last_name="", first_name="Bibou",
Skia's avatar
Skia committed
38
39
40
                 email="ae.info@utbm.fr",
                 date_of_birth="1942-06-12",
                 is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
41
42
        root.set_password("plop")
        root.save()
43
        SithFile(parent=None, name="profiles", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
44
45
46
47
        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
48
        SithFile(parent=None, name="SAS", is_folder=True, owner=root).save()
Skia's avatar
Skia committed
49
        Group(name="SAS admin").save()
Skia's avatar
Skia committed
50
        main_club = Club(id=1, name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
Skia's avatar
Skia committed
51
                address=settings.SITH_MAIN_CLUB['address'])
52
        main_club.save()
Skia's avatar
Skia committed
53
        bar_club = Club(id=2, name=settings.SITH_BAR_MANAGER['name'], unix_name=settings.SITH_BAR_MANAGER['unix_name'],
54
55
                address=settings.SITH_BAR_MANAGER['address'])
        bar_club.save()
Skia's avatar
Skia committed
56
        launderette_club = Club(id=84, name=settings.SITH_LAUNDERETTE_MANAGER['name'],
57
58
59
                unix_name=settings.SITH_LAUNDERETTE_MANAGER['unix_name'],
                address=settings.SITH_LAUNDERETTE_MANAGER['address'])
        launderette_club.save()
60
        self.reset_index("club")
61
62
63
64
65
66
67
68
        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
69
        Counter(name="Eboutic", club=main_club, type='EBOUTIC').save()
Skia's avatar
Skia committed
70
71
72
73
74
75

        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
76
77
78
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
79
        p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
80
81
82
83
        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
84
85
86
87
88
89
90
91
92
93
94
95
96
""").save()

        p = Page(name="services")
        p.set_lock(root)
        p.save()
        p.view_groups=[settings.SITH_GROUPS['public']['id']]
        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
97
""").save()
Skia's avatar
Skia committed
98

99
100
101
102
        p = Page(name="launderette")
        p.set_lock(root)
        p.save()
        p.set_lock(root)
103
        PageRev(page=p, title="Laverie", author=root, content="Fonctionnement de la laverie").save()
104

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

Skia's avatar
Skia committed
186
187
188
""").save()
            # Adding README
            p = Page(name='README')
Skia's avatar
Skia committed
189
            p.save(force_lock=True)
Skia's avatar
Skia committed
190
            p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
191
            p.save(force_lock=True)
Skia's avatar
Skia committed
192
            with open(os.path.join(root_path)+'/README.md', 'r') as rm:
193
                PageRev(page=p, title="README", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
194
195

            # Subscription
Skia's avatar
Skia committed
196
197
198
199
200
201
202
203
            ## Root
            s = Subscription(member=Subscriber.objects.filter(pk=root.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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
204
            ## Skia
Skia's avatar
Skia committed
205
206
207
208
209
210
211
            s = Subscription(member=Subscriber.objects.filter(pk=skia.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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
212
            ## Comptable
Skia's avatar
Skia committed
213
214
215
216
217
218
219
            s = Subscription(member=Subscriber.objects.filter(pk=comptable.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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
220
            ## Richard
Skia's avatar
Skia committed
221
222
223
224
225
226
227
            s = Subscription(member=Subscriber.objects.filter(pk=r.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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
228
            ## Subscriber
Skia's avatar
Skia committed
229
230
231
232
233
234
235
            s = Subscription(member=Subscriber.objects.filter(pk=subscriber.pk).first(), subscription_type=list(settings.SITH_SUBSCRIPTIONS.keys())[0],
                    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
236
237
238

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
239
                    address="46 de la Boustifaille", parent=main_club).save()
Skia's avatar
Skia committed
240
            guyut = Club(name="Guy'UT", unix_name="guyut",
241
                    address="42 de la Boustifaille", parent=main_club)
Skia's avatar
Skia committed
242
243
244
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
                    address="Woenzel", parent=guyut).save()
245
            Membership(user=skia, club=main_club, role=3, description="").save()
Skia's avatar
Skia committed
246
            troll = Club(name="Troll Penché", unix_name="troll",
247
                    address="Terre Du Milieu", parent=main_club)
Skia's avatar
Skia committed
248
            troll.save()
Skia's avatar
Skia committed
249

Skia's avatar
Skia committed
250
251
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
252
            Customer(user=r, account_id="4000", amount=0).save()
Skia's avatar
Skia committed
253
254
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
255
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
256
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
257
258
            barb.save()
            cble = Product(name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7",
259
                    special_selling_price="1.6", club=main_club)
Skia's avatar
Skia committed
260
            cble.save()
Skia's avatar
Skia committed
261
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
262
                    special_selling_price="1.6", club=main_club).save()
Skia's avatar
Skia committed
263
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
264
265
                    special_selling_price="1.6", club=main_club).save()
            mde = Counter.objects.filter(name="MDE").first()
Skia's avatar
Skia committed
266
267
268
269
270
            mde.products.add(barb)
            mde.products.add(cble)
            mde.save()

            # Accounting test values:
271
272
273
            BankAccount(name="AE TG", club=main_club).save()
            BankAccount(name="Carte AE", club=main_club).save()
            ba = BankAccount(name="AE TI", club=main_club)
274
275
276
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
277
278
            gj = GeneralJournal(name="A16", start_date=date.today(), club_account=ca)
            gj.save()
Skia's avatar
Skia committed
279
            credit = AccountingType(code=74, label="Someone gave us money", movement_type='CREDIT')
Skia's avatar
Skia committed
280
            credit.save()
Skia's avatar
Skia committed
281
            debit = AccountingType(code=607, label="Had to pay a beer", movement_type='DEBIT')
Skia's avatar
Skia committed
282
            debit.save()
283
            Operation(journal=gj, date=date.today(), amount=666.42,
Skia's avatar
Skia committed
284
285
                    remark="An answer to life...", mode="CASH", done=True, accounting_type=credit, target_type="USER",
                    target_id=skia.id).save()
286
            Operation(journal=gj, date=date.today(), amount=42,
Skia's avatar
Skia committed
287
288
289
290
                    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()
Skia's avatar
Skia committed
291