Skip to content
This repository was archived by the owner on Jul 22, 2022. It is now read-only.

Repository files navigation

Submitify

Build StatusCoverage StatusPyPI

Multi-format submission accepting platform.

Quick start

  1. Add "submitify" to your INSTALLED_APPS setting like this:

    INSTALLED_APPS = [
    ...
    'submitify',
    ]
    

    Ensure that you have django.contrib.auth added as an application as well.

  2. Include the submitify URLconf in your project urls.py like this:

    url(r'^submitify/', include('submitify.urls')),
    
  3. Run python manage.py migrate to create the submitify models.

  4. Start the development server.

  5. Visit http://127.0.0.1:8000/submitify/ to see the app.

Notes for the pluggable application

The standalone application is basically ready to use as one would normally run a Django app, but the pluggable application has a few more things to note.

  • Submitify hooks into the Django permissions system. Creating a new call-for-submissions requires the submitify.add_call permission, so publishers should be added to a group with that permission.

  • Submitify is designed, loosely, for a site using Bootstrap, so elements are classed as such, but this is designed to not be a hard requirement. To that end, some styles are defined within the templates.

  • Applications must implement the ability to add users as readers/invite users as writers. A form for doing such is available at submitify.forms.InviteForm. The view should look something like this:

    def view_user(request, username=None):
    user = get_object_or_404(User, username=username)
    ...
    invite_calls_reading = []
    invite_calls_writing = []
    if request.user.is_authenticated and request.user != user:
    invite_calls_reading = request.user.submitify_calls_editing.filter(
    ~Q(readers__in=[user]),
    status__in=[
    Call.NOT_OPEN_YET,
    Call.OPEN
    ])
    invite_calls_writing = request.user.submitify_calls_reading.filter(
    status__in=[
    Call.NOT_OPEN_YET,
    Call.OPEN,
    ],
    invite_only=True)
    invite_reader_form = InviteForm(initial={
    'user': user,
    })
    invite_reader_form.fields['calls'].queryset = invite_calls_reading
    invite_writer_form = InviteForm(initial={
    'user': user,
    })
    invite_writer_form.fields['calls'].queryset = invite_calls_writing
    return render(request, 'view_profile.html', {
    ...
    'invite_reader_form': (invite_reader_form if
    len(invite_calls_reading) > 0 else None),
    'invite_writer_form': (invite_writer_form if
    len(invite_calls_writing) > 0 else None),
    })
    

    The template should look something like:

    {% if invite_reader_form %}
    <form method="post" action="{% url 'submitify:invite_reader' %}">
    {% csrf_token %}
    {{ invite_reader_form.user }}
    <div class="form-group">
    <label for="id_calls">Invite user as a reader to...</label>
    {{ invite_reader_form.calls }}
    </div>
    </form>
    {% endif %}
    {% if invite_writer_form %}
    <form method="post" action="{% url 'submitify:invite_writer' %}">
    {% csrf_token %}
    {{ invite_writer_form.user }}
    <div class="form-group">
    <label for="id_calls">Invite user as a writer to...</label>
    {{ invite_writer_form.calls }}
    </div>
    </form>
    {% endif %}
    

    See the standalone application for more information.

Further information

Source, issues, and further information:
GitHub
Author
The OpenFurry Contributors

About

Multi-format submission accepting platform.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages