Skip to content

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 - CharField
  • last_name - CharField
  • email - EmailField

Validation:

  • Email uniqueness (excluding current user)
  • Email format validation