├── .gitignore ├── .gitlab-ci.yml ├── .woodpecker ├── .build.yml └── .test.yml ├── Dockerfile ├── LICENSE ├── README.md ├── docker-compose.yml ├── fediverser ├── apps │ ├── core │ │ ├── __init__.py │ │ ├── adapters.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── authentication.py │ │ ├── choices.py │ │ ├── factories.py │ │ ├── filters.py │ │ ├── forms.py │ │ ├── handlers.py │ │ ├── management │ │ │ └── commands │ │ │ │ └── pull_from_reddit.py │ │ ├── migrations │ │ │ ├── 0001_initial.py │ │ │ ├── 0002_person_useraccount_lemmy_account.py │ │ │ ├── 0003_fediversedinstance_creates_reddit_mirror_bots_and_more.py │ │ │ ├── 0004_alter_fediversedinstance_instance_endorsement_and_more.py │ │ │ ├── 0005_rename_endorsemement_endorsemententry_endorsement_and_more.py │ │ │ ├── 0006_alter_fediversedinstance_portal_url.py │ │ │ ├── 0007_community_url_person_url_and_more.py │ │ │ ├── 0008_add_url.py │ │ │ ├── 0009_break_recommendation_changefeed.py │ │ │ ├── 0010_remove_reddittocommunityrecommendationentry_recommendation_and_more.py │ │ │ ├── 0011_alter_changefeedentry_options_alter_community_url_and_more.py │ │ │ ├── 0012_setinstancecountry_instanceextrainformation_and_more.py │ │ │ ├── 0013_useraccount_tracked_subreddits.py │ │ │ ├── 0014_connectedredditaccountentry_actor_and_more.py │ │ │ ├── 0015_mergedentry.py │ │ │ ├── 0016_connectedactivitypubaccount.py │ │ │ ├── 0017_remove_community_tags_remove_instance_category_and_more.py │ │ │ ├── 0018_communityannotation_instanceannotation_and_more.py │ │ │ ├── 0019_remove_useraccount_reddit_account.py │ │ │ ├── 0020_alter_entry_feed_redditapplicationkey_and_more.py │ │ │ ├── 0021_invitetemplate_redditaccountauthorizedscope_and_more.py │ │ │ ├── 0022_redditordeclinedinvite.py │ │ │ ├── 0023_alter_instance_software.py │ │ │ ├── 0024_setinstanceasclosed_setinstanceasabandoned.py │ │ │ └── __init__.py │ │ ├── models │ │ │ ├── __init__.py │ │ │ ├── accounts.py │ │ │ ├── activitypub.py │ │ │ ├── cms.py │ │ │ ├── common.py │ │ │ ├── feeds.py │ │ │ ├── invites.py │ │ │ ├── mapping.py │ │ │ ├── mirroring.py │ │ │ ├── network.py │ │ │ └── reddit.py │ │ ├── serializers.py │ │ ├── settings.py │ │ ├── signals.py │ │ ├── static │ │ │ ├── fediverser │ │ │ │ ├── css │ │ │ │ │ └── site.css │ │ │ │ └── images │ │ │ │ │ ├── fediverse-logo.ico │ │ │ │ │ └── fediverse-logo.png │ │ │ └── flags │ │ │ │ ├── ad.svg │ │ │ │ ├── ae.svg │ │ │ │ ├── af.svg │ │ │ │ ├── ag.svg │ │ │ │ ├── ai.svg │ │ │ │ ├── al.svg │ │ │ │ ├── am.svg │ │ │ │ ├── ao.svg │ │ │ │ ├── aq.svg │ │ │ │ ├── ar.svg │ │ │ │ ├── arab.svg │ │ │ │ ├── as.svg │ │ │ │ ├── at.svg │ │ │ │ ├── au.svg │ │ │ │ ├── aw.svg │ │ │ │ ├── ax.svg │ │ │ │ ├── az.svg │ │ │ │ ├── ba.svg │ │ │ │ ├── bb.svg │ │ │ │ ├── bd.svg │ │ │ │ ├── be.svg │ │ │ │ ├── bf.svg │ │ │ │ ├── bg.svg │ │ │ │ ├── bh.svg │ │ │ │ ├── bi.svg │ │ │ │ ├── bj.svg │ │ │ │ ├── bl.svg │ │ │ │ ├── bm.svg │ │ │ │ ├── bn.svg │ │ │ │ ├── bo.svg │ │ │ │ ├── bq.svg │ │ │ │ ├── br.svg │ │ │ │ ├── bs.svg │ │ │ │ ├── bt.svg │ │ │ │ ├── bv.svg │ │ │ │ ├── bw.svg │ │ │ │ ├── by.svg │ │ │ │ ├── bz.svg │ │ │ │ ├── ca.svg │ │ │ │ ├── cc.svg │ │ │ │ ├── cd.svg │ │ │ │ ├── cefta.svg │ │ │ │ ├── cf.svg │ │ │ │ ├── cg.svg │ │ │ │ ├── ch.svg │ │ │ │ ├── ci.svg │ │ │ │ ├── ck.svg │ │ │ │ ├── cl.svg │ │ │ │ ├── cm.svg │ │ │ │ ├── cn.svg │ │ │ │ ├── co.svg │ │ │ │ ├── cp.svg │ │ │ │ ├── cr.svg │ │ │ │ ├── cu.svg │ │ │ │ ├── cv.svg │ │ │ │ ├── cw.svg │ │ │ │ ├── cx.svg │ │ │ │ ├── cy.svg │ │ │ │ ├── cz.svg │ │ │ │ ├── de.svg │ │ │ │ ├── dg.svg │ │ │ │ ├── dj.svg │ │ │ │ ├── dk.svg │ │ │ │ ├── dm.svg │ │ │ │ ├── do.svg │ │ │ │ ├── dz.svg │ │ │ │ ├── eac.svg │ │ │ │ ├── ec.svg │ │ │ │ ├── ee.svg │ │ │ │ ├── eg.svg │ │ │ │ ├── eh.svg │ │ │ │ ├── er.svg │ │ │ │ ├── es-ct.svg │ │ │ │ ├── es-ga.svg │ │ │ │ ├── es-pv.svg │ │ │ │ ├── es.svg │ │ │ │ ├── et.svg │ │ │ │ ├── eu.svg │ │ │ │ ├── fi.svg │ │ │ │ ├── fj.svg │ │ │ │ ├── fk.svg │ │ │ │ ├── fm.svg │ │ │ │ ├── fo.svg │ │ │ │ ├── fr.svg │ │ │ │ ├── ga.svg │ │ │ │ ├── gb-eng.svg │ │ │ │ ├── gb-nir.svg │ │ │ │ ├── gb-sct.svg │ │ │ │ ├── gb-wls.svg │ │ │ │ ├── gb.svg │ │ │ │ ├── gd.svg │ │ │ │ ├── ge.svg │ │ │ │ ├── gf.svg │ │ │ │ ├── gg.svg │ │ │ │ ├── gh.svg │ │ │ │ ├── gi.svg │ │ │ │ ├── gl.svg │ │ │ │ ├── gm.svg │ │ │ │ ├── gn.svg │ │ │ │ ├── gp.svg │ │ │ │ ├── gq.svg │ │ │ │ ├── gr.svg │ │ │ │ ├── gs.svg │ │ │ │ ├── gt.svg │ │ │ │ ├── gu.svg │ │ │ │ ├── gw.svg │ │ │ │ ├── gy.svg │ │ │ │ ├── hk.svg │ │ │ │ ├── hm.svg │ │ │ │ ├── hn.svg │ │ │ │ ├── hr.svg │ │ │ │ ├── ht.svg │ │ │ │ ├── hu.svg │ │ │ │ ├── ic.svg │ │ │ │ ├── id.svg │ │ │ │ ├── ie.svg │ │ │ │ ├── il.svg │ │ │ │ ├── im.svg │ │ │ │ ├── in.svg │ │ │ │ ├── io.svg │ │ │ │ ├── iq.svg │ │ │ │ ├── ir.svg │ │ │ │ ├── is.svg │ │ │ │ ├── it.svg │ │ │ │ ├── je.svg │ │ │ │ ├── jm.svg │ │ │ │ ├── jo.svg │ │ │ │ ├── jp.svg │ │ │ │ ├── ke.svg │ │ │ │ ├── kg.svg │ │ │ │ ├── kh.svg │ │ │ │ ├── ki.svg │ │ │ │ ├── km.svg │ │ │ │ ├── kn.svg │ │ │ │ ├── kp.svg │ │ │ │ ├── kr.svg │ │ │ │ ├── kw.svg │ │ │ │ ├── ky.svg │ │ │ │ ├── kz.svg │ │ │ │ ├── la.svg │ │ │ │ ├── lb.svg │ │ │ │ ├── lc.svg │ │ │ │ ├── li.svg │ │ │ │ ├── lk.svg │ │ │ │ ├── lr.svg │ │ │ │ ├── ls.svg │ │ │ │ ├── lt.svg │ │ │ │ ├── lu.svg │ │ │ │ ├── lv.svg │ │ │ │ ├── ly.svg │ │ │ │ ├── ma.svg │ │ │ │ ├── mc.svg │ │ │ │ ├── md.svg │ │ │ │ ├── me.svg │ │ │ │ ├── mf.svg │ │ │ │ ├── mg.svg │ │ │ │ ├── mh.svg │ │ │ │ ├── mk.svg │ │ │ │ ├── ml.svg │ │ │ │ ├── mm.svg │ │ │ │ ├── mn.svg │ │ │ │ ├── mo.svg │ │ │ │ ├── mp.svg │ │ │ │ ├── mq.svg │ │ │ │ ├── mr.svg │ │ │ │ ├── ms.svg │ │ │ │ ├── mt.svg │ │ │ │ ├── mu.svg │ │ │ │ ├── mv.svg │ │ │ │ ├── mw.svg │ │ │ │ ├── mx.svg │ │ │ │ ├── my.svg │ │ │ │ ├── mz.svg │ │ │ │ ├── na.svg │ │ │ │ ├── nc.svg │ │ │ │ ├── ne.svg │ │ │ │ ├── nf.svg │ │ │ │ ├── ng.svg │ │ │ │ ├── ni.svg │ │ │ │ ├── nl.svg │ │ │ │ ├── no.svg │ │ │ │ ├── np.svg │ │ │ │ ├── nr.svg │ │ │ │ ├── nu.svg │ │ │ │ ├── nz.svg │ │ │ │ ├── om.svg │ │ │ │ ├── pa.svg │ │ │ │ ├── pc.svg │ │ │ │ ├── pe.svg │ │ │ │ ├── pf.svg │ │ │ │ ├── pg.svg │ │ │ │ ├── ph.svg │ │ │ │ ├── pk.svg │ │ │ │ ├── pl.svg │ │ │ │ ├── pm.svg │ │ │ │ ├── pn.svg │ │ │ │ ├── pr.svg │ │ │ │ ├── ps.svg │ │ │ │ ├── pt.svg │ │ │ │ ├── pw.svg │ │ │ │ ├── py.svg │ │ │ │ ├── qa.svg │ │ │ │ ├── re.svg │ │ │ │ ├── ro.svg │ │ │ │ ├── rs.svg │ │ │ │ ├── ru.svg │ │ │ │ ├── rw.svg │ │ │ │ ├── sa.svg │ │ │ │ ├── sb.svg │ │ │ │ ├── sc.svg │ │ │ │ ├── sd.svg │ │ │ │ ├── se.svg │ │ │ │ ├── sg.svg │ │ │ │ ├── sh-ac.svg │ │ │ │ ├── sh-hl.svg │ │ │ │ ├── sh-ta.svg │ │ │ │ ├── sh.svg │ │ │ │ ├── si.svg │ │ │ │ ├── sj.svg │ │ │ │ ├── sk.svg │ │ │ │ ├── sl.svg │ │ │ │ ├── sm.svg │ │ │ │ ├── sn.svg │ │ │ │ ├── so.svg │ │ │ │ ├── sr.svg │ │ │ │ ├── ss.svg │ │ │ │ ├── st.svg │ │ │ │ ├── sv.svg │ │ │ │ ├── sx.svg │ │ │ │ ├── sy.svg │ │ │ │ ├── sz.svg │ │ │ │ ├── tc.svg │ │ │ │ ├── td.svg │ │ │ │ ├── tf.svg │ │ │ │ ├── tg.svg │ │ │ │ ├── th.svg │ │ │ │ ├── tj.svg │ │ │ │ ├── tk.svg │ │ │ │ ├── tl.svg │ │ │ │ ├── tm.svg │ │ │ │ ├── tn.svg │ │ │ │ ├── to.svg │ │ │ │ ├── tr.svg │ │ │ │ ├── tt.svg │ │ │ │ ├── tv.svg │ │ │ │ ├── tw.svg │ │ │ │ ├── tz.svg │ │ │ │ ├── ua.svg │ │ │ │ ├── ug.svg │ │ │ │ ├── um.svg │ │ │ │ ├── un.svg │ │ │ │ ├── us.svg │ │ │ │ ├── uy.svg │ │ │ │ ├── uz.svg │ │ │ │ ├── va.svg │ │ │ │ ├── vc.svg │ │ │ │ ├── ve.svg │ │ │ │ ├── vg.svg │ │ │ │ ├── vi.svg │ │ │ │ ├── vn.svg │ │ │ │ ├── vu.svg │ │ │ │ ├── wf.svg │ │ │ │ ├── ws.svg │ │ │ │ ├── xk.svg │ │ │ │ ├── xx.svg │ │ │ │ ├── ye.svg │ │ │ │ ├── yt.svg │ │ │ │ ├── za.svg │ │ │ │ ├── zm.svg │ │ │ │ └── zw.svg │ │ ├── tasks.py │ │ ├── templates │ │ │ ├── account │ │ │ │ ├── login.html │ │ │ │ └── signup.html │ │ │ ├── admin │ │ │ │ ├── redditaccount_change_form.html │ │ │ │ ├── redditcommunity_change_form.html │ │ │ │ └── redditsubmission_change_form.html │ │ │ ├── fediverser │ │ │ │ └── messages │ │ │ │ │ └── mirrored_post_disclosure.tmpl.md │ │ │ ├── invites │ │ │ │ ├── already_accepted.tmpl.txt │ │ │ │ ├── direct_message.tmpl.md │ │ │ │ └── expired.tmpl.txt │ │ │ └── portal │ │ │ │ ├── base.tmpl.html │ │ │ │ ├── change_request │ │ │ │ └── list.tmpl.html │ │ │ │ ├── community │ │ │ │ ├── create.tmpl.html │ │ │ │ ├── detail.tmpl.html │ │ │ │ └── list.tmpl.html │ │ │ │ ├── community_proposal │ │ │ │ └── create.tmpl.html │ │ │ │ ├── generic │ │ │ │ ├── base.tmpl.html │ │ │ │ ├── create.tmpl.html │ │ │ │ ├── detail.tmpl.html │ │ │ │ ├── form.tmpl.html │ │ │ │ └── listing.tmpl.html │ │ │ │ ├── home │ │ │ │ ├── header.tmpl.html │ │ │ │ ├── instance_finder.tmpl.html │ │ │ │ ├── invite.tmpl.html │ │ │ │ └── page.tmpl.html │ │ │ │ ├── instance │ │ │ │ ├── create.tmpl.html │ │ │ │ ├── detail.tmpl.html │ │ │ │ ├── header.tmpl.html │ │ │ │ ├── list.tmpl.html │ │ │ │ └── signup.tmpl.html │ │ │ │ ├── pages │ │ │ │ └── about.tmpl.html │ │ │ │ ├── partials │ │ │ │ ├── header.tmpl.html │ │ │ │ └── home_header.tmpl.html │ │ │ │ ├── reddit_community │ │ │ │ ├── create.tmpl.html │ │ │ │ ├── detail.tmpl.html │ │ │ │ ├── header.tmpl.html │ │ │ │ └── list.tmpl.html │ │ │ │ ├── reddit_submission │ │ │ │ └── detail.tmpl.html │ │ │ │ └── redditor │ │ │ │ ├── decline_invite.tmpl.html │ │ │ │ ├── detail.tmpl.html │ │ │ │ ├── header.tmpl.html │ │ │ │ └── list.tmpl.html │ │ ├── templatetags │ │ │ └── fediverser.py │ │ ├── tests │ │ │ ├── __init__.py │ │ │ ├── common.py │ │ │ ├── test_api.py │ │ │ ├── test_models.py │ │ │ └── test_views.py │ │ ├── urls.py │ │ └── views │ │ │ ├── __init__.py │ │ │ ├── ambassadors.py │ │ │ ├── auth.py │ │ │ ├── common.py │ │ │ ├── mapping.py │ │ │ ├── network.py │ │ │ ├── onboarding.py │ │ │ └── reddit.py │ └── lemmy │ │ ├── __init__.py │ │ ├── admin.py │ │ ├── apps.py │ │ ├── authentication.py │ │ ├── choices.py │ │ ├── forms.py │ │ ├── migrations │ │ ├── 0001_initial.py │ │ ├── 0002_upgrade_to_019.py │ │ ├── 0003_imagedetails_delete_imageupload.py │ │ └── __init__.py │ │ ├── models.py │ │ ├── serializers.py │ │ ├── services.py │ │ └── settings.py └── services │ ├── admin │ └── urls.py │ ├── base │ ├── __init__.py │ ├── asgi.py │ ├── celery.py │ ├── database_router.py │ ├── settings.py │ └── wsgi.py │ └── portal │ └── urls.py ├── poetry.lock ├── pyproject.toml ├── pytest.ini └── setup.cfg /.gitignore: -------------------------------------------------------------------------------- 1 | __pycache__ 2 | *.pyc 3 | 4 | # configuration files 5 | .env 6 | .env.* 7 | 8 | # Docker context data 9 | .docker 10 | 11 | # IDEs and OS files 12 | .idea 13 | .vscode 14 | .DS_Store 15 | -------------------------------------------------------------------------------- /.woodpecker/.build.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | publish: 3 | image: woodpeckerci/plugin-docker-buildx 4 | settings: 5 | repo: ${FEDIVERSER_DOCKER_IMAGE:-mushroomlabs/fediverser} 6 | platforms: linux/amd64,linux/arm64 7 | registry: ${FEDIVERSER_DOCKER_REGISTRY:-https://index.docker.io/v1/} 8 | username: 9 | from_secret: docker_registry_user 10 | password: 11 | from_secret: docker_registry_pass 12 | tags: 13 | - ${CI_COMMIT_TAG:-latest} 14 | - ${CI_COMMIT_BRANCH} 15 | 16 | when: 17 | branch: 18 | - master 19 | 20 | event: 21 | - manual 22 | - tag 23 | 24 | depends_on: 25 | - test 26 | -------------------------------------------------------------------------------- /.woodpecker/.test.yml: -------------------------------------------------------------------------------- 1 | steps: 2 | lint: 3 | image: python:3.12-slim 4 | commands: 5 | - pip install flake8 6 | - flake8 7 | 8 | test: 9 | image: python:3.12-slim 10 | environment: 11 | DJANGO_SETTINGS_MODULE: fediverser.services.base.settings 12 | FEDIVERSER_ROOT_URLCONF: fediverser.services.portal.urls 13 | FEDIVERSER_BROKER_URL: redis://broker:6379/0 14 | FEDIVERSER_CACHE_BACKEND: django_redis.cache.RedisCache 15 | FEDIVERSER_CACHE_LOCATION: redis://cache:6379/0 16 | FEDIVERSER_DATABASE_NAME: fediverser_ci 17 | FEDIVERSER_DATABASE_USER: fediverser 18 | FEDIVERSER_DATABASE_PASSWORD: fediverser_pass 19 | FEDIVERSER_DATABASE_HOST: database 20 | FEDIVERSER_EMAIL_MAILER_ADDRESS: noreply@gitlab.example.com 21 | FEDIVERSER_MEDIA_ROOT: /var/fediverser/media 22 | FEDIVERSER_STATIC_ROOT: /var/fediverser/static 23 | FEDIVERSER_SECRET_KEY: base-fediverser-secret-key 24 | LEMMY_DATABASE_ENGINE: django.db.backends.sqlite3 25 | LEMMY_DATABASE_NAME: ":memory:" 26 | 27 | commands: 28 | - apt update 29 | - apt install build-essential cargo -y 30 | - pip install poetry 31 | - poetry install 32 | - poetry run pytest --nomigrations 33 | volumes: 34 | - /var/run/docker.sock:/var/run/docker.sock 35 | 36 | services: 37 | cache: 38 | image: redis:7-alpine 39 | 40 | broker: 41 | image: redis:7-alpine 42 | 43 | database: 44 | image: postgres:16-alpine 45 | environment: 46 | POSTGRES_DB: fediverser_ci 47 | POSTGRES_USER: fediverser 48 | POSTGRES_PASSWORD: fediverser_pass 49 | 50 | when: 51 | event: 52 | - push 53 | - pull_request 54 | - tag 55 | - manual 56 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # Start with a Python image. 2 | FROM python:3.12-slim-bookworm AS fediverser_base 3 | 4 | # Install poetry 5 | RUN pip install poetry 6 | 7 | ENV PYTHONFAULTHANDLER=1 \ 8 | PYTHONUNBUFFERED=1 \ 9 | PIP_NO_CACHE_DIR=off \ 10 | PIP_DISABLE_PIP_VERSION_CHECK=on \ 11 | POETRY_VIRTUALENVS_CREATE=false \ 12 | POETRY_CACHE_DIR='/var/cache/pypoetry' 13 | 14 | RUN apt-get update 15 | RUN apt-get install build-essential cargo -y 16 | 17 | WORKDIR /app 18 | COPY ./pyproject.toml /app 19 | COPY ./poetry.lock /app 20 | 21 | RUN poetry install --without dev --no-root && rm -rf $POETRY_CACHE_DIR 22 | 23 | # Copy all relevant files into the image. 24 | COPY ./fediverser /app/fediverser 25 | COPY ./pytest.ini /app 26 | COPY ./README.md /app 27 | COPY ./setup.cfg /app/fediverse 28 | 29 | FROM fediverser_base AS release 30 | RUN poetry install --without dev 31 | 32 | FROM fediverser_base AS development 33 | RUN poetry install 34 | -------------------------------------------------------------------------------- /fediverser/apps/core/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushroomlabs/fediverser/d85b9c459b2bc976e955d34c577e2a1b4303ce57/fediverser/apps/core/__init__.py -------------------------------------------------------------------------------- /fediverser/apps/core/adapters.py: -------------------------------------------------------------------------------- 1 | from allauth.socialaccount.adapter import DefaultSocialAccountAdapter 2 | from django.urls import reverse 3 | 4 | 5 | class FediverserSocialAccountAdapter(DefaultSocialAccountAdapter): 6 | def get_connect_redirect_url(self, request, socialaccount): 7 | return reverse("fediverser-core:portal-home") 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class CoreConfig(AppConfig): 5 | default_auto_field = "django.db.models.BigAutoField" 6 | name = "fediverser.apps.core" 7 | 8 | def ready(self): 9 | from . import handlers # noqa 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/authentication.py: -------------------------------------------------------------------------------- 1 | from django.contrib.auth import get_user_model 2 | from django.contrib.auth.models import AnonymousUser 3 | from rest_framework.authentication import BaseAuthentication 4 | 5 | from fediverser.apps.lemmy.models import LocalUser 6 | 7 | User = get_user_model() 8 | 9 | 10 | class LemmyAuthentication(BaseAuthentication): 11 | def authenticate(self, request): 12 | token = request.COOKIES.get("jwt") 13 | local_user = ( 14 | LocalUser.objects.filter(logintoken__token=token).select_related("person").first() 15 | ) 16 | user = ( 17 | local_user 18 | and User.objects.filter(account__lemmy_local_username=local_user.person.name).first() 19 | or AnonymousUser() 20 | ) 21 | return (user, None) 22 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0002_person_useraccount_lemmy_account.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-17 20:11 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | import fediverser.apps.core.models.activitypub 6 | 7 | 8 | class Migration(migrations.Migration): 9 | dependencies = [ 10 | ("core", "0001_initial"), 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name="Person", 16 | fields=[ 17 | ( 18 | "id", 19 | models.BigAutoField( 20 | auto_created=True, primary_key=True, serialize=False, verbose_name="ID" 21 | ), 22 | ), 23 | ("name", models.CharField(max_length=255)), 24 | ( 25 | "instance", 26 | models.ForeignKey( 27 | on_delete=django.db.models.deletion.CASCADE, 28 | related_name="users", 29 | to="core.instance", 30 | ), 31 | ), 32 | ], 33 | bases=(models.Model, fediverser.apps.core.models.activitypub.ActorMixin), 34 | ), 35 | migrations.AddField( 36 | model_name="useraccount", 37 | name="lemmy_account", 38 | field=models.OneToOneField( 39 | blank=True, 40 | null=True, 41 | on_delete=django.db.models.deletion.SET_NULL, 42 | related_name="portal_account", 43 | to="core.person", 44 | ), 45 | ), 46 | ] 47 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0003_fediversedinstance_creates_reddit_mirror_bots_and_more.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-17 23:49 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | dependencies = [ 8 | ("core", "0002_person_useraccount_lemmy_account"), 9 | ] 10 | 11 | operations = [ 12 | migrations.AddField( 13 | model_name="fediversedinstance", 14 | name="creates_reddit_mirror_bots", 15 | field=models.BooleanField(default=False), 16 | ), 17 | migrations.AddField( 18 | model_name="fediversedinstance", 19 | name="portal_url", 20 | field=models.URLField(blank=True, null=True), 21 | ), 22 | ] 23 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0006_alter_fediversedinstance_portal_url.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-19 20:43 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | dependencies = [ 8 | ("core", "0005_rename_endorsemement_endorsemententry_endorsement_and_more"), 9 | ] 10 | 11 | operations = [ 12 | migrations.AlterField( 13 | model_name="fediversedinstance", 14 | name="portal_url", 15 | field=models.URLField(unique=True), 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0008_add_url.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-19 23:40 2 | 3 | from django.db import migrations 4 | 5 | from fediverser.apps.core.models.common import AP_SERVER_SOFTWARE 6 | 7 | 8 | def populate_person_url(apps, schema_editor): 9 | Person = apps.get_model("core", "Person") 10 | 11 | for person in Person.objects.all(): 12 | person.url = f"https://{person.instance.domain}/u/{person.name}" 13 | person.save() 14 | 15 | 16 | def populate_community_url(apps, schema_editor): 17 | Community = apps.get_model("core", "Community") 18 | 19 | for c in Community.objects.all(): 20 | c.url = { 21 | AP_SERVER_SOFTWARE.lemmy: f"https://{c.instance.domain}/c/{c.name}", 22 | AP_SERVER_SOFTWARE.kbin: f"https://{c.instance.domain}/m/{c.name}", 23 | }.get(c.instance.software) 24 | c.save() 25 | 26 | 27 | class Migration(migrations.Migration): 28 | dependencies = [ 29 | ("core", "0007_community_url_person_url_and_more"), 30 | ] 31 | 32 | operations = [ 33 | migrations.RunPython(populate_person_url, reverse_code=migrations.RunPython.noop), 34 | migrations.RunPython(populate_community_url, reverse_code=migrations.RunPython.noop), 35 | ] 36 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0009_break_recommendation_changefeed.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-19 23:46 2 | 3 | from django.db import migrations 4 | 5 | 6 | def split_recommendation_feed_entries(apps, schema_editor): 7 | RedditToCommunityRecommendationEntry = apps.get_model( 8 | "core", "RedditToCommunityRecommendationEntry" 9 | ) 10 | 11 | for entry in RedditToCommunityRecommendationEntry.objects.all(): 12 | entry.subreddit = entry.recommendation.subreddit 13 | entry.community = entry.recommendation.community 14 | entry.save() 15 | 16 | 17 | class Migration(migrations.Migration): 18 | dependencies = [ 19 | ("core", "0008_add_url"), 20 | ] 21 | 22 | operations = [ 23 | migrations.RunPython( 24 | split_recommendation_feed_entries, reverse_code=migrations.RunPython.noop 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0010_remove_reddittocommunityrecommendationentry_recommendation_and_more.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-19 23:50 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | dependencies = [ 9 | ("core", "0009_break_recommendation_changefeed"), 10 | ] 11 | 12 | operations = [ 13 | migrations.RemoveField( 14 | model_name="reddittocommunityrecommendationentry", 15 | name="recommendation", 16 | ), 17 | migrations.AlterField( 18 | model_name="reddittocommunityrecommendationentry", 19 | name="community", 20 | field=models.ForeignKey( 21 | on_delete=django.db.models.deletion.CASCADE, 22 | related_name="recommendation_feed_entries", 23 | to="core.community", 24 | ), 25 | ), 26 | migrations.AlterField( 27 | model_name="reddittocommunityrecommendationentry", 28 | name="subreddit", 29 | field=models.ForeignKey( 30 | on_delete=django.db.models.deletion.CASCADE, 31 | related_name="recommendation_feed_entries", 32 | to="core.redditcommunity", 33 | ), 34 | ), 35 | ] 36 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0011_alter_changefeedentry_options_alter_community_url_and_more.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-20 10:53 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | dependencies = [ 8 | ("core", "0010_remove_reddittocommunityrecommendationentry_recommendation_and_more"), 9 | ] 10 | 11 | operations = [ 12 | migrations.AlterModelOptions( 13 | name="changefeedentry", 14 | options={"verbose_name_plural": "Change Entries"}, 15 | ), 16 | migrations.AlterField( 17 | model_name="community", 18 | name="url", 19 | field=models.URLField(unique=True), 20 | ), 21 | migrations.AlterField( 22 | model_name="person", 23 | name="url", 24 | field=models.URLField(unique=True), 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0013_useraccount_tracked_subreddits.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-20 21:56 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | dependencies = [ 8 | ("core", "0012_setinstancecountry_instanceextrainformation_and_more"), 9 | ] 10 | 11 | operations = [ 12 | migrations.AddField( 13 | model_name="useraccount", 14 | name="tracked_subreddits", 15 | field=models.ManyToManyField(to="core.redditcommunity"), 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0015_mergedentry.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-22 16:26 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | import django.utils.timezone 6 | import model_utils.fields 7 | 8 | 9 | class Migration(migrations.Migration): 10 | dependencies = [ 11 | ("core", "0014_connectedredditaccountentry_actor_and_more"), 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name="MergedEntry", 17 | fields=[ 18 | ( 19 | "id", 20 | models.BigAutoField( 21 | auto_created=True, primary_key=True, serialize=False, verbose_name="ID" 22 | ), 23 | ), 24 | ( 25 | "created", 26 | model_utils.fields.AutoCreatedField( 27 | default=django.utils.timezone.now, editable=False, verbose_name="created" 28 | ), 29 | ), 30 | ( 31 | "modified", 32 | model_utils.fields.AutoLastModifiedField( 33 | default=django.utils.timezone.now, editable=False, verbose_name="modified" 34 | ), 35 | ), 36 | ( 37 | "entry", 38 | models.OneToOneField( 39 | on_delete=django.db.models.deletion.CASCADE, 40 | related_name="merge_info", 41 | to="core.changefeedentry", 42 | ), 43 | ), 44 | ], 45 | options={ 46 | "abstract": False, 47 | }, 48 | ), 49 | ] 50 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0016_connectedactivitypubaccount.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-22 21:57 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | dependencies = [ 9 | ("core", "0015_mergedentry"), 10 | ] 11 | 12 | operations = [ 13 | migrations.CreateModel( 14 | name="ConnectedActivityPubAccount", 15 | fields=[ 16 | ( 17 | "id", 18 | models.BigAutoField( 19 | auto_created=True, primary_key=True, serialize=False, verbose_name="ID" 20 | ), 21 | ), 22 | ( 23 | "account", 24 | models.ForeignKey( 25 | on_delete=django.db.models.deletion.CASCADE, 26 | related_name="connected_activitypub_accounts", 27 | to="core.useraccount", 28 | ), 29 | ), 30 | ( 31 | "actor", 32 | models.ForeignKey( 33 | on_delete=django.db.models.deletion.CASCADE, 34 | related_name="connected_portal_accounts", 35 | to="core.person", 36 | ), 37 | ), 38 | ], 39 | ), 40 | ] 41 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0019_remove_useraccount_reddit_account.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-07-25 11:59 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | dependencies = [ 8 | ("core", "0018_communityannotation_instanceannotation_and_more"), 9 | ] 10 | 11 | operations = [ 12 | migrations.RemoveField( 13 | model_name="useraccount", 14 | name="reddit_account", 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/0023_alter_instance_software.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.13 on 2024-08-23 18:48 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | dependencies = [ 8 | ("core", "0022_redditordeclinedinvite"), 9 | ] 10 | 11 | operations = [ 12 | migrations.AlterField( 13 | model_name="instance", 14 | name="software", 15 | field=models.CharField( 16 | choices=[ 17 | ("lemmy", "Lemmy"), 18 | ("kbin", "Kbin"), 19 | ("mbin", "Mbin"), 20 | ("mastodon", "Mastodon"), 21 | ("PieFed", "PieFed"), 22 | ], 23 | max_length=30, 24 | ), 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /fediverser/apps/core/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushroomlabs/fediverser/d85b9c459b2bc976e955d34c577e2a1b4303ce57/fediverser/apps/core/migrations/__init__.py -------------------------------------------------------------------------------- /fediverser/apps/core/models/__init__.py: -------------------------------------------------------------------------------- 1 | from .accounts import * # noqa 2 | from .activitypub import * # noqa 3 | from .cms import * # noqa 4 | from .common import * # noqa 5 | from .feeds import * # noqa 6 | from .invites import * # noqa 7 | from .mapping import * # noqa 8 | from .mirroring import * # noqa 9 | from .network import * # noqa 10 | from .reddit import * # noqa 11 | -------------------------------------------------------------------------------- /fediverser/apps/core/models/cms.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from modelcluster.fields import ParentalKey 3 | from wagtail.admin.panels import FieldPanel, InlinePanel, MultiFieldPanel 4 | from wagtail.blocks import RichTextBlock, TextBlock 5 | from wagtail.fields import StreamField 6 | from wagtail.images.blocks import ImageChooserBlock 7 | from wagtail.models import Orderable, Page 8 | from wagtail.search import index 9 | 10 | 11 | class Article(Page): 12 | content = StreamField( 13 | [ 14 | ("text", RichTextBlock()), 15 | ("image", ImageChooserBlock()), 16 | ("warning", TextBlock()), 17 | ("info", TextBlock()), 18 | ], 19 | use_json_field=True, 20 | ) 21 | 22 | search_fields = Page.search_fields + [ 23 | index.FilterField("content"), 24 | ] 25 | 26 | content_panels = Page.content_panels + [ 27 | FieldPanel("content"), 28 | InlinePanel("related", label="Related"), 29 | ] 30 | 31 | promote_panels = [ 32 | MultiFieldPanel(Page.promote_panels, "Common page configuration"), 33 | ] 34 | 35 | template = "portal/pages/article.tmpl.html" 36 | 37 | 38 | class PageRelatedLink(Orderable): 39 | page = ParentalKey(Article, on_delete=models.CASCADE, related_name="related") 40 | name = models.CharField(max_length=255) 41 | url = models.URLField() 42 | 43 | panels = [FieldPanel("name"), FieldPanel("url")] 44 | 45 | 46 | __all__ = ("Article", "PageRelatedLink") 47 | -------------------------------------------------------------------------------- /fediverser/apps/core/models/common.py: -------------------------------------------------------------------------------- 1 | import os 2 | import uuid 3 | 4 | import cloudscraper 5 | from django.db import models 6 | from django.utils.deconstruct import deconstructible 7 | from model_utils import Choices 8 | from tree_queries.models import TreeNode 9 | 10 | AP_CLIENT_REQUEST_HEADERS = {"Accept": "application/ld+json"} 11 | 12 | COMMUNITY_STATUSES = Choices( 13 | ("active", "Active"), 14 | ("inactive", "Inactive (Lingering community or Infrequent Content posted)"), 15 | ("abandoned", "Abandoned"), 16 | ("closed", "Closed"), 17 | ) 18 | 19 | INSTANCE_STATUSES = Choices( 20 | ("active", "Active"), 21 | ("abandoned", "Abandoned"), 22 | ("closed", "Closed"), 23 | ) 24 | 25 | AP_SERVER_SOFTWARE = Choices( 26 | ("lemmy", "Lemmy"), 27 | ("kbin", "Kbin"), 28 | ("mbin", "Mbin"), 29 | ("mastodon", "Mastodon"), 30 | ("PieFed", "PieFed"), 31 | ) 32 | 33 | 34 | def make_http_client(): 35 | return cloudscraper.create_scraper( 36 | browser={"browser": "firefox", "platform": "linux", "mobile": False} 37 | ) 38 | 39 | 40 | @deconstructible 41 | class UserUpload: 42 | def __init__(self, root_folder): 43 | self.root_folder = root_folder 44 | 45 | def __call__(self, instance, filename): 46 | return os.path.join(self.root_folder, str(uuid.uuid1()), filename) 47 | 48 | 49 | class Category(TreeNode): 50 | name = models.CharField(max_length=80, unique=True) 51 | description = models.TextField(null=True, blank=True) 52 | 53 | @property 54 | def full_name(self): 55 | return " : ".join([str(n.name) for n in self.ancestors(include_self=True)]) 56 | 57 | def __str__(self): 58 | return self.name 59 | 60 | class Meta: 61 | verbose_name_plural = "Categories" 62 | 63 | 64 | __all__ = ("Category",) 65 | -------------------------------------------------------------------------------- /fediverser/apps/core/signals.py: -------------------------------------------------------------------------------- 1 | from django.dispatch import Signal 2 | 3 | redditor_migrated = Signal(["reddit_username", "activitypub_actor"]) 4 | instance_closed = Signal(["instance"]) 5 | instance_abandoned = Signal(["instance"]) 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/fediverser/css/site.css: -------------------------------------------------------------------------------- 1 | dl dd { 2 | line-height: 2vh; 3 | display: flex; 4 | align-items: center; 5 | } 6 | 7 | img.flag { 8 | max-height: 1.2vh; 9 | margin: auto 0.5rem; 10 | } 11 | 12 | ul.instance-selector-options, ul.instance-selector-options ul { 13 | list-style-type: none; 14 | padding-left: 0; 15 | width: 100%; 16 | } 17 | 18 | ul.instance-selector-options li { 19 | padding-left: 0; 20 | } 21 | 22 | ul.instance-selector-options > li.option { 23 | border-bottom: 1px dashed #444; 24 | padding: 2vh 1rem; 25 | } 26 | 27 | ul.countries { 28 | display: flex; 29 | flex-wrap: wrap; 30 | } 31 | ul.instance-selector-options ul.countries li.country-option img { 32 | min-width: 80px; 33 | } 34 | 35 | li.topic { 36 | margin: 1vh auto; 37 | } 38 | 39 | li.country-option { 40 | min-width: 120px; 41 | display: flex; 42 | justify-content: center; 43 | align-items: center; 44 | border: hidden; 45 | cursor: pointer; 46 | } 47 | 48 | li.country-option figcaption{ 49 | text-align: center; 50 | display: none; 51 | } 52 | 53 | li.country-option.selected figcaption, li.country-option:hover figcaption { 54 | display: block; 55 | } 56 | 57 | ul.countries li.country-option img.flag { 58 | max-height: 4vh !important; 59 | margin: 1vh 3rem; 60 | filter: grayscale(75%); 61 | } 62 | 63 | ul.countries li.country-option.selected img.flag, ul.countries li.country-option:hover img.flag { 64 | filter: grayscale(0%) !important; 65 | } 66 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/fediverser/images/fediverse-logo.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushroomlabs/fediverser/d85b9c459b2bc976e955d34c577e2a1b4303ce57/fediverser/apps/core/static/fediverser/images/fediverse-logo.ico -------------------------------------------------------------------------------- /fediverser/apps/core/static/fediverser/images/fediverse-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mushroomlabs/fediverser/d85b9c459b2bc976e955d34c577e2a1b4303ce57/fediverser/apps/core/static/fediverser/images/fediverse-logo.png -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ae.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ag.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/am.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ao.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/at.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/au.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ax.svg: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/az.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ba.svg: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bb.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bd.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/be.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bf.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bg.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bh.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bi.svg: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bj.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bl.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bq.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bs.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bv.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/bw.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/by.svg: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ca.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cd.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cefta.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cf.svg: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cg.svg: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ch.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ci.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ck.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cl.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cm.svg: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cn.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/co.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cp.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cr.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cu.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cv.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cw.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/cz.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/de.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/dj.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/dk.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/dz.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ee.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/eh.svg: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/es-ct.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/es-pv.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/et.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/eu.svg: -------------------------------------------------------------------------------- 1 | 29 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/fi.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/fm.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/fo.svg: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/fr.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ga.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gb-eng.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gb-sct.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gb.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gd.svg: -------------------------------------------------------------------------------- 1 | 28 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ge.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gf.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gg.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gh.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gl.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gm.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gn.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gp.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gr.svg: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gw.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/gy.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/hk.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/hm.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/hn.svg: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/hu.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ic.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/id.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ie.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/il.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/in.svg: -------------------------------------------------------------------------------- 1 | 26 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/iq.svg: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/is.svg: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/it.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/jm.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/jo.svg: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/jp.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ke.svg: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/km.svg: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/kn.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/kp.svg: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/kr.svg: -------------------------------------------------------------------------------- 1 | 25 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/kw.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/la.svg: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/lc.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/lr.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ls.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/lt.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/lu.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/lv.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ly.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ma.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mc.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mf.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mg.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mh.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mk.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ml.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mm.svg: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mn.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mo.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mq.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mr.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mu.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/mv.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/my.svg: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/na.svg: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/nc.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ne.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ng.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/nl.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/no.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/np.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/nr.svg: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/nu.svg: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/nz.svg: -------------------------------------------------------------------------------- 1 | 37 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pa.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pe.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pg.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ph.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pk.svg: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pl.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pm.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pr.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ps.svg: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/pw.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/qa.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/re.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ro.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ru.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/rw.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sb.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sc.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sd.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/se.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sg.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sh.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/si.svg: -------------------------------------------------------------------------------- 1 | 19 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sj.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sk.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sl.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sn.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/so.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sr.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ss.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/st.svg: -------------------------------------------------------------------------------- 1 | 17 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/sy.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/td.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tf.svg: -------------------------------------------------------------------------------- 1 | 16 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tg.svg: -------------------------------------------------------------------------------- 1 | 15 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/th.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tj.svg: -------------------------------------------------------------------------------- 1 | 23 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tk.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tl.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tn.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/to.svg: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tr.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tt.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tv.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/tz.svg: -------------------------------------------------------------------------------- 1 | 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ua.svg: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/um.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/us.svg: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/uy.svg: -------------------------------------------------------------------------------- 1 | 29 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/uz.svg: -------------------------------------------------------------------------------- 1 | 31 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/vc.svg: -------------------------------------------------------------------------------- 1 | 9 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ve.svg: -------------------------------------------------------------------------------- 1 | 27 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/vn.svg: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/vu.svg: -------------------------------------------------------------------------------- 1 | 22 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/wf.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ws.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/xx.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/ye.svg: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/yt.svg: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/static/flags/za.svg: -------------------------------------------------------------------------------- 1 | 18 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/admin/redditaccount_change_form.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_form.html" %} 2 | 3 | {% block object-tools-items %} 4 |
Action | 8 |Status | 9 |Time | 10 |
---|---|---|
16 | {{ change_request.description }}
17 | |
18 | {{ change_request.status }} | 19 |{{ change_request.status_changed }} | 20 |
Community | 9 |Alternative to | 10 |Category | 11 |
---|---|---|
17 |
18 |
19 | {{ community.fqdn }}
20 |
21 | 🌐
22 |
23 | |
24 | 25 | {% for recommendation in community.recommendations.all %} 26 | {{ recommendation.subreddit }} 27 | {% empty %} 28 | No recommendation yet 29 | {% endfor %} 30 | | 31 |{{ community.category.full_name|default:"Not categorized yet" }} | 32 |
15 | Congrats! You are one click away from joining our ranks of people who are 16 | tired of social media networks controlled by soulless 17 | corporations. By joining now, you'll be able to: 18 |
19 | 20 |If this instance is for users of a country or common region, you can indicate it here:
29 | 42 | {% else %} 43 |You already recommended a country! Please check your activity page for more information.
44 | {% endif %} 45 | 46 | {% endblock %} 47 | 48 | {% block extra_js %} 49 | {{ block.super }} 50 | {{ status_picker_form.media.js }} 51 | {{ category_picker_form.media.js }} 52 | {% endblock %} 53 | 54 | {% block extra_css %} 55 | {{ block.super }} 56 | {{ status_picker_form.media.css }} 57 | {{ category_picker_form.media.css }} 58 | {% endblock %} 59 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/instance/header.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/partials/header.tmpl.html" %} 2 | {% load wagtailadmin_tags fediverser %} 3 | 4 | {% block right_column %} 5 | 18 | {% endblock %} 19 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/instance/list.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/generic/listing.tmpl.html" %} 2 | {% load wagtailadmin_tags %} 3 | 4 | {% block listing %} 5 |Domain | 9 |Software | 10 |Status | 11 |
---|---|---|
17 |
18 |
19 | {{ instance.domain }}
20 |
21 | 🌐
22 |
23 | |
24 | {{ instance.get_software_display }} | 25 |{{ instance.annotation.get_status_display|default:"Unknown" }} | 26 |
Please fill the form below to complete your registration on {{ fediversed_lemmy_configuration.instance.domain }}.
7 | {% endblock %} 8 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/pages/about.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/base.tmpl.html" %} 2 | 3 | {% block main_contents %} 4 | 5 |We believe that the big traditional social media platforms have 6 | become to big for their own good. Too much power concentrated in the 7 | hands of a few oligarchs in Silicon Valley is leading to an internet 8 | that is closed and not with the best interests of the people in 9 | mind. 10 |
11 | 12 |We also understand that network effects make it difficult for 13 | people to leave those platforms. For better or worse, these 14 | platforms still have an incredible amount of amazing content and it 15 | is hard to let go of the connections that hundreds of millions of 16 | people have made it through these platforms throughout the years. 17 |
18 | 19 |20 | Fediverser wants to solve these problems with a two-pronged 21 | approach. First, we want to make the content from the current 22 | platforms available in the equivalent fediverse platform. After the 23 | content is available, more people will be able to make the switch. 24 |
25 | 26 | {% endblock %} 27 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/partials/home_header.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/partials/header.tmpl.html" %} 2 | {% load wagtailadmin_tags %} 3 | 4 | {% block right_column %} 5 | 12 | {% endblock %} 13 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/reddit_community/create.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/generic/form.tmpl.html" %} 2 | 3 | {% block actions %} 4 | 5 | {% endblock %} 6 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/reddit_community/header.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/partials/header.tmpl.html" %} 2 | {% load wagtailadmin_tags fediverser %} 3 | 4 | {% block right_column %} 5 | 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/reddit_submission/detail.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/base.tmpl.html" %} 2 | {% load humanize fediverser %} 3 | 4 | 5 | {% block main_header %} 6 | {% with object.title|truncatewords:6 as title %} 7 | {% include "portal/redditor/header.tmpl.html" with title=title subtitle=page_subtitle action_url=None action_text=None redditor=object.author %} 8 | {% endwith %} 9 | {% endblock %} 10 | 11 | {% block main_content %} 12 |7 | We at {{ site.Portal.name }} are committed to help get people out of legacy social networks and into the party of the Open Social Web. However, we understand that this might not be for everyone. Please fill in the form below to decline our invite and we will not be sending any more messages. 8 |
9 | {% endblock %} 10 | 11 | {% block actions %} 12 | 13 | {% endblock %} 14 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/redditor/detail.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/base.tmpl.html" %} 2 | {% load humanize fediverser %} 3 | 4 | {% block main_header %} 5 | {% include "portal/redditor/header.tmpl.html" with title=page_title subtitle=page_subtitle action_url=header_action_url action_text=header_action_label icon=header_icon redditor=object %} 6 | {% endblock %} 7 | 8 | 9 | {% block main_content %} 10 |38 | 39 |
40 | {% endblock %} 41 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/redditor/header.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/partials/header.tmpl.html" %} 2 | {% load wagtailadmin_tags fediverser %} 3 | 4 | {% block right_column %} 5 | {% if user.is_authenticated and redditor|should_be_invited %} 6 | 23 | {% endif %} 24 | {% endblock %} 25 | -------------------------------------------------------------------------------- /fediverser/apps/core/templates/portal/redditor/list.tmpl.html: -------------------------------------------------------------------------------- 1 | {% extends "portal/generic/listing.tmpl.html" %} 2 | {% load humanize %} 3 | 4 | {% block listing %} 5 |Name | 9 |Fediverse Identities | 10 |Actions | 11 |
---|---|---|
17 |
18 |
19 | {{ redditor.username }}
20 |
21 |
22 | |
23 | 24 | | 25 |