UPD: improved the providing of real test data.
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
import datetime
|
||||
import json
|
||||
import os
|
||||
from django.apps import apps
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.contrib.auth.models import Group
|
||||
from django.db import models
|
||||
|
||||
from ..models.event import Event
|
||||
from ..models.eventstatus import EventStatus
|
||||
@@ -32,20 +35,45 @@ class EventMixin(object):
|
||||
def get_status_label(self, status_code):
|
||||
return EventStatus.objects.get(code=status_code).label
|
||||
|
||||
def create_event(self, data=None):
|
||||
def gen_event_data(self, exclude_fields=None):
|
||||
if exclude_fields is None:
|
||||
exclude_fields = []
|
||||
|
||||
data_dirname = 'data'
|
||||
data_filename = 'events.json'
|
||||
path = os.path.join(os.path.dirname(__file__), data_dirname, data_filename)
|
||||
with open(path) as f:
|
||||
data_sets = json.load(f)
|
||||
for obj_data in data_sets:
|
||||
data = {}
|
||||
fields_data = obj_data['fields']
|
||||
for key in fields_data:
|
||||
if key in exclude_fields:
|
||||
continue
|
||||
value = fields_data[key]
|
||||
if value in (None, ''):
|
||||
continue
|
||||
elif key == 'ski_lift' and value is False:
|
||||
continue
|
||||
elif key == 'arrivial_previous_day' and value is False:
|
||||
continue
|
||||
if key == 'created_at':
|
||||
value = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%S.%fZ')
|
||||
elif key in ('pre_meeting_1', 'pre_meeting_2'):
|
||||
value = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M:%SZ')
|
||||
elif key in ('first_day', 'last_day', 'alt_first_day', 'alt_last_day', 'deadline'):
|
||||
value = datetime.datetime.strptime(value, '%Y-%m-%d').date()
|
||||
elif key in ('meeting_time', 'departure_time', 'return_departure_time', 'return_arrival_time'):
|
||||
value = datetime.datetime.strptime(value, '%H:%M:%S').time()
|
||||
elif key == 'trainer_email':
|
||||
value += '.example.com'
|
||||
data[key] = value
|
||||
yield data
|
||||
|
||||
def create_event_by_model(self, data=None):
|
||||
if data is None:
|
||||
data = {
|
||||
'title': 'Daytrip',
|
||||
'description': 'Testevent',
|
||||
'mode': 'joint',
|
||||
'sport': 'W',
|
||||
'level': 'beginner',
|
||||
'first_day': datetime.date.today(),
|
||||
'country': 'DE',
|
||||
'trainer_firstname': 'Trainer',
|
||||
'trainer_familyname': 'One',
|
||||
'trainer_email': 'trainer@localhost',
|
||||
}
|
||||
exclude_fields = ('owner', 'created_at', 'number', 'planned_publication_date')
|
||||
data = next(self.gen_event_data(exclude_fields=exclude_fields))
|
||||
|
||||
event = Event(**data)
|
||||
event.save()
|
||||
|
||||
Reference in New Issue
Block a user