def get_relationship_type_dropdown(request): """ Get relationship type dropdown data. Should be an AJAX POST. :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ if request.method == 'POST': if request.is_ajax(): dd_final = {} for type_ in RelationshipTypes.values(sort=True): dd_final[type_] = type_ result = {'types': dd_final} return HttpResponse(json.dumps(result), content_type="application/json") else: error = "Expected AJAX" return render_to_response("error.html", {"error" : error }, RequestContext(request)) else: error = "Expected POST" return render_to_response("error.html", {"error" : error }, RequestContext(request))
def get_relationship_type_dropdown(request): """ Get relationship type dropdown data. Should be an AJAX POST. :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ if request.method == 'POST': if request.is_ajax(): dd_final = {} for type_ in RelationshipTypes.values(sort=True): dd_final[type_] = type_ result = {'types': dd_final} return HttpResponse(json.dumps(result), content_type="application/json") else: error = "Expected AJAX" return render_to_response("error.html", {"error": error}, RequestContext(request)) else: error = "Expected POST" return render_to_response("error.html", {"error": error}, RequestContext(request))
def add_new_relationship(request): """ Add a new relationship. Should be an AJAX POST. :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ if request.method == 'POST' and request.is_ajax(): form = ForgeRelationshipForm(request.POST) choices = [(c, c) for c in RelationshipTypes.values(sort=True)] form.fields['forward_relationship'].choices = choices if form.is_valid(): cleaned_data = form.cleaned_data results = forge_relationship( type_=cleaned_data.get('forward_type'), id_=cleaned_data.get('forward_value'), right_type=cleaned_data.get('reverse_type'), right_id=cleaned_data.get('dest_id'), rel_type=cleaned_data.get('forward_relationship'), rel_date=cleaned_data.get('relationship_date'), user=request.user.username, rel_reason=cleaned_data.get('rel_reason'), rel_confidence=cleaned_data.get('rel_confidence'), get_rels=True) if results['success'] == True: relationship = { 'type': cleaned_data.get('forward_type'), 'value': cleaned_data.get('forward_value') } message = render_to_string( 'relationships_listing_widget.html', { 'relationship': relationship, 'nohide': True, 'relationships': results['relationships'] }, RequestContext(request)) result = {'success': True, 'message': message} else: message = "Error adding relationship: %s" % results['message'] result = {'success': False, 'message': message} else: message = "Invalid Form: %s" % form.errors form = form.as_table() result = {'success': False, 'form': form, 'message': message} return HttpResponse(json.dumps(result), content_type="application/json") else: error = "Expected AJAX POST" return render_to_response("error.html", {"error": error}, RequestContext(request))
def __init__(self, *args, **kwargs): super(ForgeRelationshipForm, self).__init__(*args, **kwargs) self.fields["forward_type"].choices = self.fields["reverse_type"].choices = [ (c, c) for c in sorted(settings.CRIPTS_TYPES.iterkeys()) ] self.fields["forward_relationship"].choices = [(c, c) for c in RelationshipTypes.values(sort=True)] self.fields["forward_relationship"].initial = RelationshipTypes.RELATED_TO self.fields["rel_confidence"].choices = [ ("unknown", "unknown"), ("low", "low"), ("medium", "medium"), ("high", "high"), ] self.fields["rel_confidence"].initial = "medium"
def __init__(self, *args, **kwargs): super(ForgeRelationshipForm, self).__init__(*args, **kwargs) self.fields['forward_type'].choices = self.fields['reverse_type'].choices = [ (c, c) for c in sorted(settings.CRIPTS_TYPES.iterkeys()) ] self.fields['forward_relationship'].choices = [ (c, c) for c in RelationshipTypes.values(sort=True) ] self.fields['forward_relationship'].initial = RelationshipTypes.RELATED_TO self.fields['rel_confidence'].choices = [('unknown', 'unknown'), ('low', 'low'), ('medium', 'medium'), ('high', 'high')] self.fields['rel_confidence'].initial = 'medium'
def add_new_relationship(request): """ Add a new relationship. Should be an AJAX POST. :param request: Django request object (Required) :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ if request.method == 'POST' and request.is_ajax(): form = ForgeRelationshipForm(request.POST) choices = [(c,c) for c in RelationshipTypes.values(sort=True)] form.fields['forward_relationship'].choices = choices if form.is_valid(): cleaned_data = form.cleaned_data; results = forge_relationship(type_=cleaned_data.get('forward_type'), id_=cleaned_data.get('forward_value'), right_type=cleaned_data.get('reverse_type'), right_id=cleaned_data.get('dest_id'), rel_type=cleaned_data.get('forward_relationship'), rel_date=cleaned_data.get('relationship_date'), user=request.user.username, rel_reason=cleaned_data.get('rel_reason'), rel_confidence=cleaned_data.get('rel_confidence'), get_rels=True) if results['success'] == True: relationship = {'type': cleaned_data.get('forward_type'), 'value': cleaned_data.get('forward_value')} message = render_to_string('relationships_listing_widget.html', {'relationship': relationship, 'nohide': True, 'relationships': results['relationships']}, RequestContext(request)) result = {'success': True, 'message': message} else: message = "Error adding relationship: %s" % results['message'] result = {'success': False, 'message': message} else: message = "Invalid Form: %s" % form.errors form = form.as_table() result = {'success': False, 'form': form, 'message': message} return HttpResponse(json.dumps(result), content_type="application/json") else: error = "Expected AJAX POST" return render_to_response("error.html", {"error" : error }, RequestContext(request))
from django.conf import settings from django import forms from cripts.core import form_consts from cripts.core.forms import add_bucketlist_to_form, add_ticket_to_form from cripts.core.widgets import CalWidget from cripts.core.handlers import get_source_names, get_item_names from cripts.core.user_tools import get_user_organization from cripts.vocabulary.events import EventTypes from cripts.vocabulary.relationships import RelationshipTypes relationship_choices = [(c, c) for c in RelationshipTypes.values(sort=True)] class EventForm(forms.Form): """ Django form for creating a new Event. """ error_css_class = 'error' required_css_class = 'required' title = forms.CharField(widget=forms.TextInput, required=True) event_type = forms.ChoiceField(required=True, widget=forms.Select) description = forms.CharField(widget=forms.Textarea(attrs={ 'cols': '30', 'rows': '3' }), required=False) occurrence_date = forms.DateTimeField( widget=CalWidget(format=settings.PY_DATETIME_FORMAT,
def add_new_event(title, description, event_type, source, method, reference, date, analyst, bucket_list=None, ticket=None, related_id=None, related_type=None, relationship_type=None): """ Add a new Event to CRIPTs. :param title: Event title. :type title: str :param description: Event description. :type description: str :param event_type: Event type. :type event_type: str :param source: The source which provided this information. :type source: str :param method: THe method of acquiring this information. :type method: str :param reference: Reference to this data. :type reference: str :param date: Date of acquiring this data. :type date: datetime.datetime :param analyst: The user adding this Event. :type analyst: str :param bucket_list: The bucket(s) to associate with this Event. :type: str :param ticket: Ticket to associate with this event. :type ticket: str :param related_id: ID of object to create relationship with :type related_id: str :param related_type: Type of object to create relationship with :type related_type: str :param relationship_type: Type of relationship to create. :type relationship_type: str :returns: dict with keys "success" (boolean) and "message" (str) """ result = dict() if not source: return {'success': False, 'message': "Missing source information."} event = Event() event.title = title event.description = description event.set_event_type(event_type) s = create_embedded_source(name=source, reference=reference, method=method, analyst=analyst, date=date) event.add_source(s) if bucket_list: event.add_bucket_list(bucket_list, analyst) if ticket: event.add_ticket(ticket, analyst) related_obj = None if related_id: related_obj = class_from_id(related_type, related_id) if not related_obj: retVal['success'] = False retVal['message'] = 'Related Object not found.' return retVal try: event.save(username=analyst) if related_obj and event and relationship_type: relationship_type = RelationshipTypes.inverse( relationship=relationship_type) event.add_relationship(related_obj, relationship_type, analyst=analyst, get_rels=False) event.save(username=analyst) # run event triage event.reload() run_triage(event, analyst) message = ('<div>Success! Click here to view the new event: <a href=' '"%s">%s</a></div>' % (reverse('cripts.events.views.view_event', args=[event.id ]), title)) result = { 'success': True, 'message': message, 'id': str(event.id), 'object': event } except ValidationError, e: result = {'success': False, 'message': e}
from django.conf import settings from django import forms from cripts.core import form_consts from cripts.core.forms import add_bucketlist_to_form, add_ticket_to_form from cripts.core.widgets import CalWidget from cripts.core.handlers import get_source_names, get_item_names from cripts.core.user_tools import get_user_organization from cripts.vocabulary.events import EventTypes from cripts.vocabulary.relationships import RelationshipTypes relationship_choices = [(c, c) for c in RelationshipTypes.values(sort=True)] class EventForm(forms.Form): """ Django form for creating a new Event. """ error_css_class = "error" required_css_class = "required" title = forms.CharField(widget=forms.TextInput, required=True) event_type = forms.ChoiceField(required=True, widget=forms.Select) description = forms.CharField(widget=forms.Textarea(attrs={"cols": "30", "rows": "3"}), required=False) occurrence_date = forms.DateTimeField( widget=CalWidget( format=settings.PY_DATETIME_FORMAT, attrs={"class": "datetimeclass", "size": "25", "id": "id_occurrence_date"}, ), input_formats=settings.PY_FORM_DATETIME_FORMATS,
def add_new_event(title, description, event_type, source, method, reference, date, analyst, bucket_list=None, ticket=None, related_id=None, related_type=None, relationship_type=None): """ Add a new Event to CRIPTs. :param title: Event title. :type title: str :param description: Event description. :type description: str :param event_type: Event type. :type event_type: str :param source: The source which provided this information. :type source: str :param method: THe method of acquiring this information. :type method: str :param reference: Reference to this data. :type reference: str :param date: Date of acquiring this data. :type date: datetime.datetime :param analyst: The user adding this Event. :type analyst: str :param bucket_list: The bucket(s) to associate with this Event. :type: str :param ticket: Ticket to associate with this event. :type ticket: str :param related_id: ID of object to create relationship with :type related_id: str :param related_type: Type of object to create relationship with :type related_type: str :param relationship_type: Type of relationship to create. :type relationship_type: str :returns: dict with keys "success" (boolean) and "message" (str) """ result = dict() if not source: return {'success': False, 'message': "Missing source information."} event = Event() event.title = title event.description = description event.set_event_type(event_type) s = create_embedded_source(name=source, reference=reference, method=method, analyst=analyst, date=date) event.add_source(s) if bucket_list: event.add_bucket_list(bucket_list, analyst) if ticket: event.add_ticket(ticket, analyst) related_obj = None if related_id: related_obj = class_from_id(related_type, related_id) if not related_obj: retVal['success'] = False retVal['message'] = 'Related Object not found.' return retVal try: event.save(username=analyst) if related_obj and event and relationship_type: relationship_type=RelationshipTypes.inverse(relationship=relationship_type) event.add_relationship(related_obj, relationship_type, analyst=analyst, get_rels=False) event.save(username=analyst) # run event triage event.reload() run_triage(event, analyst) message = ('<div>Success! Click here to view the new event: <a href=' '"%s">%s</a></div>' % (reverse('cripts.events.views.view_event', args=[event.id]), title)) result = {'success': True, 'message': message, 'id': str(event.id), 'object': event} except ValidationError, e: result = {'success': False, 'message': e}