Forms Reference¶
Version: Arctyk ITSM v0.6.0+
Last Updated: January 2026
Reference for Django forms used in Arctyk ITSM.
TicketForm¶
Location: tickets.forms.TicketForm
Model: Ticket
Purpose: Create and edit tickets
Fields:
title- CharField(max_length=200, required)description- CharField(widget=TinyMCE, required)status- ChoiceField(choices from STATUS_CHOICES)priority- ChoiceField(choices: low/medium/high/critical)issue_type- ChoiceField(choices: bug/task/story/epic)assignee- ModelChoiceField(User, required=False)project- ModelChoiceField(Project, required=False)tags- TagField(required=False)response_target- DateTimeField(required=False) (v0.6.0+)resolution_target- DateTimeField(required=False) (v0.6.0+)is_recurring- BooleanField(required=False)recurrence_interval- ChoiceField(required=False)next_occurrence- DateTimeField(required=False)
Validation:
- Enforces workflow transitions via
clean_status() - Required fields validation
- HTML sanitization via Bleach
- Status category validation
Usage:
form = TicketForm(request.POST)
if form.is_valid():
ticket = form.save(commit=False)
ticket.reporter = request.user
ticket.save()
CommentForm (v0.6.0+)¶
Location: tickets.forms.CommentForm
Model: Comment
Purpose: Create and edit ticket comments
Fields:
content- CharField(widget=TinyMCE, required)comment_type- ChoiceField(choices: public/internal, default='public')
Validation:
- HTML sanitization
- Content length validation
- Comment type permission check
Usage:
form = CommentForm(request.POST)
if form.is_valid():
comment = form.save(commit=False)
comment.ticket = ticket
comment.author = request.user
comment.save()
TicketFilterForm¶
Location: tickets.forms.TicketFilterForm
Purpose: Filter ticket list views
Fields:
status- MultipleChoiceField(required=False)priority- MultipleChoiceField(required=False)assignee- ModelChoiceField(User, required=False)project- ModelChoiceField(Project, required=False)tags- CharField(required=False)search- CharField(required=False)
Usage:
form = TicketFilterForm(request.GET)
if form.is_valid():
queryset = queryset.filter(**form.cleaned_data)
ProjectForm¶
Location: projects.forms.ProjectForm
Model: Project
Purpose: Create and edit projects
Fields:
name- CharField(max_length=255, required)description- CharField(widget=Textarea, required=False)
Validation:
- Name uniqueness
- Length validation
AssetForm¶
Location: inventory.forms.AssetForm
Model: Asset
Purpose: Create and edit IT assets
Fields:
name- CharField(required)asset_type- ChoiceField(required)serial_number- CharField(required)status- ChoiceField(required)location- CharField(required=False)assigned_to- ModelChoiceField(User, required=False)purchase_date- DateField(required=False)warranty_expiry- DateField(required=False)
Validation:
- Serial number uniqueness
- Date field validation
UserProfileForm¶
Location: users.forms.UserProfileForm
Model: User
Purpose: Edit user profile settings
Fields:
first_name- CharFieldlast_name- CharFieldemail- EmailField
Validation:
- Email uniqueness (excluding current user)
- Email format validation