Example #1
0
 def handle(self, *args, **options):
     for file in sorted(
             glob.glob(
                 '/var/www/vhosts/tmi-archive.com/mp3/import2/clean/*.mp3')
     ):
         title = file.split('/')[-1].replace('.mp3',
                                             '').replace('-', ' ').replace(
                                                 '_', ' ')
         title = f'Imported - {title}'
         existing = Talk.objects.filter(title=title).count()
         if existing > 0:
             continue
         id_ = uuid.uuid4()
         id_ = base64.b32encode(
             id_.bytes).decode("utf-8").rstrip("=\n")[:12]
         new_file_dir = '/var/www/vhosts/tmi-archive.com/mp3.tmi-archive.com'
         new_file_name = f"tmi-archive-{id_}.mp3"
         shutil.copy(file, new_file_dir + '/' + new_file_name)
         talk = Talk(title=title,
                     updated_by_id=1,
                     created_by_id=1,
                     original_file_name=file.split('/')[-1],
                     audio_filename=new_file_name,
                     audio_cleaned=new_file_name,
                     audio_original=new_file_name)
         talk.auto_add_user_data = False
         talk.save()
         print(title, talk.id)
Example #2
0
    def test_talk_should_be_in_context(self):

        speaker = Speaker(
            name = 'Santa Claus',
            url = 'www.north_pole.net',
            email = 'admin@north_pole.net',
        )
        speaker.save()
        talk = Talk(
            title = 'Title',
            slug = 'title',
            description = 'Description',
            day = datetime.date(2010, 1, 20),
            start_time = datetime.time(10, 10),
            duration = '1 hour',
            place = 'Room 756',
            speaker = speaker,
        )
        talk.save()

        second_talk = Talk(
            title = 'Another Title',
            slug = 'another-title',
            description = 'Another description',
            day = datetime.date(2010, 1, 22),
            start_time = datetime.time(10, 10),
            duration = '50 minutes',
            place = 'Room 765',
            speaker = speaker,
        )
        second_talk.save()

        year = '%04d' % talk.day.year
        month = '%02d' % talk.day.month
        day = '%02d' % talk.day.day

        response = self.client.get(reverse('details', args=[year, month, day, talk.slug]))

        rendered_talk = response.context['talk']

        self.assertTrue(isinstance(rendered_talk, Talk))

        self.assertEquals(rendered_talk, talk)

        talk.delete()
        second_talk.delete()
        speaker.delete()
Example #3
0
    def handle(self, *args, **options):
        df = pd.read_json('./_other/scraper/articles-selenium.json')
        audio_path = '/home/script/_tmp/dhamma'
        for i, row in df.iloc[3:].iterrows():
            title = row.title

            existing = Talk.objects.filter(title=title).count()
            if existing > 0:
                continue
            print(title)
            content = BeautifulSoup(row.article, "html.parser").find('div', {'class': 'entry-content'})
            content = str(content).replace('<div class="entry-content">', '')[:-6]
            content = BeautifulSoup(content, "html.parser")

            for div in content.find_all("div", {'class': 'powerpress_player'}):
                div.decompose()
            for div in content.find_all("p", {'class': 'powerpress_links'}):
                div.decompose()
            content = str(content)
            talk = Talk(
                title=title,
                description=content,
                updated_by_id=1,
                created_by_id=1
            )
            talk.auto_add_user_data = False
            talk.save()

            if row.audio_link is not None:

                from django.core.files import File
                file_name = row.audio_link.replace('?_=1', '').split('/')[-1]
                orig_audio = '{}/mp3/{}'.format(audio_path, file_name)
                if os.path.exists(orig_audio):
                    orig_audio = File(open(orig_audio, 'rb'))
                    talk.audio_original.save('new', orig_audio)

                clean_audio = '{}/mp3-cleaned/{}'.format(audio_path, file_name)
                if os.path.exists(clean_audio):
                    clean_audio = File(open(clean_audio, 'rb'))
                    talk.audio_cleaned.save('new', clean_audio)
Example #4
0
def generate_talk(speaker):
    talk = Talk()
    talk.name = random.choice(verbs) + " " + random.choice(things) + ": " + random.choice(long_actions)
    talk.abstract = talk_description

    if random.choice(range(0,10)) % 2 == 0:
        talk.published = False

    talk.speaker = speaker
    talk.save()

    for i in range(0, random.choice(range(2,7))):
        tag = TalkTag.objects.get(name=random.choice(profile_tags))

        if tag not in talk.tags.all():
            talk.tags.add(tag)

    return talk
Example #5
0
def talk_new(request):
    if request.method == 'POST': # If the form has been submitted...
        talk_form = TalkForm(request.POST, request.FILES)
        location_form = None

        if talk_form.is_valid():
            talk = Talk()
            talk.name = talk_form.cleaned_data['name']
            talk.abstract = talk_form.cleaned_data['abstract']
            talk.speaker = request.user

            talk.save()

            return redirect('/talk/' + str(talk.id))

    return HttpResponseNotFound()
Example #6
0
def process_event_upload(upload):
    upload.state = EventUpload.IMPORT_STARTED
    upload.save()

    csv_reader = csv.reader(upload.import_file)
    rows = [r for r in csv_reader]
    upload.import_file.close()

    rows = [Row(num, *r) for num, r in enumerate(rows)]

    #Test if they deleted any of the example lines 1 through 5
    test_rows = rows[:5]
    bad_session_titles = ("Session Title", "Text", "REQUIRED", "", "Super Advanced Python")
    good_rows = [r for r in test_rows if r.session_title not in bad_session_titles]
    rows = good_rows + rows[5:]

    new_speakers = []
    for row in rows:
        try:
            speaker = SpkrbarUser.objects.get(email=row.speaker_email)
        except:
            password = SpkrbarUser.objects.make_random_password()
            speaker = SpkrbarUser.objects.create_user(row.speaker_email, password=password)
            speaker.save()
            new_speakers.append(speaker)

        if not speaker.full_name:
            speaker.full_name = strip_tags(row.speaker_name)

        if not speaker.about_me:
            speaker.about_me = strip_tags(row.speaker_bio)

        process_event_upload_tags(speaker, UserTag, strip_tags(row.speaker_tags))

        process_event_upload_speaker_link(speaker, 'LIN', row.speaker_linkedin)
        process_event_upload_speaker_link(speaker, 'TWI', row.speaker_twitter)
        process_event_upload_speaker_link(speaker, 'FAC', row.speaker_facebook)
        process_event_upload_speaker_link(speaker, 'WEB', row.speaker_website)

        speaker.save()

        try:
            talk = speaker.talks.get(name=row.session_title)
        except:
            talk = Talk()
            talk.speaker = speaker
            talk.name = strip_tags(row.session_title)

        if not talk.abstract:
            talk.abstract = strip_tags(row.session_abstract)

        talk.save()

        process_event_upload_tags(talk, TalkTag, strip_tags(row.session_tags))

        if row.session_video and talk.videos.count() == 0:
            video = TalkVideo.from_embed(talk, row.session_video)
            if video:
                video.save()

        if row.session_slide and talk.slides.count() == 0:
            deck = TalkSlideDeck.from_embed(talk, row.session_slide)
            if deck:
                deck.save()

        links = strip_tags(row.session_links).split(',')

        for l in links:
            if l and not talk.links.filter(url=l).exists():
                link = TalkLink()
                link.talk = talk
                link.name = "Session Resource"
                link.url = l
                link.save()

        start_date = dtparse(strip_tags(row.session_date))
        start_time = dtparse(strip_tags(row.session_start_time))

        eng = talk.engagements.filter(
            event_name=upload.name,
            date=start_date,
            time=start_time).exists()

        if not eng:
            en = Engagement()
            en.talk = talk
            en.speaker = speaker
            en.event_name = upload.name
            en.location = upload.location
            en.date = start_date
            en.time = start_time
            en.room = strip_tags(row.session_room_name)
            en.save()

    upload.state = EventUpload.IMPORT_FINISHED
    upload.save()

    #Notify every new speaker
    for speaker in new_speakers:
        assign_basic_permissions(speaker)

        mes = email_template.render(Context({'name': speaker.full_name, 'event': upload.name}))
        send_html_mail("Claim your profile on SpkrBar", strip_tags(mes), mes, [speaker.email])

    return HttpResponse(json.dumps({'success': True}), content_type="application/json")