예제 #1
0
def fire_activity(sender, **kwargs):
    instance = kwargs.get('instance', None)
    created = kwargs.get('created', False)
    
    is_page = isinstance(instance, Page)
    is_comment = isinstance(instance, PageComment)
    if created and (is_page or is_comment):
        # Send notification.
        if is_comment and instance.page.slug == 'sign-up':
            instance.send_sign_up_notification()
            return
        else:
            send_content_notification(instance, is_comment)
        # Fire activity.
        activity = Activity(
            actor=instance.author,
            verb='http://activitystrea.ms/schema/1.0/post',
            target_object=instance,
        )
        activity.target_project = instance.project
        activity.save()
    elif not created and is_page and instance.publish:
        if instance.deleted:
            verb = 'http://activitystrea.ms/schema/1.0/delete'
        else:
            verb = 'http://activitystrea.ms/schema/1.0/update'
        activity = Activity(
            actor=instance.author,
            verb=verb,
            target_object=instance,
        )
        activity.target_project = instance.project
        activity.save()
예제 #2
0
파일: tasks.py 프로젝트: mkcode/lernanta
 def create_activity_entry(self, entry, sender, activity_prefix=None):
     """Create activity feed entries for the provided feed entry."""
     object_type = None
     if activity_prefix:
         object_type = self.get_namespaced_attr(entry, activity_prefix,
                                                'object-type')
     if not object_type:
         object_type = object_types['article']
     title = getattr(entry, 'title', None)
     uri = getattr(entry, 'link', None)
     if not title:
         title = entry.get('title')
     if not uri:
         uris = entry.get('links')
         if uris:
             uri = uris[0].get('href')
     if not (title and uri):
         return
     for link in sender.link_set.all():
         remote_obj = RemoteObject(link=link,
                                   title=title,
                                   uri=uri,
                                   object_type=object_type)
         remote_obj.save()
         activity = Activity(actor=link.user,
                             verb=verbs['share'],
                             target_object=remote_obj)
         if link.project:
             activity.scope_object = link.project
         activity.save()
예제 #3
0
    def handle(self, *args, **options):
        """
        This function generates dummy data for our User and Activity model.
        """

        records = []
        for _ in range(10):
            kwargs = {
                'real_name': names.get_full_name(),
                'tz': self.random_timezone(),
            }
            record = User(**kwargs)
            records.append(record)
        User.objects.bulk_create(records)

        total_objects = len(User.objects.all())
        records = []
        for _ in range(30):
            kwargs1 = {
                'start_time': self.random_datetime(),
                'end_time': self.random_datetime(),
                'userid_id': random.randint(1, total_objects)
            }
            record = Activity(**kwargs1)
            records.append(record)
        Activity.objects.bulk_create(records)

        self.stdout.write(self.style.SUCCESS('Records saved successfully.'))
예제 #4
0
 def create_activity_entry(self, entry, sender, activity_prefix=None):
     """Create activity feed entries for the provided feed entry."""
     verb, object_type = None, None
     if activity_prefix:
         verb = self.get_namespaced_attr(entry, activity_prefix, 'verb')
         object_type = self.get_namespaced_attr(entry, activity_prefix,
                                                'object-type')
     if not verb:
         verb = 'http://activitystrea.ms/schema/1.0/post'
     if not object_type:
         object_type = 'http://activitystrea.ms/schema/1.0/article'
     title = getattr(entry, 'title', None)
     uri = getattr(entry, 'link', None)
     if not (title and uri):
         self.log.warn("Received pubsub update with no title or uri")
         return
     for link in sender.link_set.all():
         self.log.info("Creating activity entry for link: %d" % (link.id, ))
         remote_obj = RemoteObject(link=link,
                                   title=title,
                                   uri=uri,
                                   object_type=object_type)
         remote_obj.save()
         activity = Activity(actor=link.user,
                             verb=verb,
                             remote_object=remote_obj)
         if link.project:
             activity.target_project = link.project
         activity.save()
예제 #5
0
def follow_handler(sender, **kwargs):
    rel = kwargs.get('instance', None)
    created = kwargs.get('created', False)
    if not created or not isinstance(rel, Relationship) or rel.deleted:
        return
    activity = Activity(actor=rel.source,
                        verb=verbs['follow'],
                        target_object=rel)
    recipients = []
    if rel.target_user:
        recipients.append(rel.target_user)
    else:
        activity.scope_object = rel.target_project
        for organizer in rel.target_project.organizers():
            if organizer.user != rel.source:
                recipients.append(organizer.user)
    activity.save()
    subject_template = 'relationships/emails/new_follower_subject.txt'
    body_template = 'relationships/emails/new_follower.txt'
    context = {
        'user': rel.source,
        'project': rel.target_project,
        'domain': Site.objects.get_current().domain
    }
    send_notifications_i18n(recipients,
                            subject_template,
                            body_template,
                            context,
                            notification_category='new-follower')
예제 #6
0
def status_creation_handler(sender, **kwargs):
    status = kwargs.get('instance', None)
    created = kwargs.get('created', False)

    if not created or not isinstance(status, Status):
        return

    # clean html
    status.status = bleach.clean(
        status.status,
        tags=settings.REDUCED_ALLOWED_TAGS,
        attributes=settings.REDUCED_ALLOWED_ATTRIBUTES,
        strip=True)
    status.save()

    # fire activity
    activity = Activity(
        actor=status.author,
        verb='http://activitystrea.ms/schema/1.0/post',
        status=status,
    )
    if status.project:
        activity.target_project = status.project
    if status.in_reply_to:
        activity.parent = status.in_reply_to
    activity.save()
    # Send notifications.
    if status.project:
        status.send_wall_notification()
    def test_can_crate_activity_with_complete_set_of_data(self):
        """
        tests if activity can have sections containing exercises and sets 
        """
        start_date = time = timezone.now()
        activity_type = Activity.STRENGTH
        name = 'Test Training'
        new_activity = Activity(
            start_date=start_date,
            activity_type=activity_type,
            name=name,
            posted_by=self.user1,
        )
        new_activity.save()

        section_data = StrengthSections(section_name='MAIN',
                                        activity=new_activity)

        section_data.save()

        exercise = Exercise(exercise_name="PUSH UP", section=section_data)

        exercise.save()

        ex_set = ExerciseSet(exercise=exercise,
                             weights=10,
                             reps=10,
                             notes='Notes')
        ex_set.save()

        self.assertEqual(new_activity.get_sections().count(), 1)
        self.assertEqual(section_data.get_exercises().count(), 1)
        self.assertEqual(exercise.get_sets().count(), 1)
        self.assertEqual(ex_set.exercise.pk, exercise.pk)
예제 #8
0
def import_from_old_site(request):
    user = request.user.get_profile()
    if request.method == 'POST':
        form = project_forms.ImportProjectForm(request.POST)
        if form.is_valid():
            course = form.cleaned_data['course']
            #CS - too much logic in view
            project = Project(name=course['name'], kind=course['kind'],
                short_description=course['short_description'],
                long_description=course['long_description'],
                imported_from=course['slug'])
            project.save()
            act = Activity(actor=user,
                verb=verbs['post'],
                scope_object=project,
                target_object=project)
            act.save()
            participation = Participation(project=project, user=user,
                organizing=True)
            participation.save()
            new_rel, created = Relationship.objects.get_or_create(source=user,
                target_project=project)
            new_rel.deleted = False
            new_rel.save()
            if course['detailed_description']:
                detailed_description_content = course['detailed_description']
            else:
                detailed_description_content = render_to_string(
                    "projects/detailed_description_initial_content.html",
                    {'project': project})
            detailed_description = Page(title=_('Full Description'),
                slug='full-description', content=detailed_description_content,
                listed=False, author_id=user.id, project_id=project.id)
            detailed_description.save()
            project.detailed_description_id = detailed_description.id
            sign_up = Signup(between_participants=course['sign_up'],
                author_id=user.id, project_id=project.id)
            sign_up.save()
            project.save()
            for title, content in course['tasks']:
                new_task = Page(title=title, content=content, author=user,
                    project=project)
                new_task.save()
            for name, url in course['links']:
                new_link = Link(name=name, url=url, user=user, project=project)
                new_link.save()
            project.create()
            messages.success(request,
                _('The %s has been imported.') % project.kind.lower())
            return http.HttpResponseRedirect(reverse('projects_show', kwargs={
                'slug': project.slug,
            }))
        else:
            msg = _("Problem importing the study group, course, ...")
            messages.error(request, msg)
    else:
        form = project_forms.ImportProjectForm()
    return render_to_response('projects/project_import.html', {
        'form': form, 'import_tab': True},
        context_instance=RequestContext(request))
예제 #9
0
파일: models.py 프로젝트: thornet/batucada
def follow_handler(sender, **kwargs):
    rel = kwargs.get('instance', None)
    if not isinstance(rel, Relationship):
        return
    user_subject = _("%(name)s is following you on Drumbeat!" % {
        'name': rel.source.name,
    })
    project_subject = _("%(name)s is following your project on Drumbeat!" % {
        'name': rel.source.name,
    })
    activity = Activity(actor=rel.source,
                        verb='http://activitystrea.ms/schema/1.0/follow')
    subject = _(u"%(name)s is now following")
    if rel.target_user:
        activity.target_user = rel.target_user
        user = rel.target_user
        pref_key = 'no_email_new_follower'
        subject = user_subject
    else:
        activity.project = rel.target_project
        user = rel.target_project.created_by
        pref_key = 'no_email_new_project_follower'
        subject = project_subject
    activity.save()

    preferences = AccountPreferences.objects.filter(user=user)
    for pref in preferences:
        if pref.value and pref.key == pref_key:
            return

    body = render_to_string("relationships/emails/new_follower.txt", {
        'user': rel.source,
        'project': rel.target_project,
    })
    SendUserEmail.apply_async((user, subject, body))
예제 #10
0
 def create_activity_entry(self, entry, sender, activity_prefix=None):
     """Create activity feed entries for the provided feed entry."""
     verb, object_type = None, None
     if activity_prefix:
         verb = self.get_namespaced_attr(
             entry, activity_prefix, 'verb')
         object_type = self.get_namespaced_attr(
             entry, activity_prefix, 'object-type')
     if not verb:
         verb = 'http://activitystrea.ms/schema/1.0/post'
     if not object_type:
         object_type = 'http://activitystrea.ms/schema/1.0/article'
     title = getattr(entry, 'title', None)
     uri = getattr(entry, 'link', None)
     if not title:
         title = entry.get('title')
     if not uri:
         uris = entry.get('links')
         if uris:
             uri = uris[0].get('href')
     if not (title and uri):
         return
     for link in sender.link_set.all():
         remote_obj = RemoteObject(
             link=link, title=title, uri=uri, object_type=object_type)
         remote_obj.save()
         activity = Activity(
             actor=link.user, verb=verb, remote_object=remote_obj)
         if link.project:
             activity.target_project = link.project
         activity.save()
예제 #11
0
 def setUp(self):
     self.activities_data = []
     self.activities = []
     self.students_data = []
     self.students = []
     # 生成三个活动
     for i in range(0, 3):
         activity_data = get_activity_data()
         activity = Activity(**activity_data)
         activity.save()
         self.activities_data.append(activity_data)
         self.activities.append(activity)
     # 生成8个学生
     company_data = get_company_data()
     company = Company(**company_data)
     company.save()
     for i in range(0, 8):
         # make pylint happy
         if i == -1:
             pass
         student_data = get_student_data()
         student = Student(company=company, **student_data)
         student.save()
         self.students_data.append(student_data)
         self.students.append(student)
예제 #12
0
def create(request, category=None):
    user = request.user.get_profile()
    if request.method == 'POST':
        form = project_forms.ProjectForm(category, request.POST)
        image_form = None
        if form.is_valid():
            project = form.save()
            if category:
                project.category = category
            image_form = project_forms.ProjectImageForm(request.POST,
                request.FILES, instance=project)
            if image_form.is_valid():
                image_form.save()
            project.set_duration(form.cleaned_data['duration'] or 0)
            #CS - too much logic in view
            act = Activity(actor=user,
                verb=verbs['post'],
                scope_object=project,
                target_object=project)
            act.save()
            participation = Participation(project=project, user=user,
                organizing=True)
            participation.save()
            new_rel, created = Relationship.objects.get_or_create(source=user,
                target_project=project)
            new_rel.deleted = False
            new_rel.save()
            detailed_description_content = render_to_string(
                "projects/detailed_description_initial_content.html",
                {'project': project})
            detailed_description = Page(title=_('Full Description'),
                slug='full-description', content=detailed_description_content,
                listed=False, author_id=user.id, project_id=project.id)
            if project.category != Project.STUDY_GROUP:
                detailed_description.collaborative = False
            detailed_description.save()
            project.detailed_description_id = detailed_description.id
            sign_up = Signup(author_id=user.id, project_id=project.id)
            sign_up.save()
            project.create()
            messages.success(request,
                _('The %s has been created.') % project.kind.lower())
            return http.HttpResponseRedirect(reverse('projects_create_tasks',
                kwargs={'slug': project.slug,}))
        else:
            msg = _("Problem creating the course")
            messages.error(request, msg)
    else:
        form = project_forms.ProjectForm(category, initial={'test':True})
        image_form = project_forms.ProjectImageForm()
    context = {
        'form': form,
        'image_form': image_form,
        'category': category,
        'is_challenge': (category == Project.CHALLENGE),
    }
    return render_to_response('projects/project_create_overview.html',
        context, context_instance=RequestContext(request))
예제 #13
0
def create(request):
    user = request.user.get_profile()
    if request.method == 'POST':
        form = project_forms.CreateProjectForm(request.POST)
        if form.is_valid():
            project = form.save()
            act = Activity(actor=user,
                           verb=verbs['post'],
                           scope_object=project,
                           target_object=project)
            act.save()
            participation = Participation(project=project,
                                          user=user,
                                          organizing=True)
            participation.save()
            new_rel, created = Relationship.objects.get_or_create(
                source=user, target_project=project)
            new_rel.deleted = False
            new_rel.save()
            detailed_description_content = render_to_string(
                "projects/detailed_description_initial_content.html", {})
            detailed_description = Page(title=_('Full Description'),
                                        slug='full-description',
                                        content=detailed_description_content,
                                        listed=False,
                                        author_id=user.id,
                                        project_id=project.id)
            detailed_description.save()
            project.detailed_description_id = detailed_description.id
            sign_up_content = render_to_string(
                "projects/sign_up_initial_content.html", {})
            sign_up = Page(title=_('Sign-Up'),
                           slug='sign-up',
                           content=sign_up_content,
                           listed=False,
                           editable=False,
                           author_id=user.id,
                           project_id=project.id)
            sign_up.save()
            project.sign_up_id = sign_up.id
            project.create()
            messages.success(
                request,
                _('The %s has been created.') % project.kind.lower())
            return http.HttpResponseRedirect(
                reverse('projects_show', kwargs={
                    'slug': project.slug,
                }))
        else:
            msg = _("Problem creating the study group, course, ...")
            messages.error(request, msg)
    else:
        form = project_forms.CreateProjectForm()
    return render_to_response('projects/project_edit_summary.html', {
        'form': form,
        'new_tab': True,
    },
                              context_instance=RequestContext(request))
예제 #14
0
def follow_handler(sender, **kwargs):
    rel = kwargs.get('instance', None)
    created = kwargs.get('created', False)
    if not created or not isinstance(rel, Relationship):
        return
    activity = Activity(actor=rel.source,
                        verb='http://activitystrea.ms/schema/1.0/follow')
    receipts = []
    ulang = get_language()
    subject = {}
    body = {}
    if rel.target_user:
        activity.target_user = rel.target_user
        for l in settings.SUPPORTED_LANGUAGES:
            activate(l[0])
            subject[l[0]] = ugettext(
                '%(display_name)s is following you on P2PU!') % {
                    'display_name': rel.source.display_name,
                }
        preferences = AccountPreferences.objects.filter(user=rel.target_user)
        for pref in preferences:
            if pref.value and pref.key == 'no_email_new_follower':
                break
        else:
            receipts.append(rel.target_user)
    else:
        activity.project = rel.target_project
        for l in settings.SUPPORTED_LANGUAGES:
            activate(l[0])
            subject[l[0]] = ugettext(
                '%(display_name)s is following %(project)s on P2PU!') % {
                    'display_name': rel.source.display_name,
                    'project': rel.target_project
                }
        for organizer in rel.target_project.organizers():
            if organizer.user != rel.source:
                preferences = AccountPreferences.objects.filter(
                    user=organizer.user)
                for pref in preferences:
                    if pref.value and pref.key == 'no_email_new_project_follower':
                        break
                else:
                    receipts.append(organizer.user)
    activity.save()

    for l in settings.SUPPORTED_LANGUAGES:
        activate(l[0])
        body[l[0]] = render_to_string(
            "relationships/emails/new_follower.txt", {
                'user': rel.source,
                'project': rel.target_project,
                'domain': Site.objects.get_current().domain,
            })
    activate(ulang)
    for user in receipts:
        pl = user.preflang or settings.LANGUAGE_CODE
        SendUserEmail.apply_async((user, subject[pl], body[pl]))
예제 #15
0
파일: views.py 프로젝트: AntiverX/CCP_OA
def activity_manage(request):
    context = {
        'select': 'activity_manage',
    }
    if request.method == 'GET':
        results = Activity.objects.all()
        context['results'] = results
        return render(request,
                      "activity/activity_manage.html",
                      context=context)
    else:
        if request.POST['type'] == "delete":
            existing_activity = Activity.objects.select_for_update().get(
                id=request.POST['id'])
            existing_activity_records = ActivityRecord.objects.select_for_update(
            ).filter(activity_name=existing_activity.activity_name)
            with transaction.atomic():
                existing_activity.delete()
                existing_activity_records.delete()
        else:
            if request.POST['id'] is not "":
                existing_activity = Activity.objects.select_for_update().get(
                    id=request.POST['id'])
                existing_activity_records = ActivityRecord.objects.select_for_update(
                ).filter(activity_name=existing_activity.activity_name)
                with transaction.atomic():
                    existing_activity.activity_name = request.POST[
                        'activity_name']
                    existing_activity.time_length = request.POST['time_length']
                    existing_activity.max_person = request.POST['max_person']
                    existing_activity.activity_time = request.POST[
                        'activity_time']
                    existing_activity.close_time = request.POST['close_time']
                    existing_activity.person_in_charge = request.POST[
                        'person_in_charge']
                    existing_activity.content = request.POST['content']
                    for record in existing_activity_records:
                        record.activity_name = request.POST['activity_name']
                        record.time_length = request.POST['time_length']
                        record.activity_time = request.POST['activity_time']
                        record.close_time = request.POST['close_time']
                        record.save()
                    existing_activity.save()
            else:
                new_record = Activity(
                    activity_name=request.POST['activity_name'],
                    time_length=request.POST['time_length'],
                    close_time=request.POST['close_time'],
                    activity_time=request.POST['activity_time'],
                    max_person=request.POST['max_person'],
                    content=request.POST['content'],
                    publisher=request.POST['publisher'],
                    person_in_charge=request.POST['person_in_charge'],
                )
                new_record.save()
        return HttpResponse("success")
예제 #16
0
def fire_activity(sender, **kwargs):
    instance = kwargs.get('instance', None)
    created = kwargs.get('created', False)
    is_page = isinstance(instance, Page)
    if created and is_page:
        send_email_notification(instance)
        # Fire activity.
        activity = Activity(actor=instance.author,
                            verb=verbs['post'],
                            target_object=instance,
                            scope_object=instance.project)
        activity.save()
    elif (not created and is_page and not instance.minor_update \
          and not instance.deleted):
        activity = Activity(actor=instance.author,
                            verb=verbs['update'],
                            target_object=instance,
                            scope_object=instance.project)
        activity.save()
예제 #17
0
def sync_actions():
    n = 0
    for doc in db.activities.find(no_cursor_timeout=True):
        cid = doc.get('campaign_id')
        lid = doc.get('list_id')
        email = doc.get('email_address')

        campaign = Campaign.objects.get(campaign_id=cid)
        elist = List.objects.get(list_id=lid)
        customer = Customer.objects.get(list=elist, email=email)

        # sent event
        obj = Activity(campaign=campaign, customer=customer, list=elist)
        obj.action = ACTION_MAP['sent']
        obj.timestamp = campaign.send_time
        save(obj)

        # other event
        activities = doc.get('activity')
        for elem in activities:
            timestamp = elem.get('timestamp')
            if type(timestamp) == str:
                # 2015-10-13T13:31:51+00:00
                timestamp = parser.parse(timestamp)
            url = elem.get('url', None)
            ip = elem.get('ip', None)
            action = elem.get('action')

            obj = Activity()
            obj.campaign = campaign
            obj.customer = customer
            obj.list = elist
            obj.action = ACTION_MAP[action]
            obj.timestamp = timestamp
            obj.ip = ip
            obj.url = url
            obj.src = 'm'

            save(obj)

        n += 1
        if n % 10000 == 0:
            print(n)
예제 #18
0
def create(request):
    user = request.user.get_profile()
    school = None
    if request.method == 'POST':
        form = project_forms.CreateProjectForm(request.POST)
        if form.is_valid():
            project = form.save()
            act = Activity(actor=user,
                verb='http://activitystrea.ms/schema/1.0/post',
                project=project,
                target_project=project)
            act.save()
            participation = Participation(project= project, user=user, organizing=True)
            participation.save()
            new_rel = Relationship(source=user, target_project=project)
            try:
                new_rel.save()
            except IntegrityError:
                pass
            detailed_description_content = render_to_string(
                "projects/detailed_description_initial_content.html",
                {})
            detailed_description = Page(title=_('Full Description'), slug='full-description',
                content=detailed_description_content, listed=False,
                author_id=user.id, project_id=project.id)
            detailed_description.save()
            project.detailed_description_id = detailed_description.id
            sign_up_content = render_to_string("projects/sign_up_initial_content.html",
                {})
            sign_up = Page(title=_('Sign-Up'), slug='sign-up',
                content=sign_up_content, listed=False, editable=False,
                author_id=user.id, project_id=project.id)
            sign_up.save()
            project.sign_up_id = sign_up.id
            project.save()
            messages.success(request, _('The study group has been created.'))
            return http.HttpResponseRedirect(reverse('projects_show', kwargs={
                'slug': project.slug,
            }))
        else:
            messages.error(request,
                _("There was a problem creating the study group."))
    else:
        if 'school' in request.GET:
            try:
                school = School.objects.get(slug=request.GET['school'])
                form = project_forms.CreateProjectForm(initial={'school': school})
            except School.DoesNotExist:
                return http.HttpResponseRedirect(reverse('projects_create'))
        else:
            form = project_forms.CreateProjectForm()
    return render_to_response('projects/project_edit_summary.html', {
        'form': form, 'new_tab': True, 'school': school,
    }, context_instance=RequestContext(request))
예제 #19
0
def vote(request):
    answer_id = request.POST['answer']
    answer = Answer.objects.get(pk=answer_id)
    vote = request.POST['vote']
    user = request.user
    activity = Activity.objects.filter(Q(activity_type=Activity.UP_VOTE) | Q(activity_type=Activity.DOWN_VOTE), user=user, answer=answer_id)
    if activity:
        activity.delete()
    if vote in [Activity.UP_VOTE, Activity.DOWN_VOTE]:
        activity = Activity(activity_type=vote, user=user, answer=answer_id)
        activity.save()
    return HttpResponse(answer.calculate_votes())
예제 #20
0
def fire_activity(sender, **kwargs):
    instance = kwargs.get('instance', None)
    created = kwargs.get('created', False)
    is_page = isinstance(instance, Page)
    is_comment = isinstance(instance, PageComment)
    if created and (is_page or is_comment):
        # Send notification.
        if is_comment and instance.page.slug == 'sign-up':
            instance.send_sign_up_notification()
            return
        else:
            send_content_notification(instance, is_comment)
        # Fire activity.
        activity = Activity(actor=instance.author, verb=verbs['post'],
            target_object=instance, scope_object=instance.project)
        activity.save()
    elif (not created and is_page and not instance.minor_update \
          and not instance.deleted):
        activity = Activity(actor=instance.author, verb=verbs['update'],
            target_object=instance, scope_object=instance.project)
        activity.save()
예제 #21
0
def fire_activity(sender, **kwargs):
    instance = kwargs.get('instance', None)
    created = kwargs.get('created', False)
    is_comment = isinstance(instance, PageComment)
    if created and is_comment:
        instance.send_comment_notification()
        if instance.page_object.comments_fire_activity():
            from activity.models import Activity
            activity = Activity(actor=instance.author,
                                verb=verbs['post'],
                                target_object=instance,
                                scope_object=instance.scope_object)
            activity.save()
예제 #22
0
def add_activity(request):
	if request.POST:
		act_content = request.POST.get('act_content')
		user_id = request.POST.get('user_id')
		print(act_content)
		try:
			act_obj = Activity(act_content=act_content, user_id=user_id)
			act_obj.save()
			return render(request, 'activity/add.html', {'message': '活动表添加成功'})
		except:
			print('fail to add')
			return render(request, 'activity/add.html', {'message': '活动表添加失败'})
	else:
		return render(request, 'activity/add.html')
예제 #23
0
 def _test_yelp_data(self, query_type):
     with open('top10.json', 'r') as f:
         acts = json.load(f)
     f.close()
     for act in acts['businesses']:
         activity = Activity(name=act['name'],
                             avg_review=act['rating'],
                             phone_number=act['phone'],
                             display_phone=act['display_phone'],
                             url=act['url'],
                             pic_url=act['image_url'],
                             longitude=act['coordinates']['longitude'],
                             latitude=act['coordinates']['latitude'],
                             address1=act['location']['address1'],
                             address2=act['location']['address2'],
                             city=act['location']['city'],
                             state=act['location']['state'],
                             code=act['location']['zip_code'],
                             origin='y')
         activity.save()
         urllib.request.urlretrieve(
             act['image_url'],
             'activity/static/media/' + str(activity.ID) + '_pic.jpg')
         activity.pic_url = str(activity.ID) + '_pic.jpg'
         with open('activity/static/media/' + str(activity.ID) + '_pic.jpg',
                   'r+b') as f:
             with Image.open(f) as image:
                 cover = resizeimage.resize_cover(image, [286, 197])
                 modal = resizeimage.resize_cover(image, [466, 197])
                 cover.save(
                     'activity/static/media/' + str(activity.ID) +
                     '_pic.jpg', image.format)
                 modal.save(
                     'activity/static/media/modal_' + str(activity.ID) +
                     '_pic.jpg', image.format)
         activity.save()
         print('Added activity: ' + str(activity.ID))
         #Check if type exists, if it does then add activity to it | else make that type and create the act type
         if ActivityType.objects.filter(activity_type=query_type).count():
             ActivityTypeLine.objects.create(
                 act_type=ActivityType.objects.get(
                     activity_type=query_type),
                 act_id=activity)
         else:
             ActivityType.objects.get_or_create(activity_type=query_type)
             ActivityTypeLine.objects.create(
                 act_type=ActivityType.objects.get(
                     activity_type=query_type),
                 act_id=activity)
예제 #24
0
def like(request):
    feed_id = request.POST['feed']
    feed = Feed.objects.get(pk=feed_id)
    user = request.user
    like = Activity.objects.filter(activity_type=Activity.LIKE,
                                   feed=feed_id,
                                   user=user)
    if like:
        user.profile.unotify_liked(feed)
        like.delete()
    else:
        like = Activity(activity_type=Activity.LIKE, feed=feed_id, user=user)
        like.save()
        user.profile.notify_liked(feed)
    return HttpResponse(feed.calculate_likes())
 def test_can_crate_basic_activity_with_no_sections(self):
     """
     tests if activity can be crated with no additional data
     """
     start_date = time = timezone.now()
     activity_type = Activity.STRENGTH
     name = 'Test Training'
     new_activity = Activity(
         start_date=start_date,
         activity_type=activity_type,
         name=name,
         posted_by=self.user1,
     )
     new_activity.save()
     self.assertEqual(new_activity.name, name)
예제 #26
0
def update_activity(request, act_id):
	act_obj = Activity.objects.get(act_id=act_id)
	print(act_obj)
	context = dict()
	context['Activity'] = act_obj
	
	if request.POST:
		act_content = request.POST.get('act_content')

		user_id = request.POST.get('user_id')
		act_obj = Activity()
		Activity.objects.filter(act_id=act_id).update(act_content=act_content, user_id=user_id)
		print('success')
		return render(request, 'activity/update.html', context)
	else:
		return render(request, 'activity/update.html', context)
예제 #27
0
def status_creation_handler(sender, **kwargs):
    status = kwargs.get('instance', None)
    created = kwargs.get('created', False)

    if not created or not isinstance(status, Status):
        return

    # fire activity
    activity = Activity(
        actor=status.author,
        verb=verbs['post'],
        target_object=status,
    )
    if status.project:
        activity.scope_object = status.project
    activity.save()
예제 #28
0
def fire_activity(sender, **kwargs):
    instance = kwargs.get('instance', None)
    created = kwargs.get('created', False)
    is_comment = isinstance(instance, PageComment)
    if created and is_comment:
        from signups.models import SignupAnswer
        ct = ContentType.objects.get_for_model(SignupAnswer)
        if instance.page_content_type != ct:
            statsd.Statsd.increment('comments')
        if instance.page_object.comments_fire_activity():
            from activity.models import Activity
            activity = Activity(actor=instance.author,
                                verb=verbs['post'],
                                target_object=instance,
                                scope_object=instance.scope_object)
            activity.save()
예제 #29
0
파일: views.py 프로젝트: NAGI330/JiuWei
    def post(self, request):
        try:
            # 请求格式错误处理
            request_msg = json.loads(request.body)
            if not isinstance(request_msg, dict):
                return JsonResponse({"msg": "typeErr_dict"})
        except Exception as e:
            request_msg = {}

        # 用户登录状态校验
        user = checkStatus(request.COOKIES)
        if not isinstance(user, User):
            return JsonResponse({"msg": "userErr_unsignIn"})

        activity = Activity()
        activity.activity_name = request_msg.get("activity_name", "")
        activity.activity_desc = request_msg.get("activity_desc", "")
        activity_time = request_msg.get("activity_time", "").strip()
        ymd, hms = activity_time.split(" ")
        year, month, day = list(map(int, ymd.split("-")))
        hour, minute = list(map(int, hms.split(":")))
        activity.activity_time = datetime(year, month, day, hour, minute, 0)
        activity.activity_site = request_msg.get("activity_site", "")
        activity.limit_num = request_msg.get("limit_num", 0)
        activity.owner_id = user.id
        # activity.limit_requirement = request_msg.get("limit_requirement", "")
        activity.activity_type = request_msg.get("activity_type", "")

        # 各字段缺失情况处理
        if not all([
                activity.activity_name, activity.activity_desc,
                activity.activity_time, activity.activity_site,
                activity.limit_num, activity.owner_id, activity.activity_type
        ]):
            return JsonResponse({"msg": "fieldErr_lose"})

        # 数据入库
        activity.save()

        # 创建用户和活动关系映射
        uamap = UserActivityMap()
        uamap.user_id = user.id
        uamap.activity_id = activity.id
        uamap.save()

        return JsonResponse({"msg": "createActivity Successfully"})
예제 #30
0
def project_creation_handler(sender, **kwargs):
    project = kwargs.get('instance', None)
    created = kwargs.get('created', False)

    if not created or not isinstance(project, Project):
        return

    Relationship(source=project.created_by, target_project=project).save()

    try:
        from activity.models import Activity
        act = Activity(actor=project.created_by,
                       verb='http://activitystrea.ms/schema/1.0/post',
                       project=project,
                       target_project=project)
        act.save()
    except ImportError:
        return