예제 #1
0
    def import_events(self, options):
        self.stdout.write(self.style.SUCCESS("Import events started"))

        bhd = FestivalPage.objects.order_by("pk").all()[0]
        khd = FestivalPage.objects.order_by("pk").all()[1]
        parent = EventIndexPage.objects.get()

        path = os.path.join(options["csv_dir"], "events.csv")
        with open(path, "r", newline="") as file:
            reader = csv.DictReader(file)

            for i, row in enumerate(reader, start=1):
                parent.add_child(instance=Event(
                    event_id=row["event_id"],
                    title=row["title"],
                    category=Category.objects.get(title=row["category"]),
                    date_and_time=datetime.fromisoformat(row["date_and_time"]),
                    location=Location.objects.get(title=row["location"]),
                    video_url=row["video_url"],
                    ticket_url=row["ticket_url"],
                    show_on_festivalpage=row["show_on_festivalpage"],
                    icon=self.icon(row["icon"]),
                    related_festival=bhd if row["related_festival"] ==
                    "bhd" else khd,
                    speakers=Speaker.objects.filter(
                        speaker_id__in=row["speakers"].
                        split(",") if row["speakers"] else []),
                    wordpress_url=row["wordpress_url"],
                    short_overview=row["short_overview"],
                    description=row["description"],
                ))

        self.stdout.write(
            self.style.SUCCESS(f"Import events finished - {i} events"))
예제 #2
0
    def import_events(self, reader, options):
        self.stdout.write(self.style.SUCCESS("Importing events"))

        events_page = EventIndexPage.objects.get()
        for row in reader:
            # bulk_create doesn't call save() method
            try:
                if row["illustration"]:
                    illustration = Image.objects.get(title=row["illustration"])
                else:
                    illustration = None
                e = Event(
                    title=row["post_title"],
                    short_overview=row["overview"],
                    description=row["post_content"],
                    date_and_time=datetime.fromtimestamp(
                        int(row["datetime"]),
                        pytz.timezone("Europe/Bratislava")),
                    location=(Location.objects.get(
                        title=row["location"].strip().lower())),
                    video_url=self.video_url(row["youtube_link"]),
                    # ticket_url=row["tickets_button_url"],
                    category=Category.objects.get(title=row["topic"]),
                    icon=illustration,
                    speakers=Speaker.objects.filter(
                        wordpress_id__in=row["speakers"].
                        split(",") if row["speakers"] else []).all(),
                )
                events_page.add_child(instance=e)
                e.save_revision().publish()
                self.stdout.write(f"{e.pk},{e.event_id},{row['ID']},{e.title}")
            except ObjectDoesNotExist as e:
                raise

        self.stdout.write(self.style.SUCCESS("Events imported"))
예제 #3
0
 def add_event(code):
     #todo: import this function from isa_website/views
     new_event = Event(api_url=api_url,
                       event_start=start_time,
                       title=api_object['name']['html'],
                       event_url=api_object['url'],
                       event_code=code)
     new_event.save()
예제 #4
0
def add_event(request):
    # TODO: Modify to store timezone
    _event = json.loads(request.GET.get("event"))
    category, created = Category.objects.get_or_create(
        name=_event.get("category"))
    print(_event["calendarId"])
    task_authorization = TaskAuthorization.objects.get(
        charge_code=_event["calendarId"])
    temp = {
        "id": _event["id"],
        "title": _event["title"],
        "isAllDay": _event["isAllDay"],
        "start":
        datetime.fromisoformat(_event["start"]["_date"].replace("Z", "")),
        "end": datetime.fromisoformat(_event["end"]["_date"].replace("Z", "")),
        "category": category,
        "dueDateClass": _event["dueDateClass"],
        # "task_authorization": task_authorization,
        # "charge_code": _event[""],
        # "location":_event["location"],
        # "notes": _event[""],
    }

    temp["delta_time"] = (temp["end"] -
                          temp["start"]).total_seconds() / 60 / 60.

    task_authorization.hours_spent += temp["delta_time"]
    task_authorization.hours_remaining -= temp["delta_time"]
    task_authorization.hours_percentage = (
        task_authorization.hours_spent /
        task_authorization.hours_allocated) * 100.0

    temp["task_authorization"] = task_authorization

    task_authorization.save()

    if request.user.is_authenticated:
        temp["user"] = request.user

    event = Event(**temp)

    print(f"Create Event ({request.user}): {_event['id']}")
    event.save()

    return JsonResponse({"response": "Recieved"})