populate.py 9.5 KB
Newer Older
Skia's avatar
Skia committed
1
import os
Skia's avatar
Skia committed
2
3
from datetime import date

Skia's avatar
Skia committed
4
5
6
7
8
9
from django.core.management.base import BaseCommand, CommandError
from django.core.management import call_command
from django.conf import settings


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

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

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

    def handle(self, *args, **options):
        root_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
Skia's avatar
Skia committed
23
        root = User(username='root', last_name="", first_name="Bibou",
Skia's avatar
Skia committed
24
25
26
                 email="ae.info@utbm.fr",
                 date_of_birth="1942-06-12",
                 is_superuser=True, is_staff=True)
Skia's avatar
Skia committed
27
28
        root.set_password("plop")
        root.save()
Skia's avatar
Skia committed
29
        for g in settings.SITH_GROUPS.values():
Skia's avatar
Skia committed
30
            Group(id=g['id'], name=g['name']).save()
Skia's avatar
Skia committed
31
32
33
        ae = Club(name=settings.SITH_MAIN_CLUB['name'], unix_name=settings.SITH_MAIN_CLUB['unix_name'],
                address=settings.SITH_MAIN_CLUB['address'])
        ae.save()
Skia's avatar
Skia committed
34
35
36
        p = Page(name='Index')
        p.set_lock(root)
        p.save()
Skia's avatar
Skia committed
37
        p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
38
39
40
41
42
        p.set_lock(root)
        p.save()
        PageRev(page=p, title="Wiki index", author=root, content="""
Welcome to the wiki page!
""").save()
Skia's avatar
Skia committed
43
44
45
46

        # 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
47
            skia = User(username='skia', last_name="Kia", first_name="S'",
Skia's avatar
Skia committed
48
49
                     email="skia@git.an",
                     date_of_birth="1942-06-12")
Skia's avatar
Skia committed
50
51
52
53
            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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
            # 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()
Skia's avatar
Skia committed
72
73
74
75
76
77
78
79
80
81
            # 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
82
83
84
85
86
87
88
            # 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
89
            u.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
90
            u.save()
Skia's avatar
Skia committed
91
92
93
94
95
96
            # 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
97
            r.view_groups=[Group.objects.filter(name=settings.SITH_MAIN_MEMBERS_GROUP).first().id]
Skia's avatar
Skia committed
98
            r.save()
Skia's avatar
Skia committed
99
100
101
            # Adding syntax help page
            p = Page(name='Aide_sur_la_syntaxe')
            p.save()
Skia's avatar
Skia committed
102
            PageRev(page=p, title="Aide sur la syntaxe", author=skia, content="""
Skia's avatar
Skia committed
103
104
105
106
107
Cette page vise à documenter la syntaxe *Markdown* utilisée sur le site.
""").save()
            # Adding README
            p = Page(name='README')
            p.save()
Skia's avatar
Skia committed
108
            p.view_groups=[settings.SITH_GROUPS['public']['id']]
Skia's avatar
Skia committed
109
            p.set_lock(skia)
Skia's avatar
Skia committed
110
111
            p.save()
            with open(os.path.join(root_path)+'/README.md', 'r') as rm:
Skia's avatar
Skia committed
112
                PageRev(page=p, title="REAMDE", author=skia, content=rm.read()).save()
Skia's avatar
Skia committed
113
114

            # Subscription
Skia's avatar
Skia committed
115
            ## Skia
Skia's avatar
Skia committed
116
117
118
119
120
121
122
            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
123
            ## Comptable
Skia's avatar
Skia committed
124
125
126
127
128
129
130
            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
131
            ## Richard
Skia's avatar
Skia committed
132
133
134
135
136
137
138
            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
139
            ## Subscriber
Skia's avatar
Skia committed
140
141
142
143
144
145
146
            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
147
148
149
150
151
152
153
154
155
156

            # Clubs
            Club(name="Bibo'UT", unix_name="bibout",
                    address="46 de la Boustifaille", parent=ae).save()
            guyut = Club(name="Guy'UT", unix_name="guyut",
                    address="42 de la Boustifaille", parent=ae)
            guyut.save()
            Club(name="Woenzel'UT", unix_name="woenzel",
                    address="Woenzel", parent=guyut).save()
            Club(name="BdF", unix_name="bdf",
Skia's avatar
Skia committed
157
                    address="6 Bd Anatole France").save()
Skia's avatar
Skia committed
158
            Membership(user=skia, club=ae, role=3, description="").save()
Skia's avatar
Skia committed
159
160
161
            troll = Club(name="Troll Penché", unix_name="troll",
                    address="Terre Du Milieu", parent=ae)
            troll.save()
Skia's avatar
Skia committed
162

Skia's avatar
Skia committed
163
164
            # Counters
            Customer(user=skia, account_id="6568j", amount=0).save()
165
            Customer(user=r, account_id="4000", amount=0).save()
Skia's avatar
Skia committed
166
167
            p = ProductType(name="Bières bouteilles")
            p.save()
Skia's avatar
Skia committed
168
169
170
171
172
173
            barb = Product(name="Barbar", code="BARB", product_type=p, purchase_price="1.50", selling_price="1.7",
                    special_selling_price="1.6", club=ae)
            barb.save()
            cble = Product(name="Chimay Bleue", code="CBLE", product_type=p, purchase_price="1.50", selling_price="1.7",
                    special_selling_price="1.6", club=ae)
            cble.save()
Skia's avatar
Skia committed
174
            Product(name="Corsendonk", code="CORS", product_type=p, purchase_price="1.50", selling_price="1.7",
Skia's avatar
Skia committed
175
                    special_selling_price="1.6", club=ae).save()
Skia's avatar
Skia committed
176
            Product(name="Carolus", code="CARO", product_type=p, purchase_price="1.50", selling_price="1.7",
Skia's avatar
Skia committed
177
                    special_selling_price="1.6", club=ae).save()
Skia's avatar
Skia committed
178
179
180
181
182
183
184
            mde = Counter(name="MDE", club=ae, type="BAR")
            mde.save()
            mde.products.add(barb)
            mde.products.add(cble)
            mde.save()

            # Accounting test values:
Skia's avatar
Skia committed
185
186
187
            BankAccount(name="AE TG", club=ae).save()
            BankAccount(name="Carte AE", club=ae).save()
            ba = BankAccount(name="AE TI", club=ae)
188
189
190
            ba.save()
            ca = ClubAccount(name="Troll Penché", bank_account=ba, club=troll)
            ca.save()
Skia's avatar
Skia committed
191
192
            AccountingType(code=756, label="Someone gave us money", movement_type='credit').save()
            AccountingType(code=8570, label="Had to pay for food", movement_type='debit').save()
Skia's avatar
Skia committed
193