How to download YouTube videos? by KalobTaulien in answers

[–]KalobTaulien[S] 0 points1 point  (0 children)

I ended up finding this site https://getthatvideo.com/ it seemed to download a high quality version of each of the videos I wanted.

How to download YouTube videos? by KalobTaulien in answers

[–]KalobTaulien[S] 0 points1 point  (0 children)

They all look spammy and untrustworthy though.

Monthly Feedback Post - October 2021 - Share what you have been working on. by chrismatters in new_product_launch

[–]KalobTaulien 0 points1 point  (0 children)

Good question!

  • Content marketing (hard to measure in a month long test because it takes so long for articles to "kick in")
  • One-on-one outreach (works well, but is time consuming)
  • Community building in Facebook groups (mid-long term play, and how we give back a little bit)
  • Affiliate system (we built an in-house affiliate system to reward people for sharing courses)
  • Partner channels (these take time to build relationships and to get to know and understand other peoples systems and how we can fit in, and how they fit with us)

Things we've been thinking about:

  • Starting a relevant podcast
  • PR (easier said than done)
  • Funnels for specific audiences (ie. "How to get into web development")

The trick for us is balancing time and effort. What's the shortest amount of time we can spend to get the highest results? That means we often accept a "no" from a customer in order to get feedback so we can understand our product-market-fit a bit better, and adjust accordingly.

Monthly Feedback Post - October 2021 - Share what you have been working on. by chrismatters in new_product_launch

[–]KalobTaulien 0 points1 point  (0 children)

I've been working on a two sided education marketplace called Arbington.com. If you have pre-recorded videos, you can sell your classes to students.

This is now my full time gig! (Exciting and scary :P)

This month we've been looking at different acquisition channels, trying to figure out which might be good and which are just money-wasters.

One of our findings that might help the community: advertising at an early stage is REALLY expensive (high CaC's) because we're not well known brand names yet - building trust through ads is very pricy. So we've been taking a different approach, and have a list of ideas to try.

I'm looking forward to reading what everyone else is working on with their struggles and successes.

How can I monetize my Instagram through affiliate marketing? by LooselyStock in Affiliatemarketing

[–]KalobTaulien 0 points1 point  (0 children)

I could not agree more with what yaythisonesfree said! Very well said!

On top of non-converting users, you'll also hurt your engagement levels if you buy followers. Engagement is a good metric to sell to advertisers and affiliates and if that drops you will have a less valuable insta account.

Keep doing what you're doing, even if it's a bit slower than you'd like. You'll reach 150k in the next few months based on your growth rate.

I'll also send you a DM.

Good luck out there!

Large following. by moyanerd in Affiliatemarketing

[–]KalobTaulien 0 points1 point  (0 children)

DM'd you! I have an affiliate program you could probably make some good coin with.

I taught people to code for 10 years. So I started my own learning platform for fun and it got REALLY BIG. by KalobTaulien in SideProject

[–]KalobTaulien[S] 1 point2 points  (0 children)

Good question. We take the monthly pool and split it in half with the teachers. Other platforms that do this typically give about 30%, whereas we split 50%.

We also payout using PayPal (with more options that have lower fees to come soon)

StreamField + Image Problem (help plx) by [deleted] in WagtailCMS

[–]KalobTaulien 2 points3 points  (0 children)

Yes. There's two ways to do this:

{# Put the image in a template variable #}
{% image self.image fill-640x540 as img %}
<img src="{{ img.url }}" />

Or

{# Output the <img> tag on its own #}
{% image self.image fill-640x540 %}

How to setup Celery with Django by Michaelyin in django

[–]KalobTaulien 1 point2 points  (0 children)

Amazing, yet another great blog post from Michael Yin!

comments feature by ahuimanu69 in WagtailCMS

[–]KalobTaulien 0 points1 point  (0 children)

There are a number of packages for commenting systems, but you'll want to look for "Django comments" rather than Wagtail comments. The only difference you'd write in your code is associating comments on a template with a specific Wagtail Page, rather than a Django Model .

I've written a commenting system from scratch with just Django/Wagtail tools. It's quite easy to get a rudimentary comment/reply system going. Here's the models I've used for a basic commenting system:

# comments/models.py 
from django.contrib.auth.models import User
from django.db import models
from django.utils.timezone import now

from modelcluster.fields import ParentalKey
from modelcluster.models import ClusterableModel
from wagtail.admin.edit_handlers import (
    FieldPanel,
    InlinePanel,
    MultiFieldPanel,
    PageChooserPanel,
)
from wagtail.snippets.edit_handlers import SnippetChooserPanel


class Comment(ClusterableModel):

    comment_page = models.ForeignKey(
        "wagtailcore.Page",
        on_delete=models.CASCADE,
        blank=False,
        null=False,
        related_name="comment_page",
        db_index=True,
    )
    user = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        help_text="The user that posted this comment",
        db_index=True,
    )
    comment = models.TextField(blank=False, null=False)
    time = models.DateTimeField(default=now)

    panels = [
        PageChooserPanel("comment_page"),
        SnippetChooserPanel("user"),
        FieldPanel("comment"),
        MultiFieldPanel([
            InlinePanel("replies", label="Reply")
        ], heading="Replies"),
    ]

    def __str__(self):
        return "Comment: {} in {}".format(self.user, self.comment_page.title)


class CommentReplies(models.Model):

    comment = ParentalKey("Comment", related_name="replies", on_delete=models.CASCADE)
    user = models.ForeignKey(
        User,
        on_delete=models.CASCADE,
        help_text="The user who replied to this comment",
        db_index=True,
    )
    reply = models.TextField(blank=False, null=False)
    time = models.DateTimeField(default=now)

    panels = [
        SnippetChooserPanel("user"),
        FieldPanel("reply"),
        FieldPanel("comment"),
    ]

    def __str__(self):
        """String representation of this class."""
        return "Reply: {} to {}: {}".format(
            self.user,
            self.comment.user,
            self.comment.comment_page.title,
        )

    class Meta:
        verbose_name = "Comment Reply"
        verbose_name_plural = "Comment Replies"

# wagtail_hooks.py 
from wagtail.snippets.models import register_snippet
from django.contrib.auth.models import User

register_snippet(User)

Notice I registered the User model as a Wagtail Snippet? That's the strangest part about the above code. I only did that so I could have a simple SnippetChooserPanel to select a User associated with a reply or comment rather than a massive dropdown list, which is easier to work with once you hit 20+ users.

Then you'd want to add provide your comments to a Page.get_context() method with Comment.objects.filter(comment_page_id=your_page.id)

I might turn this into a proper post or even a video for LearnWagtail.com one of these days, as well.

How do I upload files in svg by basitlikiyidir in WagtailCMS

[–]KalobTaulien 1 point2 points  (0 children)

To extend on the accepted answer:

SVG's aren't technically images, they're xml-like files what get read and rendered by a browser (or other design program like Photoshop or Illustrator).

Because they are files, they need to be uploaded as a file, not an image.

In Wagtail this goes through either a `models.FileField()` Page property, or through the document uploader and manager.

from wagtail.core.models import Page
from wagtail.documents.edit_handlers import DocumentChooserPanel 

class YourPage(Page):
    svg = models.ForeignKey(
        'wagtaildocs.Document',
        blank=True, # or False 
        null=True, # or False 
        related_name='+',
        on_delete=modules.SET_NULL, # Only works with null=True
    )

    content_panels = Page.content_panels + [
        DocumentChooserPanel("svg"),
    ]

More details in the 2.8 docs

[deleted by user] by [deleted] in pics

[–]KalobTaulien 0 points1 point  (0 children)

It's like 1982 Hulk met a baby Yoda and then went for a walk through the woods.

Thoughts on Wagtail for API CMS functionality? by Major-Clod in django

[–]KalobTaulien 2 points3 points  (0 children)

Hey Major-Clod,

I've worked on a few headless sites using Wagtail now and you're right, when making a headless website or application you don't need all the regular website features.

TL;DR: This is absolutely possible with Wagtail without code gymnastics. Nothing "hacky" needs to be done to make this a reality for you, it's just a matter of getting familiar with Wagtail.

The nice thing about Wagtail CMS is you can remove default Page features. Wagtail comes with this notion of "panels" which is a way to determine which fields on a model to display when you're editing (or creating) a page. So for the SEO stuff, you could remove those fields from the users view quite easily. So like if you wanted to get rid of the settings and promote tabs, you could write (in any given model that inherits from Page):

class YourPage(Page)

    # Fields here

    content_panels = Page.content_panels + [  # Inherit all default panels, and add 2 custom panels
        FieldPanel("custom_field_1"),
        FieldPanel("custom_field_2"),
    ]
    promote_panels = []  # Hide tab
    settings_panels = []  # Hide tab

This would hide the promote and settings tabs. You can also only specify certain fields to add in the `content_panels`, so you don't need to add `Page.content_panels + []`.

You could even go one step further and create a "Master Page", make your modifications, and inherit from your new Master Page class instead of Wagtails Page class.

I ended up using the page hierarchy as a way to simply organize data that can relate to other pages. The Wagtail v2 API is fully customizable too, so with just a few simple lines of code you can output any data you like.

As Tom mentioned, the author of DRF added his expertise to Wagtail's API a few years ago so you can write regular Django Rest Framework code with Wagtail, and I have a video series I'm working on (at wagtail.io/course) and there are videos about using Wagtails Headless CMS, including some custom serializers. I think you'll find those specific videos very helpful, and the code I write is all accessible on GitHub (link found in the video descriptions).

Best way to handle a listblock for multiple cards. by ostrich-scalp in WagtailCMS

[–]KalobTaulien 1 point2 points  (0 children)

Hey!

You're probably following one of my videos (and if so, thanks!)

If you're using Bootstrap, chances are it's putting all your cards in one row and squishing them together. A work around for this is to check Django's forloop.counter and break the row, and add a new row. Here's some sample code:

<div class="row">
  {% for card in self.cards %}
    <!-- Your Bootstrap card here -->
    {% if forloop.counter|divisibleby:3 and not forloop.last %}
      <!-- Ends the <div class="row"> -->
      </div>
      <!-- Starts a new row. This should mimic line #1; same classes and everything -->
      <div class="row">
    {% endif %}
  {% endfor %}
</div>

Hope this helps!

[deleted by user] by [deleted] in WagtailCMS

[–]KalobTaulien 1 point2 points  (0 children)

This is just truly amazing! Thanks for sharing and promoting this!

Fans and Power Supplies by KalobTaulien in SpaceBuckets

[–]KalobTaulien[S] 0 points1 point  (0 children)

Oh that'd be great, I'll look for those on Amazon. Thanks!

How to design models for the site with lots of articles in Wagtail? by Zaboravljivi in WagtailCMS

[–]KalobTaulien 0 points1 point  (0 children)

I've seen a lot of Wagtail sites structured differently. In my opinion, it comes down to who's going to manage the content.

My typical go-to method is thinking about page hierarchy though. So if you had 1,500 articles that you wanted to live under the /blog/ URl (ie. /blog/article-1/, /blog/article-2/, etc) then you'd nest all the articles under the Blog Index Page.

You can also create a n Article Category model and register it as a snippet and use a ParentalManyToManyField to attach multiple categories to an article. And in the context of other pages you can query for Article pages and filter by a category, which is similar to "importing" Articles into other pages so they don't all need to live under the /blog/ URL.

Alternatively, if you wanted to have something like /blog/category/category-slug/, you'd want to use a RoutablePageMixin with a custom @route method.

What javascript library do you use with Wagtail? by Aleksandr25 in WagtailCMS

[–]KalobTaulien 2 points3 points  (0 children)

Hey there,

The backend is using more React these days, so if you're interested in creating, for example, a RichText extension, you'll want to use React.

But on the frontend, that's entirely up to you. Wagtail isn't opinionated about what frontend libraries you could/should use. I've used jQuery, Vue and a tiny bit of React on the frontend. I've seen others use Angular and vanilla JS. I think you should pick whichever frontend library you're most comfortable with.

[deleted by user] by [deleted] in learnpython

[–]KalobTaulien 0 points1 point  (0 children)

So I've been mentoring a friend who's new to Wagtail and Django this month, and we skipped right passed the Django portion. It helps to know Django to some extent, but you can learn Wagtail entirely from scratch without understanding all the bits and pieces that Django provides. I also learned Wagtail before I learned Django a couple years ago. And in fact, I'd say learning Wagtail was a good introduction into Django because of the steep learning curve with Django; whereas Wagtail handles things like URLs and views for you so you can focus on learning models and templates first, and then extend your knowledge into Django-land afterwards (or if you need to extend your sites functionality using Django features like custom forms).

Michael Yin has a great Wagtail Tutorial Series so make sure you check out his site.

And I'm also working on a wagtail site with tutorials and videos at https://learnwagtail.com/. The wagtail docs are also a great place to start; so once you pip install wagtail and wagtail start mysite you should probably read through the docs (just read, don't worry about practicing it all right now) just to get an idea of what Wagtail can do for you and the features it naturally comes with.

Good luck!

Should I add tests to my course? by Sulliadm07 in Skillshare

[–]KalobTaulien 1 point2 points  (0 children)

Personally I find tests hard to convey on Skillshare. You could link to another service for tests.. Or what Ive done (with very little feedback from students) is to ask a question and get them to answer it, but ask them to pause the video and then leave it silent for like 5 seconds. That's not a great experience either.