def get_events(request): "Return a list of EventRenderers from available Tasks and Milestones" events = [] query = (Q(start_date__isnull=False)|Q(end_date__isnull=False)) & Q(status__hidden=False) tasks = Object.filter_by_request(request, manager=Task.objects.filter(query)) for task in tasks: if task.end_date: event = EventRenderer(task.name, task.start_date, task.end_date, task.get_absolute_url()) else: event = EventRenderer(task.name, None, task.start_date, task.get_absolute_url()) event.css_class += " projects-calendar-task" events.append(event) query = (Q(start_date__isnull=False)|Q(end_date__isnull=False)) & Q(status__hidden=False) milestones = Object.filter_by_request(request, manager=Milestone.objects.filter(query)) for milestone in milestones: name = " " + milestone.name if milestone.end_date: event = EventRenderer(name, milestone.start_date, milestone.end_date, milestone.get_absolute_url()) else: event = EventRenderer(name, None, milestone.start_date, milestone.get_absolute_url()) event.css_class += " projects-calendar-milestone" events.append(event) return events
def __init__(self, user, *args, **kwargs): super(EquityForm, self ).__init__(*args, **kwargs) self.fields['equity_type'].label = _("Equity type") self.fields['issue_price'].label = _("Issue price") self.fields['sell_price'].label = _("Sell price") self.fields['issuer'].label = _("Issuer") self.fields['owner'].label = _("Owner") self.fields['amount'].label = _("Quantity") self.fields['purchase_date'].label = _("Purchase date") self.fields['details'].label = _("Details") self.fields['owner'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['owner'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['owner'].widget.attrs.update({'popuplink': reverse('identities_contact_add')}) self.fields['issuer'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['issuer'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['issuer'].widget.attrs.update({'popuplink': reverse('identities_contact_add')}) try: conf = ModuleSetting.get_for_module('maker.finance', 'my_company')[0] self.fields['issuer'].initial = long(conf.value) except Exception: pass self.fields['purchase_date'].widget.attrs.update({'class': 'datepicker'})
def __init__(self, user, project_id, *args, **kwargs): super(MilestoneForm, self ).__init__(*args, **kwargs) self.fields['name'].label = _("Name") self.fields['project'].label = _("Project") self.fields['project'].queryset = Object.filter_permitted(user, Project.objects, mode='x') if project_id: self.fields['project'].initial = project_id self.fields['status'].label = _("Status") self.fields['status'].queryset = Object.filter_permitted(user, TaskStatus.objects, mode='x') try: conf = ModuleSetting.get_for_module('maker.projects', 'default_task_status')[0] self.fields['status'].initial = long(conf.value) except Exception: pass # Set datepicker self.fields['start_date'].label = _("Start date") self.fields['start_date'].widget.attrs.update({'class': 'datetimepicker'}) self.fields['end_date'].label = _("End date") self.fields['end_date'].widget.attrs.update({'class': 'datetimepicker'}) if 'instance' in kwargs: instance = kwargs['instance'] if instance.start_date: self.fields['start_date'].widget.attrs.update({'initial': instance.start_date.strftime('%s')}) if instance.end_date: self.fields['end_date'].widget.attrs.update({'initial': instance.end_date.strftime('%s')}) self.fields['details'].label = _("Details")
def folder_view(request, folder_id, response_format='html'): "Single folder view page" folder = get_object_or_404(Folder, pk=folder_id) if not request.user.get_profile().has_permission(folder): return user_denied(request, message="You don't have access to this Folder") query = Q( object_type='maker.documents.models.Document') | Q( object_type='maker.documents.models.File') | Q( object_type='maker.documents.models.WebLink') query = query & (Q(document__folder=folder) | Q(file__folder=folder) | Q(weblink__folder=folder)) if request.GET: query = query & _get_filter_query(request.GET) objects = Object.filter_by_request(request, Object.objects.filter(query).order_by('-last_updated')) # objects = objects.order_by('-last_updated') else: objects = Object.filter_by_request(request, Object.objects.filter(query).order_by('-last_updated')) # objects = objects.order_by('-last_updated') subfolders = Folder.objects.filter(parent=folder) filters = FilterForm(request.user.get_profile(), 'title', request.GET) context = _get_default_context(request) context.update({'folder': folder, 'objects':objects, 'subfolders':subfolders, 'filters':filters}) return render_to_response('documents/folder_view', context, context_instance=RequestContext(request), response_format=response_format)
def queue_delete(request, queue_id, response_format='html'): "Queue delete" queue = get_object_or_404(TicketQueue, pk=queue_id) if not request.user.get_profile().has_permission(queue, mode='w'): return user_denied(request, message="You don't have access to this Queue") if request.POST: if 'delete' in request.POST: if 'trash' in request.POST: queue.trash = True queue.save() else: queue.delete() return HttpResponseRedirect(reverse('services_settings_view')) elif 'cancel' in request.POST: return HttpResponseRedirect(reverse('services_queue_view', args=[queue.id])) query = Q(queue=queue) & Q(status__hidden=False) tickets = Object.filter_by_request(request, Ticket.objects.filter(query)) subqueues = Object.filter_by_request(request, TicketQueue.objects.filter(parent=queue)) context = _get_default_context(request) context.update({'queue': queue, 'subqueues': subqueues, 'tickets': tickets}) return render_to_response('services/queue_delete', context, context_instance=RequestContext(request), response_format=response_format)
def __init__(self, user, *args, **kwargs): super(LiabilityForm, self ).__init__(*args, **kwargs) self.fields['name'].label = _("Name") self.fields['category'].label = _("Category") self.fields['source'].label = _("Source") self.fields['target'].label = _("Target") self.fields['account'].label = _("Bank Account") self.fields['due_date'].label = _("Due date") self.fields['value_currency'].label = _("Currency") self.fields['value_currency'].widget.attrs.update({'popuplink': reverse('finance_currency_add')}) self.fields['value_currency'].initial = Currency.objects.get(is_default=True) self.fields['value_display'].label = _("Value") self.fields['details'].label = _("Details") self.fields['target'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['target'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['target'].widget.attrs.update({'popuplink': reverse('identities_contact_add')}) self.fields['account'].queryset = Object.filter_permitted(user, Account.objects) try: conf = ModuleSetting.get_for_module('maker.finance', 'default_account')[0] self.fields['account'].initial = long(conf.value) except Exception: pass self.fields['due_date'].widget.attrs.update({'class': 'datepicker'}) del self.fields['source']
def __init__(self, user, *args, **kwargs): "Sets allowed values" super(QueueForm, self).__init__(*args, **kwargs) manager = TicketQueue.objects if 'instance' in kwargs: instance = kwargs['instance'] manager = manager.exclude(Q(parent=instance) & Q(pk=instance.id)) self.fields['parent'].queryset = Object.filter_permitted(user, manager, mode='x') self.fields['default_service'].queryset = Object.filter_permitted(user, Service.objects, mode='x') self.fields['waiting_time'].help_text = "seconds" self.fields['name'].label = _("Name") self.fields['active'].label = _("Active") self.fields['parent'].label = _("Parent") self.fields['default_ticket_status'].label = _("Default ticket status") self.fields['default_ticket_priority'].label = _("Default ticket priority") self.fields['default_service'].label = _("Default service") self.fields['waiting_time'].label = _("Waiting time") self.fields['next_queue'].queryset = Object.filter_permitted(user, TicketQueue.objects, mode='x') self.fields['next_queue'].label = _("Next queue") self.fields['ticket_code'].label = _("Ticket code") self.fields['message_stream'].label = _("Message stream") self.fields['message_stream'].widget.attrs.update({'popuplink': reverse('messaging_stream_add')}) self.fields['details'].label = _("Details")
def task_time_slot_add(request, task_id, response_format='html'): "Time slot add to preselected task" task = get_object_or_404(Task, pk=task_id) if not request.user.get_profile().has_permission(task, mode='x'): return user_denied(request, message="You don't have access to this Task") if request.POST: task_time_slot = TaskTimeSlot(task=task, time_to=datetime.now(), user=request.user.get_profile()) form = TaskTimeSlotForm(request.user.get_profile(), task_id, request.POST, instance=task_time_slot) if 'cancel' in request.POST: return HttpResponseRedirect(reverse('projects_task_view', args=[task.id])) elif form.is_valid(): task_time_slot = form.save() task_time_slot.set_user_from_request(request) return HttpResponseRedirect(reverse('projects_task_view', args=[task.id])) else: form = TaskTimeSlotForm(request.user.get_profile(), task_id) subtasks = Object.filter_by_request(request, Task.objects.filter(parent=task)) time_slots = Object.filter_by_request(request, TaskTimeSlot.objects.filter(task=task)) context = _get_default_context(request) context.update({'form': form, 'task': task, 'subtasks': subtasks, 'time_slots': time_slots}) return render_to_response('projects/task_time_add', context, context_instance=RequestContext(request), response_format=response_format)
def task_delete(request, task_id, response_format='html'): "Task delete" task = get_object_or_404(Task, pk=task_id) if not request.user.get_profile().has_permission(task, mode='w'): return user_denied(request, message="You don't have access to this Task") if request.POST: if 'delete' in request.POST: if 'trash' in request.POST: task.trash = True task.save() else: task.delete() return HttpResponseRedirect(reverse('projects_index')) elif 'cancel' in request.POST: return HttpResponseRedirect(reverse('projects_task_view', args=[task.id])) subtasks = Object.filter_by_request(request, Task.objects.filter(parent=task)) time_slots = Object.filter_by_request(request, TaskTimeSlot.objects.filter(task=task)) context = _get_default_context(request) context.update({'task': task, 'subtasks': subtasks, 'time_slots': time_slots}) return render_to_response('projects/task_delete', context, context_instance=RequestContext(request), response_format=response_format)
def __init__(self, user, skip=[], *args, **kwargs): super(LeadFilterForm, self).__init__(*args, **kwargs) self.fields['contact'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['contact'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['contact'].required = False self.fields['contact'].label = _("Contact") self.fields['products_interested'].queryset = Object.filter_permitted(user, Product.objects) self.fields['products_interested'].required = False self.fields['products_interested'].help_text = "" self.fields['products_interested'].label = _("Products interested") self.fields['source'].queryset = Object.filter_permitted(user, SaleSource.objects.filter(active=True)) self.fields['source'].required = False self.fields['source'].label = _("Source") self.fields['status'].queryset = Object.filter_permitted(user, SaleStatus.objects.filter(use_leads=True)) self.fields['status'].required = False self.fields['status'].label = _("Status") self.fields['contact_method'].required = False self.fields['contact_method'].label = _("Contact method")
def queue_view(request, queue_id, response_format='html'): "Queue view" queue = get_object_or_404(TicketQueue, pk=queue_id) if not request.user.get_profile().has_permission(queue): return user_denied(request, message="You don't have access to this Queue") query = Q(queue=queue) if request.GET: if 'status' in request.GET and request.GET['status']: query = query & _get_filter_query(request.GET) else: query = query & Q(status__hidden=False) & _get_filter_query(request.GET) else: query = query & Q(status__hidden=False) tickets = Object.filter_by_request(request, Ticket.objects.filter(query)) filters = FilterForm(request.user.get_profile(), 'queue', request.GET) subqueues = Object.filter_by_request(request, TicketQueue.objects.filter(parent=queue)) context = _get_default_context(request) context.update({'queue': queue, 'subqueues': subqueues, 'filters': filters, 'tickets': tickets}) return render_to_response('services/queue_view', context, context_instance=RequestContext(request), response_format=response_format)
def __init__(self, user, *args, **kwargs): super(SubscriptionForm, self).__init__(*args, **kwargs) del self.fields['cycle_end'] self.fields['product'].queryset = Object.filter_permitted(user, Product.objects) self.fields['product'].label = _("Product") self.fields['client'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['client'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['client'].widget.attrs.update({'popuplink': reverse('identities_contact_add')}) self.fields['client'].label = _("Client") self.fields['start'].widget.attrs.update({'class': 'datepicker'}) self.fields['start'].label = _("Start") self.fields['expiry'].widget.attrs.update({'class': 'datepicker'}) self.fields['expiry'].label = _("Expiry") if 'instance' in kwargs: self.instance = kwargs['instance'] self.fields['start'].widget.attrs['readonly'] = True del kwargs['instance'] self.fields['active'].initial = True self.fields['active'].label = _("Active") self.fields['cycle_period'].label = _("Cycle period") self.fields['details'].label = _("Details")
def __init__(self, user, skip=[], *args, **kwargs): super(OrderFilterForm, self).__init__(*args, **kwargs) if 'status' in skip: del self.fields['status'] else: self.fields['status'].queryset = Object.filter_permitted(user, SaleStatus.objects.filter(use_sales=True)) self.fields['status'].required = False self.fields['status'].label = _("Status") self.fields['paid'].label = _("Payment Status") self.fields['client'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['client'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['client'].required = False self.fields['client'].label = _("Client") self.fields['source'].queryset = Object.filter_permitted(user, SaleSource.objects.filter(active=True)) self.fields['source'].required = False self.fields['source'].label = _("Source") self.fields['assigned'].label = _("Assigned") self.fields['assigned'].widget.attrs.update({'class': 'multicomplete', 'callback': reverse('identities_ajax_user_lookup')}) if 'assigned' in skip: del self.fields['assigned'] else: self.fields['assigned'].help_text = ""
def __init__(self, user, order, *args, **kwargs): super(OrderedProductForm, self).__init__(*args, **kwargs) self.fields['subscription'].queryset = Object.filter_permitted(user, Subscription.objects) self.fields['subscription'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('sales_ajax_subscription_lookup')}) self.fields['subscription'].widget.attrs.update({'popuplink': reverse('sales_subscription_add')}) self.fields['subscription'].label = _("Subscription") self.fields['product'].queryset = Object.filter_permitted(user, Product.objects.filter(active=True)) if user.is_admin('maker.sales'): self.fields['product'].widget.attrs.update({'popuplink': reverse('sales_product_add')}) self.fields['product'].label = _("Product") try: conf = ModuleSetting.get_for_module('maker.sales', 'default_order_product')[0] # AJAX to set the initial rate as the currency converted value of product sell price self.fields['product'].initial = long(conf.value) except: pass # Tax self.fields['tax'].widget.attrs.update({'popuplink': reverse('finance_tax_add')}) # TODO: rate # self.fields['rate_display'].label = _("Rate") # self.fields['rate_display'].help_text = order.currency.code self.fields['quantity'].label = _("Quantity") self.fields['quantity'].initial = 1 self.fields['discount'].label = _("Discount") self.fields['discount'].help_text = "%"
def __init__(self, user, parent=None, *args, **kwargs): super(ProductForm, self).__init__(*args, **kwargs) self.fields['supplier'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['supplier'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['supplier'].widget.attrs.update({'popuplink': reverse('identities_contact_add')}) self.fields['supplier'].label = _("Supplier") self.fields['active'].initial = True self.fields['active'].label = _("Active") manager = Product.objects.filter(active=True) if 'instance' in kwargs: instance = kwargs['instance'] manager = manager.exclude(Q(parent=instance) & Q(pk=instance.id)) self.fields['parent'].queryset = Object.filter_permitted(user, manager, mode='x') if parent: self.fields['parent'].initial = get_object_or_404(Product, pk=parent) self.fields['parent'].label = _("Parent") self.fields['product_type'].label = _("Product type") self.fields['code'].label = _("Code") self.fields['supplier_code'].label = _("Supplier code") self.fields['buy_price'].label = _("Buy price") self.fields['sell_price'].label = _("Sell price") self.fields['stock_quantity'].label = _("Stock quantity") self.fields['runout_action'].label = _("Runout action") self.fields['details'].label = _("Details")
def __init__(self, user, *args, **kwargs): "Sets choices and initial value" super(SettingsForm, self).__init__(*args, **kwargs) self.fields['my_company'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['my_company'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['default_account'].queryset = Object.filter_permitted(user, Account.objects) # Translation self.fields['default_currency'].label=_('Base Currency') self.fields['my_company'].label=_('My Company') self.fields['default_account'].label=_('Default Account') try: self.fields['default_currency'].widget.attrs.update({'popuplink': reverse('finance_currency_add')}) self.fields['default_currency'].queryset = Currency.objects.all() self.fields['default_currency'].initial = Currency.objects.get(is_default=True) except Exception: pass try: conf = ModuleSetting.get_for_module('maker.finance', 'my_company')[0] my_company = Contact.objects.get(pk=long(conf.value)) self.fields['my_company'].initial = my_company.id except Exception: pass try: conf = ModuleSetting.get_for_module('maker.finance', 'default_account')[0] default_account = Account.objects.get(pk=long(conf.value)) self.fields['default_account'].initial = default_account.id except Exception: pass
def __init__(self, user, lead, *args, **kwargs): super(OpportunityForm, self).__init__(*args, **kwargs) self.fields['lead'].queryset = Object.filter_permitted(user, Lead.objects) self.fields['contact'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['contact'].widget.attrs.update({'popuplink': reverse('identities_contact_add')}) self.fields['contact'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) self.fields['products_interested'].queryset = Object.filter_permitted(user, Product.objects) self.fields['products_interested'].widget.attrs.update({'popuplink': reverse('sales_product_add')}) try: conf = ModuleSetting.get_for_module('maker.sales', 'default_order_product')[0] self.fields['products_interested'].initial = [long(conf.value)] except: pass self.fields['source'].queryset = Object.filter_permitted(user, SaleSource.objects.filter(active=True)) self.fields['status'].queryset = Object.filter_permitted(user, SaleStatus.objects.filter(use_opportunities=True)) self.fields['assigned'].widget.attrs.update({'class': 'multicomplete', 'callback': reverse('identities_ajax_user_lookup')}) try: conf = ModuleSetting.get_for_module('maker.sales', 'default_opportunity_status')[0] self.fields['status'].initial = long(conf.value) except: pass if lead: self.fields['lead'].initial = lead.id self.fields['contact'].initial = lead.contact_id self.fields['products_interested'].initial = [i.id for i in lead.products_interested.only('id')] self.fields['source'].initial = lead.source_id self.fields['assigned'].initial = [i.id for i in lead.assigned.only('id')] else: del self.fields['lead'] self.fields['products_interested'].help_text = "" self.fields['assigned'].help_text = "" self.fields['expected_date'].widget.attrs.update({'class': 'datepicker'}) self.fields['closed_date'].widget.attrs.update({'class': 'datepicker'}) self.fields['contact'].label = _("Contact") self.fields['products_interested'].label = _("Products interested") self.fields['source'].label = _("Source") self.fields['expected_date'].label = _("Expected date") self.fields['closed_date'].label = _("Closed date") self.fields['assigned'].label = _("Assigned to") self.fields['amount_display'].label = _("Amount") self.fields['amount_currency'].label = _("Currency") self.fields['amount_currency'].widget.attrs.update({'popuplink': reverse('finance_currency_add')}) self.fields['amount_currency'].initial = Currency.objects.get(is_default=True) self.fields['probability'].label = _("Probability") self.fields['status'].label = _("Status") self.fields['details'].label = _("Details")
def _get_default_context(request): "Returns default context as a dict()" projects = Object.filter_by_request(request, Project.objects) statuses = Object.filter_by_request(request, TaskStatus.objects) massform = MassActionForm(request.user.get_profile()) context = {'projects': projects, 'statuses': statuses, 'massform': massform} return context
def _find_duplicates(resource_id, item, user): "Finds matching items" dups = [] item_id = None if 'id' in item.raw: item_id = item.id.raw # Finding previously syncd items if item_id: key = '#' + unicode(resource_id) + '.' + unicode(item_id) + '#' dups = Object.filter_permitted(user, Contact.objects).filter(nuvius_resource__contains=key) if dups: return dups # Finding equivalent items # If name and (email or phone) are the same - it's same person if item.name: candidates = Object.filter_permitted(user, Contact.objects).filter(name=item.name.raw).distinct() dups = [] if candidates and (item.email or item.phone): for candidate in candidates: matching_emails = [] emails = candidate.contactvalue_set.filter(field__field_type='email') if item.email.raw and emails: matching_emails = emails.filter(value__in=item.email.raw) phones = candidate.contactvalue_set.filter(field__field_type='phone') matching_phones = [] if item.phone.raw and phones: matching_phones = phones.filter(value__in=item.phone.raw) # If anything matches or if we have no emails or no phones at all - add to duplicates if matching_emails or matching_phones or (not emails and not phones): dups.append(candidate) elif not candidates and (item.email or item.phone): query = Q() if item.email: query = query & Q(contactvalue__value__in=item.email.raw) if item.phone: query = query | Q(contactvalue__value__in=item.phone.raw) dups = Object.filter_permitted(user, Contact.objects).filter(query).distinct() else: dups = candidates elif item.email or item.phone: query = Q() if item.email: query = query & Q(contactvalue__value__in=item.email.raw) if item.phone: query = query & Q(contactvalue__value__in=item.phone.raw) dups = Object.filter_permitted(user, Contact.objects).filter(query) return dups
def __init__(self, user, skip=[], *args, **kwargs): super(LiabilityFilterForm, self).__init__(*args, **kwargs) if 'due_date_from' in skip: del self.fields['due_date_from'] else: self.fields['due_date_from'] = forms.DateField(label=_("Due Date From:"), required = False) self.fields['due_date_from'].widget.attrs.update({'class': 'datepicker'}) if 'due_date_to' in skip: del self.fields['due_date_to'] else: self.fields['due_date_to'] = forms.DateField(label=_("Due Date To:"), required = False) self.fields['due_date_to'].widget.attrs.update({'class': 'datepicker'}) if 'category' in skip: del self.fields['category'] else: self.fields['category'].queryset = Object.filter_permitted(user, Category.objects) self.fields['category'].label = _("Category") self.fields['category'].help_text = "" self.fields['category'].required = False if 'source' in skip: del self.fields['source'] else: self.fields['source'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['source'].label = _("Source") self.fields['source'].help_text = "" self.fields['source'].required = False self.fields['source'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) if 'target' in skip: del self.fields['target'] else: self.fields['target'].queryset = Object.filter_permitted(user, Contact.objects) self.fields['target'].required = False self.fields['target'].label = _("Target") self.fields['target'].help_text = "" self.fields['target'].widget.attrs.update({'class': 'autocomplete', 'callback': reverse('identities_ajax_contact_lookup')}) if 'account' in skip: del self.fields['account'] else: self.fields['account'].queryset = Object.filter_permitted(user, Account.objects) self.fields['account'].required = False self.fields['account'].label = _("Account") self.fields['account'].help_text = ""
def __init__(self, user, *args, **kwargs): super(ItemTypeForm, self).__init__(*args, **kwargs) self.fields['name'].label = _("Name") self.fields['parent'].label = _("Parent") self.fields['fields'].label = _("Fields") self.fields['details'].label = _("Details") self.fields['fields'].queryset = Object.filter_permitted(user, ItemField.objects.all(), mode='x') self.fields['fields'].help_text = '' self.fields['parent'].queryset = Object.filter_permitted(user, ItemType.objects.all().exclude(pk=self.instance.id), mode='x')
def group_view(request, group_id, response_format="html"): "Group view" group = get_object_or_404(Group, pk=group_id) contacts = Object.filter_by_request(request, Contact.objects.filter(related_user=group).order_by("name")) members = User.objects.filter(Q(default_group=group) | Q(other_groups=group)).distinct() subgroups = Group.objects.filter(parent=group) types = Object.filter_by_request(request, ContactType.objects.order_by("name")) return render_to_response( "identities/group_view", {"group": group, "subgroups": subgroups, "members": members, "contacts": contacts, "types": types}, context_instance=RequestContext(request), response_format=response_format, )
def __init__(self, user, *args, **kwargs): if 'instance' in kwargs: self.instance = kwargs['instance'] del kwargs['instance'] super(MassActionForm, self).__init__(*args, **kwargs) self.fields['status'].queryset = Object.filter_permitted(user, ItemStatus.objects, mode='x') self.fields['location'].queryset = Object.filter_permitted(user, Location.objects, mode='x') self.fields['status'].label = _('Status') self.fields['location'].label = _('Location') self.fields['delete'] = forms.ChoiceField(label=_("Delete"), choices=(('', '-----'), ('delete', _('Delete Completely')), ('trash', _('Move to Trash'))), required=False)
def category_delete(request, knowledgeCategory_id, response_format='html'): "Knowledge Category delete" category = get_object_or_404(KnowledgeCategory, pk=knowledgeCategory_id) items = Object.filter_permitted(manager=KnowledgeItem.objects, user=request.user.get_profile(), mode='r') if not request.user.get_profile().has_permission(category, mode="w"): return user_denied(request, message="You don't have access to this Knowledge Category") if request.POST: if 'delete' in request.POST: if 'trash' in request.POST: category.trash = True category.save() else: category.delete() return HttpResponseRedirect(reverse('knowledge_index')) elif 'cancel' in request.POST: return HttpResponseRedirect(reverse('knowledge_category_view', args=[category.treepath])) context = _get_default_context(request) context.update({'category': category, 'items':items}) return render_to_response('knowledge/category_delete', context, context_instance=RequestContext(request), response_format=response_format)
def folder_edit(request, knowledgeType_id, response_format='html'): "Knowledge folder edit page" folder = get_object_or_404(KnowledgeFolder, pk=knowledgeType_id) items = Object.filter_by_request(request, manager=KnowledgeItem.objects.filter(folder=folder)) if not request.user.get_profile().has_permission(folder, mode="w"): return user_denied(request, message="You don't have access to this Knowledge Type") if request.POST: if not 'cancel' in request.POST: form = KnowledgeFolderForm(request.user.get_profile(), None, request.POST, instance=folder) if form.is_valid(): folder = form.save() return HttpResponseRedirect(reverse('knowledge_folder_view', args=[folder.treepath])) else: return HttpResponseRedirect(reverse('knowledge_folder_view', args=[folder.treepath])) else: form = KnowledgeFolderForm(request.user.get_profile(), None, instance=folder) context = _get_default_context(request) context.update({'items': items, 'folder': folder, 'form': form}) return render_to_response('knowledge/folder_edit', context, context_instance=RequestContext(request), response_format=response_format)
def category_edit(request, knowledgeCategory_id, response_format='html'): "Knowledge category edit page" category = get_object_or_404(KnowledgeCategory, pk=knowledgeCategory_id) items = Object.filter_permitted(manager=KnowledgeItem.objects, user=request.user.get_profile(), mode='r') if not request.user.get_profile().has_permission(category, mode="w"): return user_denied(request, message="You don't have access to this Knowledge Category") if request.POST: if not 'cancel' in request.POST: form = KnowledgeCategoryForm(request.POST, instance=category) if form.is_valid(): category = form.save() return HttpResponseRedirect(reverse('knowledge_category_view', args=[category.treepath])) else: return HttpResponseRedirect(reverse('knowledge_category_view', args=[category.treepath])) else: form = KnowledgeCategoryForm(instance=category) context = _get_default_context(request) context.update({'form': form, 'category': category, 'items':items}) return render_to_response('knowledge/category_edit', context, context_instance=RequestContext(request), response_format=response_format)
def item_edit(request, knowledgeItem_id, response_format='html'): "Knowledge item edit page" item = get_object_or_404(KnowledgeItem, pk=knowledgeItem_id) items = Object.filter_permitted(manager=KnowledgeItem.objects, user=request.user.get_profile(), mode='r') if not request.user.get_profile().has_permission(item, mode="w"): return user_denied(request, message="You don't have access to this Knowledge Item") if request.POST: if not 'cancel' in request.POST: form = KnowledgeItemForm(request.user.get_profile(), None, request.POST, instance=item) if form.is_valid(): item = form.save() return HttpResponseRedirect(reverse('knowledge_item_view', args=[item.folder.treepath, item.treepath])) else: return HttpResponseRedirect(reverse('knowledge_item_view', args=[item.folder.treepath, item.treepath])) else: form = KnowledgeItemForm(request.user.get_profile(), None, instance=item) context = _get_default_context(request) context.update({'form': form, 'item':item, 'items':items}) return render_to_response('knowledge/item_edit', context, context_instance=RequestContext(request), response_format=response_format)
def item_add_folder(request, folderPath, response_format='html'): "Add new knowledge item to preselected folder" items = Object.filter_permitted(manager=KnowledgeItem.objects, user=request.user.get_profile(), mode='r') try: folder = KnowledgeFolder.by_path(folderPath) knowledgeType_id = folder.id except KnowledgeFolder.DoesNotExist: raise Http404 if request.POST: if not 'cancel' in request.POST: item = KnowledgeItem() form = KnowledgeItemForm(request.user.get_profile(), knowledgeType_id, request.POST, instance=item) if form.is_valid(): item = form.save() item.set_user_from_request(request) return HttpResponseRedirect(reverse('knowledge_item_view', args=[item.folder.treepath, item.treepath])) else: return HttpResponseRedirect(reverse('knowledge')) else: form = KnowledgeItemForm(request.user.get_profile(), knowledgeType_id) context = _get_default_context(request) context.update({'items': items, 'form':form, 'folder':folder}) return render_to_response('knowledge/item_add_folder', context, context_instance=RequestContext(request), response_format=response_format)
def item_add(request, response_format='html'): "Add new knowledge item" items = Object.filter_permitted(manager=KnowledgeItem.objects, user=request.user.get_profile(), mode='r') if request.POST: if not 'cancel' in request.POST: item = KnowledgeItem() form = KnowledgeItemForm(request.user.get_profile(), None, request.POST, instance=item) if form.is_valid(): item = form.save() item.set_user_from_request(request) return HttpResponseRedirect(reverse('knowledge_item_view', args=[item.folder.treepath, item.treepath])) else: return HttpResponseRedirect(reverse('knowledge')) else: form = KnowledgeItemForm(request.user.get_profile(), None) context = _get_default_context(request) context.update({'items': items, 'form':form}) return render_to_response('knowledge/item_add', context, context_instance=RequestContext(request), response_format=response_format)
def folder_delete(request, knowledgeType_id, response_format='html'): "Type delete" folder = get_object_or_404(KnowledgeFolder, pk=knowledgeType_id) items = Object.filter_by_request(request, manager=KnowledgeItem.objects.filter(folder=folder)) if not request.user.get_profile().has_permission(folder, mode='w'): return user_denied(request, message="You don't have access to this Knowledge Type") if request.POST: if 'delete' in request.POST: if 'trash' in request.POST: folder.trash = True folder.save() else: folder.delete() return HttpResponseRedirect(reverse('knowledge_index')) elif 'cancel' in request.POST: return HttpResponseRedirect(reverse('knowledge_folder_view', args=[folder.treepath])) context = _get_default_context(request) context.update({'items': items, 'folder':folder}) return render_to_response('knowledge/folder_delete', context, context_instance=RequestContext(request), response_format=response_format)