diff --git a/moderator/moderate/forms.py b/moderator/moderate/forms.py index 96ff1f5..35d7b92 100644 --- a/moderator/moderate/forms.py +++ b/moderator/moderate/forms.py @@ -98,6 +98,7 @@ def __init__(self, *args, **kwargs): self.fields["name"].required = True else: self.fields["moderators"].initial = User.objects.filter(id=self.user.pk) + del self.fields["archived"] def clean(self): """ @@ -132,6 +133,7 @@ class Meta: "body", "is_moderated", "moderators", + "archived", "users_can_vote", ] widgets = ( diff --git a/moderator/moderate/templates/archive.jinja b/moderator/moderate/templates/archive.jinja index a4ebf09..9f7a282 100644 --- a/moderator/moderate/templates/archive.jinja +++ b/moderator/moderate/templates/archive.jinja @@ -16,6 +16,20 @@ {{ event.questions.count() }} questions asked + {% if event.created_by == request.user or request.user in event.moderators.all() %} +
+
+ edit +
+ {% if event.created_by == request.user %} +
+ delete +
+ {% endif %} +
+ {% endif %} {% endfor %} diff --git a/moderator/moderate/templates/create_event.jinja b/moderator/moderate/templates/create_event.jinja index 025911a..4e73876 100644 --- a/moderator/moderate/templates/create_event.jinja +++ b/moderator/moderate/templates/create_event.jinja @@ -63,7 +63,7 @@ {% endif %} - {% if user.is_superuser %} + {% if user_can_edit %}
{{ event_form.users_can_vote }}
+ {% if event %} +
+ {{ event_form.archived }} + +
+ {% endif %}
{{ event_form.moderators.label_tag() }} {{ event_form.moderators }} diff --git a/moderator/moderate/views.py b/moderator/moderate/views.py index 40e5819..245bb91 100644 --- a/moderator/moderate/views.py +++ b/moderator/moderate/views.py @@ -64,7 +64,7 @@ def archive(request): # Filter out NDA events for non-NDA users if not request.user.userprofile.is_nda_member and not request.user.is_superuser: q_args["is_nda"] = False - events_list = Event.objects.filter(**q_args) + events_list = Event.objects.filter(**q_args).order_by("-created_at") paginator = Paginator(events_list, settings.ITEMS_PER_PAGE) page = request.GET.get("page") @@ -83,11 +83,15 @@ def edit_event(request, slug=None): """Creates a new event.""" user = request.user query_args = [] + user_can_edit = False if not user.is_superuser: query_args = [Q(created_by=user) | Q(moderators=user)] event = get_object_or_404(Event, *query_args, slug=slug) if slug else None + # if there is an event or no slug, the user can edit + if event or not slug: + user_can_edit = True event_form = EventForm(request.POST or None, instance=event, user=user) if event_form.is_valid(): @@ -102,6 +106,8 @@ def edit_event(request, slug=None): else: msg = "Event successfully created." messages.success(request, msg) + if e.archived: + return redirect(reverse("archive")) return redirect(reverse("main")) ctx = { @@ -109,6 +115,7 @@ def edit_event(request, slug=None): "event_form": event_form, "event": event, "profile": user.userprofile, + "user_can_edit": user_can_edit, } return render(request, "create_event.jinja", ctx)